diff --git a/.github/workflows/copy-doc-to-wiki.yml b/.github/workflows/copy-doc-to-wiki.yml index 0447e821ba..8e3d2c7c9a 100644 --- a/.github/workflows/copy-doc-to-wiki.yml +++ b/.github/workflows/copy-doc-to-wiki.yml @@ -2,13 +2,17 @@ name: Copy doc to wiki on: workflow_dispatch: + pull_request_target: + types: + - closed env: - GIT_AUTHOR_NAME: Actionbot - GIT_AUTHOR_EMAIL: actions@github.com + GIT_AUTHOR_NAME: ${{ github.actor }} + GIT_AUTHOR_EMAIL: ${{ secrets.MY_EMAIL }} jobs: job-copy-doc-to-wiki: + if: github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - name: Checkout Repo diff --git a/.github/workflows/copy-wiki-to-doc.yml b/.github/workflows/copy-wiki-to-doc.yml index ec06ba8ff1..70d81acf4f 100644 --- a/.github/workflows/copy-wiki-to-doc.yml +++ b/.github/workflows/copy-wiki-to-doc.yml @@ -4,8 +4,8 @@ on: workflow_dispatch: env: - GIT_AUTHOR_NAME: Actionbot - GIT_AUTHOR_EMAIL: actions@github.com + GIT_AUTHOR_NAME: ${{ github.actor }} + GIT_AUTHOR_EMAIL: ${{ secrets.MY_EMAIL }} jobs: job-copy-wiki-to-doc: diff --git a/.github/workflows/update_all_parameter_page.yml b/.github/workflows/update_all_parameter_page.yml new file mode 100644 index 0000000000..845898a848 --- /dev/null +++ b/.github/workflows/update_all_parameter_page.yml @@ -0,0 +1,40 @@ +name: Update all parameters wiki page + +on: + workflow_dispatch: + push: + paths: + - 'example/test_problem/Template/Input__Parameter' + - 'tool/wiki/sync_runtime_parameter.py' + - 'src/Init/Init_Load_Parameter.cpp' + +env: + GIT_AUTHOR_NAME: ${{ github.actor }} + GIT_AUTHOR_EMAIL: ${{ secrets.MY_EMAIL }} + +jobs: + Update-all-parameters-page: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + token: ${{ secrets.TOKEN_FOR_WIKI }} + - name: run script + run: | + cd tool/wiki + python --version + python sync_runtime_parameter.py + - name: move markdown + run: | + mv tool/wiki/Runtime-Parameters:-All.md doc/wiki/Runtime-Parameters-related + - name: set git config + run: | + git config --global user.email "${{env.GIT_AUTHOR_EMAIL}}" + git config --global user.name "${{env.GIT_AUTHOR_NAME}}" + - name: make a commit and push if the file changed + run: | + git diff --exit-code doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md || \ + ( git add doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md && \ + git commit -m "[Workflow] Update all parameters wiki page" && \ + git push ) diff --git a/.gitignore b/.gitignore index e7137efb0e..07d505edba 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ .DS_Store *.o +*.bin +*~ bin/** src/generate_make.sh @@ -10,6 +12,6 @@ GAMER_CompareData GAMER_ExtractUniform GAMER_ExtractProfile .vscode -*~ src/Makefile src/Makefile.log +src/.local_settings diff --git a/configs/eureka_gnu.config b/configs/eureka_gnu.config index 6f88181618..1896846d45 100644 --- a/configs/eureka_gnu.config +++ b/configs/eureka_gnu.config @@ -7,6 +7,7 @@ HDF5_PATH /software/hdf5/default GRACKLE_PATH GSL_PATH /software/gsl/default LIBYT_PATH +CUFFTDX_PATH /software/cuFFTDx/default # compilers CXX g++ diff --git a/configs/eureka_intel.config b/configs/eureka_intel.config index 617d6e544b..2647d6be68 100644 --- a/configs/eureka_intel.config +++ b/configs/eureka_intel.config @@ -7,6 +7,7 @@ HDF5_PATH /software/hdf5/default GRACKLE_PATH GSL_PATH /software/gsl/default LIBYT_PATH +CUFFTDX_PATH /software/cuFFTDx/default # compilers CXX icpc diff --git a/configs/forerunnerI_gnu.config b/configs/forerunnerI_gnu.config new file mode 100644 index 0000000000..7c19d94743 --- /dev/null +++ b/configs/forerunnerI_gnu.config @@ -0,0 +1,50 @@ +# forerunnerI +### Caution!! Load modules under module_CALAB on TwnIII first before compiling, such that FFTW3_PATH, MPI_PATH, HDF5_PATH and GSL_PATH can be found: +### module use /home/d07222009/module_CALAB +### module load gnu_13.2.0/gcc/13.2.0 gnu_13.2.0/fftw/3.3.10 gnu_13.2.0/gsl/2.8.0 gnu_13.2.0/hdf5/1.14.4 gnu_13.2.0/openmpi/5.0.0 gnu_13.2.0/openucx/1.18.0 +### +CUDA_PATH +FFTW2_PATH +FFTW3_PATH $(FFTW3_PATH) +MPI_PATH $(MPI_PATH) +HDF5_PATH $(HDF5_PATH) +GRACKLE_PATH +GSL_PATH $(GSL_PATH) +LIBYT_PATH +CUFFTDX_PATH + +# compilers +CXX g++-13.2.0 +CXX_MPI mpicxx + +# flags +CXXFLAG -g +CXXFLAG -O3 +#CXXFLAG -std=c++11 +#CXXFLAG -Ofast +CXXFLAG -Wall +CXXFLAG -Wextra +CXXFLAG -Wno-unused-variable +CXXFLAG -Wno-unused-parameter +CXXFLAG -Wno-maybe-uninitialized +CXXFLAG -Wno-unused-but-set-variable +CXXFLAG -Wno-unused-function +CXXFLAG -Wno-unused-result +CXXFLAG -Wno-implicit-fallthrough +CXXFLAG -Wno-parentheses +CXXFLAG -Wno-unknown-pragmas + +OPENMPFLAG -fopenmp + +LIBFLAG + +NVCCFLAG_COM -O3 +#NVCCFLAG_COM -use_fast_math +NVCCFLAG_FLU -Xptxas -dlcm=ca -prec-div=false -ftz=true +NVCCFLAG_POT -Xptxas -dlcm=ca + +# for debugging +#CXXFLAG -fstack-protector-all +#CXXFLAG -fstack-protector-strong +#CXXFLAG -fsanitize=undefined -fsanitize=address +#LIBFLAG -fsanitize=undefined -fsanitize=address diff --git a/configs/forerunnerI_intel.config b/configs/forerunnerI_intel.config new file mode 100644 index 0000000000..a13575e4cc --- /dev/null +++ b/configs/forerunnerI_intel.config @@ -0,0 +1,42 @@ +# forerunnerI +### Caution!! Load modules under module_CALAB on TwnIII first before compiling, such that FFTW3_PATH, MPI_PATH, HDF5_PATH and GSL_PATH can be found: +### module use /home/d07222009/module_CALAB +### module load intel/2024_01_46 oneapi_2024/fftw/3.3.10 oneapi_2024/gsl/2.8.0 oneapi_2024/hdf5/1.14.4 oneapi_2024/openmpi/5.0.0 oneapi_2024/openucx/1.18.0 +### +CUDA_PATH +FFTW2_PATH +FFTW3_PATH $(FFTW3_PATH) +MPI_PATH $(MPI_PATH) +HDF5_PATH $(HDF5_PATH) +GRACKLE_PATH +GSL_PATH $(GSL_PATH) +LIBYT_PATH +CUFFTDX_PATH + +# compilers +CXX icpx +CXX_MPI mpicxx + +# flags +# for warning flags fro oneapi, see: https://www.intel.com/content/dam/develop/external/us/en/documents/oneapi_dpcpp_cpp_compiler.pdf +CXXFLAG -g +CXXFLAG -O3 +CXXFLAG -fp-model precise -fstack-protector-all +#CXXFLAG -std=c++11 +#CXXFLAG -gxx-name=YOUR_G++ +CXXFLAG -Werror -Wfatal-errors -Woverflow +CXXFLAG -Wno-uninitialized -Wno-absolute-value -Wno-unknown-pragmas -diag-disable 3180 -diag-disable 10441 + +OPENMPFLAG -qopenmp + +LIBFLAG -limf + +NVCCFLAG_COM -O3 +#NVCCFLAG_COM -use_fast_math +NVCCFLAG_FLU -Xptxas -dlcm=ca -prec-div=false -ftz=true +NVCCFLAG_POT -Xptxas -dlcm=ca + +# for debugging +#CXXFLAG -fstack-protector-all +#CXXFLAG -fstack-protector-strong # somehow it can capture issues not detected by -fstack-protector-all +#LIBFLAG -lssp diff --git a/configs/mac_clang.config b/configs/mac_clang.config new file mode 100644 index 0000000000..592511a212 --- /dev/null +++ b/configs/mac_clang.config @@ -0,0 +1,41 @@ +# A "typical" macOS installation without GPU +FFTW2_PATH /usr/local/fftw-2.1.5 +MPI_PATH /usr/local/mpich-3.2 +GSL_PATH /usr/local/gsl-1.16 +HDF5_PATH ${HOME}/mambaforge/envs/py312 + +# compilers +CXX clang++ +CXX_MPI mpicxx + +# clang flags +CXXFLAG -g +CXXFLAG -O3 +CXXFLAG -std=c++11 +#CXXFLAG -Ofast +CXXFLAG -Wall +CXXFLAG -Wextra +CXXFLAG -Wno-unused-variable +CXXFLAG -Wno-unused-parameter +CXXFLAG -Wno-uninitialized +CXXFLAG -Wno-unused-but-set-variable +CXXFLAG -Wno-unused-function +CXXFLAG -Wno-unused-result +CXXFLAG -Wno-implicit-fallthrough +CXXFLAG -Wno-parentheses +CXXFLAG -Wno-unknown-pragmas +CXXFLAG -Wno-mismatched-tags +CXXFLAG -Wno-deprecated-declarations +CXXFLAG -Wno-missing-braces + +OPENMPFLAG -Xclang -fopenmp + +LIBFLAG -lomp + +NVCCFLAG_COM -O3 +#NVCCFLAG_COM -use_fast_math +NVCCFLAG_FLU -Xptxas -dlcm=ca -prec-div=false -ftz=true +NVCCFLAG_POT -Xptxas -dlcm=ca + +#gpu +GPU_COMPUTE_CAPABILITY -1 diff --git a/configs/mac.config b/configs/mac_gnu.config similarity index 90% rename from configs/mac.config rename to configs/mac_gnu.config index fc963cb87d..bf1c46444b 100644 --- a/configs/mac.config +++ b/configs/mac_gnu.config @@ -1,17 +1,17 @@ # A "typical" macOS installation without GPU FFTW2_PATH /usr/local/fftw-2.1.5 MPI_PATH /usr/local/mpich-3.2 -HDF5_PATH ${HOME}/miniconda3 GSL_PATH /usr/local/gsl-1.16 +HDF5_PATH ${HOME}/mambaforge/envs/py312 # compilers -CXX g++ +CXX g++-12 CXX_MPI mpicxx # gnu flags CXXFLAG -g CXXFLAG -O3 -#CXXFLAG -std=c++11 +CXXFLAG -std=c++11 #CXXFLAG -Ofast CXXFLAG -Wall CXXFLAG -Wextra diff --git a/configs/spock_intel.config b/configs/spock_intel.config index 00e0b8646e..83e807b775 100644 --- a/configs/spock_intel.config +++ b/configs/spock_intel.config @@ -7,6 +7,7 @@ HDF5_PATH /software/hdf5/1.10.6-intel-2023.1.0 GRACKLE_PATH GSL_PATH /software/gsl/2.6-intel-2023.1.0 LIBYT_PATH +CUFFTDX_PATH /software/cuFFTDx/22.11 # compilers CXX icpc diff --git a/configs/taiwania3_gnu.config b/configs/taiwania3_gnu.config new file mode 100644 index 0000000000..b4c5b1f49d --- /dev/null +++ b/configs/taiwania3_gnu.config @@ -0,0 +1,51 @@ +# TaiwaniaIII +### Caution!! Load modules under module_CALAB on TwnIII first before compiling, such that FFTW3_PATH, MPI_PATH, HDF5_PATH and GSL_PATH can be found: +### module use /home/d07222009/module_CALAB +### module load gcc/13.2.0 gnu_13.2.0/fftw/3.3.10 gnu_13.2.0/gsl/2.8.0 gnu_13.2.0/hdf5/1.14.4 gnu_13.2.0/openmpi/5.0.5 gnu_13.2.0/openucx/1.18.0 +### +CUDA_PATH +FFTW2_PATH +FFTW3_PATH $(FFTW3_PATH) +MPI_PATH $(MPI_PATH) +HDF5_PATH $(HDF5_PATH) +GRACKLE_PATH +GSL_PATH $(GSL_PATH) +LIBYT_PATH +CUFFTDX_PATH + +# compilers +CXX g++ +CXX_MPI mpicxx + +# flags +CXXFLAG -g +CXXFLAG -O3 +CXXFLAG -std=c++11 +#CXXFLAG -Ofast +CXXFLAG -Wall +CXXFLAG -Wextra +CXXFLAG -Wno-unused-variable +CXXFLAG -Wno-unused-parameter +CXXFLAG -Wno-maybe-uninitialized +CXXFLAG -Wno-unused-but-set-variable +CXXFLAG -Wno-unused-function +CXXFLAG -Wno-unused-result +CXXFLAG -Wno-implicit-fallthrough +CXXFLAG -Wno-parentheses +CXXFLAG -Wno-unknown-pragmas +CXXFLAG -Wno-cast-function-type + +OPENMPFLAG -fopenmp + +LIBFLAG + +NVCCFLAG_COM -O3 +#NVCCFLAG_COM -use_fast_math +NVCCFLAG_FLU -Xptxas -dlcm=ca -prec-div=false -ftz=true +NVCCFLAG_POT -Xptxas -dlcm=ca + +# for debugging +#CXXFLAG -fstack-protector-all +#CXXFLAG -fstack-protector-strong +#CXXFLAG -fsanitize=undefined -fsanitize=address +#LIBFLAG -fsanitize=undefined -fsanitize=address diff --git a/configs/taiwania3_intel.config b/configs/taiwania3_intel.config new file mode 100644 index 0000000000..2d3465c989 --- /dev/null +++ b/configs/taiwania3_intel.config @@ -0,0 +1,41 @@ +# TaiwaniaIII +### Caution!! Load modules under module_CALAB on TwnIII first before compiling, such that FFTW3_PATH, MPI_PATH, HDF5_PATH and GSL_PATH can be found: +### module use /home/d07222009/module_CALAB +### module load intel/2024 intel_2024/fftw/3.3.10 intel_2024/gsl/2.8.0 intel_2024/hdf5/1.14.4 intel_2024/openmpi/5.0.5 intel_2024/openucx/1.18.0 +### +CUDA_PATH +FFTW2_PATH +FFTW3_PATH $(FFTW3_PATH) +MPI_PATH $(MPI_PATH) +HDF5_PATH $(HDF5_PATH) +GRACKLE_PATH +GSL_PATH $(GSL_PATH) +LIBYT_PATH +CUFFTDX_PATH + +# compilers +CXX icpx +CXX_MPI mpicxx + +# flags +CXXFLAG -g +CXXFLAG -O3 +CXXFLAG -fp-model precise -fstack-protector-all +#CXXFLAG -std=c++11 +#CXXFLAG -gxx-name=YOUR_G++ +CXXFLAG -Werror -Wfatal-errors -Woverflow +CXXFLAG -Wno-uninitialized -Wno-absolute-value -Wno-unknown-pragmas -diag-disable 3180 -diag-disable 10441 + +OPENMPFLAG -qopenmp + +LIBFLAG -limf + +NVCCFLAG_COM -O3 +#NVCCFLAG_COM -use_fast_math +NVCCFLAG_FLU -Xptxas -dlcm=ca -prec-div=false -ftz=true +NVCCFLAG_POT -Xptxas -dlcm=ca + +# for debugging +#CXXFLAG -fstack-protector-all +#CXXFLAG -fstack-protector-strong # somehow it can capture issues not detected by -fstack-protector-all +#LIBFLAG -lssp diff --git a/configs/template.config b/configs/template.config index 7406b11d2d..93bddd6578 100644 --- a/configs/template.config +++ b/configs/template.config @@ -9,6 +9,7 @@ HDF5_PATH /path/to/hdf5 GRACKLE_PATH /path/to/grackle GSL_PATH /path/to/gsl LIBYT_PATH /path/to/libyt +CUFFTDX_PATH /path/to/cufftdx # 2. Compiler type CXX icpc # Serial compiler diff --git a/doc/wiki/Adding-New-Simulations.md b/doc/wiki/Adding-New-Simulations.md index 7bdecc022d..93a75fb008 100644 --- a/doc/wiki/Adding-New-Simulations.md +++ b/doc/wiki/Adding-New-Simulations.md @@ -8,8 +8,11 @@ Mandatory steps are marked by 📌. 5. [Add Problem-specific Grid Fields and Particle Attributes](#v-add-problem-specific-grid-fields-and-particle-attributes) 6. [Add Problem-specific Functionalities](#vi-add-problem-specific-functionalities) * [Output](#output) + * [Initial Condition from Files - Grids](#initial-condition-from-files---grids) + * [Initial Condition from Files - Particles](#initial-condition-from-files---particles) * [Work Before Output](#work-before-output) * [Refinement Criteria](#refinement-criteria) + * [Work Before Refine](#work-before-refine) * [Timestep Constraints](#timestep-constraints) * [Boundary Conditions](#boundary-conditions) * [Fields Resetting](#fields-resetting) @@ -26,7 +29,7 @@ Mandatory steps are marked by 📌. ## I. Register a New Problem -1. Add new problem name and ID to `include/Typedef.h` with the +1. Add a new problem name and ID to `include/Typedef.h` with the type `TestProbID_t`. The following example adds `TESTPROB_HYDRO_NEW_PROBLEM = 123`: @@ -65,10 +68,10 @@ function is called `Init_TestProb_Hydro_NewProblem()`: 1. Create a new problem directory and file(s). ```bash - > cd src/TestProblem/Hydro/ - > cp -r ../Template NewProblem - > cd NewProblem - > mv Init_TestProb_Template.cpp Init_TestProb_Hydro_NewProblem.cpp + cd src/TestProblem/Hydro/ + cp -r ../Template NewProblem + cd NewProblem + mv Init_TestProb_Template.cpp Init_TestProb_Hydro_NewProblem.cpp ``` 2. Edit `Init_TestProb_Hydro_NewProblem.cpp` (hereafter referred to as the @@ -88,7 +91,7 @@ For details see 2. Magnetic field IC — choose one of the following two methods (only necessary when enabling -[[MHD | Installation:-Simulation-Options#MHD]]): +[[--mhd | Installation:-Option-List#--mhd]]): * Specify the magnetic field IC by editing the function `SetBFieldIC()` or specify the vector potential IC by editing a function linking to the function pointer @@ -97,12 +100,11 @@ or specify the vector potential IC by editing a function linking to the function * Load either the magnetic field or vector potential IC from a uniform-mesh binary file. For details see [[Setting IC from Files — Magnetic Field | Initial-Conditions#IC-File-BField]]. - - **Caution: magnetic field is not currently supported in this method.** + ${{\color{red}\textsf{Caution:\ magnetic\ field\ is\ not\ currently\ supported\ in\ this\ method.\}}}\$ 3. Particles IC — choose one of the following two methods (only necessary when enabling -[[PARTICLE | Installation:-Simulation-Options#PARTICLE]]): +[[--particle | Installation:-Option-List#--particle]]): * Specify a particle initialization function. 1. Define the function `Par_Init_ByFunction_NewProblem()`. @@ -113,11 +115,11 @@ For details see ```C++ #ifdef PARTICLE - void Par_Init_ByFunction_NewProblem( - const long NPar_ThisRank, const long NPar_AllRank, - real *ParMass, real *ParPosX, real *ParPosY, real *ParPosZ, - real *ParVelX, real *ParVelY, real *ParVelZ, real *ParTime, - real *ParType, real *AllAttribute[PAR_NATT_TOTAL] ); + void Par_Init_ByFunction_NewProblem( const long NPar_ThisRank, const long NPar_AllRank, + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) #endif ``` @@ -170,8 +172,10 @@ problem source file. delete ReadPara; ``` - **Caution: VARIABLE, DEFAULT, MIN, and MAX must have the same -data type.** Some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) +> [!CAUTION] +> `VARIABLE`, `DEFAULT`, `MIN`, and `MAX` must have the same data type. +> +> Some handy constants (e.g., `Useless_bool`, `Eps_double`, `NoMin_int`, ...) are defined in `include/ReadPara.h`. See [[Adding Parameters | Adding-Parameters]] for details. 3. [Optional] Edit `SetParameter()` to make a note of the values adopted @@ -191,7 +195,7 @@ during the runtime. ``` 4. Add these parameters to the input file `Input__TestProb` -(see [[Input__TestProb | Runtime-Parameters#input__testprob]] +(see [[Input__TestProb | Runtime-Parameters:-Input__TestProb]] for the file format). This file must be put in the same directory as the executable `gamer` when running the code. @@ -211,8 +215,8 @@ when running the code. It takes 4 small steps to add a new grid field: -1. Set [[ NCOMP_PASSIVE_USER | Installation:-Simulation-Options#NCOMP_PASSIVE_USER]] -to `N` (for `N` new fields) in the Makefile. +1. Set [[ --passive | Installation:-Option-List#--passive]] +to `N` (for `N` new fields) when generating the Makefile. 2. Declare a global integer variable on the top of the problem source file to store the new field index. For example, @@ -223,7 +227,7 @@ file to store the new field index. For example, Note that some field index variables have been pre-declared in `include/Field.h` (e.g., `Idx_Metal` for the field `Metal` used by, -for example, [[ GRACKLE_METAL | Chemistry-and-Radiation#GRACKLE_METAL ]]). +for example, [[ GRACKLE_METAL | Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_METAL ]]). Whenever applicable, skip this step and use these pre-declared index variables directly. @@ -247,12 +251,12 @@ is just to avoid redundant assignments to the same field index variable. The second parameter should be set to either `NORMALIZE_YES` or `NORMALIZE_NO`. It controls whether the new field will be renormalized by the total gas density after every update when enabling -[[ OPT__NORMALIZE_PASSIVE | Hydro#OPT__NORMALIZE_PASSIVE ]]. +[[ OPT__NORMALIZE_PASSIVE | Runtime-Parameters:-Hydro#OPT__NORMALIZE_PASSIVE ]]. The third parameter should be set to either `INTERP_FRAC_YES` or `INTERP_FRAC_NO`. It controls whether the new field will be converted to mass fraction during interpolation when enabling -[[ OPT__INT_FRAC_PASSIVE_LR | Hydro#OPT__INT_FRAC_PASSIVE_LR ]]. +[[ OPT__INT_FRAC_PASSIVE_LR | Runtime-Parameters:-Hydro#OPT__INT_FRAC_PASSIVE_LR ]]. One must also set the function pointer `Init_Field_User_Ptr` in the problem initialization function `Init_TestProb_Hydro_NewProblem()`. @@ -261,8 +265,9 @@ initialization function `Init_TestProb_Hydro_NewProblem()`. Init_Field_User_Ptr = AddNewField_NewProblem; ``` - **Caution: the built-in field `Metal` with the field index `Idx_Metal` -will be added automatically when enabling [[ GRACKLE_METAL | Chemistry-and-Radiation#GRACKLE_METAL ]].** +> [!NOTE] +> The built-in field `Metal` with the field index `Idx_Metal` +will be added automatically when enabling [[ GRACKLE_METAL | Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_METAL ]]. 4. Assign initial values to the new field in `SetGridIC()` using the corresponding field index. For example, @@ -276,21 +281,24 @@ field index. For example, ... } ``` - **Caution: assign mass density instead of mass fraction to `fluid[NewFieldIdx]`.** +> [!CAUTION] +> Assign mass density instead of mass fraction to `fluid[NewFieldIdx]`. ### Particle Attributes Adding a new particle attribute is very similar to adding a new grid field. So we only highlight the differences in each of the 4 steps above. -1. Set [[ PAR_NATT_USER | Installation:-Simulation-Options#PAR_NATT_USER ]] -instead in the Makefile. +1. Set [[ --par_attribute_flt | Installation:-Option-List#--par_attribute_flt ]] and +[[ --par_attribute_int | Installation:-Option-List#--par_attribute_int ]] +instead when generating the Makefile. 2. Declare a global integer variable on the top of the problem source file to store the new field index. For example, ```C++ - static int NewParAttIdx = Idx_Undefined; + static int NewParAttFltIdx = Idx_Undefined; + static int NewParAttIntIdx = Idx_Undefined; ``` Note that some particle attribute index variables have been pre-declared in @@ -299,18 +307,21 @@ metallicity fraction). Whenever applicable, skip this step and use these pre-declared index variables directly. 3. Define a function called, for example, `AddNewParticleAttribute_NewProblem()` -and invoke `AddParticleAttribute()` for each of the new attribute. For example, +and invoke `AddParticleAttributeFlt()` and `AddParticleAttributeInt()` for each +of the new floating-point and integer attribute, respectively. For example, ```C++ void AddNewParticleAttribute_NewProblem() { - if ( NewParAttIdx == Idx_Undefined ) - NewParAttIdx = AddParticleAttribute( "NewParAttLabel" ); + if ( NewParAttFltIdx == Idx_Undefined ) + NewParAttFltIdx = AddParticleAttributeFlt( "NewParFltAttLabel" ); + if ( NewParAttIntIdx == Idx_Undefined ) + NewParAttIntIdx = AddParticleAttributeInt( "NewParIntAttLabel" ); } ``` - The attribute index `NewParAttIdx` can be used to access the particle -attribute data (see the next step). One must also set the function pointer + The attribute indices `NewParAttFltIdx` and `NewParAttIntIdx` can be used to access the particle +floating-point and integer attribute data, respectively (see the next step). One must also set the function pointer `Par_Init_Attribute_User_Ptr` in the problem initialization function. ```C++ @@ -318,19 +329,21 @@ attribute data (see the next step). One must also set the function pointer ``` 4. Assign initial values to the new particle attribute by using the -corresponding attribute index to access the pointer array -`*AllAttribute[PAR_NATT_TOTAL]` (see +corresponding attribute index to access the pointer arrays +`*AllAttributeFlt[PAR_NATT_FLT_TOTAL]` and `*AllAttributeInt[PAR_NATT_INT_TOTAL]` (see [[Setting IC from Analytical Functions — Particles | Initial-Conditions#IC-Func-Particles]]). For example, ```C++ void Par_Init_ByFunction_NewProblem( const long NPar_ThisRank, const long NPar_AllRank, - real *ParMass, real *ParPosX, real *ParPosY, real *ParPosZ, - real *ParVelX, real *ParVelY, real *ParVelZ, real *ParTime, - real *AllAttribute[PAR_NATT_TOTAL] ) + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { ... - for (long p=0; p cd example/test_problem/Hydro - > cp -rL ../Template NewProblem + cd example/test_problem/Hydro + cp -rL ../Template NewProblem ``` 2. Add and properly set all relevant input files `Input__*`. diff --git a/doc/wiki/Contribute-related/Contribute:-Update-Wiki.md b/doc/wiki/Contribute-related/Contribute:-Update-Wiki.md new file mode 100644 index 0000000000..b88ee1c841 --- /dev/null +++ b/doc/wiki/Contribute-related/Contribute:-Update-Wiki.md @@ -0,0 +1,163 @@ +We are glad you have something new to contribute to GAMER and are willing to teach others how to use it! + +Before getting started, it’s recommended that you familiarize yourself with the basics of [repository, branch, fork](https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories), [action](https://docs.github.com/en/actions), and [workflow](https://docs.github.com/en/actions/using-workflows). + +The followings are the outline of this document: +* [Introduction](#Introduction) +* [Initialize Wiki and Enable Action](#Initialize-Wiki-and-Enable-Action) +* [Edit Wiki](#Edit-Wiki) +* [Pull Request](#Pull-Request) +* [Reference](#Reference) + +## Introduction +In this document, "Wiki" refers to the Wiki page on the GitHub website, and "doc" stands for the markdown files located under `gamer/doc/wiki`. Note that doc and Wiki are NOT always synchronized. You will need to use the action to copy content either from doc to Wiki or from Wiki to doc. + +Here is the squence diagram for Wiki contribitions. You can select any of these three method to edit Wiki. See [Edit Wiki](#Edit-Wiki) for details. + +```mermaid +sequenceDiagram + participant GAMER public version + participant doc + participant Wiki + participant local + + GAMER public version->>doc: Fork + rect rgb(240,255,240) + rect rgb(200,250,200) + Note over doc,local: 1. Through gollum (recommended) + end + doc->>Wiki: Copy doc to Wiki + Wiki->>local: Clone + Note over local: Edit on gollum + local->>Wiki: Push + Wiki->>doc: Copy Wiki to doc + end + + rect rgb(255,250,240) + rect rgb(250,235,215) + Note over doc,Wiki: 2. From GitHub website + end + doc->>Wiki: Copy doc to Wiki + Note over Wiki: Edit on Wiki + Wiki->>doc: Copy Wiki to doc + end + + rect rgb(240,255,255) + rect rgb(200,255,255) + Note over doc,local: 3. On the local terminal + end + doc->>local: Clone + Note over local: Edit content using the local terminal + local->>doc: Push + doc->>Wiki: Copy doc to Wiki + Note over Wiki: Preview + end + + doc->>GAMER public version: Pull request +``` + +## Initialize Wiki and Enable Action +**_This setup only needs to be done once (the first time) !!!_** + +1. **Check GAMER version** + * Please make sure you have the latest GAMER. + +1. **Create the first page** + * Click the Wiki page and create the first page. + + [[/images/CreateWiki.png]] + +1. **Create a token for the action** + * Go to `Settings` of your account > `Developer settings` > `Personal access tokens` > `Generate new token (classic)`. + - NOTE: We use the `Tokens (classic)` in this example. + * Please check the `repo` and the `workflow` options. + - NOTE: You can set the `Note` of this token freely. + * You might want to set the `Expiration` to `No expiration`. + * Click the green `Generate token` at the bottom. + + [[/images/CreateToken.png]] + + * Remember to save the token since it will only be shown once! + +1. **Create the repository secret token and email** + * Go to `Settings` of your forked gamer repository > `Security` > `Secrets and variables` > `Actions` > `Repository secrets`. + + [[/images/CreateSecret.png]] + + * Click `New repository secret`, and then you will see the following. Please replace `` with the token generated in the previous step under `Secret` and make sure the `Name` of the secret is `TOKEN_FOR_WIKI`. Click `Add secret`. + + [[/images/SetToken.png]] + + * Click `New repository secret`. Please replace `` with your account's email address under `Secret` and make sure the `Name` of the secret is `MY_EMAIL`. Click `Add secret`. + - NOTE: Your email address will remain private since it only exists in your repository. This step is only for recording your contribution by the action. + + [[/images/SetMail.png]] + +1. **Enable actions (workflows)** + * Click `Actions` > click the green button. + [[/images/EnableWorkflows.png]] + +1. **Initialize Wiki** + * Click `Actions` > `Copy doc to wiki` > `Run workflow` > Choose `Branch: main` > Click `Run workflow`. Once the workflow is complete, the Wiki will be updated to match `gamer/doc/wiki` on the `main` branch. + + [[/images/InitializeWiki.png]] + +## Edit Wiki +We provide three methods for editing the Wiki pages: through `gollum` (recommended), directly on the GitHub website, or via the local terminal. In the following examples, the new branch you would like to contribute to is referred to as `new_contribution_branch`. + +1. **Through `gollum` (recommended)** + - Install [gollum](https://github.com/gollum/gollum). + - Click `Actions` > `Copy doc to wiki` > `Run workflow` > Choose `Branch: new_contribution_branch` > Click `Run workflow`. Once the workflow is complete, the Wiki will be updated to match `gamer/doc/wiki` on the `new_contribution_branch` branch. + - Clone your forked Wiki git. You may find the Wiki URL at the bottom right of the Wiki page. + + [[/images/WikiGitLocation.png]] + + - Edit by `gollum`. + * NOTE: To use `gollum` for a branch other than `master` (e.g., `new_branch`), use the command `gollum --ref new_branch`. + * `gollum --lenient-tag-lookup /path/to/wiki` + * Open `http://localhost:4567` in your browser. + - Push your changes to the forked Wiki git. + - **Copy wiki to doc** + + This step is like `git push` to your branch. + * Click `Actions` > `Copy wiki to doc` > `Run workflow` > Choose `Branch: new_contribution_branch` > Click `Run workflow`. Once the workflow is complete, the content of `gamer/doc/wiki` in the `new_contribution_branch` branch will be updated to match the latest Wiki pages. + + [[/images/CopyWikiToNewBranch.png]] + +1. **From GitHub website** + + In this method, we treat the Wiki on GitHub as a local repository and use the workflow to replicate the pull and push behavior for the Wiki. + - **Copy doc to wiki** + + This step is like `git checkout new_contribution_branch` but for the GitHub Wiki website version. + * Click `Actions` > `Copy doc to wiki` > `Run workflow` > Choose `Branch: new_contribution_branch` > Click `Run workflow`. Once the workflow is complete, the Wiki will be updated to match `gamer/doc/wiki` on the `new_contribution_branch` branch. + + [[/images/CopyDocFromNewBranch.png]] + + - **Edit directly on the GitHub Wiki website** + + See [About wikis - GitHub Docs](https://docs.github.com/en/communities/documenting-your-project-with-wikis/about-wikis) for more details. + - **Copy wiki to doc** + + This step is like `git push` to your `new_contribution_branch` branch. + * Click `Actions` > `Copy wiki to doc` > `Run workflow` > Choose `Branch: new_contribution_branch` > Click `Run workflow`. Once the workflow is complete, the content of `gamer/doc/wiki` in the `new_contribution_branch` branch will be updated to match the latest Wiki pages. + + [[/images/CopyWikiToNewBranch.png]] + +1. **On the local terminal** + + This process is similar to editing GAMER source code on the local terminal. The Wiki files are located in `gamer/doc/wiki`. After committing your changes to the `new_contribution_branch` branch and pushing them to GitHub, you can preview these changes on the Wiki pages by + * Click `Actions` > `Copy doc to wiki` > `Run workflow` > Choose `Branch: new_contribution_branch` > Click `Run workflow`. Once the workflow is complete, the Wiki will be updated to match `gamer/doc/wiki` on the `new_contribution_branch` branch. + +## Pull Request + 1. Before filing a new PR, please ensure the following: + * All hyperlinks are functional. + * Images are clear. + * All related pages affected by this PR have been updated. + 2. File a PR to the public GAMER repository. + * NOTE: Contributions should be made through the files in `gamer/doc/wiki/` rather than the Wiki pages. + +## Reference +1. [Bi-directional Wiki Sync Action](https://github.com/marketplace/actions/bi-directional-wiki-sync-action) +1. [Create Pull Requests For Your GitHub Wiki](https://nimblehq.co/blog/create-github-wiki-pull-request) +1. [gollum](https://github.com/gollum/gollum) diff --git a/doc/wiki/Contribute:-Update-Wiki.md b/doc/wiki/Contribute:-Update-Wiki.md deleted file mode 100644 index 552631a1e7..0000000000 --- a/doc/wiki/Contribute:-Update-Wiki.md +++ /dev/null @@ -1 +0,0 @@ -TBF. \ No newline at end of file diff --git a/doc/wiki/Download.md b/doc/wiki/Download.md index e9aca59cb0..3bef2dabfe 100644 --- a/doc/wiki/Download.md +++ b/doc/wiki/Download.md @@ -5,14 +5,14 @@ To download the code, you will need to install (if not installed yet) and then type ```bash -> git clone https://github.com/gamer-project/gamer +git clone https://github.com/gamer-project/gamer ``` By default, you will be using the development version after `git clone`. If you would like to switch to the stable version, type ```bash -> git checkout stable +git checkout stable ``` If you have downloaded the code previously and want to update @@ -21,25 +21,22 @@ one of the following commands. ```bash # for the development version -> git pull origin master +git pull origin main # for the stable version -> git pull origin stable +git pull origin stable ``` See [guides.github.com](https://guides.github.com/) for guides to git and GitHub. -### Caution - -To validate whether the downloaded code correctly retains the symbolic links +> [!CAUTION] +> To validate whether the downloaded code correctly retains the symbolic links used by GAMER, try - -```bash +> ```bash > ls -l gamer/src/SelfGravity/GPU_Gravity/ -``` - -Correct: `CUPOT_ExternalAcc.cu -> ../CPU_Gravity/CPU_ExternalAcc.cpp`
-Incorrect: `CUPOT_ExternalAcc.cu` - -Try updating `git` if you get incorrect results. Adding either `--config core.symlinks=true` -or `--config core.symlinks=false` to your `git clone` command may also help. \ No newline at end of file +> ``` +> Correct: `CUPOT_ExternalAcc.cu -> ../CPU_Gravity/CPU_ExternalAcc.cpp`
+> Incorrect: `CUPOT_ExternalAcc.cu` +> +> Try updating `git` if you get incorrect results. Adding either `--config core.symlinks=true` +or `--config core.symlinks=false` to your `git clone` command may also help. diff --git a/doc/wiki/ELBDM-Hybrid-Scheme.md b/doc/wiki/ELBDM-related/ELBDM-Hybrid-Scheme.md similarity index 91% rename from doc/wiki/ELBDM-Hybrid-Scheme.md rename to doc/wiki/ELBDM-related/ELBDM-Hybrid-Scheme.md index a8ee56bdd6..4109c86e14 100644 --- a/doc/wiki/ELBDM-Hybrid-Scheme.md +++ b/doc/wiki/ELBDM-related/ELBDM-Hybrid-Scheme.md @@ -1,21 +1,69 @@ The hybrid scheme in GAMER is designed to efficiently simulate the behavior of Extremely Light Bosonic Dark Matter (ELBDM; also referred to as Fuzzy Dark Matter or Wave Dark Matter) in cosmological simulations. # Quick Start -- Switch to `psidm` branch -- Copy test problem `examples/test_problem/LSS_Hybrid` to `bin` folder -- Compile GAMER using Makefile created by executing `bin/LSS_Hybrid/generate_make.sh` -- Switch to `bin/LSS_Hybrid/`, execute `download_light_halo.sh` -- **To use spectral interpolation**: Execute `download_spectral_interpolation_tables.sh` and set `OPT__FLU_INT_SCHEME` and `OPT__REF_FLU_INT_SCHEME` to `8` -- Run GAMER -- Plot results at $z=0$ with `python plot_script/plot_slice.py -s 69 -e 69`, `python plot_script/plot_projection.py -s 69 -e 69` and `python plot_script/plot_power_spectrum.py -s 0 -e 69`. - - The slice (z-axis), projection (x-axis) and power spectrum plots should look as follows: -![Data_000069_Proj_x_density](https://github.com/gamer-project/gamer/assets/6187378/b412cf7e-8de5-4817-a039-58fecec72d13) -![Data_000069_Proj_x_density_grid](https://github.com/gamer-project/gamer/assets/6187378/4f416be0-0be2-4468-9182-9a77879545be) -![Data_000069_Lv_10_Slice_z_density_x1](https://github.com/gamer-project/gamer/assets/6187378/d51ed4b8-af8f-4df2-a89a-f4aef66793e9) -![Data_000069_Lv_10_Slice_z_density_x3](https://github.com/gamer-project/gamer/assets/6187378/14ad6aff-c4f1-4f55-88c5-d623e6265dac) -![Data_000069_Lv_10_Slice_z_density_x10](https://github.com/gamer-project/gamer/assets/6187378/a891a4b8-3814-4131-a42c-14ba297392af) -![Data_000069_PS](https://github.com/gamer-project/gamer/assets/6187378/260649c1-69e7-4a44-8dc9-06ccf6fe798d) +1. Switch to `psidm` branch +``` bash +git checkout psidm +``` +2. Copy test problem +``` bash +cp -r example/test_problem/LSS_Hybrid bin/ +``` +3. Compile GAMER +``` bash +cd src +cp ../bin/LSS_Hybrid/generate_make.sh ./ +sh generate_make.sh +``` +4. Download initial condition +``` bash +cd ../bin/LSS_Hybrid/ +sh download_light_halo.sh +``` +5. **To use spectral interpolation** + * Download table + + ``` bash + sh download_spectral_interpolation_tables.sh + ``` + * Set `OPT__FLU_INT_SCHEME` and `OPT__REF_FLU_INT_SCHEME` to `8` in `Input__Parameter` +6. Run GAMER +``` bash +mpirun -map-by ppr:2:socket:pe=8 --report-bindings ./gamer 1>>log 2>&1 +``` +7. Plot results at $z=0$: + * Slice plots + ``` bash + python plot_script/plot_slice.py -s 69 -e 69 + ``` +
+ Execution results + + ![Data_000069_Lv_10_Slice_z_density_x1](https://github.com/gamer-project/gamer/assets/6187378/d51ed4b8-af8f-4df2-a89a-f4aef66793e9) + ![Data_000069_Lv_10_Slice_z_density_x3](https://github.com/gamer-project/gamer/assets/6187378/14ad6aff-c4f1-4f55-88c5-d623e6265dac) + ![Data_000069_Lv_10_Slice_z_density_x10](https://github.com/gamer-project/gamer/assets/6187378/a891a4b8-3814-4131-a42c-14ba297392af) +
+ + * Projection plots + ``` bash + python plot_script/plot_projection.py -s 69 -e 69 + ``` +
+ Execution results + + ![Data_000069_Proj_x_density](https://github.com/gamer-project/gamer/assets/6187378/b412cf7e-8de5-4817-a039-58fecec72d13) + ![Data_000069_Proj_x_density_grid](https://github.com/gamer-project/gamer/assets/6187378/4f416be0-0be2-4468-9182-9a77879545be) +
+ + * Power spectrum + ``` bash + python plot_script/plot_power_spectrum.py -s 0 -e 69 + ``` +
+ Execution results + + ![Data_000069_PS](https://github.com/gamer-project/gamer/assets/6187378/260649c1-69e7-4a44-8dc9-06ccf6fe798d) +
The wave scheme (`GRAMFE_MATMUL`) is used for the dark grey and black grids. The relative mass conservation error at $z=0$ with spectral interpolation on is $6.72e-04$. @@ -43,8 +91,8 @@ The hybrid scheme is particularly suited for cosmological simulations where a si The configure.py script is the starting point for setting up a simulation. For the hybrid scheme, ensure the following flags are set: - `--elbdm_scheme = ELBDM_HYBRID`: Determines the scheme type for ELBDM simulations. There are two options: - - ELBDM_WAVE: Wave-only scheme. - - ELBDM_HYBRID: Fluid-wave hybrid scheme. + - `ELBDM_WAVE`: Wave-only scheme. + - `ELBDM_HYBRID`: Fluid-wave hybrid scheme. - `--hybrid_scheme`: This option is specific to the hybrid scheme, defining the fluid dynamics treatment: - `HYBRID_UPWIND`: First-order upwind scheme. It is diffusive but stable. - `HYBRID_FROMM`: Second-order Fromm scheme. It has no limiter but can be unstable. @@ -219,7 +267,7 @@ This modification to the fluid scheme is work-in-progress and must be modified i ## Potential Improvements - Global memory accesses in the ELBDM solver are uncoalesced, suggesting potential for optimization by implementing an effective 3D transpose on the GPU. -- Currently `ELBDM_FIRST_WAVE_LEVEL` is fixed. Ideally, the code should be able to adaptively increase the first wave level when the resolution turns out to be insufficient for the wave solver. This would require implementing a detection for insufficient resolution and converting patches back from the wave to the fluid representation. +- Currently `ELBDM_FIRST_WAVE_LEVEL` is fixed. Ideally, the code should be able to adaptively increase the first wave level when the resolution turns out to be insufficient for the wave solver. This would require implementing a detection for insufficient resolution and converting patches back from the wave to the fluid representation. ## Zoom-In Simulation diff --git a/doc/wiki/ELBDM-Spectral-Interpolation.md b/doc/wiki/ELBDM-related/ELBDM-Spectral-Interpolation.md similarity index 94% rename from doc/wiki/ELBDM-Spectral-Interpolation.md rename to doc/wiki/ELBDM-related/ELBDM-Spectral-Interpolation.md index 8941901e6c..a518ab372d 100644 --- a/doc/wiki/ELBDM-Spectral-Interpolation.md +++ b/doc/wiki/ELBDM-related/ELBDM-Spectral-Interpolation.md @@ -5,7 +5,7 @@ This section provides an overview of the spectral interpolation method in GAMER ### Compilation and Runtime Settings - **Compile-Time Flag**: Ensure GAMER is compiled with `SUPPORT_SPECTRAL_INT` (or configured with `--spectral_interpolation`). -- **Runtime Parameters**: Set `OPT__FLU_INT_SCHEME` and `OPT__REF_FLU_INT_SCHEME` to `8` for enabling spectral interpolation. Set `SPEC_INT_TABLE_PATH` to the directory containing `interpolation_tables` and `boundary2extension_tables`. Enable `SPEC_INT_XY_INSTEAD_DEPHA` to interpolate x = density^0.5\*cos( phase/SPEC_INT_WAVELENGTH_MAGNIFIER ), y = density^0.5\*sin( phase/SPEC_INT_WAVELENGTH_MAGNIFIER ) instead of density and phase, which has the advantage of being well-defined across vortices. `SPEC_INT_WAVELENGTH_MAGNIFIER` is the stretching factor of wavelength; setting it to unity gives x=real part and y=imaginary part. +- **Runtime Parameters**: Set `OPT__FLU_INT_SCHEME` and `OPT__REF_FLU_INT_SCHEME` to `8` for enabling spectral interpolation. Set `SPEC_INT_TABLE_PATH` to the directory containing `interpolation_tables` and `boundary2extension_tables`. Enable `SPEC_INT_XY_INSTEAD_DEPHA` to interpolate real and imaginary parts instead of density and phase around vortices, which has the advantage of being well-defined across vortices. `SPEC_INT_VORTEX_THRESHOLD` sets the vortex detection threshold for `SPEC_INT_XY_INSTEAD_DEPHA`. If the laplacian of the phase field exceeds this threshold, we interpolate the real and imaginary parts. `SPEC_INT_GHOST_BOUNDARY` sets the ghost boundary size for spectral interpolation. A large ghost boundary increases interpolation accuracy but can negatively affect performance. ### Obtaining Interpolation Tables diff --git a/doc/wiki/ELBDM-Spectral-Solver.md b/doc/wiki/ELBDM-related/ELBDM-Spectral-Solver.md similarity index 100% rename from doc/wiki/ELBDM-Spectral-Solver.md rename to doc/wiki/ELBDM-related/ELBDM-Spectral-Solver.md diff --git a/doc/wiki/ELBDM.md b/doc/wiki/ELBDM.md new file mode 100644 index 0000000000..85d0babf25 --- /dev/null +++ b/doc/wiki/ELBDM.md @@ -0,0 +1,29 @@ + +## Compilation Options + +Related options: +[[--model | Installation:-Option-List#--model]],   +[[--elbdm_scheme | Installation:-Option-List#--elbdm_scheme]],   +[[--wave_scheme | Installation:-Option-List#--wave_scheme]],   +[[--conserve_mass | Installation:-Option-List#--conserve_mass]],   +[[--laplacian_four | Installation:-Option-List#--laplacian_four]],   +[[--gramfe_scheme | Installation:-Option-List#--gramfe_scheme]],   +[[--hybrid_scheme | Installation:-Option-List#--hybrid_scheme]],   +[[--self_interaction | Installation:-Option-List#--self_interaction]],   + + +## Runtime Parameters +[[Runtime parameters: ELBDM | Runtime-Parameters:-ELBDM]] + +Other related parameters: +TBF. + + +## Remarks + + +
+ +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Feedback.md b/doc/wiki/Feedback.md deleted file mode 100644 index 13c774f353..0000000000 --- a/doc/wiki/Feedback.md +++ /dev/null @@ -1,95 +0,0 @@ -This page describes feedback from particles to grids and vice versa. -Please enable the compilation option [[FEEDBACK | Installation: Simulation-Options#FEEDBACK]]. - - -## Compilation Options - -Related options: -[[PARTICLE | Installation: Simulation-Options#PARTICLE]],   -[[FEEDBACK | Installation: Simulation-Options#FEEDBACK]]   - - -## Runtime Parameters - -Parameters described on this page: -[FB_LEVEL](#FB_LEVEL),   -[FB_RSEED](#FB_RSEED),   -[FB_SNE](#FB_SNE),   -[FB_USER](#FB_USER)   - -Other related parameters: - -Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** - - -* #### `FB_LEVEL`   (0 ≤ input < [[NLEVEL | Installation: Simulation-Options#NLEVEL]]; <0 → set to [[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL ]])   [-1] - * **Description:** -AMR level to apply feedback. - * **Restriction:** -Must be [[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL ]] for now. - - -* #### `FB_RSEED`   (≥0)   [456] - * **Description:** -Random seed used by feedback. - * **Restriction:** - - -* #### `FB_SNE`   (0=off, 1=on)   [0] - * **Description:** -Supernova explosion feedback. - * **Restriction:** -Not supported yet. - - -* #### `FB_USER`   (0=off, 1=on)   [0] - * **Description:** -User-defined feedback. -See [Add User-defined Feedback](#add-user-defined-feedback) for details. - * **Restriction:** - - -## Remarks - -### Add User-defined Feedback -Follow the steps below to define your feedback when -[[adding a new simulation | Adding-New-Simulations]] named `NewProblem`. - -1. Go to the new test problem folder and copy the feedback template. - - ```bash - cd src/TestProblem/Hydro/NewProblem - cp ../../../Feedback/User_Template/FB_User_Template.cpp FB_NewProblem.cpp - ``` - -2. Edit the feedback source file `FB_NewProblem.cpp`. - 1. Rename `User_Template` as `NewProblem`. - - 2. Follow the example `src/TestProblem/Hydro/Plummer/FB_Plummer.cpp` to edit - `FB_Init_NewProblem()`, `FB_End_NewProblem()`, and `FB_NewProblem()`. - -3. Edit the problem source file `Init_TestProb_Hydro_NewProblem.cpp` to enable this new feedback. - - 1. Put the following function prototype on the top of this file. - - ```C++ - #ifdef FEEDBACK - void FB_Init_NewProblem(); - #endif - ``` - - 2. Set the feedback function pointer in `Init_TestProb_Hydro_NewProblem()`. - - ```C++ - # ifdef FEEDBACK - FB_Init_User_Ptr = FB_Init_NewProblem; - # endif - ``` - -4. Make sure to enable `FEEDBACK` in `Makefile` and `FB_USER` in `Input__Parameter`. - - -
- -## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/GPU.md b/doc/wiki/GPU.md index d884a32fd1..e80162cff8 100644 --- a/doc/wiki/GPU.md +++ b/doc/wiki/GPU.md @@ -1,12 +1,12 @@ ## Enabling GPU To enable GPU: -1. Edit the `Makefile` and recompile the code (see [[Installation]] for details) - 1. Turn on -[[GPU | Installation: Simulation-Options#GPU]] - 2. Set -[[GPU_COMPUTE_CAPABILITY | Installation: Simulation-Options#GPU_COMPUTE_CAPABILITY]] -according to the GPU architecture on your system +1. Generate the `Makefile` and recompile the code (see [[Installation]] for details) + 1. Set +[[GPU_COMPUTE_CAPABILITY | Installation:-Machine-Configuration-File#4-GPU-compute-capability]] +according to the GPU architecture on your system in the [[configuration file | Installation:-Machine-Configuration-File]] + 2. Generate `Makefile` with +[[--gpu | Installation:-Option-List#--gpu]]=`true` 3. Recompile the code with `make clean; make` 2. [Query the GPUs on your system](#query-gpus) [optional] @@ -17,63 +17,14 @@ according to the GPU architecture on your system ## Compilation Options Related options: -[[GPU | Installation: Simulation-Options#GPU]],   -[[GPU_COMPUTE_CAPABILITY | Installation: Simulation-Options#GPU_COMPUTE_CAPABILITY]]   +[[--gpu | Installation:-Option-List#--gpu]],   ## Runtime Parameters - -Parameters described on this page: -[OPT__GPUID_SELECT](#OPT__GPUID_SELECT),   -[FLU_GPU_NPGROUP](#FLU_GPU_NPGROUP),   -[POT_GPU_NPGROUP](#POT_GPU_NPGROUP),   -[CHE_GPU_NPGROUP](#CHE_GPU_NPGROUP),   -[NSTREAM](#NSTREAM)   +[[Runtime parameters: GPU | Runtime-Parameters:-GPU]] Other related parameters: none -Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** - - -* #### `OPT__GPUID_SELECT`   (-2=CUDA, -1=MPI rank, ≥0=input)   [-1] - * **Description:** -See [Set and Validate GPU IDs](#set-and-validate-gpu-ids). - * **Restriction:** -Must be smaller than the total number of GPUs in a node. - - -* #### `FLU_GPU_NPGROUP`   (>0; ≤0 → set to default)   [depend on the GPU spec] - * **Description:** -Number of patch groups updated by the GPU/CPU fluid solvers at a single time. -See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. - * **Restriction:** -Must be a multiple of [GPU_NSTREAM](#GPU_NSTREAM). - - -* #### `POT_GPU_NPGROUP`   (>0; ≤0 → set to default)   [depend on the GPU spec] - * **Description:** -Number of patch groups updated by the GPU/CPU Poisson solvers at a single time. -See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. - * **Restriction:** -Must be a multiple of [GPU_NSTREAM](#GPU_NSTREAM). - - -* #### `CHE_GPU_NPGROUP`   (>0; ≤0 → set to default)   [depend on the GPU spec] - * **Description:** -Number of patch groups updated by the GPU/CPU GRACKLE solvers at a single time. -See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. -The GPU version is currently not supported. - * **Restriction:** - - -* #### `NSTREAM`   (>0; ≤0 → set to default)   [depend on the GPU spec] - * **Description:** -Number of CUDA streams for the asynchronous memory copy between CPU and GPU. -See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. - * **Restriction:** -See the restrictions on [FLU_GPU_NPGROUP](#FLU_GPU_NPGROUP) and -[POT_GPU_NPGROUP](#POT_GPU_NPGROUP). - ## Remarks @@ -81,10 +32,10 @@ See the restrictions on [FLU_GPU_NPGROUP](#FLU_GPU_NPGROUP) and To query all GPUs on a node, use the command ``` bash -> nvidia-smi +nvidia-smi ``` Here is an example on a node with 2 Tesla K40m GPUs: -``` +
 +-----------------------------------------------------------------------------+
 | NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
 |-------------------------------+----------------------+----------------------+
@@ -105,7 +56,7 @@ Here is an example on a node with 2 Tesla K40m GPUs:
 |    0     35286    C   ./gamer                                       1067MiB |
 |    1     35287    C   ./gamer                                       1067MiB |
 +-----------------------------------------------------------------------------+
-```
+
It shows that the [CUDA device compute mode](http://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__TYPES.html#group__CUDART__TYPES_1g7eb25f5413a962faad0956d92bae10d0) @@ -117,7 +68,7 @@ and there are currently two running jobs using GPU ID 0 and 1, respectively. On a node with NGPU, each GPU has a unique ID in the range 0 to NGPU-1. GAMER uses the runtime -parameter [OPT__GPUID_SELECT](#OPT__GPUID_SELECT) to set the GPU ID +parameter [[OPT__GPUID_SELECT | Runtime-Parameters:-GPU#OPT__GPUID_SELECT]] to set the GPU ID associated with each MPI process. * `OPT__GPUID_SELECT = -2`: set by CUDA runtime. Typically, this @@ -152,7 +103,7 @@ To validate the ID and configuration of the GPU adopted by each MPI process, search for the keyword "Device Diagnosis" in the log file `Record__Note` generated during the initialization of GAMER. You should see something like -``` +
 Device Diagnosis
 ***********************************************************************************
 MPI_Rank =   0, hostname =   golub123, PID = 47842
@@ -189,9 +140,9 @@ Concurrent Up/Downstream Copies   : Yes
 Concurrent Kernel Execution       : Yes
 GPU has ECC Support Enabled       : Yes
 ***********************************************************************************
-```
+
This example shows that the MPI rank 0 is using GPU 0 -on the node "golub123", which has 2 GPUs in total. +on the node `golub123`, which has 2 GPUs in total.
diff --git a/doc/wiki/Home.md b/doc/wiki/Home.md index 99a9155d84..3e7cece293 100644 --- a/doc/wiki/Home.md +++ b/doc/wiki/Home.md @@ -7,13 +7,14 @@ parallel scalability and supports a rich set of physics modules. ### Physics Modules * Hydrodynamics -* [Magnetohydrodynamics](https://arxiv.org/abs/1804.03479) -* [Special relativistic hydrodynamics](https://arxiv.org/abs/2012.11130) +* [Magnetohydrodynamics](https://iopscience.iop.org/article/10.3847/1538-4365/aac49e/meta) +* [Special relativistic hydrodynamics](https://academic.oup.com/mnras/article/504/3/3298/6224873) * Self-gravity and external gravity * Particles * Chemistry and radiative processes with [GRACKLE](http://grackle.readthedocs.io/en/latest/index.html) * General equation of state -* Cosmic rays with anisotropic diffusion +* [Cosmic rays with anisotropic diffusion](https://iopscience.iop.org/article/10.3847/1538-4357/ad50c5#apjad50c5app2) +* Fuzzy (Wave) dark matter: [Nature Physics paper](http://www.nature.com/nphys/journal/v10/n7/covers/index.html), [code paper](https://arxiv.org/abs/2411.17288) ### Other Features * Adaptive mesh refinement @@ -28,10 +29,15 @@ parallel scalability and supports a rich set of physics modules. * Feedback interface ### Upcoming Physics and Features -* [Wave dark matter (ψDM)](http://www.nature.com/nphys/journal/v10/n7/covers/index.html) +* Anisotropic diffusion +* Anisotropic/Braginskii viscosity ### Need Helps? * Project leader: Hsi-Yu Schive (hyschive@phys.ntu.edu.tw) * Mailing list: [GAMER Google Group](https://groups.google.com/forum/#!forum/gamer-amr) * Live chat: [GAMER Slack](https://join.slack.com/t/gamer-project/shared_invite/enQtNTUwMDA5ODAwMTMzLTc3ZWY2MWE2YTlmMDI0MTQ4M2JjOTg2NmU4OWVkOGY1ZTI3MmY5NjUxOTk1ZjM5ZjNjOGViMGY3ZGExMDdiYzU) -* Code papers: [GAMER-2](https://arxiv.org/abs/1712.07070) , [GAMER-MHD](http://iopscience.iop.org/article/10.3847/1538-4365/aac49e/meta) , [GAMER-SR](https://arxiv.org/abs/2012.11130) \ No newline at end of file +* Code papers: +[GAMER-2](https://academic.oup.com/mnras/article/481/4/4815/5106358) , +[GAMER-MHD](http://iopscience.iop.org/article/10.3847/1538-4365/aac49e/meta) , +[GAMER-SR](https://academic.oup.com/mnras/article/504/3/3298/6224873) , +[GAMER-FDM](https://arxiv.org/abs/2411.17288) diff --git a/doc/wiki/In-Situ-Python-Analysis:-Plummer.md b/doc/wiki/In-Situ-Python-Analysis-related/In-Situ-Python-Analysis:-Plummer.md similarity index 50% rename from doc/wiki/In-Situ-Python-Analysis:-Plummer.md rename to doc/wiki/In-Situ-Python-Analysis-related/In-Situ-Python-Analysis:-Plummer.md index 9eac5d1dbd..b6da6416d4 100644 --- a/doc/wiki/In-Situ-Python-Analysis:-Plummer.md +++ b/doc/wiki/In-Situ-Python-Analysis-related/In-Situ-Python-Analysis:-Plummer.md @@ -4,107 +4,73 @@ This test problem Plummer demonstrates the in situ Python analysis feature in GA 1. Install the required packages for this demo. * [libyt and yt_libyt](https://yt-project.github.io/libyt/HowToInstall.html#how-to-install): the in situ analysis library and its yt frontend. - * This example assumes it is using libyt interactive mode. Please compile libyt in interactive mode. +> [!IMPORTANT] +> This example assumes it is using libyt interactive mode. Please compile libyt in interactive mode. * [yt](https://yt-project.org/): the core analysis tool. * [[FFTW | Installation: External Libraries#fftw]]: needed in this test problem. * [[HDF5 | Installation: External Libraries#hdf5]]: this is optional since we are not going to output any data. -2. Edit the `Makefile` to validate the following settings and -set the paths `FFTW_PATH`, `MPI_PATH`, and `LIBYT_PATH`. -You can also use the Python script [[configure.py|Installation: Configure.py]] to tailor the `Makefile` -(an example can be found at `example/test_problem/Hydro/Plummer/generate_make.sh`). -```Makefile -SIMU_OPTION += -DGRAVITY - -SIMU_OPTION += -DPARTICLE - -# number of user-defined passively advected scalars -# --> set it to 0 or comment it out if none is required -# --> useless for RTVD -SIMU_OPTION += -DNCOMP_PASSIVE_USER=2 - -#SIMU_OPTION += -DSERIAL - -SIMU_OPTION += -DLOAD_BALANCE=HILBERT - -# support FFTW library -# --> SUPPORT_FFTW must be defined when GRAVITY is enabled -# --> use FFTW3 for fftw3 support -# use FFTW2 for fftw2 support -SIMU_OPTION += -DSUPPORT_FFTW=FFTW2 - -# support yt inline analysis -SIMU_OPTION += -DSUPPORT_LIBYT - -# support libyt interactive mode -# --> this activates python prompt and does not shut down a simulation when there are -# errors in an inline python script -# --> must compile libyt with INTERACTIVE_MODE -# --> must enable SUPPORT_LIBYT -SIMU_OPTION += -DLIBYT_INTERACTIVE - -# switch to MPI compiler -#CXX = g++ # serial compiler -CXX = $(MPI_PATH)/bin/mpicxx # MPI compiler - -# set library paths -CUDA_PATH := -FFTW_PATH := ${YOUR_FFTW_PATH} -MPI_PATH := ${YOUR_MPI_PATH} -HDF5_PATH := -GRACKLE_PATH := -GSL_PATH := -LIBYT_PATH := ${YOUR_LIBYT_PATH} -``` +2. Generate `Makefile` with the following options: + ```bash + --gravity=true --particle=true --passive=2 --mpi=true --fftw=FFTW2 --libyt=true --libyt_interactive=true + ``` + Also please set the paths `FFTW_PATH`, `MPI_PATH`, and `LIBYT_PATH` in [[configuration file | Installation:-Machine-Configuration-File ]]. 3. Compile the code in the `src` folder. -```bash -> make clean -> make -j 4 + ```bash + make clean + make -j 4 + ``` + +
+Execution results + +
    ...
    ...
 Compiling GAMER --> Successful!
-```
+
+
4. Create a working directory in the `bin` folder and copy the GAMER executable and Plummer test problem files. -```bash -mkdir Plummer # create a folder for this test -cd Plummer -cp -r ../../example/test_problem/Hydro/Plummer/* . # copy test problem settings -cp ../../src/gamer . # copy GAMER executable -``` + ```bash + mkdir Plummer # create a folder for this test + cd Plummer + cp -r ../../example/test_problem/Hydro/Plummer/* . # copy test problem settings + cp ../../src/gamer . # copy GAMER executable + ``` 5. In `Input__Parameter`, set `OPT__OUTPUT_TOTAL` to `0` since we don't need to dump data to disk in this demo. (If you want to make GAMER dump data snapshots, enable `SUPPORT_HDF5` and set `HDF5_PATH` in `Makefile`. Keep `OPT__OUTPUT_TOTAL` to `1`.) -``` -# data dump -OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -``` + ``` + # data dump + OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] + ``` 6. In `Input__TestProb`, set `Plummer_Collision` to `1` for simulating colliding Plummer clouds. -``` -Plummer_Collision 1 # (0/1)--> single Plummer cloud/two colliding Plummer clouds -Plummer_AddColor 1 # assign different colors to different clouds (must turn on Plummer_Collision - # and set NCOMP_PASSIVE_USER to 2 in the Makefile) [0] -``` + ``` + Plummer_Collision 1 # (0/1)--> single Plummer cloud/two colliding Plummer clouds + Plummer_AddColor 1 # assign different colors to different clouds (must turn on Plummer_Collision + # and set NCOMP_PASSIVE_USER to 2 in the Makefile) [0] + ``` 7. Create a `LIBYT_STOP` file. This demo assumes libyt is in interactive mode. It will only enter interactive Python prompt if errors occur while running Python codes or it detects the file `LIBYT_STOP`. -```bash -touch LIBYT_STOP -``` + ```bash + touch LIBYT_STOP + ``` 8. Run GAMER. -```bash -OMPI_MCA_osc=sm,pt2pt mpirun -np 4 ./gamer -``` + ```bash + OMPI_MCA_osc=sm,pt2pt mpirun -np 4 ./gamer + ``` 9. Results from the inline script. @@ -135,16 +101,16 @@ def yt_inline_inputArg( fields ): Projection of field `Cloud01` along the z-axis: -[[images/InSitu_Projection_z_Cloud0.png | alt=insitu_projection]] +[[/images/InSitu_Projection_z_Cloud0.png | alt=insitu_projection]] Particle plot using particle position x and y as axes with particle mass mapped to a colorbar: -[[images/InSitu_Particle_z_particle_mass.png | alt=insitu_particle]] +[[/images/InSitu_Particle_z_particle_mass.png | alt=insitu_particle]] 10. Since we have run libyt in interactive mode, the program should now pause and wait for user input. -``` +
 =====================================================================
   Inline Function                              Status         Run
 ---------------------------------------------------------------------
@@ -152,7 +118,7 @@ Particle plot using particle position x and y as axes with particle mass mapped
   * yt_inline_inputArg                         success         V
 =====================================================================
 >>>
-```
+
11. You can explore [interactive prompt](https://yt-project.github.io/libyt/InSituPythonAnalysis/InteractivePythonPrompt.html) -or simply press `Crtl + C` to shut down the process. +or simply press `Ctrl + C` to shut down the process. diff --git a/doc/wiki/In-Situ-Python-Analysis.md b/doc/wiki/In-Situ-Python-Analysis.md index 0986d467f5..8de55145eb 100644 --- a/doc/wiki/In-Situ-Python-Analysis.md +++ b/doc/wiki/In-Situ-Python-Analysis.md @@ -10,13 +10,15 @@ It enables us to explore these ongoing simulation data through accessing memory ### Compilation Options -libyt has the following compilation options in `Makefile`: -- [[SUPPORT_LIBYT | Installation: Simulation-Options#SUPPORT_LIBYT]] (or `--libyt` when using `configure.py`) -- [[LIBYT_USE_PATCH_GROUP | Installation: Simulation-Options#LIBYT_USE_PATCH_GROUP]] (or `--libyt_patchgroup` when using `configure.py`) -- [[LIBYT_INTERACTIVE | Installation: Simulation-Options#LIBYT_INTERACTIVE]] (or `--libyt_interactive` when using `configure.py`) +libyt has the following compilation options: +- [[--libyt | Installation:-Option-List#--libyt]] +- [[--libyt_patchgroup | Installation:-Option-List#--libyt_patchgroup]] +- [[--libyt_interactive | Installation:-Option-List#--libyt_interactive]] +- [[--libyt_reload | Installation:-Option-List#--libyt_reload]] +- [[--libyt_jupyter | Installation:-Option-List#--libyt_jupyter]] -Must set `LIBYT_PATH` in either `Makefile` or the machine configuration file -to the path containing the folders `include` and `lib` of libyt. +Must set `LIBYT_PATH` in the [[machine configuration file | Installation:-Machine-Configuration-File#1-library-paths]] +to the path containing the folders `include` and `lib` of `libyt`. ### Runtime Parameters @@ -49,4 +51,3 @@ OMPI_MCA_osc=sm,pt2pt mpirun ... ``` This is something libyt will fix in the near future. - diff --git a/doc/wiki/Initial-Conditions.md b/doc/wiki/Initial-Conditions.md index 8cbca3b62d..a7655d0030 100644 --- a/doc/wiki/Initial-Conditions.md +++ b/doc/wiki/Initial-Conditions.md @@ -18,7 +18,7 @@ initial condition (IC) and GAMER initialization: ### Grids -Set [OPT__INIT](#OPT__INIT)=1 and edit the following grid IC function: +Set [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=1 and edit the following grid IC function: * [[TESTPROB_ID | Runtime Parameters:-General#TESTPROB_ID]]=0: edit the function `Init_Function_User()` in @@ -92,11 +92,14 @@ for example. See also [[ Add Problem-specific Grid Fields and Particle Attributes | Adding-New-Simulations#v-add-problem-specific-grid-fields-and-particle-attributes ]] for adding user-defined fluid fields. -**Caution: when enabling [[OPENMP | Installation:-Simulation Options#OPENMP]], -the grid IC function must be thread-safe** since it will be invoked by -multiple threads in parallel. One can disable OpenMP parallelization +> [!CAUTION] +> When enabling [[--openmp | Installation:-Option-List#--openmp]], +the grid IC function must be **thread-safe** since it will be invoked by +multiple threads in parallel. +> +> One can disable OpenMP parallelization for the grid IC function by adopting -[[OPT__INIT_GRID_WITH_OMP| MPI-and-OpenMP#OPT__INIT_GRID_WITH_OMP]]=0. +[[OPT__INIT_GRID_WITH_OMP| Runtime-Parameters:-MPI-and-OpenMP#OPT__INIT_GRID_WITH_OMP]]=0. @@ -108,7 +111,7 @@ divergence-free magnetic field automatically. We describe the two approaches separately in the following. To set the magnetic field directly, -set [OPT__INIT](#OPT__INIT)=1 and [OPT__INIT_BFIELD_BYVECPOT](#OPT__INIT_BFIELD_BYVECPOT)=0. +set [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=1 and [[OPT__INIT_BFIELD_BYVECPOT | Runtime-Parameters:-Initial-Conditions#OPT__INIT_BFIELD_BYVECPOT]]=0. Edit the following magnetic field IC function: * [[TESTPROB_ID | Runtime Parameters:-General#TESTPROB_ID]]=0: @@ -133,7 +136,7 @@ variable `magnetic[]` at a given location `x/y/z` and time `Time`, where accessible by the keys `MAGX`, `MAGY`, `MAGZ`. To set the vector potential, -set [OPT__INIT](#OPT__INIT)=1 and [OPT__INIT_BFIELD_BYVECPOT](#OPT__INIT_BFIELD_BYVECPOT)=2. +set [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=1 and [[OPT__INIT_BFIELD_BYVECPOT | Runtime-Parameters:-Initial-Conditions#OPT__INIT_BFIELD_BYVECPOT]]=2. Then edit a problem-specific initialization function linked to the function pointer `Init_BField_ByVecPot_User_Ptr`, which has the following prototype: @@ -147,17 +150,20 @@ It should return the vector potential at a given location `x/y/z` and time `Time **Example: `Init_BField_ByVecPot_User_Template()` in `src/Model_Hydro/MHD_Init_BField_ByVecPot_Function.cpp`.** -**Caution: when enabling [[OPENMP | Installation:-Simulation Options#OPENMP]], -the magnetic field or the vector potential IC function must be thread-safe** since it will be invoked by -multiple threads in parallel. One can disable OpenMP parallelization +> [!CAUTION] +> When enabling [[--openmp | Installation:-Option-List#--openmp]], +the magnetic field or the vector potential IC function must be **thread-safe** since it will be invoked by +multiple threads in parallel. +> +> One can disable OpenMP parallelization for the magnetic field IC function by adopting -[[OPT__INIT_GRID_WITH_OMP| MPI-and-OpenMP#OPT__INIT_GRID_WITH_OMP]]=0. +[[OPT__INIT_GRID_WITH_OMP| Runtime-Parameters:-MPI-and-OpenMP#OPT__INIT_GRID_WITH_OMP]]=0. ### Particles -Set [[PAR_INIT | Particles#PAR_INIT]]=1 and edit the following +Set [[PAR_INIT | Runtime-Parameters:-Particles#PAR_INIT]]=1 and edit the following particle IC function: * [[TESTPROB_ID | Runtime Parameters:-General#TESTPROB_ID]]=0: @@ -174,12 +180,14 @@ The particle IC function has the following prototype: ```C++ void Par_Init_ByFunction( const long NPar_ThisRank, const long NPar_AllRank, - real *ParMass, real *ParPosX, real *ParPosY, real *ParPosZ, - real *ParVelX, real *ParVelY, real *ParVelZ, real *ParTime, - real *ParType, real *AllAttribute[PAR_NATT_TOTAL] ) + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) ``` It should set the particle IC in the arrays `ParMass`, `ParPosX/Y/Z`, -`ParVelX/Y/Z`, `ParTime`, `ParType`, and, optionally, the pointer array `*AllAttribute[PAR_NATT_TOTAL]`, +`ParVelX/Y/Z`, `ParTime`, `ParType`, and, optionally, the pointer arrays +`*AllAttributeFlt[PAR_NATT_FLT_TOTAL]` and `*AllAttributeInt[PAR_NATT_INT_TOTAL]`, all of which have the size of `NPar_ThisRank` — the number of particles to be set by this MPI rank. Note that particles set by this function are only temporarily stored in this MPI rank and will later be @@ -191,7 +199,7 @@ particles**. The built-in particle types (defined in `include/Macro.h`) include `PTYPE_TRACER`, `PTYPE_GENERIC_MASSIVE`, `PTYPE_DARK_MATTER`, and `PTYPE_STAR`. For `PTYPE_TRACER`, one must also enable the compilation option -[[TRACER | Installation: Simulation-Options#TRACER]]. +[[--tracer | Installation:-Option-List#--tracer]]. The following example shows `Par_Init_ByFunction()` in `src/Particle/Par_Init_ByFunction.cpp`: @@ -215,25 +223,29 @@ The following example shows `Par_Init_ByFunction()` in // and LB_Init_LoadBalance() // --> Therefore, there is no constraint on which particles should be set by this function // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // // Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction( const long NPar_ThisRank, const long NPar_AllRank, - real *ParMass, real *ParPosX, real *ParPosY, real *ParPosZ, - real *ParVelX, real *ParVelY, real *ParVelZ, real *ParTime, - real *ParType, real *AllAttribute[PAR_NATT_TOTAL] ) + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { // synchronize all particles to the physical time on the base level @@ -248,26 +260,26 @@ void Par_Init_ByFunction( const long NPar_ThisRank, const long NPar_AllRank, real *ParPos[3] = { ParPosX, ParPosY, ParPosZ }; real *ParVel[3] = { ParVelX, ParVelY, ParVelZ }; - const uint RSeed = 2; // random seed - const real MassMin = 1.0e-2; // minimum value of particle mass - const real MassMax = 1.0; // maximum value of particle mass - const real PosMin[3] = { 0.0, 0.0, 0.0 }; // minimum value of particle position - const real PosMax[3] = { real( amr->BoxSize[0]*(1.0-1.0e-5) ), // maximum value of particle position - real( amr->BoxSize[1]*(1.0-1.0e-5) ), - real( amr->BoxSize[2]*(1.0-1.0e-5) ) }; - const real VelMin[3] = { -1.0, -1.0, -1.0 }; // minimum value of particle velocity - const real VelMax[3] = { +1.0, +1.0, +1.0 }; // maximum value of particle velocity + const uint RSeed = 2; // random seed + const real_par MassMin = 1.0e-2; // minimum value of particle mass + const real_par MassMax = 1.0; // maximum value of particle mass + const real_par PosMin[3] = { 0.0, 0.0, 0.0 }; // minimum value of particle position + const real_par PosMax[3] = { real( amr->BoxSize[0]*(1.0-1.0e-5) ), // maximum value of particle position + real( amr->BoxSize[1]*(1.0-1.0e-5) ), + real( amr->BoxSize[2]*(1.0-1.0e-5) ) }; + const real_par VelMin[3] = { -1.0, -1.0, -1.0 }; // minimum value of particle velocity + const real_par VelMax[3] = { +1.0, +1.0, +1.0 }; // maximum value of particle velocity srand( RSeed ); for (long p=0; p ### Grids -Set [OPT__INIT](#OPT__INIT)=3 to load the grid initial condition from a +Set [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=3 to load the grid initial condition from a uniform-mesh binary file named **`UM_IC`**. This file will be used to provide the initial grid data of the entire computational domain _fully refined_ -to the AMR level [OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL) -(but see also [OPT__UM_IC_DOWNGRADE](#OPT__UM_IC_DOWNGRADE) and -[OPT__UM_IC_REFINE](#OPT__UM_IC_REFINE) described below). The dimension of +to the AMR level [[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]] +(but see also [[OPT__UM_IC_DOWNGRADE | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_DOWNGRADE]] and +[[OPT__UM_IC_REFINE | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_REFINE]] described below). The dimension of this uniform-mesh file (assuming a row-major array) can be either -`[NFIELD][NZ][NY][NX]` (for [OPT__UM_IC_FORMAT](#OPT__UM_IC_FORMAT)=1) or -`[NZ][NY][NX][NFIELD]` (for [OPT__UM_IC_FORMAT](#OPT__UM_IC_FORMAT)=2), where -`NFIELD` is the number of fluid fields set by [OPT__UM_IC_NVAR](#OPT__UM_IC_NVAR) +`[NFIELD][NZ][NY][NX]` (for [[OPT__UM_IC_FORMAT | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FORMAT]]=1) or +`[NZ][NY][NX][NFIELD]` (for [[OPT__UM_IC_FORMAT | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FORMAT]]=2), where +`NFIELD` is the number of fluid fields set by [[OPT__UM_IC_NVAR | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_NVAR]] and `NX/Y/Z` are the grid dimensions (i.e., number of cells) along the x/y/z directions, respectively. Since `UM_IC` should store the initial condition of -a uniform mesh corresponding to level [OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL), +a uniform mesh corresponding to level [[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]], one must ensure that -* `NX`=[[NX0_TOT_X | Runtime-Parameters:-General#NX0_TOT_X]]*2^[OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL) -* `NY`=[[NX0_TOT_Y | Runtime-Parameters:-General#NX0_TOT_Y]]*2^[OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL) -* `NZ`=[[NX0_TOT_Z | Runtime-Parameters:-General#NX0_TOT_Z]]*2^[OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL) +* `NX`=[[NX0_TOT_X | Runtime-Parameters:-General#NX0_TOT_X]]*2^[[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]] +* `NY`=[[NX0_TOT_Y | Runtime-Parameters:-General#NX0_TOT_Y]]*2^[[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]] +* `NZ`=[[NX0_TOT_Z | Runtime-Parameters:-General#NX0_TOT_Z]]*2^[[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]] For example, for `NX0_TOT_X=16`, `NX0_TOT_Y=32`, `NX0_TOT_Z=48`, `OPT__UM_IC_LEVEL=1`, and `NCOMP_PASSIVE_USER=0`, `UM_IC` should have the dimension `[5+0][48*2^1][32*2^1][16*2^1]=[5][96][64][32]` -for [OPT__UM_IC_FORMAT](#OPT__UM_IC_FORMAT)=1 or -`[96][64][32][5]` for [OPT__UM_IC_FORMAT](#OPT__UM_IC_FORMAT)=2, +for [[OPT__UM_IC_FORMAT | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FORMAT]]=1 or +`[96][64][32][5]` for [[OPT__UM_IC_FORMAT | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FORMAT]]=2, assuming the array indices are row-major. The following C++ example sets up a static and uniform gas with mass density of 1 -and total energy density of 2 (assuming [OPT__UM_IC_FORMAT](#OPT__UM_IC_FORMAT)=1). +and total energy density of 2 (assuming [[OPT__UM_IC_FORMAT | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FORMAT]]=1). ```c++ #include @@ -346,31 +358,36 @@ int main() ``` The entire computational domain will always be first fully refined to the -AMR level [OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL). After that, if -[OPT__UM_IC_DOWNGRADE](#OPT__UM_IC_DOWNGRADE) is enabled, the initialization -routine will remove grids on levels 1 — [OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL) +AMR level [[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]]. After that, if +[[OPT__UM_IC_DOWNGRADE | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_DOWNGRADE]] is enabled, the initialization +routine will remove grids on levels 1 — [[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]] that do not satisfy any refinement criterion. -Also, if [OPT__UM_IC_REFINE](#OPT__UM_IC_REFINE) is enabled, the initialization -routine will add grids to levels [OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL)+1 — +Also, if [[OPT__UM_IC_REFINE | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_REFINE]] is enabled, the initialization +routine will add grids to levels [[OPT__UM_IC_LEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL]]+1 — [[ MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]] in the regions satisfying any refinement criterion. +A custom routine for assigning data to each cell from the loaded data +can be specified using the function pointer +[[Init_ByFile_User_Ptr | Adding-New-Simulations#initial-condition-from-files---grids]]. + The initial condition file `UM_IC` can be loaded concurrently by multiple -MPI processes using [OPT__UM_IC_LOAD_NRANK](#OPT__UM_IC_LOAD_NRANK). +MPI processes using [[OPT__UM_IC_LOAD_NRANK | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LOAD_NRANK]]. -To support AMR data in `UM_IC`, set [OPT__UM_IC_NLEVEL](#OPT__UM_IC_NLEVEL)>1 and +To support AMR data in `UM_IC`, set [[OPT__UM_IC_NLEVEL | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_NLEVEL]]>1 and edit the input table `Input__UM_IC_RefineRegion`. See `example/input/Input__UM_IC_RefineRegion` and the example code `tool/inits/create_UM_IC.cpp` for details. -**Caution: [OPT__INIT](#OPT__INIT)=3 does not fully support +> [!CAUTION] +> [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=3 does not fully support user-defined passively advected scalars (i.e., -[[NCOMP_PASSIVE_USER | Installation: Simulation-Options#NCOMP_PASSIVE_USER]]>0) yet. -[[Ask developers for help | Home#need-helps]] if needed.** +[[--passive | Installation:-Option-List#--passive]]>0) yet. +[[Ask developers for help | Home#need-helps]] if needed. ### Magnetic Field -Set [OPT__INIT](#OPT__INIT)=1 and [OPT__INIT_BFIELD_BYVECPOT](#OPT__INIT_BFIELD_BYVECPOT)=1 +Set [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=1 and [[OPT__INIT_BFIELD_BYVECPOT | Runtime-Parameters:-Initial-Conditions#OPT__INIT_BFIELD_BYVECPOT]]=1 to load the vector potential IC from a uniform-mesh HDF5 file named **`B_IC`**. The built-in routines will construct a corresponding divergence-free magnetic field automatically. @@ -381,66 +398,107 @@ divergence-free magnetic field automatically. ### Particles -Set [[PAR_INIT | Particles#PAR_INIT]]=3 to load the particle initial condition +Set [[PAR_INIT | Runtime-Parameters:-Particles#PAR_INIT]]=3 to load the particle initial condition from a binary file named **`PAR_IC`**. The dimension of this file (assuming a row-major array) can be either -`[NUM_ATTRIBUTE][NUM_PARTICLE]` (for [[PAR_IC_FORMAT | Particles#par_ic_format]]=1) or -`[NUM_PARTICLE][NUM_ATTRIBUTE]` (for [[PAR_IC_FORMAT | Particles#par_ic_format]]=2), where +`[NUM_ATTRIBUTE][NUM_PARTICLE]` (for [[PAR_IC_FORMAT | Runtime-Parameters:-Particles#PAR_IC_FORMAT]]=1) or +`[NUM_PARTICLE][NUM_ATTRIBUTE]` (for [[PAR_IC_FORMAT | Runtime-Parameters:-Particles#PAR_IC_FORMAT]]=2), where `NUM_ATTRIBUTE` is the number of particle attributes to be loaded and `NUM_PARTICLE` is the total number of particles -(i.e., [[PAR_NPAR | Particles#par_npar]]). +(i.e., [[PAR_NPAR | Runtime-Parameters:-Particles#PAR_NPAR]]). By default, `NUM_ATTRIBUTE` is equal to -`8` + [[PAR_NATT_USER | Installation: Simulation-Options#PAR_NATT_USER]], +`7` + [[--par_attribute_flt | Installation:-Option-List#--par_attribute_flt]] + [[--par_attribute_int | Installation:-Option-List#--par_attribute_int]], corresponding to particle mass, position x/y/z, velocity x/y/z, type, and user-specified attributes (and in exactly this order). -One can also use [[PAR_IC_MASS | Particles#par_ic_mass]] / [[PAR_IC_TYPE | Particles#par_ic_type]] +One can also use [[PAR_IC_MASS | Runtime-Parameters:-Particles#PAR_IC_MASS]] / [[PAR_IC_TYPE | Runtime-Parameters:-Particles#PAR_IC_TYPE]] to assign the same particle mass / type to all particles, in which case the file `PAR_IC` should not store particle mass / type. The following C++ example constructs a particle initial condition -file with 1000 particles assuming [[PAR_IC_MASS | Particles#par_ic_mass]]<0, -[[PAR_IC_TYPE | Particles#par_ic_type]]<0, -and [[PAR_IC_FORMAT | Particles#par_ic_format]]=1. +file with 1000 particles assuming [[PAR_IC_MASS | Runtime-Parameters:-Particles#PAR_IC_MASS]]<0, +[[PAR_IC_TYPE | Runtime-Parameters:-Particles#PAR_IC_TYPE]]<0, +and [[PAR_IC_FORMAT | Runtime-Parameters:-Particles#PAR_IC_FORMAT]]=1. ```c++ #include +//#define FLOAT8_PAR +#define INT8_PAR + + +#ifdef FLOAT8_PAR +typedef double real_par; +#else +typedef float real_par; +#endif + +#ifdef INT8_PAR +typedef long long_par; +#else +typedef int long_par; +#endif + + int main() { - const int NUM_PARTICLE = 1000; - const int NUM_ATTRIBUTE = 8; - float (*ParIC)[NUM_PARTICLE] = new float [NUM_ATTRIBUTE][NUM_PARTICLE]; + const int NUM_PARTICLE = 1000; + const int NUM_ATTRIBUTE_FLT = 7; + const int NUM_ATTRIBUTE_INT = 1; + const bool PAR_IC_ID_ATT = true; // data format of PAR_IC: (true: [id][attribute], false: [attribute][id]; row-major) + + real_par (*ParIC_Flt)[NUM_PARTICLE] = new real_par [NUM_ATTRIBUTE_FLT][NUM_PARTICLE]; + long_par (*ParIC_Int)[NUM_PARTICLE] = new long_par [NUM_ATTRIBUTE_INT][NUM_PARTICLE]; for (int p=0; p -* #### `OPT__INIT`   (1=function, 2=restart, 3=`UM_IC` file)   [none] - * **Description:** -Grid initialization method. -`OPT__INIT=1`: using analytical functions; see -[Setting IC from Analytical Functions — Grids](#IC-Func-Grids). -`OPT__INIT=2`: -[[restarting from a simulation snapshot | Running-the-Code#restarting-from-a-snapshot]]. -`OPT__INIT=3`: loading a uniform-mesh binary file named `UM_IC`; see -[Setting IC from Files — Grids](#IC-File-Grids). - * **Restriction:** - - -* #### `OPT__INIT_BFIELD_BYVECPOT`   (0=off, 1=file, 2=function)   [0] - * **Description:** -Set the magnetic field from either a vector potential file named `B_IC` (see -[Setting IC from Files — Magnetic Field](#IC-File-BField)) or an -analytical vector potential function (see -[Setting IC from Functions — Magnetic Field](#IC-Func-BField)). - * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. - - -* #### `RESTART_LOAD_NRANK`   (>0)   [1] - * **Description:** -Number of parallel I/O for restart. In other words, `RESTART_LOAD_NRANK` -MPI processes will load the restart file in parallel. - * **Restriction:** - - -* #### `OPT__RESTART_RESET`   (0=off, 1=on)   [0] - * **Description:** -During restart, reset some of the simulation status parameters -(e.g., step, time, snapshot ID) to their initial values as if the -simulation starts over again. - * **Restriction:** - - -* #### `OPT__UM_IC_LEVEL`   (0 ≤ input < [[NLEVEL | Installation:-Simulation Options#NLEVEL]])   [0] - * **Description:** -Starting AMR level in the uniform-mesh initial condition file. -See [Setting IC from Files — Grids](#IC-File-Grids) for details. - * **Restriction:** - - -* #### `OPT__UM_IC_NLEVEL`   (1 ≤ input ≤ [[NLEVEL | Installation:-Simulation Options#NLEVEL]]-[OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL))   [1] - * **Description:** -Number of AMR levels in the uniform-mesh initial condition file. -See [Setting IC from Files — Grids](#IC-File-Grids) for details. - * **Restriction:** - - -* #### `OPT__UM_IC_NVAR`   (0 ≤ input < total number of gas fields)   [total number of gas fields] - * **Description:** -Number of fluid variables stored in the uniform-mesh initial condition file. -The default value is -5+[[NCOMP_PASSIVE_USER | Installation: Simulation-Options#NCOMP_PASSIVE_USER]] -for [[MODEL | Installation: Simulation-Options#MODEL]]=HYDRO. -See [Setting IC from Files — Grids](#IC-File-Grids) for details. - * **Restriction:** - - -* #### `OPT__UM_IC_FORMAT`   (1=[v][z][y][x], 2=[z][y][x][v]; row-major and v=field)   [1] - * **Description:** -Data format of the uniform-mesh initial condition file. See -[Setting IC from Files — Grids](#IC-File-Grids) for details. - * **Restriction:** - - -* #### `OPT__UM_IC_FLOAT8`   (<0: same as [[FLOAT8 | Installation:-Simulation Options#FLOAT8]], 0=single precision, 1=double precision)   [-1] - * **Description:** -Floating-point precision of the uniform-mesh initial condition file. - * **Restriction:** - - -* #### `OPT__UM_IC_DOWNGRADE`   (0=off, 1=on)   [1] - * **Description:** -Downgrade (i.e. derefine) the uniform-mesh initial condition data for cells -not satisfying any refinement criteria. -See [Setting IC from Files — Grids](#IC-File-Grids) for details. - * **Restriction:** - - -* #### `OPT__UM_IC_REFINE`   (0=off, 1=on)   [1] - * **Description:** -Refine the uniform-mesh initial condition data from level `OPT__UM_IC_LEVEL` to -[[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL]] for cells satisfying the adopted -refinement criteria. -See [Setting IC from Files — Grids](#IC-File-Grids) for details. - * **Restriction:** - - -* #### `OPT__UM_IC_LOAD_NRANK`   (>0)   [1] - * **Description:** -Number of parallel I/O for loading the uniform-mesh initial condition file. -Specifically, it allows `OPT__UM_IC_LOAD_NRANK` MPI processes to load the -initial condition file concurrently. But the actually achieved parallel I/O -depends on the system specifications. -See also [Setting IC from Files — Grids](#IC-File-Grids). - * **Restriction:** - - -* #### `OPT__INIT_RESTRICT`   (0=off, 1=on)   [1] - * **Description:** -For non-leaf patches, replace fluid data by the volume-weighted average -of their child patch data. It is similar to the option -[[OPT__FIXUP_RESTRICT | Hydro#OPT__FIXUP_RESTRICT]] -except that it only applies to the initial condition. - * **Restriction:** - - -* #### `INIT_SUBSAMPLING_NCELL`   (0=off, >0 → number of sub-cells along each direction)   [0] - * **Description:** -Perform sub-sampling when constructing the grid IC to make it smoother. -Specifically, each cell will be divided into Nsub3 -sub-cells when calling the grid IC function, where -Nsub = `INIT_SUBSAMPLING_NCELL`, and then -take the volume-weighted average of these sub-cells. - * **Restriction:** -Only applicable when adopting [OPT__INIT](#OPT__INIT)=1. - - -* #### `OPT__FFTW_STARTUP`   (-1 → set to default, 0=ESTIMATE, 1=MEASURE, 2=PATIENT)   [-1] - * **Description:** -Initialize FFTW plans. `MEASURE` is recommended for the balance -between FFTW plan initialization time and FFT performance. -Note that simulation results can vary in each run on the level of -machine precision for `OPT__FFTW_STARTUP != ESTIMATE`. - * **Restriction:** -`PATIENT` is not supported by FFTW2. -Must use `ESTIMATE` when enabling -[[BITWISE_REPRODUCIBILITY | Installation: Simulation-Options#BITWISE_REPRODUCIBILITY]]. +[[PAR_INIT | Runtime-Parameters:-Particles#PAR_INIT]],   +[[PAR_IC_FORMAT | Runtime-Parameters:-Particles#PAR_IC_FORMAT]],   +[[PAR_IC_MASS | Runtime-Parameters:-Particles#PAR_IC_MASS]],   +[[OPT__INIT_GRID_WITH_OMP | Runtime-Parameters:-MPI-and-OpenMP#OPT__INIT_GRID_WITH_OMP]]   ## Remarks @@ -620,4 +528,4 @@ Must use `ESTIMATE` when enabling ## Links * [[Main page of Runtime Parameters | Runtime Parameters]] -* [[Adding New Simulations | Adding New Simulations]] \ No newline at end of file +* [[Adding New Simulations | Adding New Simulations]] diff --git a/doc/wiki/Installation:-External-Libraries.md b/doc/wiki/Installation-related/Installation:-External-Libraries.md similarity index 63% rename from doc/wiki/Installation:-External-Libraries.md rename to doc/wiki/Installation-related/Installation:-External-Libraries.md index ed67f31d7b..2b4d1a84ea 100644 --- a/doc/wiki/Installation:-External-Libraries.md +++ b/doc/wiki/Installation-related/Installation:-External-Libraries.md @@ -1,26 +1,9 @@ -## Library Paths - -Set the following library paths in the `Makefile` to help -compiler locate them (if necessary): - -``` Makefile -CUDA_PATH := -FFTW2_PATH := -FFTW3_PATH := -MPI_PATH := -HDF5_PATH := -GRACKLE_PATH := -GSL_PATH := -LIBYT_PATH := -``` -Only the paths of libraries being used need to be set. In addition, -it is usually unnecessary to set the paths that have been embedded -into the compiling command (e.g., when using `CC` and `module load` -in a Cray computer system). - -## Library Configurations +* [FFTW](#FFTW) +* [GRACKLE](#GRACKLE) +* [HDF5](#HDF5) +* [LIBYT](#LIBYT) -### FFTW +## FFTW GAMER supports both FFTW2 and FFTW3 for various calculations (e.g., the root-level Poisson solver). Follow the installation instructions on the [FFTW website](http://www.fftw.org/download.html). Note that it must be configured with @@ -28,7 +11,7 @@ floating-point type prefix `--enable-type-prefix` for FFTW2 and MPI support `--enable-mpi` for both FFTW2 and FFTW3. Here are example installation scripts using the GNU compiler for FFTW2 and FFTW3, respectively: -#### FFTW2 +### FFTW2 (`FFTW2_PATH`) ``` bash export FFTW_PATH=PATH_TO_INSTALL_YOUR_FFTW export CC=gcc @@ -47,7 +30,7 @@ make make install ``` -#### FFTW3 +### FFTW3 (`FFTW3_PATH`) ``` bash export FFTW_PATH=PATH_TO_INSTALL_YOUR_FFTW export CC=gcc @@ -67,27 +50,25 @@ make install ``` -### GRACKLE +## GRACKLE (`GRACKLE_PATH`) GAMER uses GRACKLE for the chemistry and radiative processes. Follow the installation instructions in the [GRACKLE website](http://grackle.readthedocs.io/en/latest/index.html). -Note that it must be configured with a -consistent floating-point accuracy as GAMER using - > make precision-{32,64} +Grackle and GAMER can be compiled with different floating-point precisions. +It is [recommended](https://grackle.readthedocs.io/en/latest/Installation.html#compiler-settings) +to compile Grackle in double precision: -Specifically, configure GRACKLE with `make precision-64/32` when -compiling GAMER with/without the option -[[FLOAT8 | Installation: Simulation-Options#FLOAT8]], respectively. + > make precision-64 -In addition, when enabling OpenMP in GAMER (i.e., with the -compile-time option [[OPENMP | Installation: Simulation-Options#OPENMP]]), +When enabling OpenMP in GAMER (i.e., with the +compile-time option [[--openmp | Installation:-Option-List#--openmp]]), GRACKLE must be configured with OpenMP support as well using > make omp-on -### HDF5 +## HDF5 (`HDF5_PATH`) GAMER uses [HDF5](https://support.hdfgroup.org/HDF5/) for storing snapshots. It is not necessary to enable either `--enable-cxx` or `--enable-parallel` when configuring HDF5 since GAMER currently adopts the C interface with serial I/O. @@ -100,12 +81,12 @@ make make install ``` -### LIBYT +## LIBYT (`LIBYT_PATH`) GAMER uses [libyt](https://github.com/yt-project/libyt) for in situ Python analysis. See [[In Situ Python Analysis | In-Situ-Python-Analysis]] for details. libyt has two modes, normal mode and interactive mode. -Please refer to [libyt -- How to Install](https://yt-project.github.io/libyt/HowToInstall.html#libyt). +Please refer to [libyt -- How to Install](https://libyt.readthedocs.io/en/latest/how-to-install/how-to-install.html#how-to-install). Set `LIBYT_PATH` to the folder that contains subfolders `include` and `lib`. @@ -113,6 +94,6 @@ Set `LIBYT_PATH` to the folder that contains subfolders `include` and `lib`.
## Links -* [[Makefile configuration -- Simulation Options | Installation: Simulation Options]] -* [[Makefile configuration -- Compiler and Flags | Installation: Compiler and Flags]] +* [[Machine Configuration File | Installation:-Machine-Configuration-File]] +* [[Option List | Installation:-Option-List]] * [[Back to the main page of Installation | Installation]] diff --git a/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md b/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md new file mode 100644 index 0000000000..93e7de28c0 --- /dev/null +++ b/doc/wiki/Installation-related/Installation:-Machine-Configuration-File.md @@ -0,0 +1,75 @@ +The machine configuration file is located under `configs`. It specifies the library paths, compiler types, compilation flags, and GPU compute capability. + +> [!TIP] +> Check the `configs` directory to see if a configuration file is already available for your machine. + +## Set Up the Machine Configuration File + +To set up your machine configuration file, go to `configs` and make a copy of `template.config` to modify: + +```bash +cd configs +cp template.config your_machine.config +``` + +Please refer to the following sections to set up your machine configuration file. + +### 0. Rules of the configuration file +* Comments must start with `#`. +* The variable name and its value must be separated by space(s). + +### 1. Library paths + +For example, `MPI_PATH` can be set by: +``` +MPI_PATH /usr/local/mpich-3.2 +``` +Please also check out the installation of [[External Libraries | Installation:-External-Libraries]]. + +### 2. Compilers + +There are two compilers in this section: C++ (`CXX`) and MPI (`CXX_MPI`). +> [!NOTE] +> `MPI_PATH/bin/` will be combined with `CXX_MPI` automatically + +### 3. Compilation flags + +For example, `CXXFLAG` can be set by: + +``` +CXXFLAG -g -O2 +``` + +or + +``` +CXXFLAG -g +CXXFLAG -O2 +``` + +Here is a table of all the available flag variables: +| Flag name | Description | +|---|---| +| `CXXFLAG` | Flags for compiler `CXX` and `CXX_MPI` | +| `OPENMPFLAG` | Flags for OpenMP | +| `LIBFLAG` | Flags for all libraries | +| `NVCCFLAG_COM` | Flags for `nvcc` compiler | +| `NVCCFLAG_FLU` | Flags for fluid solver files | +| `NVCCFLAG_POT` | Flags for Poisson/gravity solvers files | + +### 4. GPU compute capability + +The GPU compute capability can be calculated by `major_verison*100 + minor_version*10`. For example, for `GeForce RTX 4090`, set `GPU_COMPUTE_CAPABILITY 890` (8\*100 + 9\*10). + +> [!TIP] +> * You can also set `GPU_COMPUTE_CAPABILITY` to `-1` to determine the value automatically using `get_gpu_compute_capability()` in `configure.py`. +> * Check your GPU compute capability: +> 1. https://developer.nvidia.com/cuda-gpus +> 1. https://en.wikipedia.org/wiki/CUDA#GPUs_supported + +
+ +## Links +* [[ Option List | Installation:-Option-List ]] +* [[External Libraries | Installation:-External-Libraries ]] +* [[Back to the main page of Installation | Installation]] diff --git a/doc/wiki/Installation-related/Installation:-Option-List.md b/doc/wiki/Installation-related/Installation:-Option-List.md new file mode 100644 index 0000000000..ed1c0aff93 --- /dev/null +++ b/doc/wiki/Installation-related/Installation:-Option-List.md @@ -0,0 +1,147 @@ +All available options in `configure.py`, including compile-time simulation options and options specific to `configure.py`, are listed below. +* [configure.py Only](#configurepy-only) + +Compile-time simulation options are classified into the following categories: +* [Physical Modules](#physical-modules) +* [Hydro](#hydro-options) +* [ELBDM](#elbdm-options) +* [Gravity](#gravity-options) +* [Particles](#particle-options) +* [Microphysics](#microphysics-options) +* [In Situ Python Analysis](#in-situ-python-analysis-options) +* [Parallelization](#parallelization-options) +* [Miscellaneous](#miscellaneous-options) + +> [!CAUTION] +> Some combinations are mandatory (e.g., `RSOLVER` must be set when +`--flu_scheme=CTU`), while some combinations are prohibited +(e.g., `--particle` is not supported when both `--gravity` and `--tracer` are +disabled). See the "Restriction" of each option carefully. + +## `configure.py` Only + +| Option | Value | Description | +|:---:|:---:|---| +| `-h` | - | Show a short help message. | +| `-lh` | - | Show a detailed help message. | +| `--machine` | Filename string | Select the `*.config` file from the `configs` directory. It will overwrite the default machine set in the [[default setting file \| Installation#default_setting]]. | + +      +           +## Physical Modules + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--model` | `HYDRO`, `ELBDM` | `HYDRO` | Physical models, where `ELBDM` represents Extremely Light Bosonic Dark Matter, also known as wave dark matter (ψDM) or fuzzy dark matter (FDM) | Must be set in any cases | `MODEL` | +| `--gravity` | `true`, `false` | `false` | Enable [[gravity \| Gravity]] | Must enable `--fftw`; may need to set `FFTW2/3_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `GRAVITY` | +| `--particle` | `true`, `false` | `false` | Enable [[particles \| Particles]] | Must enable `--gravity` or `--tracer` | `PARTICLE` | +| `--grackle` | `true`, `false` | `false` | Enable [[GRACKLE \| Chemistry and Radiation]] | May need to set `GRACKLE_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]]; only support `--eos=GAMMA/COSMIC_RAY`; does not support `--comoving` | `SUPPORT_GRACKLE` | +| `--passive` | ≥ 0 | `0` | Number of user-defined passive scalars | See [[here \| Adding-New-Simulations#v-add-problem-specific-grid-fields-and-particle-attributes]] for details; not supported for `--flu_scheme=RTVD` | `NCOMP_PASSIVE_USER` | + +## Hydro Options +-- see [[Hydro]] for the related runtime parameters and other settings; must enable `--model=HYDRO` + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--flu_scheme` | `RTVD`, `MHM`, `MHM_RP`, `CTU` | `CTU` | Hydro schemes. `RTVD`: relaxing TVD; `MHM`: MUSCL-Hancock; `MHM_RP`: VL scheme; `CTU`: corner transport upwind | `--mhd` only supports `MHM`, `MHM_RP`, and `CTU`; `--srhd` only supports `MHM` and `MHM_RP`; `--cosmic_ray` only supports `MHM_RP` | `FLU_SCHEME` | +| `--slope` | `PLM`, `PPM` | `PPM` | Spatial reconstruction. `PLM`: piecewise linear; `PPM`: piecewise parabolic | Useless for `--flu_scheme=RTVD` | `LR_SCHEME` | +| `--flux` | `EXACT`, `ROE`, `HLLE`, `HLLC`, `HLLD` | Depend | Riemann solvers | Useless for `--flu_scheme=RTVD`; `EXACT` is experimental; pure hydrodynamics supports `EXACT/ROE/HLLE/HLLC`; `--mhd` supports `ROE/HLLE/HLLD`; `--srhd` and `--cosmic_ray` support `HLLE/HLLC` | `RSOLVER` | +| `--dual` | `OFF`, `DE_ENPY`, `DE_EINT` | `OFF` | Enable dual energy formalism | Not supported for `--flu_scheme=RTVD`. `DE_EINT` is not supported yet. | `DUAL_ENERGY` | +| `--mhd` | `true`, `false` | `false` | Magnetohydrodynamics | - | `MHD` | +| `--srhd` | `true`, `false` | `false` | Special relativistic hydrodynamics | Must adopt `--eos=TAUBMATHEWS` | `SRHD` | +| `--cosmic_ray` | `true`, `false` | `false` | Cosmic rays | Must adopt `--eos=COSMIC_RAY` | `COSMIC_RAY` | +| `--eos` | `GAMMA`, `ISOTHERMAL`, `COSMIC_RAY`, `TAUBMATHEWS`, `USER` | Depend | [[Equation of state \| equation-of-state]] | The following options only support `GAMMA`: `--flu_scheme=RTVD/CTU`, `--flux=EXACT/ROE`, `--comoving`, `--dual`; see also `--barotropic` | `EOS` | +| `--barotropic` | `true`, `false` | Depend | Is `--eos` barotropic? | Must be disabled for `--eos=GAMMA/COSMIC_RAY/TAUBMATHEWS` and enabled for `--eos=ISOTHERMAL` | `BAROTROPIC_EOS` | + +## ELBDM Options +-- see [[ELBDM]] for the related runtime parameters and other settings; must enable `--model=ELBDM` + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--elbdm_scheme` | `ELBDM_WAVE`, `ELBDM_HYBRID` | `ELBDM_WAVE` | ELBDM schemes. `ELBDM_WAVE`: wave-only; `ELBDM_HYBRID`: fluid-wave hybrid scheme | - | `ELBDM_SCHEME` | +| `--wave_scheme` | `WAVE_FD`, `WAVE_GRAMFE` | `WAVE_FD` | Wave schemes. `WAVE_FD`: finite difference; `WAVE_GRAMFE`: local pseudospectral method based on Fourier continuations with Gram polynomials (hereafter also referred to as the Gram-Fourier extension method; GramFE) | Must set `--model=ELBDM` | `WAVE_SCHEME` | +| `--conserve_mass` | `true`, `false` | `true` | Enforce mass conservation | - | `CONSERVE_MASS` | +| `--laplacian_four` | `true`, `false` | Depend | Adopt the fourth-order Laplacian for `--wave_scheme=WAVE_FD` | Must set `--wave_scheme=WAVE_FD` | `LAPLACIAN_4TH` | +| `--gramfe_scheme` | `GRAMFE_MATMUL`, `GRAMFE_FFT` | `GRAMFE_MATMUL` | GramFE schemes. `GRAMFE_MATMUL`: matrix-multiplication approach, which is faster for `--patch_size=8`; `GRAMFE_FFT`: FFT approach, which is faster for larger patch sizes | Must adopt `--wave_scheme=WAVE_GRAMFE`. Must set `--fftw` when using both `--gramfe_scheme=GRAMFE_FFT` and `--gpu=false` | `GRAMFE_SCHEME` | +| `--hybrid_scheme` | `HYBRID_UPWIND`, `HYBRID_FROMM`, `HYBRID_MUSCL` | `HYBRID_MUSCL` | Fluid schemes supported by the fluid-wave hybrid algorithm. `HYBRID_UPWIND`: first-order, diffusive; `HYBRID_FORMM`: second-order, no limiter, unstable for fluid-only simulations; `HYBRID_MUSCL`: second-order, with limiter, useful for zoom-in and fluid-only simulations | Must adopt `--elbdm_scheme=ELBDM_HYBRID` | `HYBRID_SCHEME` | +| `--self_interaction` | `true`, `false` | `false` | Include the quartic self-interaction potential | Must enable `--gravity`. Does not support `--comoving` | `QUARTIC_SELF_INTERACTION` | + +## Gravity Options +-- see [[Gravity]] for the related runtime parameters and other settings; must enable `--gravity=true` + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--pot_scheme` | `SOR`, `MG` | `SOR` | Poisson solver. `SOR`: successive-overrelaxation (recommended); `MG`: multigrid | Must be set when `--gravity` is enabled | `POT_SCHEME` | +| `--store_pot_ghost` | `true`, `false` | `true` | Store the ghost-zone potential (recommended when `--particle` is enabled) | Must be enabled when both `--star_formation` and `--store_par_acc` are adopted | `STORE_POT_GHOST` | +| `--unsplit_gravity` | `true`, `false` | Depend | Use operator-unsplit method to couple gravity to the adopted physical model (recommended) | Not supported for `--model=ELBDM` | `UNSPLIT_GRAVITY` | +| `--comoving` | `true`, `false` | `false` | Cosmological simulation | - | `COMOVING` | + +## Particle Options +-- see [[Particles]] for the related runtime parameters and other settings; must enable `--particle=true` + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--tracer` | `true`, `false` | `false` | Enable tracer particles | - | `TRACER` | +| `--store_par_acc` | `true`, `false` | `true` | Store particle acceleration (recommended) | - | `STORE_PAR_ACC` | +| `--star_formation` | `true`, `false` | `false` | Enable star formation | Must enable `--store_pot_ghost` when using `--store_par_acc` | `STAR_FORMATION` | +| `--feedback` | `true`, `false` | `false` | Enable feedback from particles to grids (and vice versa) | See [[here \| Feedback]] for details | `FEEDBACK` | +| `--par_attribute_flt` | ≥ 0 | `0` | Number of user-defined particle floating-point attributes | See [[here \| Adding-New-Simulations#particle-attributes]] for details | `PAR_NATT_FLT_USER` | +| `--par_attribute_int` | ≥ 0 | `0` | Number of user-defined particle integer attributes | See [[here \| Adding-New-Simulations#particle-attributes]] for details | `PAR_NATT_INT_USER` | +| `--double_par` | `true`, `false` | Depend | Enable double-precision floating-point accuracy for particles. It will be set to `--double` by default. | - | `FLOAT8_PAR` | +| `--long_par` | `true`, `false` | `true` | Enable long interger data type for particles. | - | `INT8_PAR` | + +## Microphysics Options + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--cr_diffusion` | `true`, `false`| `false` | Cosmic-ray diffusion | Must enable both `--cosmic_ray` and `--mhd` | `CR_DIFFUSION` | + +## In Situ Python Analysis Options +-- see [[In Situ Python Analysis | In-Situ-Python-Analysis]] for the related runtime parameters and other settings; must enable `--libyt=true` + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--libyt` | `true`, `false` | `false` | Enable libyt for in situ Python analysis | May need to set `LIBYT_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `SUPPORT_LIBYT` | +| `--libyt_patchgroup` | `true`, `false` | `true` | Use patch groups instead of patches as the grid unit for better performance (recommended) | - | `LIBYT_USE_PATCH_GROUP` | +| `--libyt_interactive` | `true`, `false` | `false` | Activate interactive Python prompt in in situ analysis | Must compile libyt with `INTERACTIVE_MODE` | `LIBYT_INTERACTIVE` | +| `--libyt_reload` | `true`, `false` | `false` | Enable the interactive mode of libyt. This activates Python prompt and does not shut down a simulation when there are errors in an inline Python script. | Must compile libyt with `INTERACTIVE_MODE` | `LIBYT_RELOAD` | +| `--libyt_jupyter` | `true`, `false` | `false` | Allow for in situ analysis using Jupyter Notebook / JupyterLab through libyt. | Must compile libyt with `JUPYTER_KERNEL`. | `LIBYT_JUPYTER` | + +## Parallelization Options + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--openmp` | `true`, `false` | `true` | Enable OpenMP (see [[MPI and OpenMP]]) | Must set the compilation flag `OPENMPFLAG` in [[configuration file \| Installation:-Machine-Configuration-File#3-Compilation-flags]] | `OPENMP` | +| `--mpi` | `true`, `false` | `false` | `true`: Enable load balancing using a space-filling curve (see [[MPI and OpenMP]]); `false`: Run GAMER in a serial mode, but OpenMP is still supported | May need to set `MPI_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `LOAD_BALANCE=HILBERT`, `SERIAL` | +| `--overlap_mpi` | `true`, `false` | `false` | Overlap MPI communication with computation. | Not supported yet!!! Must enable `--mpi`. | `OVERLAP_MPI` | +| `--gpu` | `true`, `false` | `false` | Enable GPU acceleration | Must specify `GPU_COMPUTE_CAPABILITY` and may need to set `CUDA_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `GPU` | + + +## Miscellaneous Options +-- AMR, optimizations, ... + +|                               
Option
                               |           
Value
           |           
Default
           |                                                   
Description
                                                   |                                                   
Restriction
                                                   | Corresponding symbolic constant | +|:---:|:---:|:---:|---|---|---| +| `--nlevel` | ≥ 1 | `10` | Maximum number of AMR levels including the root level. Do not confuse with the [[MAX_LEVEL \| Runtime Parameters:-Refinement#MAX_LEVEL]] runtime parameter. | - | `NLEVEL` | +| `--max_patch` | ≥ 8 | `1000000` | Maximum number of patches that can be allocated on each AMR level (recommended value: 1000000 or even larger since it is not memory-consuming) | - | `MAX_PATCH` | +| `--patch_size` | ≥ 8 | `8` | Number of cells along each direction in a single patch | Must be an even number | `PATCH_SIZE` | +| `--debug` | `true`, `false` | `false` | Run GAMER in a debug mode | - | `GAMER_DEBUG` | +| `--bitwise_reproducibility` | `true`, `false` | Depend | Enable [[bitwise reproducibility \| Bitwise Reproducibility]]. It may deteriorate performance, especially for runs with a large number of particles. | - | `BITWISE_REPRODUCIBILITY` | +| `--timing` | `true`, `false` | `true` | Record the wall time of various GAMER routines in the file [[Record__Timing \| Simulation-Logs:-Record__Timing]] (recommended) | - | `TIMING` | +| `--timing_solver` | `true`, `false` | `false` | Record the wall time of individual GPU solvers in the file [[Record__Timing \| Simulation-Logs:-Record__Timing]]. It will disable the CPU/GPU overlapping and thus deteriorate performance notably. | Must enable `--timing` | `TIMING_SOLVER` | +| `--double` | `true`, `false` | `false` | Enable double-precision floating-point accuracy for grid fields. Note that it could have a serious impact on GPU performance. | - | `FLOAT8` | +| `--laohu` | `true`, `false` | `false` | Work on the NAOC Laohu GPU cluster. | - | `LAOHU` | +| `--hdf5` | `true`, `false` | `false` | Enable HDF5 output (see [[Outputs]]) | May need to set `HDF5_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `SUPPORT_HDF5` | +| `--gsl` | `true`, `false` | `false` | Enable GNU scientific library | May need to set `GSL_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `SUPPORT_GSL` | +| `--fftw` | `OFF`, `FFTW2`, `FFTW3` | `OFF` | Enable FFTW | May need to set `FFTW2/3_PATH` in [[configuration file \| Installation:-Machine-Configuration-File#1-Library-paths]] | `SUPPORT_FFTW` | +| `--spectral_interpolation` | `true`, `false` | `false` | Enable spectral interpolation | Must enable `--gsl` and set `--fftw` | `SUPPORT_SPECTRAL_INT` | +| `--rng` | `RNG_GNU_EXT`, `RNG_CPP11` | `RNG_GNU_EXT` | Random number generators. `RNG_GNU_EXT`: GNU extension `drand48_r`; `RNG_CPP11`: c++11 `` | Use `RNG_GNU_EXT` for compilers supporting GNU extensions (they may not be supported on macOS); use `RNG_CPP11` for compilers supporting c++11 (one may need to add `-std=c++11` to `CXXFLAG` → see [[compilation flags \| Installation:-Machine-Configuration-File#3-Compilation-flags]]) | `RANDOM_NUMBER` | +> [!CAUTION] +> On macOS, we recommend using the GNU compiler and set `--rng=RNG_CPP11`. + +
+ +# Links +* [[Configuration file | Installation:-Machine-Configuration-File]] +* [[External Libraries | Installation: External Libraries]] +* [[Back to the main page of Installation | Installation]] diff --git a/doc/wiki/Installation.md b/doc/wiki/Installation.md index 4634a97c05..5f1e1e85f9 100644 --- a/doc/wiki/Installation.md +++ b/doc/wiki/Installation.md @@ -1,40 +1,66 @@ -To compile GAMER, go to the source directory: +1. Set up the machine configuration file - > cd src + Please see [[Machine Configuration File | Installation:-Machine-Configuration-File]]. -We recommend using the Python script -[[configure.py|Installation:-Configure.py]] -to tailor the `Makefile` for your simulation and machine. Alternatively, you can -edit `Makefile` and set the following configurations directly: -1. [[Simulation Options|Installation:-Simulation-Options]] -2. [[Compiler and Flags|Installation:-Compiler-and-Flags]] -3. [[External Libraries|Installation:-External-Libraries]] + -**Caution**: on macOS, we recommend using the GNU compiler and set -[[RANDOM_NUMBER | Installation:-Simulation-Options#RANDOM_NUMBER]] to `RNG_CPP11` -in the `Makefile` (or via `--rng=RNG_CPP11` in `configure.py`). +2. Set your machine configuration file as default -Compile the code by + ```bash + sh tool/config/set_settings.sh --local --machine=your_machine + ``` - > make clean - > make +> [!NOTE] +> If you want to set the default machine configuration file for all GAMER copies under your user account, use the `--global` option instead of `--local`. +You can still override the global setting for individual GAMER copies using the `--local` option. +Furthermore, you can override the default setting by passing the [[--machine | Installation:-Option-List#--machine]]=`your_machine` when executing `configure.py`. -To reduce the compilation time, you can perform a parallel -compilation by `make -j N`, where N is the number of compilation -jobs to run in parallel. For example, the following command will -invoke 4 compilation jobs simultaneously: +3. Go to the source directory - > make -j 4 + ```bash + cd src + ``` -However, please consult the documentation of your system to avoid -violating the usage policy. +4. Generate `Makefile` using the Python script `configure.py` -If the compilation succeeds, you will see the following message + To get the `Makefile`, please execute the following command: + + ```bash + python configure.py [--your_arguments] + ``` + + `[--your_arguments]` represent the options that should align with your simulation requirements. Refer to [[Option List | Installation:-Option-List]] for a complete list of available options. + + For example, the following command sets the FFTW method to `FFTW2` and enables gravity and GPU. - > Compiling GAMER --> Successful! + ``` bash + python configure.py --fftw=FFTW2 --gravity=true --gpu=true + ``` -and get an executable `gamer`, which will be automatically copied -to `../bin/gamer`. +> [!TIP] +> An example script `generate_make.sh` to generate Makefile can be found in each test problem folder, +e.g., `example/test_problem/Hydro/AcousticWave/generate_make.sh`. -**Caution**: the Makefile structure will likely be changed in the -near future to become more extensible and maintainable. \ No newline at end of file +5. Compile the code + + ```bash + make clean + make + ``` + +> [!TIP] +> To reduce the compilation time, you can perform a parallel +compilation by `make -j N`, where `N` is the number of compilation +jobs to run in parallel. For example, the following command will +invoke 4 compilation jobs simultaneously: +> ```bash +> make -j 4 +> ``` +> However, please consult the documentation of your system to avoid +violating the usage policy. + +If the compilation succeeds, you will see the following message +
+Compiling GAMER --> Successful!
+
+and get an executable `gamer`, which will be automatically copied to `../bin/gamer`. diff --git a/doc/wiki/Installation:-Compiler-and-Flags.md b/doc/wiki/Installation:-Compiler-and-Flags.md deleted file mode 100644 index c126b5c3cb..0000000000 --- a/doc/wiki/Installation:-Compiler-and-Flags.md +++ /dev/null @@ -1,49 +0,0 @@ -To choose a compiler and compilation flags, set the following -variables in the `Makefile`: -```Makefile -CXX = # C++ compiler -CXXFLAG = # compilation flags -OPENMPFLAG = # openmp flag -LIB = # libraries and linker flags -NVCC = # CUDA compiler -``` - -Example: Intel compiler -```Makefile -CXX = $(MPI_PATH)/bin/mpicxx # replace by "icpc" in the serial mode -CXXFLAG = -g -O3 -w1 -OPENMPFLAG = -fopenmp -LIB = -limf -NVCC = $(CUDA_PATH)/bin/nvcc -``` - -Example: GNU compiler -```Makefile -CXX = $(MPI_PATH)/bin/mpicxx # replace by "g++" in the serial mode -CXXFLAG = -g -O3 -Wall -Wextra -CXXFLAG += -Wno-unused-variable -Wno-unused-parameter \ - -Wno-maybe-uninitialized -Wno-unused-but-set-variable \ - -Wno-unused-result -Wno-unused-function -OPENMPFLAG = -fopenmp -LIB = -NVCC = $(CUDA_PATH)/bin/nvcc -``` - -On a Cray system (even when adopting the Intel or GNU compiler), set `CXX` and `NVCC` as -```Makefile -CXX = CC -NVCC = nvcc -ccbin CC -``` - -The prefixes `$(MPI_PATH)/bin/` and `$(CUDA_PATH)/bin/` in the -above examples are optional to force the Makefile to use the -correct compiler, where `MPI_PATH` and `CUDA_PATH` are the library -paths described in [[External Libraries|Installation: External Libraries]]. - - -
- -## Links -* [[Makefile configuration -- Simulation Options | Installation: Simulation Options ]] -* [[Makefile configuration -- External Libraries | Installation: External Libraries ]] -* [[Back to the main page of Installation | Installation]] \ No newline at end of file diff --git a/doc/wiki/Installation:-Configure.py.md b/doc/wiki/Installation:-Configure.py.md deleted file mode 100644 index db086688ef..0000000000 --- a/doc/wiki/Installation:-Configure.py.md +++ /dev/null @@ -1,166 +0,0 @@ -This page shows how to use the Python script `configure.py` to tailor the `Makefile` -for your simulation and machine. The script supports both Python2 and Python3. -- [User Guide](#user-guide) - - [Simulation options](#simulation-options) - - [Library paths and compilation flags](#library-paths-and-compilation-flags) - - [Running the script](#running-the-script) -- [Developer Guide](#developer-guide) - - [Adding new source files](#adding-new-source-files) - - [Adding new library paths](#adding-new-library-paths) - - [Adding new compiler flag types](#adding-new-compiler-flag-types) - - [Rules of Makefile_base](#rules-of-makefile_base) - -## User Guide -### Simulation options -The following commands list all available [[simulation options|Installation:-Simulation-Options]]. -```bash -python configure.py -h # show a short help message -python configure.py -lh # show a detailed help message - -``` - -### Library paths and compilation flags -Edit the machine configuration file in `gamer/configs` to specify the library paths and compilation flags. -To set up your own machine configuration file, make a copy of `template.config` and modify it. - -### Running the script -Run the following command to generate a new `Makefile`. -```bash -python configure.py --machine=your_configuration_file [--your_arguments] -``` - -For example, the following command will set the compiler, flags, and library paths -based on `gamer/configs/pleiades.config`, use `FFTW2`, and enable both gravity and GPU. - -``` bash -python configure.py --machine=pleiades --fftw=FFTW2 --gravity=true --gpu=true -``` - -An example script `generate_make.sh` can be found in each test problem folder -(e.g., `example/test_problem/Hydro/AcousticWave/generate_make.sh`). - -*** - -## Developer Guide -This script consists of five parts: `Packages`, `Global variables`, `Classes`, `Functions`, and `Main execution`. - -### Adding new source files -Edit `Makefile_base` to add new source files. - -### Adding new simulation options -Here is a simple example of the argument reader: -```python -parser.add_argument( "--new_argument", type=int, metavar="INTEGER", gamer_name="NAME_IN_GAMER", - default=0, - help="Your help message.\n" - ) -``` -1. Add a Python argument reader for the new simulation option under `load_arguments()`. -2. If the argument default depends on other arguments -(e.g., the default of `bitwise_reproducibility` is `True` when enabling `--debug` but otherwise is `False`), -set `default=None` and assign the default value under `set_conditional_defaults()`. -```python -def set_conditional_defaults( args ): - ... - if args["new_argument"] == None: - args["new_argument"] = default_value_of_true if args["other_argument"] else default_value_of_false - ... - return args -``` - -3. [Optional] If the argument depends on other arguments, add `depend={"depend_arg1":depend_value1, "depend_arg2":depend_value2}` so the argument will be loaded only if -`depend_arg1==depend_value1` and `depend_arg2==depend_value2`. -```python -parser.add_argument( "--new_argument", type=int, metavar="INTEGER", gamer_name="NEW_SIMUALTION_OPTION", - default=0, - depend={"depend_arg1":depend_value1, "depend_arg2":depend_value2}, - help="Your help message.\n" - ) -``` - -4. [Optional] To validate the input values, add `constraint={ val1:{"arg1":["a", "b"], val2:{"arg2":"c"} }`, -which will check whether the argument `arg1` is either `a` or `b` when the input value is `val1` -and whether the argument `arg2` is `c` when the input value is `val2`. -An error will be raised if any constraints are violated. For example, the following code -asserts `--eos=GAMMA` when adopting either `--flux=ROE` or `--flux=EXACT`. -```python -parser.add_argument( "--flux", type=str, metavar="TYPE", gamer_name="RSOLVER", - choices=["EXACT", "ROE", "HLLE", "HLLC", "HLLD"], - constraint={ "ROE":{"eos":"GAMMA"}, - "EXACT":{"eos":"GAMMA"} }, - ... - ) -``` - -5. [Optional] Add additional checks in `validation()` and warning messages in `warning()` under `Functions`. -* `validation()` -```python -def validation( paths, depends, constraints, **kwargs ): - success = True - ... - - if kwargs["new_argument"] < -1: - color_print("ERROR: Your error message.", BCOLOR.FAIL) - success = False - ... - - if not success: raise BaseException(BCOLOR.FAIL+"The above validation failed."+BCOLOR.ENDC) - return -``` -* `warning()` -```python -def warning( paths, **kwargs ): - ... - if kwargs["new_argument"] == 0: - color_print("Warning: Your warning message.", BCOLOR.WARNING) - ... - return -``` - - -### Adding new library paths -1. Add `NEW_PATH := @@@NEW_PATH@@@` in `Makefile_base` under `# library paths`. -```makefile -# library paths -####################################################################################################### -... other paths ... -NEW_PATH := @@@NEW_PATH@@@ -... -``` -2. Add `NEW_PATH /path/of/new` in your machine configuration file `configs/YOUR.config`. -``` -# 1. Paths -... other paths ... -NEW_PATH /path/of/new -... -``` - -### Adding new compiler flag types -1. Add `NEW_FLAG := @@@NEW_FLAG@@@` in `Makefile_base` under `# compilers and flags`. -```makefile -# compilers and flags -####################################################################################################### -... other flags ... -NEW_FLAG := @@@NEW_FLAG@@@ -... -``` - -2. Add `["NEW_FLAG":""]` in the dictionary variable `flags` of `load_config()` in `configure.py`. -```python -def load_config( config ): - print("Using %s as the config."%(config)) - paths, compilers, flags = {}, {"CXX":"", "CXX_MPI":""}, {"CXXFLAG":"", "OPENMPFLAG":"", "LIBFLAG":"", "CUDAFLAG":"", "NEW_FLAG":""} - ... - return paths, compilers, flags -``` - -3. Add `NEW_FLAG -new_flag` in your machine configuration file `configs/YOUR.config`. -``` -# 2. Compiler flags -... other flags ... -NEW_FLAG -new_flag -... -``` - -### Rules of `Makefile_base` -The strings to be replaced by `configure.py` must be sandwiched by `@@@`. \ No newline at end of file diff --git a/doc/wiki/Installation:-Simulation-Options.md b/doc/wiki/Installation:-Simulation-Options.md deleted file mode 100644 index b149821f1a..0000000000 --- a/doc/wiki/Installation:-Simulation-Options.md +++ /dev/null @@ -1,130 +0,0 @@ -## Format - -All compile-time simulation options in the `Makefile` are in -the following two formats: - - SIMU_OPTION += -DOPTION1 - SIMU_OPTION += -DOPTION2=OPTION2_ADOPTED - -which will enable `OPTION1` and assign `OPTION2_ADOPTED` to -`OPTION2`. For example, to (i) enable gravity and (ii) adopt the -CTU fluid scheme, set - - SIMU_OPTION += -DGRAVITY - SIMU_OPTION += -DFLU_SCHEME=CTU - -To disable an option, just comment it out with `#`. For example, -to disable gravity, use - - #SIMU_OPTION += -DGRAVITY - -**Caution: -option values (if any) must be set explicitly since there -are no default values. For example, `SIMU_OPTION += -DFLU_SCHEME` -without assigning any value to the option `FLU_SCHEME` is invalid. -In addition, do not insert any space before and after the equal -sign `=`. For example, use `-DFLU_SCHEME=CTU` instead of -`-DFLU_SCHEME = CTU`.** - -## Option List - -All compile-time simulation options are listed below. They are -classified into the following categories: -* [Physical Modules](#physical-modules) -* [Hydro](#hydro-options) -* [Gravity](#gravity-options) -* [Particles](#particle-options) -* [In Situ Python Analysis](#in-situ-python-analysis-options) -* [Miscellaneous](#miscellaneous-options) - -**Caution: -some combinations are mandatory (e.g., `RSOLVER` must be set when -`FLU_SCHEME=CTU`), while some combinations are prohibited -(e.g., `PARTICLE` is not supported when both `GRAVITY` and `TRACER` are -disabled). See the "Restriction" of each option carefully.** - -### Physical Modules -| Option | Value | Description | Restriction | -|:---:|:---:|---|---| -| `MODEL` | `HYDRO`
`ELBDM` | Physical models, where `ELBDM` is for ψDM | Must be set in any cases; `ELBDM` is not released yet | -| `GRAVITY` | | Enable [[gravity\|Gravity]] | Must enable `SUPPORT_FFTW`; may need to set [[FFTW2/3_PATH\|Installation: External Libraries]] | -| `PARTICLE` | | Enable [[particles\|Particles]] | Must enable `GRAVITY` or `TRACER` | -| `SUPPORT_GRACKLE` | | Enable [[GRACKLE\|Chemistry and Radiation]] | May need to set [[GRACKLE_PATH\|Installation: External Libraries]]; only support `EOS=EOS_GAMMA/EOS_COSMIC_RAY`; doesn't support `COMOVING` | - -### Hydro Options --- see [[Hydro]] for the related runtime parameters and other settings - -| Option | Value | Description | Restriction | -|:---:|:---:|---|---| -| FLU_SCHEME | RTVD
MHM
MHM_RP
CTU | Hydro schemes. RTVD: relaxing TVD; MHM: MUSCL-Hancock; MHM_RP: VL scheme; CTU: corner transport upwind | `MHD` only supports `MHM`, `MHM_RP`, and `CTU`; `SRHD` only supports `MHM` and `MHM_RP`; `COSMIC_RAY` only supports `MHM_RP` | -| LR_SCHEME | PLM
PPM | Spatial reconstruction. PLM: piecewise linear; PPM: piecewise parabolic | Useless for FLU_SCHEME=RTVD | -| RSOLVER | EXACT
ROE
HLLE
HLLC
HLLD | Riemann solvers | Useless for `FLU_SCHEME=RTVD`; `EXACT` is experimental; pure hydrodynamics supports `EXACT/ROE/HLLE/HLLC`; `MHD` supports `ROE/HLLE/HLLD`; `SRHD` and `COSMIC_RAY` support `HLLE/HLLC` | -| DUAL_ENERGY | DE_ENPY | Enable dual energy formalism | Not supported for FLU_SCHEME=RTVD | -| NCOMP_PASSIVE_USER | ≥ 0 | Number of user-defined passive scalars | See [[here\|Adding-New-Simulations#v-add-problem-specific-grid-fields-and-particle-attributes]] for details; not supported for FLU_SCHEME=RTVD | -| MHD | | Magnetohydrodynamics | | -| SRHD | | Special relativistic hydrodynamics | Must adopt `EOS=EOS_TAUBMATHEWS` | -| COSMIC_RAY | | Cosmic rays | Must adopt `EOS=EOS_COSMIC_RAY` | -| CR_DIFFUSION | | Cosmic-ray diffusion | Must enable both `COSMIC_RAY` and `MHD` | -| EOS | EOS_GAMMA
EOS_ISOTHERMAL
EOS_COSMIC_RAY
EOS_TAUBMATHEWS
EOS_USER | [[Equation of state \|equation-of-state]] | The following options only support `EOS_GAMMA`: `FLU_SCHEME=RTVD/CTU`, `RSOLVER=EXACT/ROE`, `COMOVING`, `DUAL_ENERGY`; see also [BAROTROPIC_EOS](#BAROTROPIC_EOS) | -| BAROTROPIC_EOS || Is [EOS](#EOS) barotropic? | Must be disabled for `EOS_GAMMA` and enabled for `EOS_ISOTHERMAL` | - -### Gravity Options --- see [[Gravity]] for the related runtime parameters and other settings - -| Option | Value | Description | Restriction | -|:---:|:---:|---|---| -| POT_SCHEME | SOR
MG | Poisson solver. SOR: successive-overrelaxation (recommended); MG: multigrid | Must be set when GRAVITY is enabled | -| STORE_POT_GHOST | | Store the ghost-zone potential (recommended when PARTICLE is enabled) | Must be enabled when both STAR_FORMATION and STORE_PAR_ACC are adopted | -| UNSPLIT_GRAVITY | | Use operator-unsplit method to couple gravity to the adopted physical model (recommended) | Not supported for MODEL=ELBDM | -| COMOVING | | Cosmological simulations | | - -### Particle Options --- see [[Particles]] for the related runtime parameters and other settings - -| Option | Value | Description | Restriction | -|:---:|:---:|---|---| -| TRACER | | Enable tracer particles | | -| STORE_PAR_ACC | | Store particle acceleration (recommended) | | -| STAR_FORMATION | | Enable star formation | Must enable STORE_POT_GHOST when using STORE_PAR_ACC | -| FEEDBACK | | Enable feedback from particles to grids (and vice versa) | see [[here\|Feedback]] for details | -| PAR_NATT_USER | ≥ 0 | Number of user-defined particle attributes | See [[here\|Adding-New-Simulations#particle-attributes]] for details | - -### In Situ Python Analysis Options --- see [[In Situ Python Analysis | In-Situ-Python-Analysis]] for the related runtime parameters and other settings - -| Option | Value | Description | Restriction | -|:---:|:---:|---|---| -| SUPPORT_LIBYT | | Enable libyt for in situ Python analysis | May need to set [[LIBYT_PATH\|Installation: External Libraries#libyt]] | -| LIBYT_USE_PATCH_GROUP | | Use patch groups instead of patches as the grid unit for better performance (recommended) | Must enable `SUPPORT_LIBYT` | -| LIBYT_INTERACTIVE | | Activate interactive Python prompt in in situ analysis | Must enable `SUPPORT_LIBYT` and compile libyt in interactive mode | - -### Miscellaneous Options --- AMR, GPU, parallelization, optimizations, ... - -| Option | Value | Description | Restriction | -|:---:|:---:|---|---| -| NLEVEL | ≥ 1 | Maximum number of AMR levels including the root level. Do not confuse with the [[MAX_LEVEL \| Runtime Parameters:-Refinement#MAX_LEVEL]] runtime parameter. | | -| MAX_PATCH | ≥ 8 | Maximum number of patches that can be allocated on each AMR level (recommended value: 1000000 or even larger since it is not memory-consuming) | | -| PATCH_SIZE | ≥ 8 | Number of cells along each direction in a single patch | Must be an even number | -| GPU | | Enable GPU acceleration | Must specify `GPU_COMPUTE_CAPABILITY` as well; may need to set [[CUDA_PATH\|Installation: External Libraries]] | -| GPU_COMPUTE_CAPABILITY | Three digits | [GPU Compute Capability](https://developer.nvidia.com/cuda-gpus) (e.g., `890` for GeForce RTX 4090) | Must enable GPU | -| GAMER_DEBUG | | Run GAMER in a debug mode | | -| BITWISE_REPRODUCIBILITY | | Enable [[bitwise reproducibility\|Bitwise Reproducibility]]. It may deteriorate performance, especially for runs with a large number of particles. | | -| TIMING | | Record the wall time of various GAMER routines in the file [[Record__Timing \| Simulation-Logs:-Record__Timing]] (recommended) | -| TIMING_SOLVER | | Record the wall time of individual GPU solvers in the file [[Record__Timing \| Simulation-Logs:-Record__Timing]]. It will disable the CPU/GPU overlapping and thus deteriorate performance notably. | Must enable TIMING | -| FLOAT8 | | Enable double precision floating-point accuracy for grid fields. Note that it could have a serious impact on GPU performance. | | -| FLOAT8_PAR | | Enable double precision floating-point accuracy for particles. It will be set to `FLOAT8` by default. | | -| SERIAL | | Run GAMER in a serial mode (i.e., no MPI; but OpenMP is still supported) | Must disable LOAD_BALANCE | -| LOAD_BALANCE | HILBERT | Enable load balancing using a space-filling curve (see [[MPI and OpenMP]]) | Must disable SERIAL; may need to set [[MPI_PATH\|Installation: External Libraries]] | -| OPENMP | | Enable OpenMP (see [[MPI and OpenMP]]) | Must set the compilation flag [[OPENMPFLAG\|Installation: Compiler and Flags]] | -| SUPPORT_HDF5 | | Enable HDF5 output (see [[Outputs]]) | May need to set [[HDF5_PATH\|Installation: External Libraries]] | -| SUPPORT_GSL | | Enable GNU scientific library | May need to set [[GSL_PATH\|Installation: External Libraries]] | -| SUPPORT_FFTW | FFTW2
FFTW3 | Enable FFTW | May need to set [[FFTW2/3_PATH\|Installation: External Libraries]] | -| RANDOM_NUMBER | RNG_GNU_EXT
RNG_CPP11 | Random number generators. RNG_GNU_EXT: GNU extension `drand48_r`; RNG_CPP11: c++11 `` | Use RNG_GNU_EXT for compilers supporting GNU extensions (**they may not be supported on macOS**); use RNG_CPP11 for compilers supporting c++11 (**one may need to add `-std=c++11` to `CXXFLAG`** → see [[Compiler and Flags\|Installation:-Compiler-and-Flags]]) | - -
- -## Links -* [[Makefile configuration -- Compiler and Flags | Installation: Compiler and Flags]] -* [[Makefile configuration -- External Libraries | Installation: External Libraries]] -* [[Back to the main page of Installation | Installation]] diff --git a/doc/wiki/MPI-and-OpenMP.md b/doc/wiki/MPI-and-OpenMP.md index b843db972c..3dccba7c7a 100644 --- a/doc/wiki/MPI-and-OpenMP.md +++ b/doc/wiki/MPI-and-OpenMP.md @@ -2,31 +2,29 @@ ### MPI-only To enable MPI support, follow the steps below: -1. Edit the `Makefile` and recompile the code (see [[Installation]] for details) - 1. Set `CXX` to an MPI compiler (e.g., `mpicxx`) - 2. Set `MPI_PATH` to you MPI installation path - 3. Turn off -[[SERIAL | Installation: Simulation-Options#SERIAL]] -and turn on -[[LOAD_BALANCE=HILBERT | Installation: Simulation-Options#LOAD_BALANCE]] +1. Generate the `Makefile` and recompile the code (see [[Installation]] for details) + 1. Set `CXX_MPI` to an MPI compiler (e.g., `mpicxx`) in the [[configuration file | Installation:-Machine-Configuration-File]] + 2. Set `MPI_PATH` to you MPI installation path in the [[configuration file | Installation:-Machine-Configuration-File]] + 3. Generate `Makefile` with the following options: + * [[--mpi | Installation:-Option-List#--mpi]]=`true` 4. Recompile the code by `make clean; make` 2. Launch the code with MPI (consult your system documentation), for instance, ```bash - > mpirun -np 10 ./gamer + mpirun -np 10 ./gamer ``` ### Hybrid MPI/OpenMP To enable hybrid MPI/OpenMP, follow the MPI-only prescriptions given above with the following additional steps: 1. Also turn on the compilation option -[[OPENMP | Installation: Simulation-Options#OPENMP]] +[[--openmp | Installation:-Option-List#--openmp]] and set the OpenMP flag `OPENMPFLAG` properly in the `Makefile` 2. Set the number of threads through the runtime parameter -[[OMP_NTHREAD | MPI-and-OpenMP#OMP_NTHREAD]] +[[OMP_NTHREAD | Runtime-Parameters:-MPI-and-OpenMP#OMP_NTHREAD]] 3. The recommended way for launching hybrid MPI/OpenMP jobs can vary from system to system. So please consult your system documentation. Also, check @@ -36,97 +34,15 @@ out the [Remarks](#remarks) below. ## Compilation Options Related options: -[[SERIAL | Installation: Simulation-Options#SERIAL]],   -[[LOAD_BALANCE | Installation: Simulation-Options#LOAD_BALANCE]],   -[[OPENMP | Installation: Simulation-Options#OPENMP]]   +[[--mpi | Installation:-Option-List#--mpi]]   +[[--openmp | Installation:-Option-List#--openmp]]   ## Runtime Parameters - -Parameters described on this page: -[OMP_NTHREAD](#OMP_NTHREAD),   -[OPT__INIT_GRID_WITH_OMP](#OPT__INIT_GRID_WITH_OMP),   -[LB_INPUT__WLI_MAX](#LB_INPUT__WLI_MAX),   -[LB_INPUT__PAR_WEIGHT](#LB_INPUT__PAR_WEIGHT),   -[OPT__RECORD_LOAD_BALANCE](#OPT__RECORD_LOAD_BALANCE),   -[OPT__MINIMIZE_MPI_BARRIER](#OPT__MINIMIZE_MPI_BARRIER)   +[[Runtime parameters: MPI and OpenMP | Runtime-Parameters:-MPI-and-OpenMP]] Other related parameters: none -Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** - - -* #### `OMP_NTHREAD`   (≥1; <1 → set to default)   [-1] - * **Description:** -Number of OpenMP threads associated with each MPI process. -When enabling MPI, the default is set to the ratio between the total number of CPU cores -and the total number of MPI processes. When disabling MPI, the default -is set to the maximum number of threads available, which can be controlled -by the environment variable `OMP_NUM_THREADS`. -Having `OMP_NTHREAD=1` is equivalent to disabling the OpenMP parallelization. -See also [Hybrid MPI/OpenMP/GPU](#hybrid-mpiopenmpgpu) and -[MPI Binding and Thread Affinity](#mpi-binding-and-thread-affinity). - * **Restriction:** -Only applicable when enabling the compilation option -[[OPENMP | Installation: Simulation-Options#OPENMP]]. - - -* #### `OPT__INIT_GRID_WITH_OMP`   (0=off, 1=on)   [1] - * **Description:** -Whether or not to enable OpenMP when assigning the initial condition -of different grid patches. In can be enabled in most cases unless, -for example, the initial condition setup involves random numbers. - * **Restriction:** -Only applicable when enabling the compilation option -[[OPENMP | Installation: Simulation-Options#OPENMP]]. - - -* #### `LB_INPUT__WLI_MAX`   (≥0.0)   [0.1] - * **Description:** -Weighted load imbalancing (WLI) threshold. Patches on all levels will -be redistributed among different MPI processes when the WLI factor is -estimated to be higher than a given threshold. See -[[Performance Optimizations: Load Balancing | Performance Optimizations:-Load-Balancing]] -for details. - * **Restriction:** -Only applicable when enabling the compilation option -[[LOAD_BALANCE | Installation: Simulation-Options#LOAD_BALANCE]]. - - -* #### `LB_INPUT__PAR_WEIGHT`   (≥0.0)   [0.0] - * **Description:** -Load balancing weight of one particle over one cell. It is used -to improve load balancing for the simulations with particles. See -[[Performance Optimizations: Load Balancing | Performance Optimizations:-Load-Balancing]] -for details. The typical values are 1.0 ~ 2.0. - * **Restriction:** -Only applicable when enabling the compilation options -[[LOAD_BALANCE | Installation: Simulation-Options#LOAD_BALANCE]] and -[[PARTICLE | Installation: Simulation-Options#PARTICLE]]. - - -* #### `OPT__RECORD_LOAD_BALANCE`   (0=off, 1=on)   [1] - * **Description:** -Record the load balancing information in the log file -[[Record__LoadBalance | Simulation-Logs:-Record__LoadBalance]]. - * **Restriction:** -Only applicable when enabling the compilation option -[[LOAD_BALANCE | Installation: Simulation-Options#LOAD_BALANCE]]. - - -* #### `OPT__MINIMIZE_MPI_BARRIER`   (0=off, 1=on)   [0] - * **Description:** -Minimize the MPI synchronization between grid and particle routines -to improve load balancing. It can improve the performance notably, -especially for simulations with particles. - * **Restriction:** -For simulations with particles, one must enable the compilation option -[[STORE_POT_GHOST | Installation: Simulation-Options#STORE_POT_GHOST]] and -set [[PAR_IMPROVE_ACC | Particles#PAR_IMPROVE_ACC]]=1. -[[OPT__TIMING_BALANCE | Runtime Parameters:-Miscellaneous#OPT__TIMING_BALANCE]] -must be disabled. In addition, it is currently recommended to disable -[[AUTO_REDUCE_DT | Runtime Parameters:-Timestep#AUTO_REDUCE_DT]]. - ## Remarks @@ -137,7 +53,7 @@ of MPI processes per node and the number of OpenMP threads associated with each MPI process. When using GPUs, the most straightforward way is to set the total number of MPI processes equal to the total number of GPUs you want to use, and then set the number of -OpenMP threads per process ([OMP_NTHREAD](#OMP_NTHREAD)) equal to the +OpenMP threads per process ([[OMP_NTHREAD | Runtime-Parameters:-MPI-and-OpenMP#OMP_NTHREAD]]) equal to the ratio between the number of CPU cores per node and the number of GPUs per node. @@ -175,7 +91,7 @@ One can also validate the MPI and OpenMP binding by searching for the keyword "OpenMP" in the log file `Record__Note`. The following example adopts 8 MPI processes and `OMP_NTHREAD=10` to run a job on 4 nodes named golub121-124, each of which is composed of 2 ten-core CPUs and 2 GPUs: -``` +
 OpenMP Diagnosis
 ***********************************************************************************
 OMP__SCHEDULE                   DYNAMIC
@@ -194,7 +110,7 @@ CPU core IDs of all OpenMP threads (tid == thread ID):
     6    golub124       10       0       2       4       6       8      10      12      14      16      18
     7    golub124       10       1       3       5       7       9      11      13      15      17      19
 ***********************************************************************************
-```
+
Check the following things: * **The number under `NThread` is the same as the runtime parameter [OMP_NTHREAD](#OMP_NTHREAD)** @@ -208,7 +124,7 @@ to experiment with different configurations to fine-tune the performance. The Linux command `lscpu` can be used to display information about your CPU architecture. For example, on a node with 2 ten-core CPUs (as the example given above), it shows -``` +
 ...
 CPU(s):                20
 On-line CPU(s) list:   0-19
@@ -219,7 +135,7 @@ NUMA node(s):          2
 ...
 NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18
 NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19
-```
+
By comparing it with the thread binding information recorded in the log file `Record__Note` (as described above), it confirms that in this example different threads in the same MPI process do run @@ -227,7 +143,7 @@ in the same NUMA domain. ### OpenMP Support in GRACKLE -See [[Library Configurations -- GRACKLE | Installation:-External-Libraries#grackle]] +See [[Library Configurations -- GRACKLE | Installation:-External-Libraries#GRACKLE]] for how to enable OpenMP in GRACKLE. @@ -235,5 +151,5 @@ for how to enable OpenMP in GRACKLE. ## Links * [[How to run the code | Running the code]] -* [[How to install GRACKLE | Installation:-External-Libraries#grackle]] +* [[How to install GRACKLE | Installation:-External-Libraries#GRACKLE]] * [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Outputs.md b/doc/wiki/Outputs.md index 48e395524d..62d5f498bc 100644 --- a/doc/wiki/Outputs.md +++ b/doc/wiki/Outputs.md @@ -6,299 +6,25 @@ consumption, see [[Simulation Logs | Simulation-Logs]]. ## Compilation Options Related options: -[[SUPPORT_HDF5 | Installation: Simulation-Options#SUPPORT_HDF5]]   +[[--hdf5 | Installation:-Option-List#--hdf5]]   ## Runtime Parameters - -Parameters described on this page: -[OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL),   -[OPT__OUTPUT_PART](#OPT__OUTPUT_PART),   -[OPT__OUTPUT_TEXT_FORMAT_FLT](#OPT__OUTPUT_TEXT_FORMAT_FLT),   -[OPT__OUTPUT_USER](#OPT__OUTPUT_USER),   -[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE),   -[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS),   -[OPT__OUTPUT_BASE](#OPT__OUTPUT_BASE),   -[OPT__OUTPUT_POT](#OPT__OUTPUT_POT),   -[OPT__OUTPUT_PAR_DENS](#OPT__OUTPUT_PAR_DENS),   -[OPT__OUTPUT_CC_MAG](#OPT__OUTPUT_CC_MAG),   -[OPT__OUTPUT_PRES](#OPT__OUTPUT_PRES),   -[OPT__OUTPUT_TEMP](#OPT__OUTPUT_TEMP),   -[OPT__OUTPUT_ENTR](#OPT__OUTPUT_ENTR),   -[OPT__OUTPUT_CS](#OPT__OUTPUT_CS),   -[OPT__OUTPUT_DIVVEL](#OPT__OUTPUT_DIVVEL),   -[OPT__OUTPUT_MACH](#OPT__OUTPUT_MACH),   -[OPT__OUTPUT_DIVMAG](#OPT__OUTPUT_DIVMAG),   -[OPT__OUTPUT_LORENTZ](#OPT__OUTPUT_LORENTZ),   -[OPT__OUTPUT_3VELOCITY](#OPT__OUTPUT_3VELOCITY),   -[OPT__OUTPUT_ENTHALPY](#OPT__OUTPUT_ENTHALPY),   -[OPT__OUTPUT_USER_FIELD](#OPT__OUTPUT_USER_FIELD),   -[OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE),   -[OPT__OUTPUT_RESTART](#OPT__OUTPUT_RESTART),   -[OUTPUT_STEP](#OUTPUT_STEP),   -[OUTPUT_DT](#OUTPUT_DT),   -[OUTPUT_WALLTIME](#OUTPUT_WALLTIME),   -[OUTPUT_WALLTIME_UNIT](#OUTPUT_WALLTIME_UNIT),   -[OUTPUT_PART_X](#OUTPUT_PART_X),   -[OUTPUT_PART_Y](#OUTPUT_PART_Y),   -[OUTPUT_PART_Z](#OUTPUT_PART_Z),   -[INIT_DUMPID](#INIT_DUMPID),   +[[Runtime parameters: Outputs | Runtime-Parameters:-Outputs]] Other related parameters: none -Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** - - -* #### `OPT__OUTPUT_TOTAL`   (0=off, 1=HDF5, 2=C-binary)   [1] - * **Description:** -Output the simulation snapshots in the specified binary format (HDF5 or simple C-binary), -which will store all simulation information such as grid data, particle data, -tree structure, runtime parameters, and compilation options. These snapshots can be used for -[[restarting simulations | Running-the-Code#restarting-from-a-snapshot]]. -The snapshot filename is currently fixed to `Data_%06d`. -See also [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE) for specifying the -data dump frequency. - * **Restriction:** -`OPT__OUTPUT_TOTAL=1` is only applicable when enabling the compilation option -[[SUPPORT_HDF5 | Installation: Simulation-Options#SUPPORT_HDF5]]. -[[Data analysis with yt | Data-Analysis]] is currently only supported for -the HDF5 snapshots of GAMER. - - -* #### `OPT__OUTPUT_PART`   (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diagonal)   [0] - * **Description:** -Output the data of a single line or slice in the text format. -Use [OUTPUT_PART_X](#OUTPUT_PART_X), [OUTPUT_PART_Y](#OUTPUT_PART_Y), and -[OUTPUT_PART_Z](#OUTPUT_PART_Z) to specify the target coordinates. -This output option is mainly for quick inspection for simple test problems -with symmetry. Use [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL) for more general -[[data analysis with yt | Data-Analysis]]. -See also [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE) for specifying the -data dump frequency. - * **Restriction:** - - -* #### `OPT__OUTPUT_TEXT_FORMAT_FLT`   (%XX.YYe)   [%24.16e] - * **Description:** -String format of floating-point data in output text files. -Please use the scientific notation `%XX.YYe` such as `%14.6e`. -This will affect files generated by, for example, -[OPT__OUTPUT_PART](#OPT__OUTPUT_PART), -[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE)=1, and -[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). - * **Restriction:** - - -* #### `OPT__OUTPUT_USER`   (0=off, 1=on)   [0] - * **Description:** -Output user-specified data. Edit `src/Output/Output_Uer.cpp` -or a problem-specific function (for the latter, see -[[Add Problem Specific Functionalities | Adding-New-Simulations#vi-add-problem-specific-functionalities]]). - * **Restriction:** - - -* #### `OPT__OUTPUT_PAR_MODE`   (0=off, 1=text files, 2=C-binary files)   [0] - * **Description:** -Output particle data in either the text or binary format. -This option is mainly for debugging purposes since the simulation snapshots -(with the option [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL)) already store -particle data. - * **Restriction:** - - -* #### `OPT__OUTPUT_BASEPS`   (0=off, 1=on)   [0] - * **Description:** -Output the mass density power spectrum on the root level. - * **Restriction:** - - -* #### `OPT__OUTPUT_BASE`   (0=off, 1=on)   [0] - * **Description:** -Only output the base-level (i.e., root level) data for -[OPT__OUTPUT_PART](#OPT__OUTPUT_PART). - * **Restriction:** - - -* #### `OPT__OUTPUT_POT`   (0=off, 1=on)   [1] - * **Description:** -Output the gravitational potential data on grids. - * **Restriction:** - - -* #### `OPT__OUTPUT_PAR_DENS`   (0=off, 1=particle mass density, 2=total mass density)   [0] - * **Description:** -Store the particle or total mass density on grids in -the simulation snapshots. The particle interpolation scheme is set by -[[PAR_INTERP | Particles#PAR_INTERP ]]. - * **Restriction:** -Only applicable when enabling [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL). - - -* #### `OPT__OUTPUT_CC_MAG`   (0=off, 1=on)   [1] - * **Description:** -Output the cell-centered magnetic field (**mandatory for yt analysis**). - * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. - - -* #### `OPT__OUTPUT_PRES`   (0=off, 1=on)   [0] - * **Description:** -Output the gas pressure (or gas + cosmic-ray pressure when enabling -[[COSMIC_RAY | Installation: Simulation-Options#COSMIC_RAY]]) on grids. -Magnetic pressure is always excluded. - * **Restriction:** - - -* #### `OPT__OUTPUT_TEMP`   (0=off, 1=on)   [0 for HD, 1 for SRHD] - * **Description:** -Output the gas temperature on grids. - * **Restriction:** - - -* #### `OPT__OUTPUT_ENTR`   (0=off, 1=on)   [0] - * **Description:** -Output the gas entropy on grids. - * **Restriction:** -Mainly used by the gamma-law EoS. - - -* #### `OPT__OUTPUT_CS`   (0=off, 1=on)   [0] - * **Description:** -Output the sound speed on grids. - * **Restriction:** - - -* #### `OPT__OUTPUT_DIVVEL`   (0=off, 1=on)   [0] - * **Description:** -Output the divergence of gas velocity on grids. - * **Restriction:** - - -* #### `OPT__OUTPUT_MACH`   (0=off, 1=on)   [0] - * **Description:** -Output the Mach number on grids. - * **Restriction:** - - -* #### `OPT__OUTPUT_DIVMAG`   (0=off, 1=on)   [0] - * **Description:** -Output $|\nabla \cdot B| \Delta h / |B|$, where $B$ is the magnetic field -and $\Delta h$ is cell width. - * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. - - -* #### `OPT__OUTPUT_LORENTZ`   (0=off, 1=on)   [0] - * **Description:** -Output the SRHD Lorentz factor on grids. - * **Restriction:** -For [[SRHD | Installation: Simulation-Options#SRHD]] only. - - -* #### `OPT__OUTPUT_3VELOCITY`   (0=off, 1=on)   [0] - * **Description:** -Output the SRHD three-velocity on grids. - * **Restriction:** -For [[SRHD | Installation: Simulation-Options#SRHD]] only. - - -* #### `OPT__OUTPUT_ENTHALPY`   (0=off, 1=on)   [1] - * **Description:** -Output the SRHD reduced enthalpy on grids. - * **Restriction:** -For [[SRHD | Installation: Simulation-Options#SRHD]] only. - - -* #### `OPT__OUTPUT_MODE`   (1=const step, 2=const dt, 3=dump table)   [none] - * **Description:** -Choose the data output frequency. - * `1`: Every [OUTPUT_STEP](#OUTPUT_STEP) root-level step - * `2`: Every [OUTPUT_DT](#OUTPUT_DT) time interval - * `3`: According to the dump timetable [[Input__DumpTable | Runtime-Parameters#input__dumptable]] - * **Restriction:** -Must enable at least one of the output options -[OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL), -[OPT__OUTPUT_PART](#OPT__OUTPUT_PART), -[OPT__OUTPUT_USER](#OPT__OUTPUT_USER), -[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE), and -[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). - - -* #### `OPT__OUTPUT_RESTART`   (0=off, 1=on)   [0] - * **Description:** -Output a snapshot immediately after restarting a simulation. It can be useful -if some physical quantities change during restart (e.g., new particles are added). - * **Restriction:** - - -* #### `OUTPUT_STEP`   (>0)   [none] - * **Description:** -See [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE)=1. - * **Restriction:** - - -* #### `OUTPUT_DT`   (>0.0)   [none] - * **Description:** -See [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE)=2. - * **Restriction:** - - -* #### `OUTPUT_WALLTIME`   (≤ 0.0=off)   [-1.0] - * **Description:** -Output data every `OUTPUT_WALLTIME` wall-clock time, the unit of which is set by -[OUTPUT_WALLTIME_UNIT](#OUTPUT_WALLTIME_UNIT). Note that it is independent of -[OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE). - * **Restriction:** -Must enable at least one of the output options -[OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL), -[OPT__OUTPUT_PART](#OPT__OUTPUT_PART), -[OPT__OUTPUT_USER](#OPT__OUTPUT_USER), -[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE), and -[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). - - -* #### `OUTPUT_WALLTIME_UNIT`   (0=second, 1=minute, 2=hour, 3=day)   [0] - * **Description:** -Unit of [OUTPUT_WALLTIME](#OUTPUT_WALLTIME). - * **Restriction:** - - -* #### `OUTPUT_PART_X`   (within the simulation domain)   [-1.0] - * **Description:** -x coordinate for [OPT__OUTPUT_PART](#OPT__OUTPUT_PART). - * **Restriction:** - - -* #### `OUTPUT_PART_Y`   (within the simulation domain)   [-1.0] - * **Description:** -y coordinate for [OPT__OUTPUT_PART](#OPT__OUTPUT_PART). - * **Restriction:** - - -* #### `OUTPUT_PART_Z`   (within the simulation domain)   [-1.0] - * **Description:** -z coordinate for [OPT__OUTPUT_PART](#OPT__OUTPUT_PART). - * **Restriction:** - - -* #### `INIT_DUMPID`   (≥0; <0 → set to default)   [-1] - * **Description:** -Set the first data dump ID. Note that it is unnecessary to set this value -in most cases, even when restarting simulations, unless you want to overwrite -the default value. - * **Restriction:** - ## Remarks ### Enforcing Outputs Typically, the simulation output interval is controlled by -[OUTPUT_STEP](#OUTPUT_STEP), -[OUTPUT_DT](#OUTPUT_DT), or the timetable -[[Input__DumpTable | Runtime Parameters#input__dumptable]] +[[OUTPUT_STEP | Runtime-Parameters:-Outputs#OUTPUT_STEP]], +[[OUTPUT_DT | Runtime-Parameters:-Outputs#OUTPUT_DT]], or the timetable +[[Input__DumpTable | Runtime-Parameters:-Input__DumpTable]] depending on -[OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE). +[[OPT__OUTPUT_MODE | Runtime-Parameters:-Outputs#OPT__OUTPUT_MODE]]. One can also enforce output by creating a file named `DUMP_GAMER_DUMP` (e.g., using `touch DUMP_GAMER_DUMP`) in the same directory as the executable `gamer`. The program will check the existence @@ -314,4 +40,4 @@ is on. ## Links * [[Main page of Runtime Parameters | Runtime Parameters]] -* [[Simulation Logs | Simulation-Logs]] \ No newline at end of file +* [[Simulation Logs | Simulation-Logs]] diff --git a/doc/wiki/Performance-Optimizations:-GPU.md b/doc/wiki/Performance-Optimizations-related/Performance-Optimizations:-GPU.md similarity index 100% rename from doc/wiki/Performance-Optimizations:-GPU.md rename to doc/wiki/Performance-Optimizations-related/Performance-Optimizations:-GPU.md diff --git a/doc/wiki/Performance-Optimizations:-Load-Balancing.md b/doc/wiki/Performance-Optimizations-related/Performance-Optimizations:-Load-Balancing.md similarity index 100% rename from doc/wiki/Performance-Optimizations:-Load-Balancing.md rename to doc/wiki/Performance-Optimizations-related/Performance-Optimizations:-Load-Balancing.md diff --git a/doc/wiki/Physics-Modules-related/Chemistry-and-Radiation.md b/doc/wiki/Physics-Modules-related/Chemistry-and-Radiation.md new file mode 100644 index 0000000000..07e5e365b8 --- /dev/null +++ b/doc/wiki/Physics-Modules-related/Chemistry-and-Radiation.md @@ -0,0 +1,28 @@ + +## Compilation Options + +Related options: +[[--grackle | Installation:-Option-List#--grackle]]   + +## Runtime Parameters +[[Runtime parameters: Chemistry and Radiation | Runtime-Parameters:-Chemistry-and-Radiation]] + +Other related parameters: +[[CHE_GPU_NPGROUP | Runtime-Parameters:-GPU#CHE_GPU_NPGROUP]]   + + +## Remarks + +### GRACKLE Configuration +The OpenMP support between GRACKLE and GAMER +must be consistent with each other. See +[[Library Configurations -- GRACKLE | Installation:-External-Libraries#GRACKLE]] +for details. + + +
+ +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[How to install GRACKLE | Installation:-External-Libraries#GRACKLE]] +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Equation-of-State.md b/doc/wiki/Physics-Modules-related/Equation-of-State.md similarity index 72% rename from doc/wiki/Equation-of-State.md rename to doc/wiki/Physics-Modules-related/Equation-of-State.md index 7614c11a02..052fae9510 100644 --- a/doc/wiki/Equation-of-State.md +++ b/doc/wiki/Physics-Modules-related/Equation-of-State.md @@ -1,5 +1,5 @@ This page describes various equation of states (EoS) supported by the -compilation option [[EOS | Installation: Simulation-Options#EOS]]. +compilation option [[--eos | Installation:-Option-List#--eos]]. * [`EOS_GAMMA`](#EOS_GAMMA): constant-gamma EoS * [`EOS_ISOTHERMAL`](#EOS_ISOTHERMAL): isothermal EoS @@ -9,24 +9,24 @@ compilation option [[EOS | Installation: Simulation-Options#EOS]]. ## EOS_GAMMA -An ideal-gas EoS with a constant adiabatic index [[GAMMA | Hydro#gamma]]. +An ideal-gas EoS with a constant adiabatic index [[GAMMA | Runtime-Parameters:-Hydro#GAMMA]]. ## EOS_ISOTHERMAL An isothermal EoS with a constant sound speed set by -[[MOLECULAR_WEIGHT | Hydro#MOLECULAR_WEIGHT]] and -[[ISO_TEMP | Hydro#ISO_TEMP]]. +[[MOLECULAR_WEIGHT | Runtime-Parameters:-Hydro#MOLECULAR_WEIGHT]] and +[[ISO_TEMP | Runtime-Parameters:-Hydro#ISO_TEMP]]. ## EOS_COSMIC_RAY -A cosmic-ray EoS with an adiabatic index for fluid [[GAMMA | Hydro#gamma]] -and an effective adiabatic index for cosmic rays [[GAMMA_CR | CosmicRay#gamma_cr]]. -Must enable [[COSMIC_RAY | Installation: Simulation-Options#COSMIC_RAY]]. +A cosmic-ray EoS with an adiabatic index for fluid [[GAMMA | Runtime-Parameters:-Hydro#GAMMA]] +and an effective adiabatic index for cosmic rays [[GAMMA_CR | Runtime-Parameters:-Hydro#GAMMA_CR]]. +Must enable [[--cosmic_ray | Installation:-Option-List#--cosmic_ray]]. ## EOS_TAUBMATHEWS -A special relativistic EoS with a variable gamma by Taub 1948 and Mathews 1971. -Must enable [[SRHD | Installation: Simulation-Options#SRHD]]. +A special relativistic EoS with a variable gamma by [Taub 1948](https://ui.adsabs.harvard.edu/abs/1948PhRv...74..328T/abstract) and [Mathews 1971](https://ui.adsabs.harvard.edu/abs/1971ApJ...165..147M/abstract). +Must enable [[--srhd | Installation:-Option-List#--srhd]]. ## EOS_USER @@ -58,10 +58,10 @@ in `include/Macro.h` (default is 10). * `EoS_DensTemp2Pres_NewProblem()`: convert gas mass density and temperature to gas pressure [OPTIONAL]. * `EoS_General_NewProblem()`: general conversion between user-specified input and output variables [OPTIONAL]. - **Caution:** - * All conversion functions must be thread-safe and not use any global variable. - * When a conversion function fails, it is recommended to return `NAN` -in order to trigger auto-corrections such as [[OPT__1ST_FLUX_CORR | Hydro#OPT__1ST_FLUX_CORR]] +> [!CAUTION] +> * All conversion functions must be thread-safe and not use any global variable. +> * When a conversion function fails, it is recommended to return `NAN` +in order to trigger auto-corrections such as [[OPT__1ST_FLUX_CORR | Runtime-Parameters:-Hydro#OPT__1ST_FLUX_CORR]] and [[AUTO_REDUCE_DT | Runtime-Parameters:-Timestep#AUTO_REDUCE_DT]]. 3. Edit the problem source file `Init_TestProb_Hydro_NewProblem.cpp` to enable this new EoS. @@ -85,5 +85,6 @@ and [[AUTO_REDUCE_DT | Runtime-Parameters:-Timestep#AUTO_REDUCE_DT]].
## Links +* [[Main page of Physics Modules | Physics-Modules]] * [[Main page of Runtime Parameters | Runtime Parameters]] * [[Hydro |hydro]] diff --git a/doc/wiki/Physics-Modules-related/Feedback.md b/doc/wiki/Physics-Modules-related/Feedback.md new file mode 100644 index 0000000000..76fb7b1288 --- /dev/null +++ b/doc/wiki/Physics-Modules-related/Feedback.md @@ -0,0 +1,62 @@ +This page describes feedback from particles to grids and vice versa. +Please enable the compilation option [[--feedback | Installation:-Option-List#--feedback]]. + + +## Compilation Options + +Related options: +[[--particle | Installation:-Option-List#--particle]],   +[[--feedback | Installation:-Option-List#--feedback]]   + + +## Runtime Parameters +[[Runtime parameters: Feedback | Runtime-Parameters:-Feedback]] + +Other related parameters: + + +## Remarks + +### Add User-defined Feedback +Follow the steps below to define your feedback when +[[adding a new simulation | Adding-New-Simulations]] named `NewProblem`. + +1. Go to the new test problem folder and copy the feedback template. + + ```bash + cd src/TestProblem/Hydro/NewProblem + cp ../../../Feedback/User_Template/FB_User_Template.cpp FB_NewProblem.cpp + ``` + +2. Edit the feedback source file `FB_NewProblem.cpp`. + 1. Rename `User_Template` as `NewProblem`. + + 2. Follow the example `src/TestProblem/Hydro/Plummer/FB_Plummer.cpp` to edit + `FB_Init_NewProblem()`, `FB_End_NewProblem()`, and `FB_NewProblem()`. + +3. Edit the problem source file `Init_TestProb_Hydro_NewProblem.cpp` to enable this new feedback. + + 1. Put the following function prototype on the top of this file. + + ```C++ + #ifdef FEEDBACK + void FB_Init_NewProblem(); + #endif + ``` + + 2. Set the feedback function pointer in `Init_TestProb_Hydro_NewProblem()`. + + ```C++ + # ifdef FEEDBACK + FB_Init_User_Ptr = FB_Init_NewProblem; + # endif + ``` + +4. Make sure to enable [[--feedback | Installation:-Option-List#--feedback]] when generating `Makefile` and `FB_USER` in `Input__Parameter`. + + +
+ +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Physics-Modules-related/Gravity.md b/doc/wiki/Physics-Modules-related/Gravity.md new file mode 100644 index 0000000000..93bc2efaf9 --- /dev/null +++ b/doc/wiki/Physics-Modules-related/Gravity.md @@ -0,0 +1,134 @@ +## Compilation Options + +Related options: +[[--gravity | Installation:-Option-List#--gravity]],   +[[--pot_scheme | Installation:-Option-List#--pot_scheme]],   +[[--store_pot_ghost | Installation:-Option-List#--store_pot_ghost]],   +[[--unsplit_gravity | Installation:-Option-List#--unsplit_gravity]],   +[[--comoving | Installation:-Option-List#--comoving]]   + + +## Runtime Parameters +[[Runtime parameters: Gravity | Runtime-Parameters:-Gravity]] + +Other related parameters: +[[DT__GRAVITY | Runtime-Parameters:-Timestep#DT__GRAVITY]],   +[[POT_GPU_NPGROUP | Runtime-Parameters:-GPU#POT_GPU_NPGROUP]]   + + +## Remarks + +### External Acceleration/Potential + +#### Using Analytical Function: + +Follow the steps below to add external acceleration with an analytical +function. Get familiar with the general procedure of +[[Adding Problem-specific Functionalities | Adding-New-Simulations#vi-add-problem-specific-functionalities]] +first and be aware that adding external acceleration/potential takes a few extra steps +in order to utilize GPUs. + +1. Enable [[OPT__EXT_ACC | Runtime-Parameters:-Gravity#OPT__EXT_ACC]]. +2. Go to your new test problem folder and copy the built-in point-mass acceleration +routine as a template: + ``` + cp ../../../SelfGravity/CPU_Gravity/CPU_ExtAcc_PointMass.cpp ExtAcc_NewProblem.cpp + ``` +3. Edit `ExtAcc_NewProblem.cpp` to + * Replace the keyword `PointMass` by `NewProblem` (or whatever appropriate). + * Edit the routine `SetExtAccAuxArray_NewProblem()` to set the + auxiliary array `AuxArray[]`, which will be automatically + passed to `ExtAcc_NewProblem()` as the input array `UserArray[]`. + The array size is set by `EXT_ACC_NAUX_MAX` in `include/Macro.h` (default 20). + * Edit the routine `ExtAcc_NewProblem()`, which should return the external + acceleration `Acc[]` at `(x, y, z, Time)`. +4. Link `ExtAcc_NewProblem.cpp` to a corresponding CUDA source file: + ``` + ln -s ExtAcc_NewProblem.cpp ExtAcc_NewProblem.cu + ``` + This avoids writing redundant codes for CPU and GPU runs separately. +5. Edit your problem source file (e.g., `Init_TestProb_Hydro_NewProblem.cpp`) to + * Declare a function prototype on top of the file: + ```C++ + void Init_ExtAcc_NewProblem(); + ``` + * Set up a function pointer in your problem initialization + function (e.g., `Init_TestProb_Hydro_NewProblem()`): + ```C++ + # ifdef GRAVITY + Init_ExtAcc_Ptr = Init_ExtAcc_NewProblem + # endif + ``` + +Adding external potential can be done in a very similar way. +Enable [[OPT__EXT_POT | Runtime-Parameters:-Gravity#OPT__EXT_POT]]`=1` and then follow the procedure +above and replace `Acc` by `Pot`. A point-mass example can be found +at `src/SelfGravity/CPU_Poisson/CPU_ExtPot_PointMass.cpp`. + +**Caution: wave dark matter simulations +(i.e., [[--model | Installation:-Option-List#--model]]=ELBDM) +does not support external acceleration. Just use external potential.** + +#### Using Table: + +External potential can also be set via interpolating a table loaded from disk. +Set [[OPT__EXT_POT | Runtime-Parameters:-Gravity#OPT__EXT_POT]]`=2` and all `EXT_POT_TABLE_*` parameters. +The following C++ example creates such a table with a point-mass potential. + +```C++ +#include +#include + +typedef double real; // this must be consistent with the compilation option FLOAT8 + +int main() +{ +// parameters + const char *Filename = "ExtPotTable"; // EXT_POT_TABLE_NAME + const int NX = 131; // EXT_POT_TABLE_NPOINT_X + const int NY = 131; // EXT_POT_TABLE_NPOINT_Y + const int NZ = 131; // EXT_POT_TABLE_NPOINT_Z + const double dh = 0.0078125; // EXT_POT_TABLE_NPOINT_DH + const double EdgeL[3] = { -dh, -dh, -dh }; // EXT_POT_TABLE_EDGEL_X/Y/Z + +// set the external potential array + const double G = 1.0; // gravitational constant + const double M = 1.0; // particle mass + const double cx = EdgeL[0] + 0.5*(NX-1)*dh; // centre + const double cy = EdgeL[1] + 0.5*(NY-1)*dh; + const double cz = EdgeL[2] + 0.5*(NZ-1)*dh; + + double dx, dy, dz, r; + + real (*ExtPot)[NY][NX] = new real [NZ][NY][NX]; + + for (int k=0; k + +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[Main page of Runtime Parameters | Runtime-Parameters]] diff --git a/doc/wiki/Physics-Modules-related/Hydro.md b/doc/wiki/Physics-Modules-related/Hydro.md new file mode 100644 index 0000000000..7dbdeea00e --- /dev/null +++ b/doc/wiki/Physics-Modules-related/Hydro.md @@ -0,0 +1,38 @@ + +## Compilation Options + +Related options: +[[--model | Installation:-Option-List#--model]],   +[[--flu_scheme | Installation:-Option-List#--flu_scheme]],   +[[--slope | Installation:-Option-List#--slope]],   +[[--flux | Installation:-Option-List#--flux]],   +[[--dual | Installation:-Option-List#--dual]],   +[[--passive | Installation:-Option-List#--passive]],   +[[--mhd | Installation:-Option-List#--mhd]],   +[[--cosmic_ray | Installation:-Option-List#--cosmic_ray]],   +[[--cr_diffusion | Installation:-Option-List#--cr_diffusion]],   +[[--eos | Installation:-Option-List#--eos]],   +[[--barotropic | Installation:-Option-List#--barotropic]]   + + +## Runtime Parameters +[[Runtime parameters: Hydro | Runtime-Parameters:-Hydro]] + +Other related parameters: +[[DT__FLUID | Runtime Parameters:-Timestep#DT__FLUID]],   +[[DT__FLUID_INIT | Runtime Parameters:-Timestep#DT__FLUID_INIT]],   +[[DT__CR_DIFFUSION | Runtime Parameters:-Timestep#DT__CR_DIFFUSION]],   +[[AUTO_REDUCE_DT | Runtime Parameters:-Timestep#AUTO_REDUCE_DT]],   +[[FLU_GPU_NPGROUP | Runtime-Parameters:-GPU#FLU_GPU_NPGROUP]],   +[[AUTO_REDUCE_MINMOD_FACTOR | Runtime-Parameters:-Timestep#AUTO_REDUCE_MINMOD_FACTOR ]]   + + +## Remarks + + +
+ +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Equation of state | Equation-of-State]] diff --git a/doc/wiki/Physics-Modules-related/Particles.md b/doc/wiki/Physics-Modules-related/Particles.md new file mode 100644 index 0000000000..6289d7d4e3 --- /dev/null +++ b/doc/wiki/Physics-Modules-related/Particles.md @@ -0,0 +1,35 @@ + +## Compilation Options + +Related options: +[[--particle | Installation:-Option-List#--particle]],   +[[--double_par | Installation:-Option-List#--double_par]],   +[[--long_par | Installation:-Option-List#--long_par]],   +[[--store_par_acc | Installation:-Option-List#--store_par_acc]],   +[[--star_formation | Installation:-Option-List#--star_formation]],   +[[--par_attribute | Installation:-Option-List#--par_attribute]]   + + +## Runtime Parameters +[[Runtime parameters: Particles | Runtime-Parameters:-Particles]] + +Other related parameters: +[[DT__PARVEL | Runtime-Parameters:-Timestep#DT__PARVEL]],   +[[DT__PARVEL_MAX | Runtime-Parameters:-Timestep#DT__PARVEL_MAX ]],   +[[DT__PARACC | Runtime-Parameters:-Timestep#DT__PARACC]],   +[[OPT__FLAG_NPAR_PATCH | Runtime-Parameters:-Refinement#OPT__FLAG_NPAR_PATCH]],   +[[OPT__FLAG_NPAR_CELL | Runtime-Parameters:-Refinement#OPT__FLAG_NPAR_CELL]],   +[[OPT__FLAG_PAR_MASS_CELL | Runtime-Parameters:-Refinement#OPT__FLAG_PAR_MASS_CELL]],   +[[OPT__PARTICLE_COUNT | Runtime-Parameters:-Refinement#OPT__PARTICLE_COUNT]],   +[[LB_INPUT__PAR_WEIGHT | Runtime-Parameters:-MPI-and-OpenMP#LB_INPUT__PAR_WEIGHT]],   +[[OPT__CK_PARTICLE | Runtime-Parameters:-Miscellaneous#OPT__CK_PARTICLE]]   + + +## Remarks + + +
+ +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Physics-Modules-related/Star-Formation.md b/doc/wiki/Physics-Modules-related/Star-Formation.md new file mode 100644 index 0000000000..b2ce8866b4 --- /dev/null +++ b/doc/wiki/Physics-Modules-related/Star-Formation.md @@ -0,0 +1,23 @@ +TBF. + +## Compilation Options + +Related options: +[[--particle | Installation:-Option-List#--particle]]   +[[--star_formation | Installation:-Option-List#--star_formation]]   + + +## Runtime Parameters +[[Runtime parameters: Star Formation | Runtime-Parameters:-Star-Formation]] + +Other related parameters: + + +## Remarks + + +
+ +## Links +* [[Main page of Physics Modules | Physics-Modules]] +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Physics-Modules.md b/doc/wiki/Physics-Modules.md index 5cf40b0b4e..7c03632c56 100644 --- a/doc/wiki/Physics-Modules.md +++ b/doc/wiki/Physics-Modules.md @@ -1,7 +1,8 @@ * [[Hydro]] +* [[ELBDM]] * [[Equation of State]] * [[Gravity]] * [[Particles]] * [[Chemistry and Radiation]] * [[Star Formation]] -* [[Feedback]] \ No newline at end of file +* [[Feedback]] diff --git a/doc/wiki/Quick-Start:-1D-Shock-Tube.md b/doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md similarity index 63% rename from doc/wiki/Quick-Start:-1D-Shock-Tube.md rename to doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md index e0d3870866..e3f480de30 100644 --- a/doc/wiki/Quick-Start:-1D-Shock-Tube.md +++ b/doc/wiki/Quick-Start-related/Quick-Start:-1D-Shock-Tube.md @@ -7,66 +7,81 @@ This page includes three demos: 1\. Move to the source directory. ``` bash -> cd src +cd src ``` -2\. **[Deprecated; use `configure.py` described below instead]**: Edit the `Makefile` to validate the following settings. -Note that we have enabled -[[SERIAL | Installation:-Simulation-Options#SERIAL]] -and disabled -[[GPU | Installation:-Simulation-Options#GPU]], -[[LOAD_BALANCE | Installation:-Simulation-Options#LOAD_BALANCE]], and -[[OPENMP | Installation:-Simulation-Options#OPENMP]] -to run in a CPU-only mode -without OpenMP and MPI. -See [[Installation: Simulation Options|Installation:-Simulation-Options]] -for a complete list of all compile-time simulation options. -``` makefile -SIMU_OPTION += -DMODEL=HYDRO -#SIMU_OPTION += -DGRAVITY -#SIMU_OPTION += -DPARTICLE -#SIMU_OPTION += -DSUPPORT_GRACKLE - -#SIMU_OPTION += -DGPU -SIMU_OPTION += -DSERIAL -#SIMU_OPTION += -DLOAD_BALANCE=HILBERT -#SIMU_OPTION += -DOPENMP +2\. Generate `Makefile` by [[configure.py | Installation]]. +``` bash +cp ../example/test_problem/Hydro/Riemann/generate_make.sh ./ +sh generate_make.sh --openmp=false ``` +
+Execution results -**Update**: You can use the Python script -[configure.py](https://github.com/gamer-project/gamer/wiki/Installation%3A-Configure.py) -to tailor `Makefile` rather than editing it manually. An example can be found at -`../example/test_problem/Hydro/Riemann/generate_make.sh`, for which you can disable -OpenMP by adding `--openmp=false`. +
+   ...
+   ...
+========================================
+Makefile is created.
+========================================
+
+
+ +> [!NOTE] +> We have set +[[--mpi | Installation:-Option-List#--mpi]]=false, +[[--gpu | Installation:-Option-List#--gpu]]=false, and +[[--openmp | Installation:-Option-List#--openmp]]=false +to run in a CPU-only mode +without OpenMP and MPI. +See [[Option List | Installation:-Option-List#Option-List]] +for a complete list of all available options of `configure.py`. 3\. Compile the code. ``` bash -> make clean -> make -j +make clean +make +``` +
+Execution results + +
    ...
    ...
 Compiling GAMER --> Successful!
-```
+
+
4\. Create a working directory. ``` bash -> cd ../bin -> mkdir shocktube -> cd shocktube +cd ../bin +mkdir shocktube +cd shocktube ``` 5\. Copy the GAMER executable and example files of the test problem to the working directory. ```bash -> cp -r ../../example/test_problem/Hydro/Riemann/* . -> cp ../gamer . -> ls -clean.sh gamer Input__Flag_Lohner Input__Parameter Input__TestProb plot__hydro_dens.gpt plot__mhd.gpt README ReferenceSolution +cp -r ../../example/test_problem/Hydro/Riemann/* . +cp ../gamer . +ls ``` +
+Execution results -6\. Run the code. It will display `~ GAMER OVER ~` if succeeds. +
+clean.sh  gamer  Input__Flag_Lohner  Input__Parameter  Input__TestProb  plot__hydro_dens.gpt  plot__mhd.gpt  README  ReferenceSolution
+
+
+ +6\. Run the code. It will display `~ GAMER OVER ~` if it succeeds. ```bash -> ./gamer +./gamer +``` +
+Execution results + +
    ...
    ...
 Time: 9.0000000e-02 -> 9.3057198e-02,   Step:      29 ->      30,   dt_base: 3.0571979e-03
@@ -81,85 +96,104 @@ End_GAMER ... done
 
 
 ~ GAME OVER ~
-```
+
+
-7\. The code should have generated several [[log files|Outputs#log-files]] `Record__*` +7\. The code will generate several [[log files|Outputs#log-files]] `Record__*` and a series of 1D text data files `Xline_y0.000_z0.000_*`. ``` bash -> ls +ls +``` +
+Execution results + +
 clean.sh              plot__mhd.gpt       Record__PatchCount          Xline_y0.000_z0.000_000001  Xline_y0.000_z0.000_000007
 gamer                 README              Record__Performance         Xline_y0.000_z0.000_000002  Xline_y0.000_z0.000_000008
 Input__Flag_Lohner    Record__Dump        Record__TimeStep            Xline_y0.000_z0.000_000003  Xline_y0.000_z0.000_000009
 Input__Parameter      Record__MemInfo     Record__Timing              Xline_y0.000_z0.000_000004  Xline_y0.000_z0.000_000010
 Input__TestProb       Record__NCorrUnphy  ReferenceSolution           Xline_y0.000_z0.000_000005
 plot__hydro_dens.gpt  Record__Note        Xline_y0.000_z0.000_000000  Xline_y0.000_z0.000_000006
-```
+
+
8\. Plot a 1D text data file. You can use the sample [gnuplot](http://www.gnuplot.info) script `plot__hydro_dens.gpt` (replace `display` by other image viewers if necessary). ``` bash -> gnuplot plot__hydro_dens.gpt -> display Fig__Riemann_Density_000010.png +gnuplot plot__hydro_dens.gpt +display Fig__Riemann_Density_000010.png ``` -[[images/shocktube.png | alt=shocktube]] +
+Execution results + +[[/images/shocktube.png | alt=shocktube]] +
+ 9\. Check the performance. See [[Log Files | Outputs#log-files]] for more detailed timing analysis. ``` bash -> tail -n 3 Record__Note +tail -n 3 Record__Note +``` +
+Execution results +
 Total Processing Time : 75.954923 s
-
-```
+
+
## CPU-only with OpenMP Next, we enable OpenMP for the same test problem. Repeat the steps above with the following modifications. -1\. **[Deprecated]**: Enable -[[OPENMP | Installation:-Simulation-Options#OPENMP]] -in the `Makefile` and recompile the code. -``` makefile -SIMU_OPTION += -DOPENMP +1\. Re-generate `Makefile` by [[configure.py | Installation]] and recompile `gamer`. +``` bash +sh generate_make.sh --openmp=true +make clean +make -j4 ``` -**Update**: If you are using -[configure.py](https://github.com/gamer-project/gamer/wiki/Installation%3A-Configure.py), -you can enable OpenMP by adding `--openmp=true`. -**Caution: remember to clean the previous configurations by `make clean` -before `make` and copy the new executable to the working directory.** +> [!CAUTION] +> Remember to copy the new executable to `bin/shocktube`. 2\. Set the number of OpenMP threads by editing the runtime parameter -[[OMP_NTHREAD | MPI-and-OpenMP#OMP_NTHREAD]] +[[OMP_NTHREAD | Runtime-Parameters:-MPI-and-OpenMP#OMP_NTHREAD]] in the input file -[[Input__Parameter | Runtime-Parameters#input__parameter]]. +[[Input__Parameter | Runtime-Parameters:-Input__Parameter]]. The following example uses 4 threads. ``` OMP_NTHREAD 4 # number of OpenMP threads (<=0=auto) [-1] ``` -**Caution: all input files `Input__*` must be put in the -same directory as the executable `gamer`.** +> [!CAUTION] +> All input files `Input__*` must be put in the same directory as the executable `gamer`. 3\. Remove all old log and data files, if necessary. You can use the helper script `clean.sh`. ```bash -> sh clean.sh -> ls -clean.sh gamer Input__Flag_Lohner Input__Parameter Input__TestProb plot__hydro_dens.gpt plot__mhd.gpt README ReferenceSolution +sh clean.sh +ls ``` +
+Execution results + +
+clean.sh  gamer  Input__Flag_Lohner  Input__Parameter  Input__TestProb  plot__hydro_dens.gpt  plot__mhd.gpt  README  ReferenceSolution
+
+
4\. Run the code in the same way as without OpenMP. ```bash -> ./gamer +./gamer ``` 5\. Validate the OpenMP settings by searching for the keyword "OpenMP" in the log file [[Record__Note | Simulation-Logs:-Record__Note]]. You should see something like -``` +
 OpenMP Diagnosis
 ***********************************************************************************
 OMP__SCHEDULE                   DYNAMIC
@@ -171,24 +205,28 @@ CPU core IDs of all OpenMP threads (tid == thread ID):
  Rank        Host  NThread  tid-00  tid-01  tid-02  tid-03
     0    golub123        4       2       5       4       7
 ***********************************************************************************
-```
+
Check the following things: * **The number under `NThread` is the same as the runtime parameter -[[OMP_NTHREAD | MPI-and-OpenMP#OMP_NTHREAD]] +[[OMP_NTHREAD | Runtime-Parameters:-MPI-and-OpenMP#OMP_NTHREAD]] you just set** * **Different threads use different CPU cores** 6\. Check the performance. It should be about -[[OMP_NTHREAD | MPI-and-OpenMP#OMP_NTHREAD]] +[[OMP_NTHREAD | Runtime-Parameters:-MPI-and-OpenMP#OMP_NTHREAD]] times faster than the case without OpenMP. ``` bash -> tail -n 3 Record__Note +tail -n 3 Record__Note +``` +
+Execution results +
 Total Processing Time : 20.460586 s
-
-```
+
+
## Hybrid OpenMP/GPU @@ -196,38 +234,29 @@ To enable both GPU and OpenMP, repeat the steps in [CPU-only with OpenMP](#cpu-only-with-openmp) with the following modifications. -1\. **[Deprecated]**: Edit the `Makefile` as described below and recompile the code. -* Enable [[GPU | Installation:-Simulation-Options#GPU]]. -* Set [[GPU_COMPUTE_CAPABILITY | Installation:-Simulation-Options#GPU_COMPUTE_CAPABILITY]] -to match the GPU on your system (e.g., `GPU_COMPUTE_CAPABILITY=890` for GeForce RTX 4090). -* Set `CUDA_PATH` to the location of your CUDA installation. - -The following example assumes that the `TURING` architecture -is adopted and CUDA is installed at `/usr/local/cuda`. -``` makefile -SIMU_OPTION += -DGPU -SIMU_OPTION += -DDGPU_COMPUTE_CAPABILITY=860 - -CUDA_PATH := /usr/local/cuda +1\. Re-generate `Makefile` by [[configure.py | Installation]] and recompile `gamer`. +``` bash +sh generate_make.sh --openmp=true --gpu=true +make clean +make -j4 ``` -**Update**: If you are using -[configure.py](https://github.com/gamer-project/gamer/wiki/Installation%3A-Configure.py), -you can first set `CUDA_PATH` and `GPU_COMPUTE_CAPABILITY` in your machine configuration file in `gamer/config/YOUR_MACHINE.config` -and then add `--machine=YOUR_MACHINE --openmp=true --gpu=true` when running `configure.py`. +> [!CAUTION] +> * Please make sure that the `GPU_COMPUTE_CAPABILITY` is set properly in your [[machine configuration file | Installation:-Machine-Configuration-File]] +> * Remember to copy the new executable to `bin/shocktube`. 2\. Remove all old log and data files, if necessary. Run the code with the new executable. ```bash -> sh clean.sh -> ./gamer +sh clean.sh +./gamer ``` 3\. Validate the GPU settings by searching for the keyword "Device Diagnosis" in the log file [[Record__Note | Simulation-Logs:-Record__Note]]. You should see something like -``` +
 Device Diagnosis
 ***********************************************************************************
 MPI_Rank =   0, hostname =   golub123, PID = 47842
@@ -264,19 +293,23 @@ Concurrent Up/Downstream Copies   : Yes
 Concurrent Kernel Execution       : Yes
 GPU has ECC Support Enabled       : Yes
 ***********************************************************************************
-```
-This example shows that we are running on the computing node "golub123"
-with 2 GPUs, and we are using the one with "GPU ID = 0",
-a "Tesla K40m" GPU.
+
+This example shows that we are running on the computing node `golub123` +with 2 GPUs, and we are using the one with `GPU ID = 0`, +a `Tesla K40m` GPU. 4\. Check the performance. It should be noticeably faster than the case without GPU. ``` bash -> tail -n 3 Record__Note +tail -n 3 Record__Note +``` +
+Execution results +
 Total Processing Time : 9.417532 s
-
-```
+
+

diff --git a/doc/wiki/Quick-Start:-3D-Blast-Wave.md b/doc/wiki/Quick-Start-related/Quick-Start:-3D-Blast-Wave.md similarity index 72% rename from doc/wiki/Quick-Start:-3D-Blast-Wave.md rename to doc/wiki/Quick-Start-related/Quick-Start:-3D-Blast-Wave.md index 7394f25f14..53a285fad1 100644 --- a/doc/wiki/Quick-Start:-3D-Blast-Wave.md +++ b/doc/wiki/Quick-Start-related/Quick-Start:-3D-Blast-Wave.md @@ -11,92 +11,85 @@ It is recommended to first check [[Quick Start: 1D Shock Tube]]. * [yt](http://yt-project.org) * [HDF5](https://support.hdfgroup.org/HDF5) -2\. **[Deprecated; use `configure.py` described below instead]**: Edit the `Makefile` to validate the following settings. -See [[Installation]] for details. - -#### Simulation options: -``` makefile -SIMU_OPTION += -DMODEL=HYDRO -#SIMU_OPTION += -DGRAVITY -#SIMU_OPTION += -DPARTICLE -#SIMU_OPTION += -DSUPPORT_GRACKLE - -SIMU_OPTION += -DGPU -SIMU_OPTION += -DGPU_COMPUTE_CAPABILITY=860 -#SIMU_OPTION += -DSERIAL -SIMU_OPTION += -DLOAD_BALANCE=HILBERT -SIMU_OPTION += -DOPENMP -SIMU_OPTION += -DSUPPORT_HDF5 -``` -See step 1 in -[[Quick Start: 1D Shock Tube -- Hybrid OpenMP/GPU | Quick-Start:-1D-Shock-Tube#hybrid-openmpgpu]] -about how to set `GPU_COMPUTE_CAPABILITY`. - -**Caution: to enable MPI, one must comment out `SIMU_OPTION += -DSERIAL` and set -`SIMU_OPTION += -DLOAD_BALANCE=HILBERT`.** - -#### MPI compiler: -``` makefile -#CXX = g++ # comment out the serial compiler - CXX = $(MPI_PATH)/bin/mpicxx # if necessary, switch to the MPI compiler recommended on your system +2\. Generate `Makefile` by [[configure.py | Installation]]. +``` bash +cp ../example/test_problem/Hydro/BlastWave/generate_make.sh ./ +sh generate_make.sh --openmp=true --gpu=true --mpi=true --hdf5=true ``` +
+Execution results -#### Library paths: -``` makefile -CUDA_PATH := /usr/local/cuda -MPI_PATH := /usr/local/mpi -HDF5_PATH := /usr/local/hdf5 -``` -Replace these paths with your local installation. +
+   ...
+   ...
+========================================
+Makefile is created.
+========================================
+
+
-**Update**: If you are using -[configure.py](https://github.com/gamer-project/gamer/wiki/Installation%3A-Configure.py), -you can first set `CUDA_PATH`, `MPI_PATH`, `HDF5_PATH`, `CXX_MPI`, and `GPU_COMPUTE_CAPABILITY` -in your machine configuration file in `gamer/config/YOUR_MACHINE.config` -and then generate a `Makefile` by +3\. Compile the code. ``` bash -python configure.py --machine=YOUR_MACHINE --openmp=true --gpu=true --mpi=true --hdf5=true +make clean +make -j ``` +
+Execution results -3\. Compile the code. -``` bash -> make clean -> make -j +
    ...
    ...
 Compiling GAMER --> Successful!
-```
+
+
4\. Create a working directory and copy the GAMER executable and example files of the test problem. ``` bash -> cd ../bin -> mkdir blastwave -> cd blastwave -> cp ../../example/test_problem/Hydro/BlastWave/* . -> cp ../gamer . -> ls -Input__Flag_Lohner Input__Parameter Input__TestProb README clean.sh gamer plot_profile.gpt plot_slice.py +cd ../bin +mkdir blastwave +cd blastwave +cp -r ../../example/test_problem/Hydro/BlastWave/* . +cp ../gamer . +ls ``` +
+Execution results + +
+Input__Flag_Lohner  Input__Parameter  Input__TestProb  README  clean.sh  gamer  plot_profile.gpt  plot_slice.py
+
+
5\. Edit the input file -[[Input__Parameter | Runtime Parameters#input__parameter]] +[[Input__Parameter | Runtime-Parameters:-Input__Parameter]] to set the total number of OpenMP threads per MPI process. The following example will launch 10 threads per process. ``` OMP_NTHREAD 10 # number of OpenMP threads (<=0=auto) [-1] ``` -**Caution: see [[Hybrid MPI/OpenMP/GPU | MPI-and-OpenMP#hybrid-mpiopenmpgpu]] -for the recommended configuration of the number of MPI processes and OpenMP threads.** +> [!IMPORTANT] +> See [[Hybrid MPI/OpenMP/GPU | MPI-and-OpenMP#hybrid-mpiopenmpgpu]] +for the recommended configuration of the number of MPI processes and OpenMP threads. 6\. Run the code with MPI (e.g., `mpirun, mpiexec, aprun`). -Please consult the documentation of your system, especially about -how to compile and launch "hybrid MPI/OpenMP" jobs. +> [!IMPORTANT] +> Please consult the documentation of your system, especially about how to compile and launch "hybrid MPI/OpenMP" jobs. + The following example uses OpenMPI 1.8.4 to launch 2 MPI processes and 10 threads per process, assuming that there are two 10-core CPUs. ```bash -> mpirun -np 2 -map-by ppr:1:socket:pe=10 ./gamer +mpirun -np 2 -map-by ppr:1:socket:pe=10 ./gamer +``` +> [!TIP] +> See more options of MPI: +> * `-map-by`: [Mapping options and modifiers](https://www.ibm.com/docs/en/smpi/10.2?topic=affinity-mapping-options-modifiers) +> * `-np`: [mpirun command options](https://www.ibm.com/docs/da/smpi/10.2?topic=command-mpirun-options) +
+Execution results + +
    ...
    ...
 Time: 4.8438672e-03 -> 4.8932853e-03,   Step:     114 ->     115,   dt_base: 4.9418079e-05
@@ -113,23 +106,34 @@ End_GAMER ... done
 
 
 ~ GAME OVER ~
-
-```
+
+
7\. The code should have generated several [[log files|Outputs#log-files]] `Record__*`, a series of 1D text data files `Diag_*`, and a series of HDF5 snapshots `Data_*`. ```bash -> ls +ls +``` +
+Execution results + +
 Data_000000  Data_000005  Data_000010  Diag_000004  Diag_000009         README               Record__Note         clean.sh
 Data_000001  Data_000006  Diag_000000  Diag_000005  Diag_000010         Record__Dump         Record__PatchCount   gamer
 Data_000002  Data_000007  Diag_000001  Diag_000006  Input__Flag_Lohner  Record__LoadBalance  Record__Performance  plot_profile.gpt
 Data_000003  Data_000008  Diag_000002  Diag_000007  Input__Parameter    Record__MemInfo      Record__TimeStep     plot_slice.py
 Data_000004  Data_000009  Diag_000003  Diag_000008  Input__TestProb     Record__NCorrUnphy   Record__Timing
-```
+
+
```bash -> h5ls -r Data_000010 +h5ls -r Data_000010 +``` +
+Execution results + +
 /                        Group
 /GridData                Group
 /GridData/Dens           Dataset {6016, 8, 8, 8}
@@ -148,12 +152,13 @@ Data_000004  Data_000009  Diag_000003  Diag_000008  Input__TestProb     Record__
 /Tree/LBIdx              Dataset {6016}
 /Tree/Sibling            Dataset {6016, 26}
 /Tree/Son                Dataset {6016}
-```
+
+
8\. Validate the OpenMP configuration by following step 5 in [[Quick Start: 1D Shock Tube -- CPU-only with OpenMP | Quick-Start:-1D-Shock-Tube#cpu-only-with-openmp]]. The example setup given above leads to something like -``` +
 OpenMP Diagnosis
 ***********************************************************************************
 OMP__SCHEDULE                   DYNAMIC
@@ -166,19 +171,25 @@ CPU core IDs of all OpenMP threads (tid == thread ID):
     0    golub121       10       2       0       4       8      10      12      14      16      18       6
     1    golub121       10       1       3       5       7       9      11      13      15      17      19
 ***********************************************************************************
-```
-Note that here the two MPI processes run on the same node `golub121`
-and all OpenMP threads use different CPU cores.
+
+> [!NOTE] +> Here the two MPI processes run on the same node `golub121` and all OpenMP threads use different CPU cores. 9\. Validate the GPU configuration by following step 3 in [[Quick Start: 1D Shock Tube -- Hybrid OpenMP/GPU | Quick-Start:-1D-Shock-Tube#hybrid-openmpgpu]]. Especially, make sure that the MPI processes running on the same node access different `GPU ID` (unless that is what you want). -10\. Plot a HDF5 snapshot with yt. You can use the sample script `plot_slice.py`. +10\. Plot a HDF5 snapshot with yt. You can use the sample script `plot_script/plot_slice.py`. ``` -> python plot_slice.py -h -usage: plot_slice.py [-h] -s IDX_START -e IDX_END [-d DIDX] [-i PREFIX] +cd plot_script +python plot_slice_gas.py -h +``` +
+Execution results + +
+usage: plot_slice_gas.py [-h] -s IDX_START -e IDX_END [-d DIDX] [-i PREFIX]
 
 Plot gas density slices for the blast wave test
 
@@ -187,16 +198,21 @@ optional arguments:
   -s IDX_START  first data index
   -e IDX_END    last data index
   -d DIDX       delta data index [1]
-  -i PREFIX     data path prefix [./]
-```
+  -i PREFIX     data path prefix [../]
+
+
Let's plot `Data_000010`. +``` bash +python plot_slice_gas.py -s 10 -e 10 ``` -> python plot_slice.py -s 10 -e 10 +
+Execution results +
 Command-line arguments:
 -------------------------------------------------------------------
-plot_slice.py -s 10 -e 10
+plot_slice_gas.py -s 10 -e 10
 -------------------------------------------------------------------
 
 yt : [WARNING  ] 2017-12-11 20:34:09,787 Cannot determine code units ==> Use units_override to specify the units
@@ -214,12 +230,17 @@ yt : [INFO     ] 2017-12-11 20:34:14,786 xlim = 0.000000 1.000000
 yt : [INFO     ] 2017-12-11 20:34:14,787 ylim = 0.000000 1.000000
 yt : [INFO     ] 2017-12-11 20:34:14,810 Making a fixed resolution buffer of (('gas', 'density')) 800 by 800
 yt : [INFO     ] 2017-12-11 20:34:18,923 Saving plot Data_000010_Slice_z_density.png
-```
+
+
```bash -> display Data_000010_Slice_z_density.png +display Data_000010_Slice_z_density.png ``` -[[images/blastwave.png | alt=blastwave]] +
+Execution results + +[[/images/blastwave.png | alt=blastwave]] +

diff --git a/doc/wiki/Quick-Start.md b/doc/wiki/Quick-Start.md index 22a3a228fa..17a46b92f0 100644 --- a/doc/wiki/Quick-Start.md +++ b/doc/wiki/Quick-Start.md @@ -2,7 +2,23 @@ Follow the instructions in [[Download]] to get the latest version of GAMER. +### Setup Your Machine Configuration File + +The machine configuration file is located under `configs`. This file contains the library paths, compiler types, compilation flags, and GPU compute capability. Check the existing configuration files to see if one matches your machine. + +If no suitable configuration file is available, you will need to create a new one. Follow the instructions in [[Machine Configuration File | Installation:-Machine-Configuration-File]] to set up a configuration file for your machine. + +If a configuration file matches your machine, you can set it as the default by running + +```bash +sh tool/config/set_settings.sh --local --machine=your_machine +``` + +For example, setting `--machine=pleiades` with the above command will use the `configs/pleiades.config` machine configuration when compiling the code. + ### Quick Demos +Read the following guides to learn how to configure, compile, and run GAMER. + 1. [[1D Shock Tube: OpenMP with/without GPU acceleration | Quick-Start:-1D-Shock-Tube]] -2. [[3D Blast Wave: hybrid MPI/OpenMP/GPU + yt analysis | Quick-Start:-3D-Blast-Wave]] \ No newline at end of file +2. [[3D Blast Wave: hybrid MPI/OpenMP/GPU + yt analysis | Quick-Start:-3D-Blast-Wave]] diff --git a/doc/wiki/Running-the-Code.md b/doc/wiki/Running-the-Code.md index 9ccfd79ff9..a24c8bab9c 100644 --- a/doc/wiki/Running-the-Code.md +++ b/doc/wiki/Running-the-Code.md @@ -14,13 +14,10 @@ To run the code in a serial mode (i.e., no MPI and OpenMP), follow the steps below: 1. Compile the code (See [[Installation]] for details) - 1. Turn on the compilation option -[[SERIAL | Installation: Simulation-Options#SERIAL]] -and turn off both -[[LOAD_BALANCE | Installation: Simulation-Options#LOAD_BALANCE]] -and -[[OPENMP | Installation: Simulation-Options#OPENMP]] - 2. Set `CXX` in the `Makefile` to a serial compiler (e.g., `g++` or `icpc`) + 1. Set `CXX` in the [[configuration file | Installation:-Machine-Configuration-File]] to a serial compiler (e.g., `g++` or `icpc`) + 2. Set the following arguments when generating `Makefile`: + * [[--mpi | Installation:-Option-List#--mpi]]=`false` + * [[--openmp | Installation:-Option-List#--openmp]]=`false` 3. Recompile the code by `make clean; make` 2. Set the runtime parameters (see [[Runtime Parameters]] for details) @@ -31,7 +28,7 @@ directory as the executable `gamer` 3. Launch the code ```bash - > ./gamer + ./gamer ``` 4. Check the outputs @@ -48,16 +45,17 @@ Further readings: To restart a simulation from a snapshot (e.g., `Data_000123`), do the following steps: -1. Set [[OPT__INIT | Initial Conditions#OPT__INIT]]=2 +1. Set [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=2 2. Create a soft link named `RESTART` to a targeted snapshot: `ln -s Data_000123 RESTART` 3. Run the code as usual -Note that many runtime parameters can be changed during restart +> [!NOTE] +> Many runtime parameters can be changed during restart (e.g., number of MPI processes and OpenMP threads, maximum refinement level, refinement criteria, time-step criteria). The next data dump ID will be automatically set to the ID of the restart file plus one (unless specified by -[[INIT_DUMPID | Outputs#INIT_DUMPID]]). +[[INIT_DUMPID | Runtime-Parameters:-Outputs#INIT_DUMPID]]). ## Terminating or Pausing Simulations @@ -85,25 +83,37 @@ To resume it, simply delete this file. One can put simulation notes in a text file named `Input__Note`. The content of this file will be automatically copied to the top of the log file -[[Record__Note | Outputs:-Record__Note]] during code initialization. For example, +[[Record__Note | Simulation Logs:-Record__Note]] during code initialization. For example, ```bash -> cat Input__Note +cat Input__Note +``` +
+Execution results +
 ~ PUT YOUR SIMULATION NOTES HERE ~
+
+
-> ./gamer -> head Record__Note +```bash +./gamer +head Record__Note +``` +
+Execution results +
 Simulation Note
 ***********************************************************************************
 
 ~ PUT YOUR SIMULATION NOTES HERE ~
 
 ***********************************************************************************
-```
+
+

## Links * [[Installation]] -* [[Runtime Parameters]] \ No newline at end of file +* [[Runtime Parameters]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md new file mode 100644 index 0000000000..0288725ab3 --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md @@ -0,0 +1,432 @@ +> [!CAUTION] +> Please do not edit this file (page) manually, since the workflow will overwrite your changes. + +This file (page) is automatically generated by the workflow `Update all parameters wiki page` using the script `tool/wiki/sync_runtime_parameter.py`. + +The workflow is triggered when changes are pushed to any of the following files: +- `src/Init/Init_Load_Parameter.cpp` +- `example/input/Input__Paramter` +- `tool/wiki/sync_runtime_parameter.py` + +For variables with `Default/Min/Max` labeled as `Depend`, click the parameter names for more details. + +# Index +[A](#A), [B](#B), [C](#C), [D](#D), [E](#E), [F](#F), [G](#G), [H](#H), [I](#I), [J](#J), [K](#K), [L](#L), [M](#M), [N](#N), [O](#O), [P](#P), [Q](#Q), [R](#R), [S](#S), [T](#T), [U](#U), [V](#V), [W](#W), [X](#X), [Y](#Y), [Z](#Z) + +# A +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| ANGMOM_ORIGIN_X | -1.0 | None | None | x coordinate of the origin for angular momentum (<0=auto -> BoxCenter) [-1.0] | +| ANGMOM_ORIGIN_Y | -1.0 | None | None | y coordinate of the origin for angular momentum (<0=auto -> BoxCenter) [-1.0] | +| ANGMOM_ORIGIN_Z | -1.0 | None | None | z coordinate of the origin for angular momentum (<0=auto -> BoxCenter) [-1.0] | +| [[ AUTO_REDUCE_DT \| Runtime-Parameters:-Timestep#AUTO_REDUCE_DT ]] | 1 | None | None | reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] | +| [[ AUTO_REDUCE_DT_FACTOR \| Runtime-Parameters:-Timestep#AUTO_REDUCE_DT_FACTOR ]] | 1.0 | 2.22507386e-308 | 1.0 | reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] | +| [[ AUTO_REDUCE_DT_FACTOR_MIN \| Runtime-Parameters:-Timestep#AUTO_REDUCE_DT_FACTOR_MIN ]] | 0.1 | 0.0 | 1.0 | minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] | +| [[ AUTO_REDUCE_INT_MONO_FACTOR \| Runtime-Parameters:-Timestep#AUTO_REDUCE_INT_MONO_FACTOR ]] | 0.8 | 2.22507386e-308 | 1.0 | reduce INT_MONO_COEFF(_B) by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] | +| [[ AUTO_REDUCE_INT_MONO_MIN \| Runtime-Parameters:-Timestep#AUTO_REDUCE_INT_MONO_MIN ]] | 1.0e-2 | 0.0 | None | minimum allowed INT_MONO_COEFF(_B) after consecutive failures [1.0e-2] | +| [[ AUTO_REDUCE_MINMOD_FACTOR \| Runtime-Parameters:-Timestep#AUTO_REDUCE_MINMOD_FACTOR ]] | 0.8 | 2.22507386e-308 | 1.0 | reduce MINMOD_COEFF by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] ##HYDRO ONLY## | +| [[ AUTO_REDUCE_MINMOD_MIN \| Runtime-Parameters:-Timestep#AUTO_REDUCE_MINMOD_MIN ]] | 1.0e-2 | 0.0 | None | minimum allowed MINMOD_COEFF after consecutive failures [1.0e-2] ##HYDRO ONLY## | +| [[ A_INIT \| Runtime-Parameters:-Cosmology#A_INIT ]] | -1.0 | 2.22507386e-308 | None | initial scale factor | + +# B +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ BOX_SIZE \| Runtime-Parameters:-General#BOX_SIZE ]] | -1.0 | 2.22507386e-308 | None | box size along the longest side (in Mpc/h if COMOVING is adopted) | + +# C +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ CHE_GPU_NPGROUP \| Runtime-Parameters:-GPU#CHE_GPU_NPGROUP ]] | -1 | None | None | number of patch groups sent into the CPU/GPU Grackle solver (<=0=auto) [-1] | +| [[ COM_CEN_X \| Runtime-Parameters:-Miscellaneous#COM_CEN_X ]] | -1.0 | None | None | x coordinate as an initial guess for determining center of mass (if one of COM_CEN_X/Y/Z < 0 -> peak density position x) [-1.0] | +| [[ COM_CEN_Y \| Runtime-Parameters:-Miscellaneous#COM_CEN_Y ]] | -1.0 | None | None | y coordinate as an initial guess for determining center of mass (if one of COM_CEN_X/Y/Z < 0 -> peak density position y) [-1.0] | +| [[ COM_CEN_Z \| Runtime-Parameters:-Miscellaneous#COM_CEN_Z ]] | -1.0 | None | None | z coordinate as an initial guess for determining center of mass (if one of COM_CEN_X/Y/Z < 0 -> peak density position z) [-1.0] | +| [[ COM_MAX_ITER \| Runtime-Parameters:-Miscellaneous#COM_MAX_ITER ]] | 10 | 1 | None | maximum number of iterations for determining the center of mass (must >= 1) [10] | +| [[ COM_MAX_R \| Runtime-Parameters:-Miscellaneous#COM_MAX_R ]] | -1.0 | None | None | maximum radius for determining center of mass (<0=auto -> __FLT_MAX__) [-1.0] | +| [[ COM_MIN_RHO \| Runtime-Parameters:-Miscellaneous#COM_MIN_RHO ]] | 0.0 | 0.0 | None | minimum density for determining center of mass (must >= 0.0) [0.0] | +| [[ COM_TOLERR_R \| Runtime-Parameters:-Miscellaneous#COM_TOLERR_R ]] | -1.0 | None | None | maximum tolerated error of deviation in radius during the iterations of determining the center of mass (<0=auto -> amr->dh[MAX_LEVEL]) [-1.0] | +| [[ CR_DIFF_MIN_B \| Runtime-Parameters:-Hydro#CR_DIFF_MIN_B ]] | 0.0 | None | None | disable diffusion locally when B field amplitude is smaller than this threshold (<=0=off) [0.0] ##CR_DIFFUSION only## | +| [[ CR_DIFF_PARA \| Runtime-Parameters:-Hydro#CR_DIFF_PARA ]] | 0.0 | 0.0 | None | cosmic-ray diffusion coefficients parallel/perpendicular to the | +| [[ CR_DIFF_PERP \| Runtime-Parameters:-Hydro#CR_DIFF_PERP ]] | 0.0 | 0.0 | None | magnetic field [0.0] ##CR_DIFFUSION only## | + +# D +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ DT__CR_DIFFUSION \| Runtime-Parameters:-Timestep#DT__CR_DIFFUSION ]] | 3.0e-1 | 0.0 | None | dt criterion: cosmic-ray diffusion CFL factor [0.3] ##CR_DIFFUSION only## | +| [[ DT__FLUID \| Runtime-Parameters:-Timestep#DT__FLUID ]] | -1.0 | None | None | dt criterion: fluid solver CFL factor (<0=auto) [-1.0] | +| [[ DT__FLUID_INIT \| Runtime-Parameters:-Timestep#DT__FLUID_INIT ]] | -1.0 | None | None | dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] | +| [[ DT__GRAVITY \| Runtime-Parameters:-Timestep#DT__GRAVITY ]] | -1.0 | None | None | dt criterion: gravity solver safety factor (<0=auto) [-1.0] | +| DT__HYBRID_CFL | -1.0 | None | None | dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## | +| DT__HYBRID_CFL_INIT | -1.0 | None | None | dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## | +| DT__HYBRID_VELOCITY | -1.0 | None | None | dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## | +| DT__HYBRID_VELOCITY_INIT | -1.0 | None | None | dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## | +| [[ DT__MAX \| Runtime-Parameters:-Timestep#DT__MAX ]] | -1.0 | None | None | dt criterion: maximum allowed dt (<0=off) [-1.0] | +| [[ DT__MAX_DELTA_A \| Runtime-Parameters:-Timestep#DT__MAX_DELTA_A ]] | 0.01 | 0.0 | None | dt criterion: maximum variation of the cosmic scale factor [0.01] | +| [[ DT__PARACC \| Runtime-Parameters:-Timestep#DT__PARACC ]] | 0.5 | 0.0 | None | dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## | +| [[ DT__PARVEL \| Runtime-Parameters:-Timestep#DT__PARVEL ]] | 0.5 | 0.0 | None | dt criterion: particle velocity safety factor [0.5] | +| [[ DT__PARVEL_MAX \| Runtime-Parameters:-Timestep#DT__PARVEL_MAX ]] | -1.0 | None | None | dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] | +| DT__PHASE | 0.0 | 0.0 | None | dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## | +| [[ DT__SPEED_OF_LIGHT \| Runtime-Parameters:-Timestep#DT__SPEED_OF_LIGHT ]] | 0 | None | None | dt criterion: speed of light [0] ##SRHD ONLY## | +| [[ DT__SYNC_CHILDREN_LV \| Runtime-Parameters:-Timestep#DT__SYNC_CHILDREN_LV ]] | 0.1 | 0.0 | 1.0 | dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] | +| [[ DT__SYNC_PARENT_LV \| Runtime-Parameters:-Timestep#DT__SYNC_PARENT_LV ]] | 0.1 | 0.0 | None | dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize with the parent level (for OPT__DT_LEVEL==3 only) [0.1] | +| [[ DUAL_ENERGY_SWITCH \| Runtime-Parameters:-Hydro#DUAL_ENERGY_SWITCH ]] | 2.0e-2 | 0.0 | None | apply dual-energy if E_int/E_kin < DUAL_ENERGY_SWITCH [2.0e-2] ##DUAL_ENERGY ONLY## | + +# E +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| ELBDM_BASE_SPECTRAL | 0 | None | None | adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] | +| ELBDM_FIRST_WAVE_LEVEL | -1 | 1 | None | level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## | +| ELBDM_LAMBDA | 1.0 | None | None | quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## | +| ELBDM_MASS | -1.0 | 2.22507386e-308 | None | particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) | +| ELBDM_MATCH_PHASE | 1 | None | None | match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## | +| ELBDM_PLANCK_CONST | -1.0 | None | None | reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) | +| ELBDM_REMOVE_MOTION_CM | ELBDM_REMOVE_MOTION_CM_NONE | 0 | 2 | remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): (0=off, 1=init, 2=every step) [0] | +| ELBDM_TAYLOR3_AUTO | 0 | None | None | Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] | +| ELBDM_TAYLOR3_COEFF | 1.0/6.0 | None | None | 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## | +| [[ END_STEP \| Runtime-Parameters:-General#END_STEP ]] | -1L | None | None | end step (<0=auto -> must be set by test problems or restart) [-1] | +| [[ END_T \| Runtime-Parameters:-General#END_T ]] | -1.0 | None | None | end physical time (<0=auto -> must be set by test problems or restart) [-1.0] | +| EXT_POT_TABLE_DH_X | -1.0 | None | None | external potential table: spatial interval between adjacent x data points | +| EXT_POT_TABLE_DH_Y | -1.0 | None | None | external potential table: spatial interval between adjacent y data points | +| EXT_POT_TABLE_DH_Z | -1.0 | None | None | external potential table: spatial interval between adjacent z data points | +| [[ EXT_POT_TABLE_EDGEL_X \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_EDGEL_X ]] | None | None | None | external potential table: starting x coordinates | +| [[ EXT_POT_TABLE_EDGEL_Y \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_EDGEL_Y ]] | None | None | None | external potential table: starting y coordinates | +| [[ EXT_POT_TABLE_EDGEL_Z \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_EDGEL_Z ]] | None | None | None | external potential table: starting z coordinates | +| EXT_POT_TABLE_FLOAT8 | -1 | -1 | -1 | external potential table: double precision (<0=auto -> FLOAT8, 0=off, 1=on) [-1] --> not supported yet; use -1 for now | +| [[ EXT_POT_TABLE_NAME \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_NAME ]] | None | None | None | external potential table: filename | +| [[ EXT_POT_TABLE_NPOINT_X \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_NPOINT_X ]] | -1 | None | None | external potential table: table size (i.e., number of data points) along x | +| [[ EXT_POT_TABLE_NPOINT_Y \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_NPOINT_Y ]] | -1 | None | None | external potential table: table size (i.e., number of data points) along y | +| [[ EXT_POT_TABLE_NPOINT_Z \| Runtime-Parameters:-Gravity#EXT_POT_TABLE_NPOINT_Z ]] | -1 | None | None | external potential table: table size (i.e., number of data points) along z | + +# F +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ FB_LEVEL \| Runtime-Parameters:-Feedback#FB_LEVEL ]] | -1 | None | TOP_LEVEL | AMR level to apply feedback (must be MAX_LEVEL for now; <0=auto -> MAX_LEVEL) [-1] | +| [[ FB_RSEED \| Runtime-Parameters:-Feedback#FB_RSEED ]] | 456 | 0 | None | random seed [456] | +| [[ FB_SNE \| Runtime-Parameters:-Feedback#FB_SNE ]] | 0 | None | None | supernova explosion feedback [0] | +| [[ FB_USER \| Runtime-Parameters:-Feedback#FB_USER ]] | 0 | None | None | user-defined feedback [0] | +| [[ FLAG_ANGULAR_CEN_X \| Runtime-Parameters:-Refinement#FLAG_ANGULAR_CEN_X ]] | -1.0 | None | None | x center coordinate for OPT__FLAG_ANGULAR (<0=auto -> box center) [-1.0] | +| [[ FLAG_ANGULAR_CEN_Y \| Runtime-Parameters:-Refinement#FLAG_ANGULAR_CEN_Y ]] | -1.0 | None | None | y center coordinate for OPT__FLAG_ANGULAR (<0=auto -> box center) [-1.0] | +| [[ FLAG_ANGULAR_CEN_Z \| Runtime-Parameters:-Refinement#FLAG_ANGULAR_CEN_Z ]] | -1.0 | None | None | z center coordinate for OPT__FLAG_ANGULAR (<0=auto -> box center) [-1.0] | +| [[ FLAG_BUFFER_SIZE \| Runtime-Parameters:-Refinement#FLAG_BUFFER_SIZE ]] | -1 | None | PS1 | number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] | +| [[ FLAG_BUFFER_SIZE_MAXM1_LV \| Runtime-Parameters:-Refinement#FLAG_BUFFER_SIZE_MAXM1_LV ]] | -1 | None | PS1 | FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] | +| [[ FLAG_BUFFER_SIZE_MAXM2_LV \| Runtime-Parameters:-Refinement#FLAG_BUFFER_SIZE_MAXM2_LV ]] | -1 | None | PS1 | FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] | +| [[ FLAG_RADIAL_CEN_X \| Runtime-Parameters:-Refinement#FLAG_RADIAL_CEN_X ]] | -1.0 | None | None | x center coordinate for OPT__FLAG_RADIAL (<0=auto -> box center) [-1.0] | +| [[ FLAG_RADIAL_CEN_Y \| Runtime-Parameters:-Refinement#FLAG_RADIAL_CEN_Y ]] | -1.0 | None | None | y center coordinate for OPT__FLAG_RADIAL (<0=auto -> box center) [-1.0] | +| [[ FLAG_RADIAL_CEN_Z \| Runtime-Parameters:-Refinement#FLAG_RADIAL_CEN_Z ]] | -1.0 | None | None | z center coordinate for OPT__FLAG_RADIAL (<0=auto -> box center) [-1.0] | +| [[ FLU_GPU_NPGROUP \| Runtime-Parameters:-GPU#FLU_GPU_NPGROUP ]] | -1 | None | None | number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] | + +# G +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ GAMMA \| Runtime-Parameters:-Hydro#GAMMA ]] | Depend | Depend | Depend | ratio of specific heats (i.e., adiabatic index) [5.0/3.0] ##EOS_GAMMA ONLY## | +| [[ GAMMA_CR \| Runtime-Parameters:-Hydro#GAMMA_CR ]] | 4.0/3.0 | 1.0 | None | effective adiabatic index of cosmic rays [4.0/3.0] | +| [[ GFUNC_COEFF0 \| Runtime-Parameters:-Gravity#GFUNC_COEFF0 ]] | -1.0 | None | None | Green's function coefficient at the origin for the isolated BC (<0=auto) [-1.0] | +| [[ GPU_NSTREAM \| Runtime-Parameters:-GPU#GPU_NSTREAM ]] | -1 | None | None | number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] | +| [[ GRACKLE_ACTIVATE \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_ACTIVATE ]] | 1 | None | None | enable Grackle [1] | +| GRACKLE_CIE_COOLING | 0 | None | None | 0: off; 1:on | +| [[ GRACKLE_CLOUDY_TABLE \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_CLOUDY_TABLE ]] | None | None | None | "grackle_data_file" | +| [[ GRACKLE_CMB_FLOOR \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_CMB_FLOOR ]] | 1 | None | None | map to "cmb_temperature_floor" [1] | +| [[ GRACKLE_COOLING \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_COOLING ]] | 1 | None | None | map to "with_radiative_cooling" [1] | +| GRACKLE_H2_OPA_APPROX | 0 | 0 | 1 | H2 opacity from Ripamonti+04; 0:off, 1:Ripomonti+04 | +| [[ GRACKLE_METAL \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_METAL ]] | 0 | None | None | map to "metal_cooling" (must increase NCOMP_PASSIVE_USER by 1) [0] | +| [[ GRACKLE_PE_HEATING \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_PE_HEATING ]] | 0 | None | None | map to "photoelectric_heating" [0] | +| [[ GRACKLE_PE_HEATING_RATE \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_PE_HEATING_RATE ]] | 8.5e-26 | 0.0 | None | map to "photoelectric_heating_rate (in erg/cm^3/s)" [8.5e-26] | +| [[ GRACKLE_PRIMORDIAL \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_PRIMORDIAL ]] | 0 | 0 | 3 | map to "primordial_chemistry" (0=Cloudy, 1/2/3=6-/9-/12-species) [0] (must increase NCOMP_PASSIVE_USER by 6/9/12, respectively) | +| GRACKLE_THREE_BODY_RATE | 0 | 0 | 5 | used Glover+08 rate | +| [[ GRACKLE_UV \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_UV ]] | 0 | None | None | map to "UVbackground" [0] | +| [[ GRACKLE_VERBOSE \| Runtime-Parameters:-Chemistry-and-Radiation#GRACKLE_VERBOSE ]] | 1 | None | None | map to "grackle_verbose" [1] | + +# H +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ HUBBLE0 \| Runtime-Parameters:-Cosmology#HUBBLE0 ]] | -1.0 | 2.22507386e-308 | 1.0 | dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) | + +# I +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ INIT_DUMPID \| Runtime-Parameters:-Outputs#INIT_DUMPID ]] | -1 | None | None | set the first dump ID (<0=auto) [-1] | +| [[ INIT_SUBSAMPLING_NCELL \| Runtime-Parameters:-Initial-Conditions#INIT_SUBSAMPLING_NCELL ]] | 0 | 0 | None | perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] | +| [[ INT_MONO_COEFF \| Runtime-Parameters:-Interpolation#INT_MONO_COEFF ]] | 2.0 | 1.0 | 4.0 | coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] | +| [[ INT_MONO_COEFF_B \| Runtime-Parameters:-Interpolation#INT_MONO_COEFF_B ]] | 2.0 | 1.0 | 4.0 | coefficient for ensuring the interpolation monotonicity of B field (1.0~4.0) [2.0] ##MHD ONLY## | +| [[ INT_OPP_SIGN_0TH_ORDER \| Runtime-Parameters:-Interpolation#INT_OPP_SIGN_0TH_ORDER ]] | Depend | Depend | Depend | switch to 0th-order interpolation if adjacent values change signs [HYDRO:1; ELBDM:0] | +| [[ ISO_TEMP \| Runtime-Parameters:-Hydro#ISO_TEMP ]] | Depend | Depend | Depend | isothermal temperature in kelvin ##EOS_ISOTHERMAL ONLY## | + +# J +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ JEANS_MIN_PRES \| Runtime-Parameters:-Hydro#JEANS_MIN_PRES ]] | 0 | None | None | minimum pressure estimated from the Jeans length [0] ##HYDRO/MHD and GRAVITY ONLY## | +| [[ JEANS_MIN_PRES_LEVEL \| Runtime-Parameters:-Hydro#JEANS_MIN_PRES_LEVEL ]] | -1 | None | NLEVEL-1 | for JEANS_MIN_PRES; ensure Jeans length is resolved by JEANS_MIN_PRES_NCELL*dh[JEANS_MIN_PRES_LEVEL] (<0=auto -> MAX_LEVEL) [-1] | +| [[ JEANS_MIN_PRES_NCELL \| Runtime-Parameters:-Hydro#JEANS_MIN_PRES_NCELL ]] | 4 | 1 | None | for JEANS_MIN_PRES; see JEANS_MIN_PRES_LEVEL [4] | + +# L +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ LB_INPUT__PAR_WEIGHT \| Runtime-Parameters:-MPI-and-OpenMP#LB_INPUT__PAR_WEIGHT ]] | 0.0 | 0.0 | None | load-balance weighting of one particle over one cell [0.0] | +| [[ LB_INPUT__WLI_MAX \| Runtime-Parameters:-MPI-and-OpenMP#LB_INPUT__WLI_MAX ]] | 0.1 | 0.0 | None | weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] | + +# M +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ MAX_LEVEL \| Runtime-Parameters:-Refinement#MAX_LEVEL ]] | TOP_LEVEL | 0 | TOP_LEVEL | maximum refinement level (0~NLEVEL-1) [NLEVEL-1] | +| [[ MG_MAX_ITER \| Runtime-Parameters:-Gravity#MG_MAX_ITER ]] | -1 | None | None | maximum number of iterations in multigrid: (<0=auto) [-1] | +| [[ MG_NPOST_SMOOTH \| Runtime-Parameters:-Gravity#MG_NPOST_SMOOTH ]] | -1 | None | None | number of post-smoothing steps in multigrid: (<0=auto) [-1] | +| [[ MG_NPRE_SMOOTH \| Runtime-Parameters:-Gravity#MG_NPRE_SMOOTH ]] | -1 | None | None | number of pre-smoothing steps in multigrid: (<0=auto) [-1] | +| [[ MG_TOLERATED_ERROR \| Runtime-Parameters:-Gravity#MG_TOLERATED_ERROR ]] | -1.0 | None | None | maximum tolerated error in multigrid (<0=auto) [-1.0] | +| [[ MINMOD_COEFF \| Runtime-Parameters:-Hydro#MINMOD_COEFF ]] | 1.5 | 1.0 | 2.0 | coefficient of the generalized MinMod limiter (1.0~2.0) [1.5] | +| [[ MINMOD_MAX_ITER \| Runtime-Parameters:-Hydro#MINMOD_MAX_ITER ]] | 0 | 0 | None | maximum number of iterations to reduce MINMOD_COEFF when data reconstruction fails (0=off) [0] | +| [[ MIN_DENS \| Runtime-Parameters:-Hydro#MIN_DENS ]] | 0.0 | 0.0 | None | minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## | +| [[ MIN_EINT \| Runtime-Parameters:-Hydro#MIN_EINT ]] | 0.0 | 0.0 | None | minimum internal energy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## | +| MIN_ENTR | 0.0 | 0.0 | None | minimum entropy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## | +| [[ MIN_PRES \| Runtime-Parameters:-Hydro#MIN_PRES ]] | 0.0 | 0.0 | None | minimum pressure (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## | +| MIN_TEMP | 0.0 | 0.0 | None | minimum temperature in K (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## | +| [[ MOLECULAR_WEIGHT \| Runtime-Parameters:-Hydro#MOLECULAR_WEIGHT ]] | 0.6 | 2.22507386e-308 | None | mean molecular weight [0.6] | +| [[ MONO_MAX_ITER \| Runtime-Parameters:-Interpolation#MONO_MAX_ITER ]] | 10 | 0 | None | maximum number of iterations to reduce INT_MONO_COEFF when interpolation fails (0=off) [10] | +| [[ MU_NORM \| Runtime-Parameters:-Hydro#MU_NORM ]] | -1.0 | None | None | normalization of MOLECULAR_WEIGHT (<0=m_H, 0=amu, >0=input manually) [-1.0] | + +# N +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ NEWTON_G \| Runtime-Parameters:-Gravity#NEWTON_G ]] | -1.0 | None | None | gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) | +| [[ NX0_TOT_X \| Runtime-Parameters:-General#NX0_TOT_X ]] | -1 | PS2 | None | number of base-level cells along x | +| [[ NX0_TOT_Y \| Runtime-Parameters:-General#NX0_TOT_Y ]] | -1 | PS2 | None | number of base-level cells along y | +| [[ NX0_TOT_Z \| Runtime-Parameters:-General#NX0_TOT_Z ]] | -1 | PS2 | None | number of base-level cells along z | + +# O +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ OMEGA_M0 \| Runtime-Parameters:-Cosmology#OMEGA_M0 ]] | -1.0 | 0.0 | 1.0 | omega matter at the present time | +| [[ OMP_NTHREAD \| Runtime-Parameters:-MPI-and-OpenMP#OMP_NTHREAD ]] | -1 | None | None | number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## | +| [[ OPT__1ST_FLUX_CORR \| Runtime-Parameters:-Hydro#OPT__1ST_FLUX_CORR ]] | -1 | None | 2 | correct unphysical results (defined by MIN_DENS/PRES) by the 1st-order fluxes: (<0=auto, 0=off, 1=3D, 2=3D+1D) [-1] ##MHM/MHM_RP/CTU ONLY## | +| [[ OPT__1ST_FLUX_CORR_SCHEME \| Runtime-Parameters:-Hydro#OPT__1ST_FLUX_CORR_SCHEME ]] | Depend | Depend | Depend | Riemann solver for OPT__1ST_FLUX_CORR (-1=auto, 0=none, 1=Roe, 2=HLLC, 3=HLLE, 4=HLLD) [-1] | +| [[ OPT__BC_FLU_XM \| Runtime-Parameters:-Hydro#OPT__BC_FLU_XM ]] | -1 | 1 | 5 | fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## | +| [[ OPT__BC_FLU_XP \| Runtime-Parameters:-Hydro#OPT__BC_FLU_XP ]] | -1 | 1 | 5 | fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## | +| [[ OPT__BC_FLU_YM \| Runtime-Parameters:-Hydro#OPT__BC_FLU_YM ]] | -1 | 1 | 5 | fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## | +| [[ OPT__BC_FLU_YP \| Runtime-Parameters:-Hydro#OPT__BC_FLU_YP ]] | -1 | 1 | 5 | fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## | +| [[ OPT__BC_FLU_ZM \| Runtime-Parameters:-Hydro#OPT__BC_FLU_ZM ]] | -1 | 1 | 5 | fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## | +| [[ OPT__BC_FLU_ZP \| Runtime-Parameters:-Hydro#OPT__BC_FLU_ZP ]] | -1 | 1 | 5 | fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## | +| [[ OPT__BC_POT \| Runtime-Parameters:-Gravity#OPT__BC_POT ]] | -1 | 1 | 2 | gravity boundary condition: (1=periodic, 2=isolated) | +| [[ OPT__CHECK_PRES_AFTER_FLU \| Runtime-Parameters:-Hydro#OPT__CHECK_PRES_AFTER_FLU ]] | -1 | None | 1 | check unphysical pressure at the end of the fluid solver (<0=auto) [-1] | +| [[ OPT__CK_CONSERVATION \| Runtime-Parameters:-Miscellaneous#OPT__CK_CONSERVATION ]] | 0 | None | None | check the conservation law [0] | +| [[ OPT__CK_DIVERGENCE_B \| Runtime-Parameters:-Miscellaneous#OPT__CK_DIVERGENCE_B ]] | 0 | 0 | 2 | check the divergence-free constraint on B field (0=off, 1=on, 2=on+verbose) [0] ##MHD ONLY## | +| [[ OPT__CK_FINITE \| Runtime-Parameters:-Miscellaneous#OPT__CK_FINITE ]] | 0 | None | None | check if all variables are finite [0] | +| [[ OPT__CK_FLUX_ALLOCATE \| Runtime-Parameters:-Miscellaneous#OPT__CK_FLUX_ALLOCATE ]] | 0 | None | None | check if all flux arrays are properly allocated [0] ##HYDRO and ELBDM ONLY## | +| [[ OPT__CK_INPUT_FLUID \| Runtime-Parameters:-Miscellaneous#OPT__CK_INPUT_FLUID ]] | 0 | None | None | check the input data of the fluid solver [0] | +| [[ OPT__CK_INTERFACE_B \| Runtime-Parameters:-Miscellaneous#OPT__CK_INTERFACE_B ]] | 0 | None | None | check the consistency of patch interface B field [0] ##MHD ONLY## | +| [[ OPT__CK_MEMFREE \| Runtime-Parameters:-Miscellaneous#OPT__CK_MEMFREE ]] | 1.0 | 0.0 | None | check the free memory in GB (0=off, >0=threshold) [1.0] | +| [[ OPT__CK_NEGATIVE \| Runtime-Parameters:-Miscellaneous#OPT__CK_NEGATIVE ]] | 0 | 0 | 3 | check the negative values: (0=off, 1=density, 2=pressure and entropy, 3=both) [0] ##HYDRO ONLY## | +| [[ OPT__CK_NORMALIZE_PASSIVE \| Runtime-Parameters:-Miscellaneous#OPT__CK_NORMALIZE_PASSIVE ]] | 0 | None | None | check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## | +| [[ OPT__CK_PARTICLE \| Runtime-Parameters:-Miscellaneous#OPT__CK_PARTICLE ]] | 0 | None | None | check the particle allocation [0] | +| [[ OPT__CK_PATCH_ALLOCATE \| Runtime-Parameters:-Miscellaneous#OPT__CK_PATCH_ALLOCATE ]] | 0 | None | None | check if all patches are properly allocated [0] | +| [[ OPT__CK_PROPER_NESTING \| Runtime-Parameters:-Miscellaneous#OPT__CK_PROPER_NESTING ]] | 0 | None | None | check the proper-nesting condition [0] | +| [[ OPT__CK_REFINE \| Runtime-Parameters:-Miscellaneous#OPT__CK_REFINE ]] | 0 | None | None | check the grid refinement [0] | +| [[ OPT__CK_RESTRICT \| Runtime-Parameters:-Miscellaneous#OPT__CK_RESTRICT ]] | 0 | None | None | check the data restriction [0] | +| [[ OPT__CORR_AFTER_ALL_SYNC \| Runtime-Parameters:-Hydro#OPT__CORR_AFTER_ALL_SYNC ]] | -1 | None | None | apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): (-1=auto, 0=off, 1=every step, 2=before dump) [-1] | +| [[ OPT__DT_LEVEL \| Runtime-Parameters:-Timestep#OPT__DT_LEVEL ]] | 3 | 1 | 3 | dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] | +| [[ OPT__DT_USER \| Runtime-Parameters:-Timestep#OPT__DT_USER ]] | 0 | None | None | dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] | +| [[ OPT__EXT_ACC \| Runtime-Parameters:-Gravity#OPT__EXT_ACC ]] | 0 | 0 | 1 | add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## --> 2 (table) is not supported yet | +| [[ OPT__EXT_POT \| Runtime-Parameters:-Gravity#OPT__EXT_POT ]] | 0 | 0 | 2 | add external potential (0=off, 1=function, 2=table) [0] --> for 2 (table), edit the corresponding parameters below too | +| [[ OPT__FFTW_STARTUP \| Runtime-Parameters:-Initial-Conditions#OPT__FFTW_STARTUP ]] | Depend | Depend | Depend | initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] | +| [[ OPT__FIXUP_ELECTRIC \| Runtime-Parameters:-Hydro#OPT__FIXUP_ELECTRIC ]] | 1 | None | None | correct coarse grids by the fine-grid boundary electric field [1] ##MHD ONLY## | +| [[ OPT__FIXUP_FLUX \| Runtime-Parameters:-Hydro#OPT__FIXUP_FLUX ]] | Depend | Depend | Depend | correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## | +| [[ OPT__FIXUP_RESTRICT \| Runtime-Parameters:-Hydro#OPT__FIXUP_RESTRICT ]] | 1 | None | None | correct coarse grids by averaging the fine-grid data [1] | +| [[ OPT__FLAG_ANGULAR \| Runtime-Parameters:-Refinement#OPT__FLAG_ANGULAR ]] | 0 | None | None | flag: angular resolution (Input__Flag_AngularResolution) [0] | +| [[ OPT__FLAG_CRAY \| Runtime-Parameters:-Refinement#OPT__FLAG_CRAY ]] | 0 | None | None | flag: cosmic-ray energy (Input__Flag_CRay) [0] ##COSMIC_RAY ONLY## | +| [[ OPT__FLAG_CURRENT \| Runtime-Parameters:-Refinement#OPT__FLAG_CURRENT ]] | 0 | None | None | flag: current density in MHD (Input__Flag_Current) [0] ##MHD ONLY## | +| OPT__FLAG_ENGY_DENSITY | 0 | None | None | flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## | +| OPT__FLAG_INTERFERENCE | 0 | None | None | flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## | +| [[ OPT__FLAG_JEANS \| Runtime-Parameters:-Refinement#OPT__FLAG_JEANS ]] | 0 | None | None | flag: Jeans length (Input__Flag_Jeans) [0] ##HYDRO ONLY## | +| [[ OPT__FLAG_LOHNER_CRAY \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_CRAY ]] | 0 | None | None | flag: Lohner for cosmic-ray energy (Input__Flag_Lohner) [0] ##COSMIC_RAY ONLY## | +| [[ OPT__FLAG_LOHNER_DENS \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_DENS ]] | 0 | None | None | flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## | +| [[ OPT__FLAG_LOHNER_ENGY \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_ENGY ]] | 0 | None | None | flag: Lohner for energy density (Input__Flag_Lohner) [0] ##HYDRO ONLY## | +| [[ OPT__FLAG_LOHNER_ENTR \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_ENTR ]] | 0 | None | None | flag: Lohner for entropy (Input__Flag_Lohner) [0] ##HYDRO ONLY## | +| [[ OPT__FLAG_LOHNER_FORM \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_FORM ]] | LOHNER_FLASH2 | 1 | 4 | form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] | +| [[ OPT__FLAG_LOHNER_PRES \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_PRES ]] | 0 | None | None | flag: Lohner for pressure (Input__Flag_Lohner) [0] ##HYDRO ONLY## | +| [[ OPT__FLAG_LOHNER_TEMP \| Runtime-Parameters:-Refinement#OPT__FLAG_LOHNER_TEMP ]] | 0 | None | None | flag: Lohner for temperature (Input__Flag_Lohner) [0] ##HYDRO ONLY## | +| [[ OPT__FLAG_LRTZ_GRADIENT \| Runtime-Parameters:-Refinement#OPT__FLAG_LRTZ_GRADIENT ]] | 0 | None | None | flag: Lorentz factor gradient (Input__Flag_LrtzGradient) [0] ##SRHD ONLY## | +| [[ OPT__FLAG_NPAR_CELL \| Runtime-Parameters:-Refinement#OPT__FLAG_NPAR_CELL ]] | 0 | None | None | flag: # of particles per cell (Input__Flag_NParCell) [0] | +| [[ OPT__FLAG_NPAR_PATCH \| Runtime-Parameters:-Refinement#OPT__FLAG_NPAR_PATCH ]] | 0 | 0 | 2 | flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] | +| [[ OPT__FLAG_PAR_MASS_CELL \| Runtime-Parameters:-Refinement#OPT__FLAG_PAR_MASS_CELL ]] | 0 | None | None | flag: total particle mass per cell (Input__Flag_ParMassCell) [0] | +| [[ OPT__FLAG_PRES_GRADIENT \| Runtime-Parameters:-Refinement#OPT__FLAG_PRES_GRADIENT ]] | 0 | None | None | flag: pressure gradient (Input__Flag_PresGradient) [0] ##HYDRO ONLY## | +| [[ OPT__FLAG_RADIAL \| Runtime-Parameters:-Refinement#OPT__FLAG_RADIAL ]] | 0 | None | None | flag: radial resolution (Input__Flag_RadialResolution) [0] | +| [[ OPT__FLAG_REGION \| Runtime-Parameters:-Refinement#OPT__FLAG_REGION ]] | 0 | None | None | flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] | +| [[ OPT__FLAG_RHO \| Runtime-Parameters:-Refinement#OPT__FLAG_RHO ]] | 0 | None | None | flag: density (Input__Flag_Rho) [0] | +| [[ OPT__FLAG_RHO_GRADIENT \| Runtime-Parameters:-Refinement#OPT__FLAG_RHO_GRADIENT ]] | 0 | None | None | flag: density gradient (Input__Flag_RhoGradient) [0] | +| OPT__FLAG_SPECTRAL | 0 | None | None | flag: spectral refinement (Input__Flag_Spectral) [0] ##ELBDM ONLY## | +| OPT__FLAG_SPECTRAL_N | 2 | 1 | 14 | number of pol. coefficients to use for spectral refinement [2] ##ELBDM ONLY## | +| [[ OPT__FLAG_USER \| Runtime-Parameters:-Refinement#OPT__FLAG_USER ]] | 0 | None | None | flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] | +| [[ OPT__FLAG_USER_NUM \| Runtime-Parameters:-Refinement#OPT__FLAG_USER_NUM ]] | 1 | 1 | None | number of threshold values in user-defined table (Input__Flag_User) [1] | +| [[ OPT__FLAG_VORTICITY \| Runtime-Parameters:-Refinement#OPT__FLAG_VORTICITY ]] | 0 | None | None | flag: vorticity (Input__Flag_Vorticity) [0] ##HYDRO ONLY## | +| [[ OPT__FLU_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__FLU_INT_SCHEME ]] | INT_DEFAULT | None | None | ghost-zone fluid variables for the fluid solver [-1] | +| [[ OPT__FREEZE_FLUID \| Runtime-Parameters:-Hydro#OPT__FREEZE_FLUID ]] | 0 | None | None | do not evolve fluid at all [0] | +| [[ OPT__FREEZE_PAR \| Runtime-Parameters:-Particles#OPT__FREEZE_PAR ]] | 0 | None | None | do not update particles (except for tracers) [0] | +| [[ OPT__GPUID_SELECT \| Runtime-Parameters:-GPU#OPT__GPUID_SELECT ]] | -1 | -3 | None | GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] | +| OPT__GRAVITY_EXTRA_MASS | 0 | None | None | add extra mass source when computing gravity [0] | +| [[ OPT__GRA_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__GRA_INT_SCHEME ]] | INT_CQUAD | 1 | 7 | ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] | +| [[ OPT__GRA_P5_GRADIENT \| Runtime-Parameters:-Gravity#OPT__GRA_P5_GRADIENT ]] | 0 | None | None | 5-points gradient in the Gravity solver (must have GRA/USG_GHOST_SIZE_G>=2) [0] | +| [[ OPT__INIT \| Runtime-Parameters:-Initial-Conditions#OPT__INIT ]] | -1 | 1 | 3 | initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") | +| [[ OPT__INIT_BFIELD_BYVECPOT \| Runtime-Parameters:-Initial-Conditions#OPT__INIT_BFIELD_BYVECPOT ]] | INIT_MAG_BYVECPOT_NONE | 0 | 2 | initialize the magnetic field from vector potential (0=off, 1=external disk file named "B_IC", see tool/inits/gen_vec_pot.py for example, 2=function) [0] ##MHD ONLY## | +| [[ OPT__INIT_GRID_WITH_OMP \| Runtime-Parameters:-MPI-and-OpenMP#OPT__INIT_GRID_WITH_OMP ]] | 1 | None | None | enable OpenMP when assigning the initial condition of each grid patch [1] | +| [[ OPT__INIT_RESTRICT \| Runtime-Parameters:-Initial-Conditions#OPT__INIT_RESTRICT ]] | 1 | None | None | restrict all data during the initialization [1] | +| [[ OPT__INT_FRAC_PASSIVE_LR \| Runtime-Parameters:-Hydro#OPT__INT_FRAC_PASSIVE_LR ]] | 1 | None | None | convert specified passive scalars to mass fraction during data reconstruction [1] | +| OPT__INT_PHASE | 1 | None | None | interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## | +| [[ OPT__INT_PRIM \| Runtime-Parameters:-Interpolation#OPT__INT_PRIM ]] | 1 | None | None | switch to primitive variables when the interpolation on conserved variables fails [1] ##HYDRO ONLY## | +| [[ OPT__INT_TIME \| Runtime-Parameters:-Interpolation#OPT__INT_TIME ]] | 1 | None | None | perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] | +| [[ OPT__LAST_RESORT_FLOOR \| Runtime-Parameters:-Hydro#OPT__LAST_RESORT_FLOOR ]] | 1 | None | None | apply floor values as the last resort when the fluid solver fails [1] ##HYDRO and MHD ONLY## | +| OPT__LB_EXCHANGE_FATHER | Depend | Depend | Depend | exchange all cells of all father patches during load balancing (must enable for hybrid scheme + MPI) [0 usually, 1 for ELBDM_HYBRID] ## ELBDM_HYBRID ONLY### | +| [[ OPT__LR_LIMITER \| Runtime-Parameters:-Hydro#OPT__LR_LIMITER ]] | LR_LIMITER_DEFAULT | -1 | 7 | slope limiter of data reconstruction in the MHM/MHM_RP/CTU schemes: (-1=auto, 0=none, 1=vanLeer, 2=generalized MinMod, 3=vanAlbada, 4=vanLeer+generalized MinMod, 6=central, 7=Athena) [-1] | +| [[ OPT__MAG_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__MAG_INT_SCHEME ]] | INT_CQUAD | None | None | ghost-zone magnetic field for the MHD solver (2,3,4,6 only) [4] | +| [[ OPT__MANUAL_CONTROL \| Runtime-Parameters:-Miscellaneous#OPT__MANUAL_CONTROL ]] | 1 | None | None | support manually dump data, stop run, or pause run during the runtime (by generating the file DUMP_GAMER_DUMP, STOP_GAMER_STOP, PAUSE_GAMER_PAUSE, respectively) [1] | +| [[ OPT__MEMORY_POOL \| Runtime-Parameters:-Refinement#OPT__MEMORY_POOL ]] | 0 | None | None | preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] | +| [[ OPT__MINIMIZE_MPI_BARRIER \| Runtime-Parameters:-MPI-and-OpenMP#OPT__MINIMIZE_MPI_BARRIER ]] | 0 | None | None | minimize MPI barriers to improve load balance, especially with particles [0] (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) | +| [[ OPT__NORMALIZE_PASSIVE \| Runtime-Parameters:-Hydro#OPT__NORMALIZE_PASSIVE ]] | 1 | None | None | ensure "sum(passive_scalar_density) == gas_density" [1] | +| [[ OPT__NO_FLAG_NEAR_BOUNDARY \| Runtime-Parameters:-Refinement#OPT__NO_FLAG_NEAR_BOUNDARY ]] | 0 | None | None | flag: disallow refinement near the boundaries [0] | +| [[ OPT__OPTIMIZE_AGGRESSIVE \| Runtime-Parameters:-Miscellaneous#OPT__OPTIMIZE_AGGRESSIVE ]] | 0 | None | None | apply aggressive optimizations (experimental) [0] | +| [[ OPT__OUTPUT_3VELOCITY \| Runtime-Parameters:-Outputs#OPT__OUTPUT_3VELOCITY ]] | 0 | None | None | output 3-velocities [0] ##SRHD ONLY## | +| [[ OPT__OUTPUT_BASE \| Runtime-Parameters:-Outputs#OPT__OUTPUT_BASE ]] | 0 | None | None | only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## | +| [[ OPT__OUTPUT_BASEPS \| Runtime-Parameters:-Outputs#OPT__OUTPUT_BASEPS ]] | 0 | None | None | output the base-level power spectrum [0] | +| [[ OPT__OUTPUT_CC_MAG \| Runtime-Parameters:-Outputs#OPT__OUTPUT_CC_MAG ]] | 1 | None | None | output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## | +| [[ OPT__OUTPUT_CS \| Runtime-Parameters:-Outputs#OPT__OUTPUT_CS ]] | 0 | None | None | output sound speed [0] ##HYDRO ONLY## | +| [[ OPT__OUTPUT_DIVMAG \| Runtime-Parameters:-Outputs#OPT__OUTPUT_DIVMAG ]] | 0 | None | None | output |divergence(B)*dh/|B|| [0] ##MHD ONLY## | +| [[ OPT__OUTPUT_DIVVEL \| Runtime-Parameters:-Outputs#OPT__OUTPUT_DIVVEL ]] | 0 | None | None | output divergence(velocity) [0] ##HYDRO ONLY## | +| [[ OPT__OUTPUT_ENTHALPY \| Runtime-Parameters:-Outputs#OPT__OUTPUT_ENTHALPY ]] | 1 | None | None | output reduced enthalpy [1] ##SRHD ONLY## | +| [[ OPT__OUTPUT_ENTR \| Runtime-Parameters:-Outputs#OPT__OUTPUT_ENTR ]] | 0 | None | None | output gas entropy [0] ##HYDRO ONLY## | +| [[ OPT__OUTPUT_LORENTZ \| Runtime-Parameters:-Outputs#OPT__OUTPUT_LORENTZ ]] | 0 | None | None | output Lorentz factor [0] ##SRHD ONLY## | +| [[ OPT__OUTPUT_MACH \| Runtime-Parameters:-Outputs#OPT__OUTPUT_MACH ]] | 0 | None | None | output mach number [0] ##HYDRO ONLY## | +| [[ OPT__OUTPUT_MODE \| Runtime-Parameters:-Outputs#OPT__OUTPUT_MODE ]] | -1 | 1 | 3 | (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 | +| [[ OPT__OUTPUT_PART \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PART ]] | 0 | 0 | 8 | output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] | +| [[ OPT__OUTPUT_PAR_DENS \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PAR_DENS ]] | PAR_OUTPUT_DENS_PAR_ONLY | 0 | 2 | output the particle or total mass density on grids: (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## | +| [[ OPT__OUTPUT_PAR_MESH \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PAR_MESH ]] | Depend | Depend | Depend | output the attributes of tracer particles mapped from mesh quantities -> edit "Input__Par_Mesh" [1] ##PARTICLE ONLY## | +| [[ OPT__OUTPUT_PAR_MODE \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PAR_MODE ]] | 0 | 0 | 2 | output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## | +| [[ OPT__OUTPUT_POT \| Runtime-Parameters:-Outputs#OPT__OUTPUT_POT ]] | 1 | None | None | output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## | +| [[ OPT__OUTPUT_PRES \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PRES ]] | 0 | None | None | output gas pressure [0] ##HYDRO ONLY## | +| [[ OPT__OUTPUT_RESTART \| Runtime-Parameters:-Outputs#OPT__OUTPUT_RESTART ]] | 0 | None | None | output data immediately after restart [0] | +| [[ OPT__OUTPUT_TEMP \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEMP ]] | OutTempDefault | None | None | output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## | +| [[ OPT__OUTPUT_TEXT_FORMAT_FLT \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEXT_FORMAT_FLT ]] | "%24.16e" | None | None | string format of floating-point variables in output text files [%24.16e] | +| [[ OPT__OUTPUT_TEXT_LENGTH_INT \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TEXT_LENGTH_INT ]] | 12 | 0 | None | string length of integer variables in output text files [12] | +| [[ OPT__OUTPUT_TOTAL \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TOTAL ]] | 1 | 0 | 2 | output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] | +| [[ OPT__OUTPUT_USER \| Runtime-Parameters:-Outputs#OPT__OUTPUT_USER ]] | 0 | None | None | output the user-specified data -> edit "Output_User.cpp" [0] | +| [[ OPT__OUTPUT_USER_FIELD \| Runtime-Parameters:-Outputs#OPT__OUTPUT_USER_FIELD ]] | 0 | None | None | output user-defined derived fields [0] -> edit "Flu_DerivedField_User.cpp" | +| OPT__OVERLAP_MPI | 0 | None | None | overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## | +| [[ OPT__PARTICLE_COUNT \| Runtime-Parameters:-Refinement#OPT__PARTICLE_COUNT ]] | 1 | 0 | 2 | record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] | +| [[ OPT__PATCH_COUNT \| Runtime-Parameters:-Refinement#OPT__PATCH_COUNT ]] | 1 | 0 | 2 | record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] | +| [[ OPT__POT_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__POT_INT_SCHEME ]] | INT_CQUAD | 4 | 5 | ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] | +| [[ OPT__RECORD_CENTER \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_CENTER ]] | 0 | None | None | record the position of maximum density, minimum potential, and center of mass [0] | +| [[ OPT__RECORD_DT \| Runtime-Parameters:-Timestep#OPT__RECORD_DT ]] | 1 | None | None | record info of the dt determination [1] | +| [[ OPT__RECORD_LOAD_BALANCE \| Runtime-Parameters:-MPI-and-OpenMP#OPT__RECORD_LOAD_BALANCE ]] | 1 | None | None | record the load-balance info [1] | +| [[ OPT__RECORD_MEMORY \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_MEMORY ]] | 1 | None | None | record the memory consumption [1] | +| [[ OPT__RECORD_NOTE \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_NOTE ]] | 1 | None | None | take notes for the general simulation info [1] | +| [[ OPT__RECORD_PERFORMANCE \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_PERFORMANCE ]] | 1 | None | None | record the code performance [1] | +| [[ OPT__RECORD_UNPHY \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_UNPHY ]] | 1 | None | None | record the number of cells with unphysical results being corrected [1] | +| [[ OPT__RECORD_USER \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_USER ]] | 0 | None | None | record the user-specified info -> edit "Aux_Record_User.cpp" [0] | +| [[ OPT__REF_FLU_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__REF_FLU_INT_SCHEME ]] | INT_DEFAULT | None | None | newly allocated fluid variables during grid refinement [-1] | +| [[ OPT__REF_MAG_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__REF_MAG_INT_SCHEME ]] | INT_CQUAD | None | None | newly allocated magnetic field during grid refinement (2,3,4,6 only) [4] | +| [[ OPT__REF_POT_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__REF_POT_INT_SCHEME ]] | INT_CQUAD | 1 | 7 | newly allocated potential during grid refinement [4] | +| [[ OPT__RESET_FLUID \| Runtime-Parameters:-Hydro#OPT__RESET_FLUID ]] | 0 | None | None | reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] | +| [[ OPT__RESET_FLUID_INIT \| Runtime-Parameters:-Hydro#OPT__RESET_FLUID_INIT ]] | -1 | None | None | reset fluid variables during initialization (<0=auto -> OPT__RESET_FLUID, 0=off, 1=on) [-1] | +| [[ OPT__RESTART_RESET \| Runtime-Parameters:-Initial-Conditions#OPT__RESTART_RESET ]] | 0 | None | None | reset some simulation status parameters (e.g., current step and time) during restart [0] | +| OPT__RES_PHASE | 0 | None | None | restriction on phase [0] ##ELBDM ONLY## | +| [[ OPT__REUSE_MEMORY \| Runtime-Parameters:-Refinement#OPT__REUSE_MEMORY ]] | 2 | 0 | 2 | reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] | +| [[ OPT__RHO_INT_SCHEME \| Runtime-Parameters:-Interpolation#OPT__RHO_INT_SCHEME ]] | INT_CQUAD | 1 | 7 | ghost-zone mass density for the Poisson solver [4] | +| [[ OPT__SAME_INTERFACE_B \| Runtime-Parameters:-Hydro#OPT__SAME_INTERFACE_B ]] | 0 | None | None | ensure B field consistency on the shared interfaces between sibling patches (for debugging) [0] ##MHD ONLY## | +| [[ OPT__SELF_GRAVITY \| Runtime-Parameters:-Gravity#OPT__SELF_GRAVITY ]] | 1 | None | None | add self-gravity [1] | +| [[ OPT__SORT_PATCH_BY_LBIDX \| Runtime-Parameters:-Miscellaneous#OPT__SORT_PATCH_BY_LBIDX ]] | Depend | Depend | Depend | sort patches to improve bitwise reproducibility [SERIAL:0, LOAD_BALACNE:1] | +| [[ OPT__TIMING_BALANCE \| Runtime-Parameters:-Miscellaneous#OPT__TIMING_BALANCE ]] | 0 | None | None | record the max/min elapsed time in various code sections for checking load balance [0] | +| [[ OPT__TIMING_BARRIER \| Runtime-Parameters:-Miscellaneous#OPT__TIMING_BARRIER ]] | -1 | None | None | synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] | +| [[ OPT__TIMING_MPI \| Runtime-Parameters:-Miscellaneous#OPT__TIMING_MPI ]] | 0 | None | None | record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## | +| [[ OPT__UM_IC_DOWNGRADE \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_DOWNGRADE ]] | 1 | None | None | downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] | +| [[ OPT__UM_IC_FLOAT8 \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FLOAT8 ]] | -1 | None | 1 | floating-point precision for UM_IC (<0: default, 0: single, 1: double) [default: same as FLOAT8] | +| [[ OPT__UM_IC_FORMAT \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_FORMAT ]] | UM_IC_FORMAT_VZYX | 1 | 2 | data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] | +| [[ OPT__UM_IC_LEVEL \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LEVEL ]] | 0 | 0 | TOP_LEVEL | starting AMR level in UM_IC [0] | +| [[ OPT__UM_IC_LOAD_NRANK \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_LOAD_NRANK ]] | 1 | 1 | None | number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] | +| [[ OPT__UM_IC_NLEVEL \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_NLEVEL ]] | 1 | 1 | None | number of AMR levels UM_IC [1] --> edit "Input__UM_IC_RefineRegion" if >1 | +| [[ OPT__UM_IC_NVAR \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_NVAR ]] | Depend | Depend | Depend | number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] | +| [[ OPT__UM_IC_REFINE \| Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_REFINE ]] | 1 | None | None | refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] | +| [[ OPT__UNIT \| Runtime-Parameters:-Units#OPT__UNIT ]] | 0 | None | None | specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## | +| [[ OPT__VERBOSE \| Runtime-Parameters:-Miscellaneous#OPT__VERBOSE ]] | 0 | None | None | output the simulation progress in detail [0] | +| [[ OUTPUT_DIR \| Runtime-Parameters:-Outputs#OUTPUT_DIR ]] | "." | None | None | set the output directory [.] | +| [[ OUTPUT_DT \| Runtime-Parameters:-Outputs#OUTPUT_DT ]] | -1.0 | None | None | output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## | +| [[ OUTPUT_PART_X \| Runtime-Parameters:-Outputs#OUTPUT_PART_X ]] | -1.0 | None | None | x coordinate for OPT__OUTPUT_PART [-1.0] | +| [[ OUTPUT_PART_Y \| Runtime-Parameters:-Outputs#OUTPUT_PART_Y ]] | -1.0 | None | None | y coordinate for OPT__OUTPUT_PART [-1.0] | +| [[ OUTPUT_PART_Z \| Runtime-Parameters:-Outputs#OUTPUT_PART_Z ]] | -1.0 | None | None | z coordinate for OPT__OUTPUT_PART [-1.0] | +| [[ OUTPUT_STEP \| Runtime-Parameters:-Outputs#OUTPUT_STEP ]] | -1 | None | None | output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## | +| [[ OUTPUT_WALLTIME \| Runtime-Parameters:-Outputs#OUTPUT_WALLTIME ]] | -1.0 | None | None | output data every OUTPUT_WALLTIME walltime (<=0.0=off) [-1.0] | +| [[ OUTPUT_WALLTIME_UNIT \| Runtime-Parameters:-Outputs#OUTPUT_WALLTIME_UNIT ]] | 0 | 0 | 3 | unit of OUTPUT_WALLTIME (0=second, 1=minute, 2=hour, 3=day) [0] | + +# P +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ PAR_IC_FLOAT8 \| Runtime-Parameters:-Particles#PAR_IC_FLOAT8 ]] | -1 | None | 1 | floating-point precision for PAR_IC (<0: default, 0: single, 1: double) [default: same as FLOAT8_PAR] | +| [[ PAR_IC_FORMAT \| Runtime-Parameters:-Particles#PAR_IC_FORMAT ]] | PAR_IC_FORMAT_ATT_ID | 1 | 2 | data format of PAR_IC: (1=[attribute][id], 2=[id][attribute]; row-major) [1] | +| [[ PAR_IC_INT8 \| Runtime-Parameters:-Particles#PAR_IC_INT8 ]] | -1 | None | 1 | integer width for PAR_IC (<0: default, 0: 32-bit, 1: 64-bit) [default: same as INT8_PAR] | +| [[ PAR_IC_MASS \| Runtime-Parameters:-Particles#PAR_IC_MASS ]] | -1.0 | None | None | mass of all particles for PAR_INIT==3 (<0=off) [-1.0] | +| [[ PAR_IC_TYPE \| Runtime-Parameters:-Particles#PAR_IC_TYPE ]] | -1 | None | PAR_NTYPE-1 | type of all particles for PAR_INIT==3 (<0=off) [-1] | +| [[ PAR_IMPROVE_ACC \| Runtime-Parameters:-Particles#PAR_IMPROVE_ACC ]] | 1 | None | None | improve force accuracy at patch boundaries [1] ##STORE_POT_GHOST and PAR_INTERP=2/3 ONLY## | +| [[ PAR_INIT \| Runtime-Parameters:-Particles#PAR_INIT ]] | -1 | 1 | 3 | initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") | +| [[ PAR_INTEG \| Runtime-Parameters:-Particles#PAR_INTEG ]] | PAR_INTEG_KDK | 1 | 2 | particle integration scheme: (1=Euler, 2=KDK) [2] | +| [[ PAR_INTERP \| Runtime-Parameters:-Particles#PAR_INTERP ]] | PAR_INTERP_CIC | 1 | 3 | particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] | +| [[ PAR_NPAR \| Runtime-Parameters:-Particles#PAR_NPAR ]] | -1L | None | None | total number of particles (must be set for PAR_INIT==1/3; must be an integer) | +| [[ PAR_PREDICT_POS \| Runtime-Parameters:-Particles#PAR_PREDICT_POS ]] | 1 | None | None | predict particle position during mass assignment [1] | +| [[ PAR_REMOVE_CELL \| Runtime-Parameters:-Particles#PAR_REMOVE_CELL ]] | -1.0 | None | None | remove particles X-root-cells from the boundaries (non-periodic BC only; <0=auto) [-1.0] | +| [[ PAR_TR_INTEG \| Runtime-Parameters:-Particles#PAR_TR_INTEG ]] | TRACER_INTEG_RK2 | 1 | 2 | tracer particle integration scheme: (1=Euler, 2=RK2) [2] | +| [[ PAR_TR_INTERP \| Runtime-Parameters:-Particles#PAR_TR_INTERP ]] | PAR_INTERP_TSC | 1 | 3 | tracer particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [3] | +| PAR_TR_VEL_CORR | 0 | None | None | correct tracer particle velocities in regions of discontinuous flow [0] | +| [[ POT_GPU_NPGROUP \| Runtime-Parameters:-GPU#POT_GPU_NPGROUP ]] | -1 | None | None | number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] | + +# R +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ REFINE_NLEVEL \| Runtime-Parameters:-Refinement#REFINE_NLEVEL ]] | 1 | 1 | None | number of new AMR levels to be created at once during refinement [1] | +| [[ REGRID_COUNT \| Runtime-Parameters:-Refinement#REGRID_COUNT ]] | 4 | 1 | None | refine every REGRID_COUNT sub-step [4] | +| [[ RESTART_LOAD_NRANK \| Runtime-Parameters:-Initial-Conditions#RESTART_LOAD_NRANK ]] | 1 | 1 | None | number of parallel I/O (i.e., number of MPI ranks) for restart [1] | + +# S +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ SF_CREATE_STAR_DET_RANDOM \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_DET_RANDOM ]] | -1 | None | None | make random numbers deterministic (i.e., independent of OpenMP and MPI, <0=auto) [-1] | +| [[ SF_CREATE_STAR_MASS_EFF \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_MASS_EFF ]] | 1.0e-2 | 2.22507386e-308 | 1.0 | Gas-to-star mass conversion efficiency [1.0e-2] | +| [[ SF_CREATE_STAR_MAX_STAR_MFRAC \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_MAX_STAR_MFRAC ]] | 0.5 | 2.22507386e-308 | 1.0 | maximum gas mass fraction allowed to convert to stars per substep [0.5] | +| SF_CREATE_STAR_MIN_GAS_DENS | 1.0e1 | 0.0 | None | minimum gas density allowed to form stars (in HI count/cm^3) [1.0e1] | +| [[ SF_CREATE_STAR_MIN_LEVEL \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_MIN_LEVEL ]] | 0 | None | TOP_LEVEL | minimum AMR level allowed to form stars (<0=auto -> MAX_LEVEL) [0] | +| [[ SF_CREATE_STAR_MIN_STAR_MASS \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_MIN_STAR_MASS ]] | 0.0 | 0.0 | None | minimum star particle mass for the stochastical star formation (in Msun) [0.0] | +| [[ SF_CREATE_STAR_RSEED \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_RSEED ]] | 123 | 0 | None | random seed [123] | +| [[ SF_CREATE_STAR_SCHEME \| Runtime-Parameters:-Star-Formation#SF_CREATE_STAR_SCHEME ]] | 0 | 0 | 1 | star formation schemes (0=off, 1=AGORA) [0] | +| [[ SOR_MAX_ITER \| Runtime-Parameters:-Gravity#SOR_MAX_ITER ]] | -1 | None | None | maximum number of iterations in SOR: (<0=auto) [-1] | +| [[ SOR_MIN_ITER \| Runtime-Parameters:-Gravity#SOR_MIN_ITER ]] | -1 | None | None | minimum number of iterations in SOR: (<0=auto) [-1] | +| [[ SOR_OMEGA \| Runtime-Parameters:-Gravity#SOR_OMEGA ]] | -1.0 | None | None | over-relaxation parameter in SOR: (<0=auto) [-1.0] | +| SPEC_INT_GHOST_BOUNDARY | 4 | 1 | None | ghost boundary size for spectral interpolation [4] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## | +| SPEC_INT_TABLE_PATH | None | None | None | path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## | +| SPEC_INT_VORTEX_THRESHOLD | 0.1 | 0.0 | None | vortex detection threshold for SPEC_INT_XY_INSTEAD_DEPHA [0.1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## | +| SPEC_INT_XY_INSTEAD_DEPHA | 1 | None | None | interpolate x and y (real and imaginary parts in current implementation) around vortices instead of density and phase for the spectral interpolation, which has the advantage of being well-defined across vortices [1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## | +| SRC_DELEPTONIZATION | 0 | None | None | deleptonization (for simulations of stellar core collapse) [0] ##HYDRO ONLY## | +| SRC_GPU_NPGROUP | -1 | None | None | number of patch groups sent into the CPU/GPU source-term solver (<=0=auto) [-1] | +| SRC_USER | 0 | None | None | user-defined source terms -> edit "Src_User.cpp" [0] | + +# T +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ TESTPROB_ID \| Runtime-Parameters:-General#TESTPROB_ID ]] | 0 | 0 | None | test problem ID [0]
0: none
1: HYDRO blast wave [+MHD]
2: HYDRO acoustic wave
3: HYDRO Bondi accretion (+GRAVITY)
4: HYDRO cluster merger vs. Flash (+GRAVITY & PARTICLE)
5: HYDRO AGORA isolated galaxy (+GRAVITY & PARTICLE & STAR_FORMATION & GRACKLE)
6: HYDRO caustic wave
7: HYDRO spherical collapse (+GRAVITY & COMOVING)
8: HYDRO Kelvin Helmholtz instability
9: HYDRO Riemann problems [+MHD]
10: HYDRO jet(s)
11: HYDRO Plummer cloud(s) (+GRAVITY & PARTICLE)
12: HYDRO gravity (+GRAVITY)
13: HYDRO MHD Arnold-Beltrami-Childress (ABC) flow (+MHD)
14: HYDRO MHD Orszag-Tang vortex (+MHD)
15: HYDRO MHD linear wave (+MHD)
16: HYDRO Jeans instability (+GRAVITY) [+MHD]
17: HYDRO particle in equilibrium (+GRAVITY & PARTICLE)
19: HYDRO energy power spectrum
20: HYDRO MHD Cosmic Ray Soundwave
21: HYDRO MHD Cosmic Ray Shocktube
23: HYDRO MHD Cosmic Ray Diffusion
100: HYDRO CDM cosmological simulation (+GRAVITY & COMOVING & PARTICLE)
101: HYDRO Zeldovich pancake collapse (+GRAVITY & COMOVING & PARTICLE)
1000: ELBDM external potential (+GRAVITY)
1001: ELBDM Jeans instability in the comoving frame (+GRAVITY, +COMOVING)
1002: ELBDM Jeans instability in the physical frame (+GRAVITY)
1003: ELBDM soliton merger (+GRAVITY)
1004: ELBDM self-similar halo (+GRAVITY, +COMOVING)
1005: ELBDM rotating vortex pair
1006: ELBDM vortex pair in linear motion
1007: ELBDM halo extracted from a large-scale structure simulation (+GRAVITY)
1008: ELBDM 1D Gaussian wave packet
1009: ELBDM large-scale structure simulation (+GRAVITY, +COMOVING)
1010: ELBDM plane wave
1011: ELBDM small wave perturbations on homogeneous background | + +# U +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| [[ UNIT_D \| Runtime-Parameters:-Units#UNIT_D ]] | -1.0 | None | None | mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] | +| [[ UNIT_L \| Runtime-Parameters:-Units#UNIT_L ]] | -1.0 | None | None | length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] | +| [[ UNIT_M \| Runtime-Parameters:-Units#UNIT_M ]] | -1.0 | None | None | mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] | +| [[ UNIT_T \| Runtime-Parameters:-Units#UNIT_T ]] | -1.0 | None | None | time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] | +| [[ UNIT_V \| Runtime-Parameters:-Units#UNIT_V ]] | -1.0 | None | None | velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] | + +# Y +| Name | Default | Min | Max | Short description | +| :--- | :--- | :--- | :--- | :--- | +| YT_FIG_BASENAME | None | None | None | figure basename [Fig] | +| YT_JUPYTER_USE_CONNECTION_FILE | 0 | None | None | use user-provided connection file when using libyt Jupyter UI [0] | +| YT_SCRIPT | None | None | None | yt inline analysis script (do not include the ".py" file extension) | +| YT_VERBOSE | 1 | 0 | 3 | verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] | + + +## Remarks + + +
+ +## Links +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Chemistry-and-Radiation.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Chemistry-and-Radiation.md similarity index 79% rename from doc/wiki/Chemistry-and-Radiation.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Chemistry-and-Radiation.md index c5fd9d88c3..e097fd3a77 100644 --- a/doc/wiki/Chemistry-and-Radiation.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Chemistry-and-Radiation.md @@ -1,11 +1,3 @@ - -## Compilation Options - -Related options: -[[SUPPORT_GRACKLE | Installation: Simulation-Options#SUPPORT_GRACKLE]]   - -## Runtime Parameters - Parameters described on this page: [GRACKLE_ACTIVATE](#GRACKLE_ACTIVATE),   [GRACKLE_VERBOSE](#GRACKLE_VERBOSE),   @@ -18,8 +10,6 @@ Parameters described on this page: [GRACKLE_PE_HEATING_RATE](#GRACKLE_PE_HEATING_RATE),   [GRACKLE_CLOUDY_TABLE](#GRACKLE_CLOUDY_TABLE)   -Other related parameters: -[[CHE_GPU_NPGROUP | GPU#CHE_GPU_NPGROUP]]   Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** @@ -29,7 +19,7 @@ Parameters below are shown in the format:   **`Name`   (Valid Values) Enable the [GRACKLE chemistry and cooling library](http://grackle.readthedocs.io/en/latest/index.html). * **Restriction:** Only applicable when enabling the compilation option -[[SUPPORT_GRACKLE | Installation: Simulation-Options#SUPPORT_GRACKLE]]. +[[--grackle | Installation:-Option-List#--grackle]]. * #### `GRACKLE_VERBOSE`   (0=off, 1=on)   [1] @@ -48,7 +38,7 @@ Map to the "with_radiative_cooling" runtime parameter in GRACKLE. * **Description:** Map to the "primordial_chemistry" runtime parameter in GRACKLE. One must increase -[[ NCOMP_PASSIVE_USER | Installation:-Simulation-Options#NCOMP_PASSIVE_USER]] +[[--passive | Installation:-Option-List#--passive]] by 3, 6, or 9 for GRACKLE_PRIMORDIAL=1, 2, or 3, respectively. * **Restriction:** @@ -56,7 +46,7 @@ by 3, 6, or 9 for GRACKLE_PRIMORDIAL=1, 2, or 3, respectively. * #### `GRACKLE_METAL`   (0=off, 1=on)   [0] * **Description:** Map to the "metal_cooling" runtime parameter in GRACKLE. One must increase -[[ NCOMP_PASSIVE_USER | Installation:-Simulation-Options#NCOMP_PASSIVE_USER]] +[[--passive | Installation:-Option-List#--passive]] by 1 and initialize the field `Metal` using the field index `Idx_Metal` properly. * **Restriction:** @@ -95,15 +85,9 @@ Map to the "grackle_data_file" runtime parameter in GRACKLE. ## Remarks -### GRACKLE Configuration -The floating-point accuracy and OpenMP support between GRACKLE and GAMER -must be consistent with each other. See -[[Library Configurations -- GRACKLE | Installation:-External-Libraries#grackle]] -for details. -
## Links -* [[How to install GRACKLE | Installation:-External-Libraries#grackle]] -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Chemistry and Radiation | Chemistry-and-Radiation]] diff --git a/doc/wiki/Runtime-Parameters:-Cosmology.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Cosmology.md similarity index 88% rename from doc/wiki/Runtime-Parameters:-Cosmology.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Cosmology.md index 4351fa5226..55dca94363 100644 --- a/doc/wiki/Runtime-Parameters:-Cosmology.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Cosmology.md @@ -2,7 +2,7 @@ ## Compilation Options Related options: -[[COMOVING | Installation: Simulation-Options#COMOVING]]   +[[--comoving | Installation:-Option-List#--comoving]]   ## Runtime Parameters @@ -43,4 +43,4 @@ Dimensionless Hubble constant.
## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Feedback.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Feedback.md new file mode 100644 index 0000000000..4cb2f19d94 --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Feedback.md @@ -0,0 +1,46 @@ +Parameters described on this page: +[FB_LEVEL](#FB_LEVEL),   +[FB_RSEED](#FB_RSEED),   +[FB_SNE](#FB_SNE),   +[FB_USER](#FB_USER)   + + +Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** + + + +* #### `FB_LEVEL`   (0 ≤ input < [[--nlevel | Installation:-Option-List#--nlevel]]; <0 → set to [[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL ]])   [-1] + * **Description:** +AMR level to apply feedback. + * **Restriction:** +Must be [[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL ]] for now. + + +* #### `FB_RSEED`   (≥0)   [456] + * **Description:** +Random seed used by feedback. + * **Restriction:** + + +* #### `FB_SNE`   (0=off, 1=on)   [0] + * **Description:** +Supernova explosion feedback. + * **Restriction:** +Not supported yet. + + +* #### `FB_USER`   (0=off, 1=on)   [0] + * **Description:** +User-defined feedback. +See [Add User-defined Feedback](#add-user-defined-feedback) for details. + * **Restriction:** + + +## Remarks + + +
+ +## Links +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Feedback | Feedback]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-GPU.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-GPU.md new file mode 100644 index 0000000000..136e68f00e --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-GPU.md @@ -0,0 +1,59 @@ +Parameters described on this page: +[OPT__GPUID_SELECT](#OPT__GPUID_SELECT),   +[FLU_GPU_NPGROUP](#FLU_GPU_NPGROUP),   +[POT_GPU_NPGROUP](#POT_GPU_NPGROUP),   +[CHE_GPU_NPGROUP](#CHE_GPU_NPGROUP),   +[GPU_NSTREAM](#GPU_NSTREAM)   + + +Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** + + +* #### `OPT__GPUID_SELECT`   (-2=CUDA, -1=MPI rank, ≥0=input)   [-1] + * **Description:** +See [[Set and Validate GPU IDs | GPU#set-and-validate-gpu-ids]]. + * **Restriction:** +Must be smaller than the total number of GPUs in a node. + + +* #### `FLU_GPU_NPGROUP`   (>0; ≤0 → set to default)   [depend on the GPU spec] + * **Description:** +Number of patch groups updated by the GPU/CPU fluid solvers at a single time. +See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. + * **Restriction:** +Must be a multiple of [GPU_NSTREAM](#GPU_NSTREAM). + + +* #### `POT_GPU_NPGROUP`   (>0; ≤0 → set to default)   [depend on the GPU spec] + * **Description:** +Number of patch groups updated by the GPU/CPU Poisson solvers at a single time. +See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. + * **Restriction:** +Must be a multiple of [GPU_NSTREAM](#GPU_NSTREAM). + + +* #### `CHE_GPU_NPGROUP`   (>0; ≤0 → set to default)   [depend on the GPU spec] + * **Description:** +Number of patch groups updated by the GPU/CPU GRACKLE solvers at a single time. +See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. +The GPU version is currently not supported. + * **Restriction:** + + +* #### `GPU_NSTREAM`   (>0; ≤0 → set to default)   [depend on the GPU spec] + * **Description:** +Number of CUDA streams for the asynchronous memory copy between CPU and GPU. +See also [[Performance Optimizations: GPU | Performance Optimizations:-GPU]]. + * **Restriction:** +See the restrictions on [FLU_GPU_NPGROUP](#FLU_GPU_NPGROUP) and +[POT_GPU_NPGROUP](#POT_GPU_NPGROUP). + + +## Remarks + + +
+ +## Links +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of GPU | GPU]] diff --git a/doc/wiki/Runtime-Parameters:-General.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-General.md similarity index 92% rename from doc/wiki/Runtime-Parameters:-General.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-General.md index ea552b42fe..500404bffc 100644 --- a/doc/wiki/Runtime-Parameters:-General.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-General.md @@ -47,7 +47,7 @@ Must be a multiple of 16 (i.e., two patches). * #### `END_T`   (≥0.0; <0.0 → set to default)   [depend] * **Description:** Simulation end time. `END_T<0.0` is allowed only during restart -(i.e., [[OPT__INIT | Initial Conditions#OPT__INIT]]=2, for which it +(i.e., [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=2, for which it will be reset to the value stored in the restart file) or if it will be reset by the adopted test problem. It must conform to the adopted unit system (see [[Unit Consistency | Runtime Parameters:-Units#unit-consistency]]). @@ -57,7 +57,7 @@ system (see [[Unit Consistency | Runtime Parameters:-Units#unit-consistency]]). * #### `END_STEP`   (≥0; <0 → set to default)   [depend] * **Description:** Simulation end root-level step. `END_STEP<0` is allowed only during restart -(i.e., [[OPT__INIT | Initial Conditions#OPT__INIT]]=2, for which it +(i.e., [[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=2, for which it will be reset to the value stored in the restart file) or if it will be reset by the adopted test problem. For `END_STEP=0`, the program will still construct and output the initial condition before termination. @@ -86,4 +86,4 @@ Test problem ID. See [[Test Problems]] for details. It currently supports
## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Gravity.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Gravity.md similarity index 58% rename from doc/wiki/Gravity.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Gravity.md index 6facb6cdd8..0b3aefac1b 100644 --- a/doc/wiki/Gravity.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Gravity.md @@ -1,15 +1,3 @@ -## Compilation Options - -Related options: -[[GRAVITY | Installation:-Simulation-Options#GRAVITY]],   -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]],   -[[STORE_POT_GHOST | Installation:-Simulation-Options#STORE_POT_GHOST]],   -[[UNSPLIT_GRAVITY | Installation:-Simulation-Options#UNSPLIT_GRAVITY]],   -[[COMOVING | Installation:-Simulation-Options#COMOVING]]   - - -## Runtime Parameters - Parameters described on this page: [OPT__BC_POT](#OPT__BC_POT),   [GFUNC_COEFF0](#GFUNC_COEFF0),   @@ -32,11 +20,9 @@ Parameters described on this page: [EXT_POT_TABLE_DH](#EXT_POT_TABLE_DH),   [EXT_POT_TABLE_EDGEL_X](#EXT_POT_TABLE_EDGEL_X),   [EXT_POT_TABLE_EDGEL_Y](#EXT_POT_TABLE_EDGEL_Y),   -[EXT_POT_TABLE_EDGEL_Z](#EXT_POT_TABLE_EDGEL_Z) +[EXT_POT_TABLE_EDGEL_Z](#EXT_POT_TABLE_EDGEL_Z)   + -Other related parameters: -[[DT__GRAVITY | Runtime-Parameters:-Timestep#DT__GRAVITY]],   -[[POT_GPU_NPGROUP | GPU#POT_GPU_NPGROUP]]   Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** @@ -72,7 +58,7 @@ is on; no default when [[OPT__UNIT | Runtime-Parameters:-Units#OPT__UNIT]] is of Parameter of the SOR Poisson solver for optimizing the convergence rate. * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=SOR. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=SOR. * #### `SOR_MAX_ITER`   (≥0; <0 → set to default)   [single precision=60, double precision=110] @@ -81,7 +67,7 @@ Maximum number of iterations in the SOR Poisson solver. The default value depends on the adopted floating-point accuracy (`FLOAT8`). * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=SOR. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=SOR. * #### `SOR_MIN_ITER`   (≥3; <0 → set to default)   [10] @@ -89,16 +75,16 @@ Only applicable when adopting the compilation option Minimum number of iterations in the SOR Poisson solver. * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=SOR. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=SOR. * #### `MG_MAX_ITER`   (≥0; <0 → set to default)   [single precision=10, double precision=20] * **Description:** Maximum number of iterations in the multigrid Poisson solver. -The default value depends on the adopted floating-point accuracy (`FLOAT8`). +The default value depends on the adopted floating-point accuracy ([[--double | Installation:-Option-List#--double]]). * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=MG. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=MG. * #### `MG_NPRE_SMOOTH`   (≥0; <0 → set to default)   [3] @@ -106,7 +92,7 @@ Only applicable when adopting the compilation option Number of pre-smoothing steps in the multigrid Poisson solver. * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=MG. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=MG. * #### `MG_NPOST_SMOOTH`   (≥0; <0 → set to default)   [3] @@ -114,7 +100,7 @@ Only applicable when adopting the compilation option Number of post-smoothing steps in the multigrid Poisson solver. * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=MG. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=MG. * #### `MG_TOLERATED_ERROR`   (≥0.0; <0.0 → set to default)   [single precision=1e-6, double precision=1e-15] @@ -122,7 +108,7 @@ Only applicable when adopting the compilation option Maximum tolerable error in the multigrid Poisson solver. * **Restriction:** Only applicable when adopting the compilation option -[[POT_SCHEME | Installation:-Simulation-Options#POT_SCHEME]]=MG. +[[--pot_scheme | Installation:-Option-List#--pot_scheme]]=MG. * #### `OPT__GRA_P5_GRADIENT`   (0=off, 1=on)   [0] @@ -133,7 +119,7 @@ gravitational acceleration from potential. * **Restriction:** Must manually set `#define GRA_GHOST_SIZE 2` (and `#define USG_GHOST_SIZE 2` as well when adopting the compilation option -[[UNSPLIT_GRAVITY | Installation:-Simulation-Options#UNSPLIT_GRAVITY]]) +[[--unsplit_gravity | Installation:-Option-List#--unsplit_gravity]]) in the header file `Macro.h`. Unsupported for particle update. @@ -150,7 +136,7 @@ Add external acceleration. See for how to specify external acceleration. * **Restriction:** Not applicable to the wave dark matter simulations -([[MODEL | Installation:-Simulation-Options#MODEL]]=ELBDM). +([[--model | Installation:-Option-List#--model]]=ELBDM). * #### `OPT__EXT_POT`   (0=off, 1=function, 2=table)   [0] @@ -213,119 +199,11 @@ See [EXT_POT_TABLE_EDGEL_X](#EXT_POT_TABLE_EDGEL_X). * **Restriction:** - ## Remarks -### External Acceleration/Potential - -#### Using Analytical Function: - -Follow the steps below to add external acceleration with an analytical -function. Get familiar with the general procedure of -[[Adding Problem-specific Functionalities | Adding-New-Simulations#vi-add-problem-specific-functionalities]] -first and be aware that adding external acceleration/potential takes a few extra steps -in order to utilize GPUs. - -1. Enable [OPT__EXT_ACC](#OPT__EXT_ACC). -2. Go to your new test problem folder and copy the built-in point-mass acceleration -routine as a template: - ``` - cp ../../../SelfGravity/CPU_Gravity/CPU_ExtAcc_PointMass.cpp ExtAcc_NewProblem.cpp - ``` -3. Edit `ExtAcc_NewProblem.cpp` to - * Replace the keyword `PointMass` by `NewProblem` (or whatever appropriate). - * Edit the routine `SetExtAccAuxArray_NewProblem()` to set the - auxiliary array `AuxArray[]`, which will be automatically - passed to `ExtAcc_NewProblem()` as the input array `UserArray[]`. - The array size is set by `EXT_ACC_NAUX_MAX` in `include/Macro.h` (default 20). - * Edit the routine `ExtAcc_NewProblem()`, which should return the external - acceleration `Acc[]` at `(x, y, z, Time)`. -4. Link `ExtAcc_NewProblem.cpp` to a corresponding CUDA source file: - ``` - ln -s ExtAcc_NewProblem.cpp ExtAcc_NewProblem.cu - ``` - This avoids writing redundant codes for CPU and GPU runs separately. -5. Edit your problem source file (e.g., `Init_TestProb_Hydro_NewProblem.cpp`) to - * Declare a function prototype on top of the file: - ```C++ - void Init_ExtAcc_NewProblem(); - ``` - * Set up a function pointer in your problem initialization - function (e.g., `Init_TestProb_Hydro_NewProblem()`): - ```C++ - # ifdef GRAVITY - Init_ExtAcc_Ptr = Init_ExtAcc_NewProblem - # endif - ``` - -Adding external potential can be done in a very similar way. -Enable [OPT__EXT_POT](#OPT__EXT_POT)`=1` and then follow the procedure -above and replace `Acc` by `Pot`. A point-mass example can be found -at `src/SelfGravity/CPU_Poisson/CPU_ExtPot_PointMass.cpp`. - -**Caution: wave dark matter simulations -(i.e., [[MODEL | Installation:-Simulation-Options#MODEL]]=ELBDM) -does not support external acceleration. Just use external potential.** - -#### Using Table: - -External potential can also be set via interpolating a table loaded from disk. -Set [OPT__EXT_POT](#OPT__EXT_POT)`=2` and all `EXT_POT_TABLE_*` parameters. -The following C++ example creates such a table with a point-mass potential. - -```C++ -#include -#include - -typedef double real; // this must be consistent with the compilation option FLOAT8 - -int main() -{ -// parameters - const char *Filename = "ExtPotTable"; // EXT_POT_TABLE_NAME - const int NX = 131; // EXT_POT_TABLE_NPOINT_X - const int NY = 131; // EXT_POT_TABLE_NPOINT_Y - const int NZ = 131; // EXT_POT_TABLE_NPOINT_Z - const double dh = 0.0078125; // EXT_POT_TABLE_NPOINT_DH - const double EdgeL[3] = { -dh, -dh, -dh }; // EXT_POT_TABLE_EDGEL_X/Y/Z - -// set the external potential array - const double G = 1.0; // gravitational constant - const double M = 1.0; // particle mass - const double cx = EdgeL[0] + 0.5*(NX-1)*dh; // centre - const double cy = EdgeL[1] + 0.5*(NY-1)*dh; - const double cz = EdgeL[2] + 0.5*(NZ-1)*dh; - - double dx, dy, dz, r; - - real (*ExtPot)[NY][NX] = new real [NZ][NY][NX]; - - for (int k=0; k ## Links -* [[Main page of Runtime Parameters | Runtime-Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Gravity | Gravity]] diff --git a/doc/wiki/Hydro.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Hydro.md similarity index 85% rename from doc/wiki/Hydro.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Hydro.md index eb704c640a..9b5c78250a 100644 --- a/doc/wiki/Hydro.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Hydro.md @@ -1,22 +1,3 @@ - -## Compilation Options - -Related options: -[[MODEL | Installation: Simulation-Options#MODEL]],   -[[FLU_SCHEME | Installation: Simulation-Options#FLU_SCHEME]],   -[[LR_SCHEME | Installation: Simulation-Options#LR_SCHEME]],   -[[RSOLVER | Installation: Simulation-Options#RSOLVER]],   -[[DUAL_ENERGY | Installation: Simulation-Options#DUAL_ENERGY]],   -[[NCOMP_PASSIVE_USER | Installation: Simulation-Options#NCOMP_PASSIVE_USER]],   -[[MHD | Installation: Simulation-Options#MHD]],   -[[COSMIC_RAY | Installation: Simulation-Options#COSMIC_RAY]],   -[[CR_DIFFUSION | Installation: Simulation-Options#CR_DIFFUSION]],   -[[EOS | Installation: Simulation-Options#EOS]],   -[[BAROTROPIC_EOS | Installation: Simulation-Options#BAROTROPIC_EOS]]   - - -## Runtime Parameters - Parameters described on this page: [OPT__BC_FLU_XM](#OPT__BC_FLU_XM),   [OPT__BC_FLU_XP](#OPT__BC_FLU_XP),   @@ -57,13 +38,6 @@ Parameters described on this page: [CR_DIFF_PERP](#CR_DIFF_PERP),   [CR_DIFF_MIN_B](#CR_DIFF_MIN_B)   -Other related parameters: -[[DT__FLUID | Runtime Parameters:-Timestep#DT__FLUID]],   -[[DT__FLUID_INIT | Runtime Parameters:-Timestep#DT__FLUID_INIT]],   -[[DT__CR_DIFFUSION | Runtime Parameters:-Timestep#DT__CR_DIFFUSION]],   -[[AUTO_REDUCE_DT | Runtime Parameters:-Timestep#AUTO_REDUCE_DT]],   -[[FLU_GPU_NPGROUP | GPU#FLU_GPU_NPGROUP]],   -[[AUTO_REDUCE_MINMOD_FACTOR | Runtime-Parameters:-Timestep#AUTO_REDUCE_MINMOD_FACTOR ]]   Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** @@ -83,7 +57,7 @@ when [[TESTPROB_ID | Runtime Parameters:-General#TESTPROB_ID]]≠0. When adopting periodic conditions, they must be applied to both the -x and +x faces. Particles only support the periodic boundary conditions. When adopting any non-periodic boundary condition for fluid, particles will be removed when getting too close -to the boundaries (see [[ PAR_REMOVE_CELL | Particles#PAR_REMOVE_CELL ]] ). +to the boundaries (see [[ PAR_REMOVE_CELL | Runtime-Parameters:-Particles#PAR_REMOVE_CELL ]] ). * #### `OPT__BC_FLU_XP`   (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode)   [none] @@ -131,9 +105,9 @@ See the restriction on [OPT__BC_FLU_XM](#OPT__BC_FLU_XM). Ratio of specific heats (i.e., adiabatic index) in the ideal gas EoS. * **Restriction:** Only applicable when adopting the compilation option -[[EOS | Installation: Simulation-Options#EOS]]=`EOS_GAMMA`. +[[--eos | Installation:-Option-List#--eos]]=`GAMMA`. Does not support the isothermal EoS (i.e., `GAMMA=1.0`), for which -one should adopt [[EOS | Installation: Simulation-Options#EOS]]=`EOS_ISOTHERMAL`. +one should adopt [[--eos | Installation:-Option-List#--eos]]=`ISOTHERMAL`. * #### `MOLECULAR_WEIGHT`   (>0.0)   [0.6] @@ -153,7 +127,7 @@ Normalization of [MOLECULAR_WEIGHT](#MOLECULAR_WEIGHT). Temperature in kelvin for the isothermal equation of state. * **Restriction:** Only applicable when adopting the compilation option -[[EOS | Installation: Simulation-Options#EOS]]=`EOS_ISOTHERMAL`. +[[--eos | Installation:-Option-List#--eos]]=`ISOTHERMAL`. * #### `OPT__LR_LIMITER`   (-1→ set to default, 0=none, 1=van Leer, 2=generalized minmod, 3=van Albada, 4=van Leer+generalized minmod, 6=central, 7=Athena)   [-1] @@ -163,9 +137,9 @@ generalized minmod limiter can be set by [MINMOD_COEFF](#MINMOD_COEFF). `7=Athena` mimics the extrema-preserving limiter implemented in Athena++. * **Restriction:** Only applicable when adopting the compilation option -[[FLU_SCHEME | Installation: Simulation-Options#FLU_SCHEME]]=`MHM/MHM_RP/CTU`. +[[--flu_scheme | Installation:-Option-List#--flu_scheme]]=`MHM/MHM_RP/CTU`. `7=Athena` must work with -[[LR_SCHEME | Installation: Simulation-Options#LR_SCHEME]]=`PPM`. +[[--slope | Installation:-Option-List#--slope]]=`PPM`. * #### `MINMOD_COEFF`   (1.0 ≤ input ≤ 2.0)   [1.5] @@ -197,9 +171,9 @@ The number of cells corrected by this option will be recorded in the file [[Record__NCorrUnphy | Simulation-Logs:-Record__NCorrUnphy]]. * **Restriction:** Only applicable when adopting the compilation option -[[FLU_SCHEME | Installation: Simulation-Options#FLU_SCHEME]]=MHM/MHM_RP/CTU. -[[MHD | Installation: Simulation-Options#MHD]] currently does not support `3D+1D`. -Be aware that this option may cause conservation errors. +[[--flu_scheme | Installation:-Option-List#--flu_scheme]]=`MHM/MHM_RP/CTU`. +[[--mhd | Installation:-Option-List#--mhd]] currently does not support `3D+1D`. +Be aware that this option may cause conservation errors. * #### `OPT__1ST_FLUX_CORR_SCHEME`   (<0 → set to default, 0=none, 1=Roe, 2=HLLC, 3=HLLE, 4=HLLD)   [1] @@ -219,7 +193,7 @@ the dual energy formalism for cells with and ξ=`DUAL_ENERGY_SWITCH`. * **Restriction:** Only applicable when enabling the compilation option -[[DUAL_ENERGY | Installation: Simulation-Options#DUAL_ENERGY]]. +[[--dual | Installation:-Option-List#--dual]]. * #### `OPT__SAME_INTERFACE_B`   (0=off, 1=on)   [0] @@ -241,7 +215,7 @@ Correct the coarse-grid data by the fluxes on the coarse-fine boundaries. Correct the coarse-grid magnetic field by the electric field on the coarse-fine boundaries. * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. +For [[--mhd | Installation:-Option-List#--mhd]] only. * #### `OPT__FIXUP_RESTRICT`   (0=off, 1=on)   [1] @@ -259,10 +233,10 @@ is mainly for achieving [[bitwise reproducibility | Bitwise Reproducibility]]. `OPT__CORR_AFTER_ALL_SYNC=1`: apply corrections after each root-level update. `OPT__CORR_AFTER_ALL_SYNC=2`: apply corrections before each data dump. The default depends on the compilation option -[[GAMER_DEBUG | Installation: Simulation-Options#GAMER_DEBUG]]. +[[--debug | Installation:-Option-List#--debug]]. * **Restriction:** Must be turned on when enabling the compilation option -[[BITWISE_REPRODUCIBILITY | Installation: Simulation-Options#BITWISE_REPRODUCIBILITY]]. +[[--bitwise_reproducibility | Installation:-Option-List#--bitwise_reproducibility]]. * #### `OPT__NORMALIZE_PASSIVE`   (0=off, 1=on)   [1] @@ -347,7 +321,7 @@ a width equal to [JEANS_MIN_PRES_LEVEL](#JEANS_MIN_PRES_LEVEL). * **Restriction:** Only applicable when enabling the compilation option -[[GRAVITY | Installation: Simulation-Options#GRAVITY]]. +[[--gravity | Installation:-Option-List#--gravity]]. * #### `JEANS_MIN_PRES_LEVEL`   (≥0; <0 → set to default)   [ [[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL]] ] @@ -368,7 +342,7 @@ Must be an integer. Effective adiabatic index of cosmic rays. * **Restriction:** Only applicable when enabling the compilation option -[[COSMIC_RAY | Installation: Simulation-Options#COSMIC_RAY]]. +[[--cosmic_ray | Installation:-Option-List#--cosmic_ray]]. * #### `CR_DIFF_PARA`   (≥0.0)   [0.0] @@ -376,7 +350,7 @@ Only applicable when enabling the compilation option Cosmic-ray diffusion coefficient parallel to the magnetic field. * **Restriction:** Only applicable when enabling the compilation option -[[CR_DIFFUSION | Installation: Simulation-Options#CR_DIFFUSION]]. +[[--cr_diffusion | Installation:-Option-List#--cr_diffusion]]. * #### `CR_DIFF_PERP`   (≥0.0)   [0.0] @@ -384,7 +358,7 @@ Only applicable when enabling the compilation option Cosmic-ray diffusion coefficient perpendicular to the magnetic field. * **Restriction:** Only applicable when enabling the compilation option -[[CR_DIFFUSION | Installation: Simulation-Options#CR_DIFFUSION]]. +[[--cr_diffusion | Installation:-Option-List#--cr_diffusion]]. * #### `CR_DIFF_MIN_B`   (none)   [0.0] @@ -393,7 +367,7 @@ Disable cosmic-ray diffusion locally when the magnetic field amplitude is smalle than this threshold. * **Restriction:** Only applicable when enabling the compilation option -[[CR_DIFFUSION | Installation: Simulation-Options#CR_DIFFUSION]]. +[[--cr_diffusion | Installation:-Option-List#--cr_diffusion]]. ## Remarks @@ -403,4 +377,4 @@ Only applicable when enabling the compilation option ## Links * [[Main page of Runtime Parameters | Runtime Parameters]] -* [[Equation of state |equation-of-state]] +* [[Main page of Hydro | Hydro]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Initial-Conditions.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Initial-Conditions.md new file mode 100644 index 0000000000..da24278a6e --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Initial-Conditions.md @@ -0,0 +1,162 @@ +Parameters described on this page: +[OPT__INIT](#OPT__INIT),   +[OPT__INIT_BFIELD_BYVECPOT](#OPT__INIT_BFIELD_BYVECPOT),   +[RESTART_LOAD_NRANK](#RESTART_LOAD_NRANK),   +[OPT__RESTART_RESET](#OPT__RESTART_RESET),   +[OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL),   +[OPT__UM_IC_NLEVEL](#OPT__UM_IC_NLEVEL),   +[OPT__UM_IC_NVAR](#OPT__UM_IC_NVAR),   +[OPT__UM_IC_FORMAT](#OPT__UM_IC_FORMAT),   +[OPT__UM_IC_FLOAT8](#OPT__UM_IC_FLOAT8),   +[OPT__UM_IC_DOWNGRADE](#OPT__UM_IC_DOWNGRADE),   +[OPT__UM_IC_REFINE](#OPT__UM_IC_REFINE),   +[OPT__UM_IC_LOAD_NRANK](#OPT__UM_IC_LOAD_NRANK),   +[OPT__INIT_RESTRICT](#OPT__INIT_RESTRICT),   +[INIT_SUBSAMPLING_NCELL](#INIT_SUBSAMPLING_NCELL),   +[OPT__FFTW_STARTUP](#OPT__FFTW_STARTUP)   + + +Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** + + +* #### `OPT__INIT`   (1=function, 2=restart, 3=`UM_IC` file)   [none] + * **Description:** +Grid initialization method. +`OPT__INIT=1`: using analytical functions; see +[[Setting IC from Analytical Functions — Grids | Initial-Conditions#IC-Func-Grids]]. +`OPT__INIT=2`: +[[restarting from a simulation snapshot | Running-the-Code#restarting-from-a-snapshot]]. +`OPT__INIT=3`: loading a uniform-mesh binary file named `UM_IC`; see +[[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]]. + * **Restriction:** + + +* #### `OPT__INIT_BFIELD_BYVECPOT`   (0=off, 1=file, 2=function)   [0] + * **Description:** +Set the magnetic field from either a vector potential file named `B_IC` (see +[[Setting IC from Files — Magnetic Field | Initial-Conditions#IC-File-BField]]) or an +analytical vector potential function (see +[[Setting IC from Functions — Magnetic Field | Initial-Conditions#IC-Func-BField]]). + * **Restriction:** +For [[--mhd | Installation:-Option-List#--mhd]] only. + + +* #### `RESTART_LOAD_NRANK`   (>0)   [1] + * **Description:** +Number of parallel I/O for restart. In other words, `RESTART_LOAD_NRANK` +MPI processes will load the restart file in parallel. + * **Restriction:** + + +* #### `OPT__RESTART_RESET`   (0=off, 1=on)   [0] + * **Description:** +During restart, reset some of the simulation status parameters +(e.g., step, time, snapshot ID) to their initial values as if the +simulation starts over again. + * **Restriction:** + + +* #### `OPT__UM_IC_LEVEL`   (0 ≤ input < [[--nlevel | Installation:-Option-List#--nlevel]])   [0] + * **Description:** +Starting AMR level in the uniform-mesh initial condition file. +See [[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]] for details. + * **Restriction:** + + +* #### `OPT__UM_IC_NLEVEL`   (1 ≤ input ≤ [[--nlevel | Installation:-Option-List#--nlevel]]-[OPT__UM_IC_LEVEL](#OPT__UM_IC_LEVEL))   [1] + * **Description:** +Number of AMR levels in the uniform-mesh initial condition file. +See [[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]] for details. + * **Restriction:** + + +* #### `OPT__UM_IC_NVAR`   (0 ≤ input < total number of gas fields)   [total number of gas fields] + * **Description:** +Number of fluid variables stored in the uniform-mesh initial condition file. +The default value is +5+[[--passive | Installation:-Option-List#--passive]] +for [[--model | Installation:-Option-List#--model]]=HYDRO. +See [[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]] for details. + * **Restriction:** + + +* #### `OPT__UM_IC_FORMAT`   (1=[v][z][y][x], 2=[z][y][x][v]; row-major and v=field)   [1] + * **Description:** +Data format of the uniform-mesh initial condition file. See +[[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]] for details. + * **Restriction:** + + +* #### `OPT__UM_IC_FLOAT8`   (<0: same as [[--double | Installation:-Option-List#--double]], 0=single precision, 1=double precision)   [-1] + * **Description:** +Floating-point precision of the uniform-mesh initial condition file. + * **Restriction:** + + +* #### `OPT__UM_IC_DOWNGRADE`   (0=off, 1=on)   [1] + * **Description:** +Downgrade (i.e. derefine) the uniform-mesh initial condition data for cells +not satisfying any refinement criteria. +See [[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]] for details. + * **Restriction:** + + +* #### `OPT__UM_IC_REFINE`   (0=off, 1=on)   [1] + * **Description:** +Refine the uniform-mesh initial condition data from level `OPT__UM_IC_LEVEL` to +[[MAX_LEVEL | Runtime Parameters:-Refinement#MAX_LEVEL]] for cells satisfying the adopted +refinement criteria. +See [[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]] for details. + * **Restriction:** + + +* #### `OPT__UM_IC_LOAD_NRANK`   (>0)   [1] + * **Description:** +Number of parallel I/O for loading the uniform-mesh initial condition file. +Specifically, it allows `OPT__UM_IC_LOAD_NRANK` MPI processes to load the +initial condition file concurrently. But the actually achieved parallel I/O +depends on the system specifications. +See also [[Setting IC from Files — Grids | Initial-Conditions#IC-File-Grids]]. + * **Restriction:** + + +* #### `OPT__INIT_RESTRICT`   (0=off, 1=on)   [1] + * **Description:** +For non-leaf patches, replace fluid data by the volume-weighted average +of their child patch data. It is similar to the option +[[OPT__FIXUP_RESTRICT | Runtime-Parameters:-Hydro#OPT__FIXUP_RESTRICT]] +except that it only applies to the initial condition. + * **Restriction:** + + +* #### `INIT_SUBSAMPLING_NCELL`   (0=off, >0 → number of sub-cells along each direction)   [0] + * **Description:** +Perform sub-sampling when constructing the grid IC to make it smoother. +Specifically, each cell will be divided into Nsub3 +sub-cells when calling the grid IC function, where +Nsub = `INIT_SUBSAMPLING_NCELL`, and then +take the volume-weighted average of these sub-cells. + * **Restriction:** +Only applicable when adopting [OPT__INIT](#OPT__INIT)=1. + + +* #### `OPT__FFTW_STARTUP`   (-1 → set to default, 0=ESTIMATE, 1=MEASURE, 2=PATIENT)   [-1] + * **Description:** +Initialize FFTW plans. `MEASURE` is recommended for the balance +between FFTW plan initialization time and FFT performance. +Note that simulation results can vary in each run on the level of +machine precision for `OPT__FFTW_STARTUP != ESTIMATE`. + * **Restriction:** +`PATIENT` is not supported by FFTW2. +Must use `ESTIMATE` when enabling +[[--bitwise_reproducibility | Installation:-Option-List#--bitwise_reproducibility]]. + + +## Remarks + + +
+ +## Links +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Initial Conditions | Initial-Conditions]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__DumpTable.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__DumpTable.md new file mode 100644 index 0000000000..1c385f1fbf --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__DumpTable.md @@ -0,0 +1,31 @@ +Timetable for dumping data when adopting +[[OPT__OUTPUT_MODE | Runtime-Parameters:-Outputs#OPT__OUTPUT_MODE]]=3. +The following example will dump data at t=1.0, 2.3, and 3.7. + +``` +#Dump ID Dump Time + 0 1.0 + 1 2.3 + 2 3.7 +***************END LINE*************** +``` + +Note that this text file currently has a quite inflexible format: + +* Must have one and only one header line. + +* The first column (i.e., the dump IDs 0, 1, 2 in the example above) +is actually useless and will not be loaded at all. The output timetable +must be put in the second column. + +* Empty and comment lines (i.e., lines starting with #) are NOT allowed +except in the first header line. + +* Timetable must be in ascending order. + +* The loading routine will stop loading when detecting a line +starting with *. All remaining lines will be ignored. + +* Simulation end time [[END_T | Runtime-Parameters:-General#END_T]] +loaded from `Input__Parameter` will be reset to the maximum output +time in the dump table if the latter is found to be smaller. diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__Flag_*.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__Flag_*.md new file mode 100644 index 0000000000..70ab6205ae --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__Flag_*.md @@ -0,0 +1,33 @@ +Refinement thresholds of various refinement criteria `OPT__FLAG_*` +described in [[Runtime Parameters -- Refinement | Runtime-Parameters:-Refinement]], +where each criterion has its own input file. +For instance, the following shows an example of the table `Input__Flag_Rho` +used by [[OPT__FLAG_RHO | Runtime-Parameters:-Refinement#OPT__FLAG_RHO]]: + +``` +# Level Density + 0 8.0 + 1 64.0 + 2 512.0 +``` + +In this example, cells on levels 0, 1, and 2 will be flagged for +refinement if their gas mass densities exceed 8.0, 64.0, and 512.0, +respectively. + +To add new flag tables, edit `src/Init/Init_Load_FlagCriteria.cpp`. + +Table format: + +* Must have one and only one header line. + +* The first column (i.e., levels 0, 1, 2 in the example above) +is actually useless and will not be loaded at all. The refinement +thresholds and other parameters (if any) must be put in column(s) +other than the first column. + +* Empty and comment lines (i.e., lines starting with #) are NOT allowed +except in the first header line. + +* Must contain at least [[MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]] +data lines excluding the header line. diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__MemoryPool.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__MemoryPool.md new file mode 100644 index 0000000000..47cf28c6ea --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__MemoryPool.md @@ -0,0 +1,30 @@ +Number of patches to be preallocated on each AMR level when enabling +[[OPT__MEMORY_POOL | Runtime-Parameters:-Refinement#OPT__MEMORY_POOL]]. +The following example will preallocate 100, 800 and 6400 patches on +levels 0, 1, and 2, respectively, and will not preallocate any patch +above level 2. + +``` +# Level Number of patches to be preallocated + 0 100 + 1 800 + 2 6400 +``` + +Table format: + +* Must have one and only one header line. + +* The first column (i.e., levels 0, 1, 2 in the example above) +is actually useless and will not be loaded at all. The numbers of +patches to be preallocated must be put in the second column. + +* Empty and comment lines (i.e., lines starting with #) are NOT allowed +except in the first header line. + +* At most +[[MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]]+1 +lines will be loaded. If there are fewer than +[[MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]]+1 +lines in the input file, no patches will be preallocated on the +unspecified levels. diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__Parameter.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__Parameter.md new file mode 100644 index 0000000000..4d61bb5a22 --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__Parameter.md @@ -0,0 +1,133 @@ +This page includes the following topics: +* [Parameter List](#parameter-list) +* [File Format](#file-format) +* [Adding New Parameters](#adding-new-parameters) + + +## Parameter List +* [[All | Runtime-Parameters:-All]] +-- List all parameters in alphabetical order + +* [[General | Runtime-Parameters:-General]] +-- Parameters applicable to all simulations, such as simulation domain, root-level grid, simulation end time... + +* [[MPI and OpenMP | Runtime-Parameters:-MPI-and-OpenMP]] +-- Number of MPI processes and OpenMP threads, load-balancing parameters + +* [[GPU | Runtime-Parameters:-GPU]] +-- GPU IDs and optimization parameters + +* [[Units | Runtime-Parameters:-Units]] +-- Unit system + +* [[Initial Conditions | Runtime-Parameters:-Initial-Conditions]] +-- Initialization methods, restarting simulations + +* [[Hydro | Runtime-Parameters:-Hydro]] +-- Hydro solvers, physical constants, boundary conditions + +* [[Gravity | Runtime-Parameters:-Gravity]] +-- Gravity solvers, physical constants, boundary conditions + +* [[Particles | Runtime-Parameters:-Particles]] +-- Particle parameters + +* [[Cosmology | Runtime-Parameters:-Cosmology]] +-- Cosmological parameters + +* [[Chemistry and Radiation | Runtime-Parameters:-Chemistry-and-Radiation]] +-- GRACKLE parameters + +* [[Star Formation | Runtime-Parameters:-Star-Formation]] +-- Star formation parameters + +* [[Feedback | Runtime-Parameters:-Feedback]] +-- Feedback parameters + +* [[Timestep | Runtime-Parameters:-Timestep]] +-- Timestep criteria + +* [[Refinement | Runtime-Parameters:-Refinement]] +-- Grid refinement criteria + +* [[Interpolation | Runtime-Parameters:-Interpolation]] +-- Interpolation schemes + +* [[Outputs | Runtime-Parameters:-Outputs]] +-- Data output parameters + +* [[Miscellaneous | Runtime-Parameters:-Miscellaneous]] +-- Miscellaneous parameters such as timing options, log files, and self-checking options... + + +## File Format +All parameters in this file follow the syntax: + +``` +NAME VALUE # COMMENTS +``` + +* Comment symbol: #. + +* Empty and comment lines (i.e., lines starting with #) are ignored. + +* Parameter defaults are described as [DEFAULT] in the commentary. +For example, + + ``` + REGRID_COUNT 1 # refine every REGRID_COUNT sub-steps [4] + ``` + + indicates that the default value of the parameter `REGRID_COUNT` is 4. + +* Parameters set to "auto" (usually by assigning a negative value) do +not have deterministic defaults and will be reset later according to +the adopted compilation options and/or other runtime parameters. For +example, + + ``` + DT__FLUID -1.0 # hydro CFL factor (<0.0=auto) [-1.0] + ``` + + indicates that if the parameter `DT__FLUID` is assigned with a +negative value (which is also the default value as suggested by `[-1.0]`), +it will be reset later depending on other configurations +(in this case, it's value depends on the adopted hydro scheme). + +* For boolean options, 0=off and 1=on. + +* All dimensional variables must be set consistently with the adopted unit +system (set by [[OPT__UNIT | Runtime-Parameters:-Units#OPT__UNIT]]) unless otherwise specified. + +* Parameter names are case sensitive. + +* The program will display warning messages to stderr when detecting +duplicate or unrecognizable parameters. For example, + + ``` + WARNING : unrecognizable parameter [DUAL_ENERGY_SWITCH ] at line 113 !! + WARNING : duplicate parameter [OPT__VERBOSE ] at line 160 !! + ``` + + It will display stdout messages when setting any parameters +to defaults. For example + + ``` + NOTE : parameter [UNIT_L ] is set to the default value [-1.00000000000000e+00] + NOTE : parameter [UNIT_M ] is set to the default value [-1.00000000000000e+00] + ``` + + It will also display warning messages to stderr after resetting +any parameters (usually because they are either useless or set to +"auto" as described above). For example, + + ``` + WARNING : parameter [DT__FLUID ] is reset to [ 5.00000000000000e-01] + WARNING : parameter [GPU_NSTREAM ] is reset to [ 1 ] since GPU is disabled + WARNING : parameter [OPT__NORMALIZE_PASSIVE ] is reset to [ 0 ] since there are no passive scalars + ``` + + +## Adding New Parameters + +See [[Adding Parameters | Adding-Parameters]]. diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__TestProb.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__TestProb.md new file mode 100644 index 0000000000..35cde73e16 --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Input__TestProb.md @@ -0,0 +1,16 @@ +Problem-specific runtime parameters. This file follows the same +syntax as [[Input__Parameter | Runtime-Parameters:-Input__Parameter#file-format]]. See +`example/test_problem/*/*/Input__TestProb` for some examples. +The following shows +`example/test_problem/Hydro/Riemann/Input__TestProb`: + +``` +Riemann_Prob 0 # target Riemann problem (0 : Sod's shock tube + # 1 : strong shock + # 2 : two shocks + # 3 : Einfeldt's 1-2-0-3 + # 4 : Einfeldt's 1-1-2-5 + # 5 : sonic rarefaction wave +Riemann_LR +1 # wave propagation direction (>0/<0 --> positive/negative direction) [1] +Riemann_XYZ 0 # wave propagation axis (0/1/2 --> x/y/z) [0] +``` diff --git a/doc/wiki/Runtime-Parameters:-Interpolation.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Interpolation.md similarity index 97% rename from doc/wiki/Runtime-Parameters:-Interpolation.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Interpolation.md index 645aaf8ef9..600bae5c34 100644 --- a/doc/wiki/Runtime-Parameters:-Interpolation.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Interpolation.md @@ -78,14 +78,14 @@ Interpolation scheme for computing the fluid variables on the newly refined patc * **Description:** Interpolation scheme for preparing the ghost-zone magnetic field of the fluid solver. * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. +For [[--mhd | Installation:-Option-List#--mhd]] only. * #### `OPT__REF_MAG_INT_SCHEME`   (only 2, 3, 4, 6 in ["Supported interpolation schemes"](#INT_TABLE))   [4] * **Description:** Interpolation scheme for computing the magnetic field on the newly refined patches. * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. +For [[--mhd | Installation:-Option-List#--mhd]] only. * #### `OPT__POT_INT_SCHEME`   (only 4 & 5 in ["Supported interpolation schemes"](#INT_TABLE))   [4] @@ -150,4 +150,4 @@ velocity in low-density valleys.
## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-MPI-and-OpenMP.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-MPI-and-OpenMP.md new file mode 100644 index 0000000000..3b8fad53e4 --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-MPI-and-OpenMP.md @@ -0,0 +1,92 @@ +Parameters described on this page: +[OMP_NTHREAD](#OMP_NTHREAD),   +[OPT__INIT_GRID_WITH_OMP](#OPT__INIT_GRID_WITH_OMP),   +[LB_INPUT__WLI_MAX](#LB_INPUT__WLI_MAX),   +[LB_INPUT__PAR_WEIGHT](#LB_INPUT__PAR_WEIGHT),   +[OPT__RECORD_LOAD_BALANCE](#OPT__RECORD_LOAD_BALANCE),   +[OPT__MINIMIZE_MPI_BARRIER](#OPT__MINIMIZE_MPI_BARRIER)   + + +Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** + + +* #### `OMP_NTHREAD`   (≥1; <1 → set to default)   [-1] + * **Description:** +Number of OpenMP threads associated with each MPI process. +When enabling MPI, the default is set to the ratio between the total number of CPU cores +and the total number of MPI processes. When disabling MPI, the default +is set to the maximum number of threads available, which can be controlled +by the environment variable `OMP_NUM_THREADS`. +Having `OMP_NTHREAD=1` is equivalent to disabling the OpenMP parallelization. +See also [[Hybrid MPI/OpenMP/GPU | MPI-and-OpenMP#hybrid-mpiopenmpgpu]] and +[[MPI Binding and Thread Affinity | MPI-and-OpenMP#mpi-binding-and-thread-affinity]]. + * **Restriction:** +Only applicable when enabling the compilation option +[[--openmp | Installation:-Option-List#--openmp]]. + + +* #### `OPT__INIT_GRID_WITH_OMP`   (0=off, 1=on)   [1] + * **Description:** +Whether or not to enable OpenMP when assigning the initial condition +of different grid patches. In can be enabled in most cases unless, +for example, the initial condition setup involves random numbers. + * **Restriction:** +Only applicable when enabling the compilation option +[[--openmp | Installation:-Option-List#--openmp]]. + + +* #### `LB_INPUT__WLI_MAX`   (≥0.0)   [0.1] + * **Description:** +Weighted load imbalancing (WLI) threshold. Patches on all levels will +be redistributed among different MPI processes when the WLI factor is +estimated to be higher than a given threshold. See +[[Performance Optimizations: Load Balancing | Performance Optimizations:-Load-Balancing]] +for details. + * **Restriction:** +Only applicable when enabling the compilation option +[[--mpi | Installation:-Option-List#--mpi]]. + + +* #### `LB_INPUT__PAR_WEIGHT`   (≥0.0)   [0.0] + * **Description:** +Load balancing weight of one particle over one cell. It is used +to improve load balancing for the simulations with particles. See +[[Performance Optimizations: Load Balancing | Performance Optimizations:-Load-Balancing]] +for details. The typical values are 1.0 ~ 2.0. + * **Restriction:** +Only applicable when enabling the compilation options +[[--mpi | Installation:-Option-List#--mpi]] and +[[--particle | Installation:-Option-List#--particle]]. + + +* #### `OPT__RECORD_LOAD_BALANCE`   (0=off, 1=on)   [1] + * **Description:** +Record the load balancing information in the log file +[[Record__LoadBalance | Simulation-Logs:-Record__LoadBalance]]. + * **Restriction:** +Only applicable when enabling the compilation option +[[--mpi | Installation:-Option-List#--mpi]]. + + +* #### `OPT__MINIMIZE_MPI_BARRIER`   (0=off, 1=on)   [0] + * **Description:** +Minimize the MPI synchronization between grid and particle routines +to improve load balancing. It can improve the performance notably, +especially for simulations with particles. + * **Restriction:** +For simulations with particles, one must enable the compilation option +[[--store_pot_ghost | Installation:-Option-List#--store_pot_ghost]] and +set [[PAR_IMPROVE_ACC | Runtime Parameters:-Particles#PAR_IMPROVE_ACC]]=1. +[[OPT__TIMING_BALANCE | Runtime Parameters:-Miscellaneous#OPT__TIMING_BALANCE]] +must be disabled. In addition, it is currently recommended to disable +[[AUTO_REDUCE_DT | Runtime Parameters:-Timestep#AUTO_REDUCE_DT]]. + + +## Remarks + + +
+ +## Links +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of MPI and OpenMP | MPI-and-OpenMP]] diff --git a/doc/wiki/Runtime-Parameters:-Miscellaneous.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Miscellaneous.md similarity index 93% rename from doc/wiki/Runtime-Parameters:-Miscellaneous.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Miscellaneous.md index 191b88d431..31fcd4c3a1 100644 --- a/doc/wiki/Runtime-Parameters:-Miscellaneous.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Miscellaneous.md @@ -50,7 +50,7 @@ Synchronize all MPI processes (by invoking `MPI_Barrier()`) before timing. It wi more accurate timing results but may also deteriorate the performance. * **Restriction:** Only applicable when enabling the compilation option -[[TIMING | Installation: Simulation-Options#TIMING]]. +[[--timing | Installation:-Option-List#--timing]]. * #### `OPT__TIMING_BALANCE`   (0=off, 1=on)   [0] @@ -60,7 +60,7 @@ all MPI processes to check load balancing. The results will be recorded in the f [[Record__Timing | Simulation-Logs:-Record__Timing]]. * **Restriction:** Only applicable when enabling the compilation option -[[TIMING | Installation: Simulation-Options#TIMING]]. +[[--timing | Installation:-Option-List#--timing]]. * #### `OPT__TIMING_MPI`   (0=off, 1=on)   [0] @@ -69,9 +69,9 @@ Record the MPI bandwidth achieved by various MPI calls in the file [[Record__TimingMPI_Rank* | Simulation-Logs:-Record__TimingMPI_Rank*]]. * **Restriction:** Only applicable when enabling both the compilation options -[[TIMING | Installation: Simulation-Options#TIMING]] +[[--timing | Installation:-Option-List#--timing]] and -[[LOAD_BALANCE | Installation: Simulation-Options#LOAD_BALANCE]]. +[[--mpi | Installation:-Option-List#--mpi]]. * #### `OPT__RECORD_NOTE`   (0=off, 1=on)   [1] @@ -102,7 +102,7 @@ Record the code performance in the file [[Record__Performance | Simulation-Logs:-Record__Performance]]. * **Restriction:** Only applicable when enabling the compilation option -[[TIMING | Installation: Simulation-Options#TIMING]]. +[[--timing | Installation:-Option-List#--timing]]. * #### `OPT__MANUAL_CONTROL`   (0=off, 1=on)   [1] @@ -184,7 +184,7 @@ Sort patches by their load-balance indices before dumping data and during restar to improve bitwise reproducibility, especially when restarting with the same number of MPI processes. * **Restriction:** -Not supported by [[SERIAL | Installation: Simulation-Options#SERIAL]]. +Not supported by [[--mpi | Installation:-Option-List#--mpi]]=false. * #### `OPT__CK_REFINE`   (0=off, 1=on)   [0] @@ -211,7 +211,7 @@ Check the conservation laws. The results will be recorded in the file * #### `OPT__CK_NORMALIZE_PASSIVE`   (0=off, 1=on)   [0] * **Description:** Check the normalization of passive scalars. Make sure to turn on -[[OPT__NORMALIZE_PASSIVE | Hydro#OPT__NORMALIZE_PASSIVE ]]. +[[OPT__NORMALIZE_PASSIVE | Runtime-Parameters:-Hydro#OPT__NORMALIZE_PASSIVE ]]. Otherwise this check will likely fail. * **Restriction:** @@ -220,8 +220,8 @@ Otherwise this check will likely fail. * **Description:** Check the data restriction (i.e., the averages of fine-grid data equal the coarse-grid data). Make sure to turn on both -[[OPT__FIXUP_RESTRICT | Hydro#OPT__FIXUP_RESTRICT]] and -[[OPT__INIT_RESTRICT | Initial-Conditions#OPT__INIT_RESTRICT]]. +[[OPT__FIXUP_RESTRICT | Runtime-Parameters:-Hydro#OPT__FIXUP_RESTRICT]] and +[[OPT__INIT_RESTRICT | Runtime-Parameters:-Initial-Conditions#OPT__INIT_RESTRICT]]. Otherwise this check will likely fail. * **Restriction:** @@ -268,7 +268,7 @@ Check the particle allocation. This is used mainly for debugging purposes. Check the consistency of the magnetic field on the patch interfaces. This is used mainly for debugging purposes. * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. +For [[--mhd | Installation:-Option-List#--mhd]] only. * #### `OPT__CK_DIVERGENCE_B`   (0=off, 1=on)   [0] @@ -276,7 +276,7 @@ For [[MHD | Installation: Simulation-Options#MHD]] only. Check the divergence-free constraint on the magnetic field. This is used mainly for debugging purposes. * **Restriction:** -For [[MHD | Installation: Simulation-Options#MHD]] only. +For [[--mhd | Installation:-Option-List#--mhd]] only. * #### `OPT__CK_INPUT_FLUID`   (0=off, 1=on)   [0] @@ -291,4 +291,4 @@ Check the input data of the fluid solver for debugging purposes.
## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md new file mode 100644 index 0000000000..71dbedb1c9 --- /dev/null +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md @@ -0,0 +1,310 @@ +Parameters described on this page: +[OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL),   +[OPT__OUTPUT_PART](#OPT__OUTPUT_PART),   +[OPT__OUTPUT_TEXT_FORMAT_FLT](#OPT__OUTPUT_TEXT_FORMAT_FLT),   +[OPT__OUTPUT_TEXT_LENGTH_INT](#OPT__OUTPUT_TEXT_LENGTH_INT),   +[OPT__OUTPUT_USER](#OPT__OUTPUT_USER),   +[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE),   +[OPT__OUTPUT_PAR_MESH](#OPT__OUTPUT_PAR_MESH),   +[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS),   +[OPT__OUTPUT_BASE](#OPT__OUTPUT_BASE),   +[OPT__OUTPUT_POT](#OPT__OUTPUT_POT),   +[OPT__OUTPUT_PAR_DENS](#OPT__OUTPUT_PAR_DENS),   +[OPT__OUTPUT_CC_MAG](#OPT__OUTPUT_CC_MAG),   +[OPT__OUTPUT_PRES](#OPT__OUTPUT_PRES),   +[OPT__OUTPUT_TEMP](#OPT__OUTPUT_TEMP),   +[OPT__OUTPUT_ENTR](#OPT__OUTPUT_ENTR),   +[OPT__OUTPUT_CS](#OPT__OUTPUT_CS),   +[OPT__OUTPUT_DIVVEL](#OPT__OUTPUT_DIVVEL),   +[OPT__OUTPUT_MACH](#OPT__OUTPUT_MACH),   +[OPT__OUTPUT_DIVMAG](#OPT__OUTPUT_DIVMAG),   +[OPT__OUTPUT_LORENTZ](#OPT__OUTPUT_LORENTZ),   +[OPT__OUTPUT_3VELOCITY](#OPT__OUTPUT_3VELOCITY),   +[OPT__OUTPUT_ENTHALPY](#OPT__OUTPUT_ENTHALPY),   +[OPT__OUTPUT_USER_FIELD](#OPT__OUTPUT_USER_FIELD),   +[OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE),   +[OPT__OUTPUT_RESTART](#OPT__OUTPUT_RESTART),   +[OUTPUT_STEP](#OUTPUT_STEP),   +[OUTPUT_DT](#OUTPUT_DT),   +[OUTPUT_WALLTIME](#OUTPUT_WALLTIME),   +[OUTPUT_WALLTIME_UNIT](#OUTPUT_WALLTIME_UNIT),   +[OUTPUT_PART_X](#OUTPUT_PART_X),   +[OUTPUT_PART_Y](#OUTPUT_PART_Y),   +[OUTPUT_PART_Z](#OUTPUT_PART_Z),   +[INIT_DUMPID](#INIT_DUMPID),   +[OUTPUT_DIR](#OUTPUT_DIR)   + + +Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** + + +* #### `OPT__OUTPUT_TOTAL`   (0=off, 1=HDF5, 2=C-binary)   [1] + * **Description:** +Output the simulation snapshots in the specified binary format (HDF5 or simple C-binary), +which will store all simulation information such as grid data, particle data, +tree structure, runtime parameters, and compilation options. These snapshots can be used for +[[restarting simulations | Running-the-Code#restarting-from-a-snapshot]]. +The snapshot filename is currently fixed to `Data_%06d`. +See also [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE) for specifying the +data dump frequency. + * **Restriction:** +`OPT__OUTPUT_TOTAL=1` is only applicable when enabling the compilation option +[[--hdf5 | Installation:-Option-List#--hdf5]]. +[[Data analysis with yt | Data-Analysis]] is currently only supported for +the HDF5 snapshots of GAMER. + + +* #### `OPT__OUTPUT_PART`   (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diagonal, 8=entire box)   [0] + * **Description:** +Output the data of a single line, slice, or entire box in the text format. +Use [OUTPUT_PART_X](#OUTPUT_PART_X), [OUTPUT_PART_Y](#OUTPUT_PART_Y), and +[OUTPUT_PART_Z](#OUTPUT_PART_Z) to specify the target coordinates. +This output option is mainly for quick inspection for simple test problems +with symmetry. Use [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL) for more general +[[data analysis with yt | Data-Analysis]]. +See also [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE) for specifying the +data dump frequency. + * **Restriction:** + + +* #### `OPT__OUTPUT_TEXT_FORMAT_FLT`   (%XX.YYe)   [%24.16e] + * **Description:** +String format of floating-point data in output text files. +Please use the scientific notation `%XX.YYe` such as `%14.6e`. +This will affect files generated by, for example, +[OPT__OUTPUT_PART](#OPT__OUTPUT_PART), +[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE)=1, and +[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). + * **Restriction:** + + +* #### `OPT__OUTPUT_TEXT_LENGTH_INT`   (≥0)   [12] + * **Description:** +String length of integer data in output text files. + * **Restriction:** + + +* #### `OPT__OUTPUT_USER`   (0=off, 1=on)   [0] + * **Description:** +Output user-specified data. Edit `src/Output/Output_Uer.cpp` +or a problem-specific function (for the latter, see +[[Add Problem Specific Functionalities | Adding-New-Simulations#vi-add-problem-specific-functionalities]]). + * **Restriction:** + + +* #### `OPT__OUTPUT_PAR_MODE`   (0=off, 1=text files, 2=C-binary files)   [0] + * **Description:** +Output particle data in either the text or binary format. +This option is mainly for debugging purposes since the simulation snapshots +(with the option [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL)) already store +particle data. + * **Restriction:** + + +* #### `OPT__OUTPUT_PAR_MESH`   (0=off, 1=on)   [1] + * **Description:** +Map mesh attributes to tracer particles and output them in the HDF5 snapshots. +Edit `Input__Par_Mesh` to specify the desired mesh attributes. An example file can be found at `example/input/Input__Par_Mesh`. + * **Restriction:** +Only applicable when enabling [[--tracer | Installation:-Option-List#--tracer]] and setting [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL) to 1. + + +* #### `OPT__OUTPUT_BASEPS`   (0=off, 1=on)   [0] + * **Description:** +Output the mass density power spectrum on the root level. + * **Restriction:** + + +* #### `OPT__OUTPUT_BASE`   (0=off, 1=on)   [0] + * **Description:** +Only output the base-level (i.e., root level) data for +[OPT__OUTPUT_PART](#OPT__OUTPUT_PART). + * **Restriction:** + + +* #### `OPT__OUTPUT_POT`   (0=off, 1=on)   [1] + * **Description:** +Output the gravitational potential data on grids. + * **Restriction:** + + +* #### `OPT__OUTPUT_PAR_DENS`   (0=off, 1=particle mass density, 2=total mass density)   [0] + * **Description:** +Store the particle or total mass density on grids in +the simulation snapshots. The particle interpolation scheme is set by +[[PAR_INTERP | Runtime-Parameters:-Particles#PAR_INTERP ]]. + * **Restriction:** +Only applicable when enabling [OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL). + + +* #### `OPT__OUTPUT_CC_MAG`   (0=off, 1=on)   [1] + * **Description:** +Output the cell-centered magnetic field (**mandatory for yt analysis**). + * **Restriction:** +For [[--mhd | Installation:-Option-List#--mhd]] only. + + +* #### `OPT__OUTPUT_PRES`   (0=off, 1=on)   [0] + * **Description:** +Output the gas pressure (or gas + cosmic-ray pressure when enabling +[[--cosmic_ray | Installation:-Option-List#--cosmic_ray]]) on grids. +Magnetic pressure is always excluded. + * **Restriction:** + + +* #### `OPT__OUTPUT_TEMP`   (0=off, 1=on)   [0 for HD, 1 for SRHD] + * **Description:** +Output the gas temperature on grids. + * **Restriction:** + + +* #### `OPT__OUTPUT_ENTR`   (0=off, 1=on)   [0] + * **Description:** +Output the gas entropy on grids. + * **Restriction:** +Mainly used by the gamma-law EoS. + + +* #### `OPT__OUTPUT_CS`   (0=off, 1=on)   [0] + * **Description:** +Output the sound speed on grids. + * **Restriction:** + + +* #### `OPT__OUTPUT_DIVVEL`   (0=off, 1=on)   [0] + * **Description:** +Output the divergence of gas velocity on grids. + * **Restriction:** + + +* #### `OPT__OUTPUT_MACH`   (0=off, 1=on)   [0] + * **Description:** +Output the Mach number on grids. + * **Restriction:** + + +* #### `OPT__OUTPUT_DIVMAG`   (0=off, 1=on)   [0] + * **Description:** +Output $|\nabla \cdot B| \Delta h / |B|$, where $B$ is the magnetic field +and $\Delta h$ is cell width. + * **Restriction:** +For [[--mhd | Installation:-Option-List#--mhd]] only. + + +* #### `OPT__OUTPUT_LORENTZ`   (0=off, 1=on)   [0] + * **Description:** +Output the SRHD Lorentz factor on grids. + * **Restriction:** +For [[--srhd | Installation:-Option-List#--srhd]] only. + + +* #### `OPT__OUTPUT_3VELOCITY`   (0=off, 1=on)   [0] + * **Description:** +Output the SRHD three-velocity on grids. + * **Restriction:** +For [[--srhd | Installation:-Option-List#--srhd]] only. + + +* #### `OPT__OUTPUT_ENTHALPY`   (0=off, 1=on)   [1] + * **Description:** +Output the SRHD reduced enthalpy on grids. + * **Restriction:** +For [[--srhd | Installation:-Option-List#--srhd]] only. + + +* #### `OPT__OUTPUT_MODE`   (1=const step, 2=const dt, 3=dump table)   [none] + * **Description:** +Choose the data output frequency. + * `1`: Every [OUTPUT_STEP](#OUTPUT_STEP) root-level step + * `2`: Every [OUTPUT_DT](#OUTPUT_DT) time interval + * `3`: According to the dump timetable [[Input__DumpTable | Runtime-Parameters:-Input__DumpTable]] + * **Restriction:** +Must enable at least one of the output options +[OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL), +[OPT__OUTPUT_PART](#OPT__OUTPUT_PART), +[OPT__OUTPUT_USER](#OPT__OUTPUT_USER), +[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE), and +[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). + + +* #### `OPT__OUTPUT_RESTART`   (0=off, 1=on)   [0] + * **Description:** +Output a snapshot immediately after restarting a simulation. It can be useful +if some physical quantities change during restart (e.g., new particles are added). + * **Restriction:** + + +* #### `OUTPUT_STEP`   (>0)   [none] + * **Description:** +See [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE)=1. + * **Restriction:** + + +* #### `OUTPUT_DT`   (>0.0)   [none] + * **Description:** +See [OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE)=2. + * **Restriction:** + + +* #### `OUTPUT_WALLTIME`   (≤ 0.0=off)   [-1.0] + * **Description:** +Output data every `OUTPUT_WALLTIME` wall-clock time, the unit of which is set by +[OUTPUT_WALLTIME_UNIT](#OUTPUT_WALLTIME_UNIT). Note that it is independent of +[OPT__OUTPUT_MODE](#OPT__OUTPUT_MODE). + * **Restriction:** +Must enable at least one of the output options +[OPT__OUTPUT_TOTAL](#OPT__OUTPUT_TOTAL), +[OPT__OUTPUT_PART](#OPT__OUTPUT_PART), +[OPT__OUTPUT_USER](#OPT__OUTPUT_USER), +[OPT__OUTPUT_PAR_MODE](#OPT__OUTPUT_PAR_MODE), and +[OPT__OUTPUT_BASEPS](#OPT__OUTPUT_BASEPS). + + +* #### `OUTPUT_WALLTIME_UNIT`   (0=second, 1=minute, 2=hour, 3=day)   [0] + * **Description:** +Unit of [OUTPUT_WALLTIME](#OUTPUT_WALLTIME). + * **Restriction:** + + +* #### `OUTPUT_PART_X`   (within the simulation domain)   [-1.0] + * **Description:** +x coordinate for [OPT__OUTPUT_PART](#OPT__OUTPUT_PART). + * **Restriction:** + + +* #### `OUTPUT_PART_Y`   (within the simulation domain)   [-1.0] + * **Description:** +y coordinate for [OPT__OUTPUT_PART](#OPT__OUTPUT_PART). + * **Restriction:** + + +* #### `OUTPUT_PART_Z`   (within the simulation domain)   [-1.0] + * **Description:** +z coordinate for [OPT__OUTPUT_PART](#OPT__OUTPUT_PART). + * **Restriction:** + + +* #### `INIT_DUMPID`   (≥0; <0 → set to default)   [-1] + * **Description:** +Set the first data dump ID. Note that it is unnecessary to set this value +in most cases, even when restarting simulations, unless you want to overwrite +the default value. + * **Restriction:** + + +* #### `OUTPUT_DIR`   (string)   [.] + * **Description:** +Specify the output data directory. In most cases, it is unnecessary to set this value +unless you want to overwrite the default directory. + * **Restriction:** +The string length should be shorter than `MAX_STRING-100`. + + +## Remarks + + +
+ +## Links +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Outputs | Outputs]] diff --git a/doc/wiki/Particles.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Particles.md similarity index 79% rename from doc/wiki/Particles.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Particles.md index 2dab1b1462..ed6a212ba0 100644 --- a/doc/wiki/Particles.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Particles.md @@ -1,21 +1,9 @@ - -## Compilation Options - -Related options: -[[PARTICLE | Installation: Simulation-Options#PARTICLE]],   -[[FLOAT8_PAR | Installation: Simulation-Options#FLOAT8_PAR]],   -[[STORE_PAR_ACC | Installation: Simulation-Options#STORE_PAR_ACC]],   -[[STAR_FORMATION | Installation: Simulation-Options#STAR_FORMATION]],   -[[PAR_NATT_USER | Installation: Simulation-Options#PAR_NATT_USER]]   - - -## Runtime Parameters - Parameters described on this page: [PAR_INIT](#PAR_INIT),   [PAR_NPAR](#PAR_NPAR),   [PAR_IC_FORMAT](#PAR_IC_FORMAT),   [PAR_IC_FLOAT8](#PAR_IC_FLOAT8),   +[PAR_IC_INT8](#PAR_IC_INT8),   [PAR_IC_MASS](#PAR_IC_MASS),   [PAR_IC_TYPE](#PAR_IC_TYPE),   [PAR_INTERP](#PAR_INTERP),   @@ -27,16 +15,6 @@ Parameters described on this page: [PAR_REMOVE_CELL](#PAR_REMOVE_CELL),   [OPT__FREEZE_PAR](#OPT__FREEZE_PAR)   -Other related parameters: -[[DT__PARVEL | Runtime Parameters:-Timestep#DT__PARVEL]],   -[[DT__PARVEL_MAX | Runtime Parameters:-Timestep#DT__PARVEL_MAX ]],   -[[DT__PARACC | Runtime Parameters:-Timestep#DT__PARACC]],   -[[OPT__FLAG_NPAR_PATCH | Runtime Parameters:-Refinement#OPT__FLAG_NPAR_PATCH]],   -[[OPT__FLAG_NPAR_CELL | Runtime Parameters:-Refinement#OPT__FLAG_NPAR_CELL]],   -[[OPT__FLAG_PAR_MASS_CELL | Runtime Parameters:-Refinement#OPT__FLAG_PAR_MASS_CELL]],   -[[OPT__PARTICLE_COUNT | Runtime Parameters:-Refinement#OPT__PARTICLE_COUNT]],   -[[LB_INPUT__PAR_WEIGHT | MPI and OpenMP#LB_INPUT__PAR_WEIGHT]],   -[[OPT__CK_PARTICLE | Runtime Parameters:-Miscellaneous#OPT__CK_PARTICLE]]   Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** @@ -52,7 +30,7 @@ Initialization methods for particles. [[Setting IC from Files — Particles | Initial Conditions#IC-File-Particles]]. * **Restriction:** It will be automatically reset to `PAR_INIT=2` when adopting -[[OPT__INIT | Initial Conditions#OPT__INIT ]]=2. +[[OPT__INIT | Runtime-Parameters:-Initial-Conditions#OPT__INIT]]=2. * #### `PAR_NPAR`   (≥0)   [none] @@ -76,11 +54,17 @@ for details. * **Restriction:** -* #### `PAR_IC_FLOAT8`   (<0: same as [[FLOAT8_PAR | Installation:-Simulation Options#FLOAT8_PAR]], 0=single precision, 1=double precision)   [-1] +* #### `PAR_IC_FLOAT8`   (<0: same as [[--double_par | Installation:-Option-List#--double_par]], 0=single precision, 1=double precision)   [-1] * **Description:** Floating-point precision of the particle initial condition file `PAR_IC`. * **Restriction:** + +* #### `PAR_IC_INT8`   (<0: same as [[--long_par | Installation:-Option-List#--long_par]], 0=32-bit integer (`int`), 1=64-bit integer (`long`))   [-1] + * **Description:** +Integer width of the particle initial condition file `PAR_IC`. + * **Restriction:** + * #### `PAR_IC_MASS`   (≥0.0; <0.0 → off)   [-1.0] * **Description:** @@ -136,7 +120,7 @@ and is generally not recommended. Improve the force accuracy for particles close to the patch boundaries. * **Restriction:** Only applicable when adopting [PAR_INTERP](#PAR_INTERP)=2/3 and -enabling the compilation option [[STORE_POT_GHOST | Installation: Simulation-Options#STORE_POT_GHOST]]. +enabling the compilation option [[--store_pot_ghost | Installation:-Option-List#--store_pot_ghost]]. * #### `PAR_PREDICT_POS`   (0=off, 1=on)   [1] @@ -157,7 +141,7 @@ box. The default value is 1.0 ~ 2.0 depending on the adopted particle interpolation scheme ([PAR_INTERP](#PAR_INTERP)). * **Restriction:** Only applicable when adopting the isolated gravity boundary condition -(i.e., [[OPT__BC_POT | Gravity#OPT__BC_POT]]=2). +(i.e., [[OPT__BC_POT | Runtime-Parameters:-Gravity#OPT__BC_POT]]=2). * #### `OPT__FREEZE_PAR`   (0=off, 1=on)   [0] @@ -174,3 +158,4 @@ It can be useful for evolving fluid in a static gravitational potential of parti ## Links * [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Particles | Particles]] diff --git a/doc/wiki/Runtime-Parameters:-Refinement.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Refinement.md similarity index 75% rename from doc/wiki/Runtime-Parameters:-Refinement.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Refinement.md index 0965efcb5a..9c8ff3f3b8 100644 --- a/doc/wiki/Runtime-Parameters:-Refinement.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Refinement.md @@ -5,7 +5,7 @@ It only takes three steps to enable AMR: * Set [MAX_LEVEL](#MAX_LEVEL) * Turn on at least one of the refinement criteria `OPT__FLAG_*` * Edit the corresponding input file(s) -[[Input__Flag_* | Runtime-Parameters#input__flag_]] +[[Input__Flag_* | Runtime-Parameters:-Input__Flag_*]] to specify the refinement thresholds See the descriptions of various refinement criteria `OPT__FLAG_*` @@ -15,8 +15,8 @@ given on this page for details. ## Compilation Options Related options: -[[NLEVEL | Installation: Simulation-Options#NLEVEL]],   -[[MAX_PATCH | Installation: Simulation-Options#MAX_PATCH]]   +[[--nlevel | Installation:-Option-List#--nlevel]],   +[[--max_patch | Installation:-Option-List#--max_patch]]   ## Runtime Parameters @@ -46,6 +46,14 @@ Parameters described on this page: [OPT__FLAG_USER](#OPT__FLAG_USER),   [OPT__FLAG_USER_NUM](#OPT__FLAG_USER_NUM),   [OPT__FLAG_REGION](#OPT__FLAG_REGION),   +[OPT__FLAG_ANGULAR](#OPT__FLAG_ANGULAR),   +[FLAG_ANGULAR_CEN_X](#FLAG_ANGULAR_CEN_X),   +[FLAG_ANGULAR_CEN_Y](#FLAG_ANGULAR_CEN_Y),   +[FLAG_ANGULAR_CEN_Z](#FLAG_ANGULAR_CEN_Z),   +[OPT__FLAG_RADIAL](#OPT__FLAG_RADIAL),   +[FLAG_RADIAL_CEN_X](#FLAG_RADIAL_CEN_X),   +[FLAG_RADIAL_CEN_Y](#FLAG_RADIAL_CEN_Y),   +[FLAG_RADIAL_CEN_Z](#FLAG_RADIAL_CEN_Z),   [OPT__FLAG_NPAR_PATCH](#OPT__FLAG_NPAR_PATCH),   [OPT__FLAG_NPAR_CELL](#OPT__FLAG_NPAR_CELL),   [OPT__FLAG_PAR_MASS_CELL](#OPT__FLAG_PAR_MASS_CELL),   @@ -56,8 +64,8 @@ Parameters described on this page: [OPT__MEMORY_POOL](#OPT__MEMORY_POOL)   Other related parameters: -[[OPT__UM_IC_DOWNGRADE | Initial Conditions#OPT__UM_IC_DOWNGRADE]],   -[[OPT__UM_IC_REFINE | Initial Conditions#OPT__UM_IC_REFINE]],   +[[OPT__UM_IC_DOWNGRADE | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_DOWNGRADE]],   +[[OPT__UM_IC_REFINE | Runtime-Parameters:-Initial-Conditions#OPT__UM_IC_REFINE]],   [[OPT__CK_REFINE | Runtime Parameters:-Miscellaneous#OPT__CK_REFINE]],   [[Interpolation Schemes | Runtime Parameters:-Interpolation]]   @@ -81,7 +89,7 @@ Number of new AMR levels to be created at once during refinement. * **Restriction:** -* #### `FLAG_BUFFER_SIZE`   (0 ≤ input ≤ [[PATCH_SIZE | Installation: Simulation-Options#PATCH_SIZE]])   [ [[PATCH_SIZE | Installation: Simulation-Options#PATCH_SIZE]] ] +* #### `FLAG_BUFFER_SIZE`   (0 ≤ input ≤ [[--patch_size | Installation:-Option-List#--patch_size]])   [ [[--patch_size | Installation:-Option-List#--patch_size]] ] * **Description:** Number of flag buffers (denoted as Nbuf). When checking refinement, a patch is flagged for refinement if any of @@ -106,7 +114,7 @@ which can be safely set to smaller values. * **Restriction:** -* #### `FLAG_BUFFER_SIZE_MAXM1_LV`   (0 ≤ input ≤ [[PATCH_SIZE | Installation: Simulation-Options#PATCH_SIZE]]; <0 → set to default)   [ [REGRID_COUNT](#REGRID_COUNT) ] +* #### `FLAG_BUFFER_SIZE_MAXM1_LV`   (0 ≤ input ≤ [[--patch_size | Installation:-Option-List#--patch_size]]; <0 → set to default)   [ [REGRID_COUNT](#REGRID_COUNT) ] * **Description:** Nbuf on level [MAX_LEVEL](#MAX_LEVEL)-1. See [FLAG_BUFFER_SIZE](#FLAG_BUFFER_SIZE) for details. @@ -115,21 +123,21 @@ for better performance. * **Restriction:** -* #### `FLAG_BUFFER_SIZE_MAXM2_LV`   (0 ≤ input ≤ [[PATCH_SIZE | Installation: Simulation-Options#PATCH_SIZE]]; <0 → set to default)   [depend] +* #### `FLAG_BUFFER_SIZE_MAXM2_LV`   (0 ≤ input ≤ [[--patch_size | Installation:-Option-List#--patch_size]]; <0 → set to default)   [depend] * **Description:** Nbuf on level [MAX_LEVEL](#MAX_LEVEL)-2. See [FLAG_BUFFER_SIZE](#FLAG_BUFFER_SIZE) for details. The default value -depends on both [[PATCH_SIZE | Installation: Simulation-Options#PATCH_SIZE]] and +depends on both [[--patch_size | Installation:-Option-List#--patch_size]] and [FLAG_BUFFER_SIZE_MAXM1_LV](#FLAG_BUFFER_SIZE_MAXM1_LV). * **Restriction:** -* #### `MAX_LEVEL`   (0 ≤ input < [[NLEVEL | Installation: Simulation-Options#NLEVEL]])   [ [[NLEVEL | Installation: Simulation-Options#NLEVEL]]-1 ] +* #### `MAX_LEVEL`   (0 ≤ input < [[--nlevel | Installation:-Option-List#--nlevel]])   [ [[--nlevel | Installation:-Option-List#--nlevel]]-1 ] * **Description:** Maximum allowed AMR level. Do not confuse with the compilation option -[[NLEVEL | Installation: Simulation-Options#NLEVEL]]. One can regard +[[--nlevel | Installation:-Option-List#--nlevel]]. One can regard `MAX_LEVEL` as a runtime refinement criterion that simply forbids -creating any patch above that level, and `NLEVEL-1` is the upper +creating any patch above that level, and `--nlevel - 1` is the upper bound of `MAX_LEVEL`. * **Restriction:** @@ -138,7 +146,7 @@ bound of `MAX_LEVEL`. * **Description:** Refinement criterion: gas mass density. Specify the refinement thresholds on different levels in the input file `Input__Flag_Rho` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_Rho8` (must rename it as `Input__Flag_Rho` to actually use it). By setting the density threshold ratio between adjacent @@ -159,7 +167,7 @@ width along ξ on level l, and ηl is the refinement threshold on level l. Specify the refinement thresholds on different levels in the input file `Input__Flag_RhoGradient` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_RhoGradient`. * **Restriction:** @@ -170,7 +178,7 @@ Refinement criterion: gas pressure gradient. See [OPT__FLAG_RHO_GRADIENT](#OPT__FLAG_RHO_GRADIENT) for the definition of normalized slope. Specify the refinement thresholds on different levels in the input file `Input__Flag_PresGradient` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_PresGradient`. * **Restriction:** @@ -181,10 +189,10 @@ Refinement criterion: Lorentz factor gradient. See [OPT__FLAG_RHO_GRADIENT](#OPT__FLAG_RHO_GRADIENT) for the definition of normalized slope. Specify the refinement thresholds on different levels in the input file `Input__Flag_LrtzGradient` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_LrtzGradient`. * **Restriction:** -Must compile with [[SRHD | Installation: Simulation-Options#SRHD]]. +Must compile with [[--srhd | Installation:-Option-List#--srhd]]. * #### `OPT__FLAG_VORTICITY`   (0=off, 1=on)   [0] @@ -197,7 +205,7 @@ where v is gas velocity, Δξl is the cell width along ξ on level l, and ηl is the refinement threshold on level l. Specify the refinement thresholds on different levels in the input file `Input__Flag_Vorticity` -with the [[specific format | Runtime Parameters#input__flag_]]. +with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_Vorticity`. * **Restriction:** @@ -209,10 +217,10 @@ is resolved by at least N cells. Specifically, a cell on level l will be flagged for refinement if its estimated Jeans length λJ satisfies λJ ≡ (πγP/Gρ2)1/2 < NlΔξl, -where γ is adiabatic index ([[GAMMA | Hydro#GAMMA]]), P is gas pressure, ρ is gas mass density, G is gravitational constant, Δξl is the cell width along ξ on level l, and Nl is the refinement threshold on level l. +where γ is adiabatic index ([[GAMMA | Runtime-Parameters:-Hydro#GAMMA]]), P is gas pressure, ρ is gas mass density, G is gravitational constant, Δξl is the cell width along ξ on level l, and Nl is the refinement threshold on level l. Specify the refinement thresholds on different levels in the input file `Input__Flag_Jeans` -with the [[specific format | Runtime Parameters#input__flag_]]. +with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_Jeans`. Recommended values: ≥4. * **Restriction:** @@ -228,20 +236,20 @@ where B is the magnetic field, Δξl is the cell width along ξ on level l, and ηl is the refinement threshold on level l. Specify the refinement thresholds on different levels in the input file `Input__Flag_Current` -with the [[specific format | Runtime Parameters#input__flag_]]. +with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_Current`. * **Restriction:** -Must compile with [[MHD | Installation: Simulation-Options#MHD]]. +Must compile with [[--mhd | Installation:-Option-List#--mhd]]. * #### `OPT__FLAG_CRAY`   (0=off, 1=on)   [0] * **Description:** Refinement criterion: cosmic-ray energy density. Specify the refinement thresholds on different levels in the input file `Input__Flag_CRay` -with the [[specific format | Runtime Parameters#input__flag_]]. +with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_CRay`. * **Restriction:** -Must compile with [[COSMIC_RAY | Installation: Simulation-Options#COSMIC_RAY]]. +Must compile with [[--cosmic_ray | Installation:-Option-List#--cosmic_ray]]. * #### `OPT__FLAG_LOHNER_DENS`   (0=off, 1=on)   [0] @@ -285,7 +293,7 @@ See [OPT__FLAG_LOHNER_FORM](#OPT__FLAG_LOHNER_FORM) for details. Refinement criterion: Loehner's error estimator on cosmic-ray energy density. See [OPT__FLAG_LOHNER_FORM](#OPT__FLAG_LOHNER_FORM) for details. * **Restriction:** -Must compile with [[COSMIC_RAY | Installation: Simulation-Options#COSMIC_RAY]]. +Must compile with [[--cosmic_ray | Installation:-Option-List#--cosmic_ray]]. * #### `OPT__FLAG_LOHNER_FORM`   (1=FLASH-ghost1, 2=FLASH-ghost2, 3=form-invariant-ghost1, 4=form-invariant-ghost2)   [2] @@ -305,7 +313,7 @@ derivatives, respectively. Specify the refinement thresholds on different levels in the input file `Input__Flag_Lohner` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_Lohner__FLASH2` (must rename it as `Input__Flag_Lohner` to actually use it). @@ -343,7 +351,7 @@ or a problem-specific function (for the latter, see [[Add Problem Specific Functionalities | Adding-New-Simulations#vi-add-problem-specific-functionalities]]). Specify the refinement thresholds on different levels in the input file `Input__Flag_User` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_User`. See also [OPT__FLAG_USER_NUM](#OPT__FLAG_USER_NUM). * **Restriction:** @@ -363,6 +371,72 @@ any refinement. Instead, it simply forbids refinement outside the specified regions. * **Restriction:** + +* #### `OPT__FLAG_ANGULAR`   (0=off, 1=on)   [0] + * **Description:** +Refinement criterion: angular resolution with respect to the specified center +([FLAG_ANGULAR_CEN_X](#FLAG_ANGULAR_CEN_X), [FLAG_ANGULAR_CEN_Y](#FLAG_ANGULAR_CEN_Y), +[FLAG_ANGULAR_CEN_Z](#FLAG_ANGULAR_CEN_Z)). Cells located at a distance greater than +`AngRes_Max_R` are not allowed to exceed the angular resolution `AngRes_Max` (in radians). +Cells are refined if their angular resolution is lower than `AngRes_Min` (in radians). Set +`AngRes_Max < 0.0` or `AngRes_Min < 0.0` to disable the respective criterion. +Specify the refinement thresholds `AngRes_Max, AngRes_Min, AngRes_Max_R` +on different levels in the input file `Input__Flag_AngularResolution` +with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. +An example file can be found at `example/input/Input__Flag_AngularResolution`. + * **Restriction:** +`AngRes_Max` has higher priority over `AngRes_Min`. +It is generally recommended to set `AngRes_Max < 0.5*AngRes_Min`. + + +* #### `FLAG_ANGULAR_CEN_X`   (≥0.0; <0.0 → set to default)   [box center] + * **Description:** +x-coordinate of the center for calculating the angular resolution for [OPT__FLAG_ANGULAR](#OPT__FLAG_ANGULAR) +refinement criterion. + * **Restriction:** + + +* #### `FLAG_ANGULAR_CEN_Y`   (≥0.0; <0.0 → set to default)   [box center] + * **Description:** +See [FLAG_ANGULAR_CEN_X](#FLAG_ANGULAR_CEN_X). + * **Restriction:** + + +* #### `FLAG_ANGULAR_CEN_Z`   (≥0.0; <0.0 → set to default)   [box center] + * **Description:** +See [FLAG_ANGULAR_CEN_X](#FLAG_ANGULAR_CEN_X). + * **Restriction:** + + +* #### `OPT__FLAG_RADIAL`   (0=off, 1=on)   [0] + * **Description:** +Refinement criterion: distance to the specified center ([FLAG_RADIAL_CEN_X](#FLAG_RADIAL_CEN_X), +[FLAG_RADIAL_CEN_Y](#FLAG_RADIAL_CEN_Y), [FLAG_RADIAL_CEN_Z](#FLAG_RADIAL_CEN_Z)). +Cells are refined if they are located at a distance smaller than `Refine_Rad`. +The value of `Refine_Rad` can be specified in the input file `Input__Flag_RadialResolution` +with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. +An example file can be found at `example/input/Input__Flag_RadialResolution`. + * **Restriction:** + + +* #### `FLAG_RADIAL_CEN_X`   (≥0.0; <0.0 → set to default)   [box center] + * **Description:** +x-coordinate of the center for calculating the radial resolution for [OPT__FLAG_RADIAL](#OPT__FLAG_RADIAL) +refinement criterion. + * **Restriction:** + + +* #### `FLAG_RADIAL_CEN_Y`   (≥0.0; <0.0 → set to default)   [box center] + * **Description:** +See [FLAG_RADIAL_CEN_X](#FLAG_RADIAL_CEN_X). + * **Restriction:** + + +* #### `FLAG_RADIAL_CEN_Z`   (≥0.0; <0.0 → set to default)   [box center] + * **Description:** +See [FLAG_RADIAL_CEN_X](#FLAG_RADIAL_CEN_X). + * **Restriction:** + * #### `OPT__FLAG_NPAR_PATCH`   (0=off, 1=itself, 2=itself+siblings)   [0] * **Description:** @@ -372,7 +446,7 @@ given threshold are flagged for refinement. For `OPT__FLAG_NPAR_PATCH=2`, not only patches with excessive numbers of particles but also their 26 siblings are flagged for refinement. Specify the refinement thresholds on different levels in the input file `Input__Flag_NParPatch` with the -[[specific format | Runtime Parameters#input__flag_]]. +[[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_NParPatch`. Note that the flag buffers (i.e., [FLAG_BUFFER_SIZE](#FLAG_BUFFER_SIZE), @@ -387,7 +461,7 @@ Currently always includes tracer particles. * **Description:** Refinement criterion: number of particles in a cell. Specify the refinement thresholds on different levels in the input file -`Input__Flag_NParCell` with the [[specific format | Runtime Parameters#input__flag_]]. +`Input__Flag_NParCell` with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_NParCell`. * **Restriction:** Currently always excludes tracer particles. @@ -397,7 +471,7 @@ Currently always excludes tracer particles. * **Description:** Refinement criterion: total particle mass in a cell. Specify the refinement thresholds on different levels in the input file -`Input__Flag_ParMassCell` with the [[specific format | Runtime Parameters#input__flag_]]. +`Input__Flag_ParMassCell` with the [[specific format | Runtime-Parameters:-Input__Flag_*]]. An example file can be found at `example/input/Input__Flag_ParMassCell`. * **Restriction:** @@ -427,7 +501,7 @@ Record the number of particles on each level in the log file Reuse allocated patch memory to reduce memory fragmentation. For `OPT__REUSE_MEMORY=1`, the code will still deallocate patch memory when redistributing all patches for load balancing -(see [[LB_INPUT__WLI_MAX | MPI and OpenMP#LB_INPUT__WLI_MAX]]). +(see [[LB_INPUT__WLI_MAX | Runtime-Parameters:-MPI-and-OpenMP#LB_INPUT__WLI_MAX]]). In comparison, for `OPT__REUSE_MEMORY=2`, the code will not deallocate patch memory during the entire simulation. Note that this option will not preallocate any patches unless [OPT__MEMORY_POOL](#OPT__MEMORY_POOL) @@ -439,7 +513,7 @@ is enabled. * **Description:** Preallocate patches as a memory pool to reduce memory fragmentation. One must specify the numbers of patches to be preallocated in the -input file [[Input__MemoryPool | Runtime Parameters#input__memorypool]] +input file [[Input__MemoryPool | Runtime-Parameters:-Input__MemoryPool]] (check the link for details). * **Restriction:** Only applicable when adopting [OPT__REUSE_MEMORY](#OPT__REUSE_MEMORY)=1/2. @@ -449,7 +523,7 @@ Only applicable when adopting [OPT__REUSE_MEMORY](#OPT__REUSE_MEMORY)=1/2. ### Potential outside the isolated boundaries When adopting the isolated boundary conditions for gravity (i.e., -[[OPT__BC_POT | Gravity#OPT__BC_POT]]=2), the ghost zones of +[[OPT__BC_POT | Runtime-Parameters:-Gravity#OPT__BC_POT]]=2), the ghost zones of gravitational potential outside the simulation domain are currently filled out by extrapolation. @@ -457,4 +531,4 @@ filled out by extrapolation.
## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] diff --git a/doc/wiki/Star-Formation.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Star-Formation.md similarity index 68% rename from doc/wiki/Star-Formation.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Star-Formation.md index 9b5125e784..51ce0d8f55 100644 --- a/doc/wiki/Star-Formation.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Star-Formation.md @@ -1,16 +1,13 @@ -TBF. - -## Compilation Options - -Related options: - - -## Runtime Parameters - Parameters described on this page: -[](#),   +[SF_CREATE_STAR_SCHEME](#SF_CREATE_STAR_SCHEME),   +[SF_CREATE_STAR_RSEED](#SF_CREATE_STAR_RSEED),   +[SF_CREATE_STAR_DET_RANDOM](#SF_CREATE_STAR_DET_RANDOM),   +[SF_CREATE_STAR_MIN_LEVEL](#SF_CREATE_STAR_MIN_LEVEL),   +[SF_CREATE_STAR_GAS_DENS](#SF_CREATE_STAR_GAS_DENS),   +[SF_CREATE_STAR_MASS_EFF](#SF_CREATE_STAR_MASS_EFF),   +[SF_CREATE_STAR_MIN_STAR_MASS](#SF_CREATE_STAR_MIN_STAR_MASS),   +[SF_CREATE_STAR_MAX_STAR_MFRAC](#SF_CREATE_STAR_MAX_STAR_MFRAC),   -Other related parameters: Parameters below are shown in the format:   **`Name`   (Valid Values)   [Default Value]** @@ -55,10 +52,12 @@ Parameters below are shown in the format:   **`Name`   (Valid Values) * **Restriction:** + ## Remarks
## Links -* [[Main page of Runtime Parameters | Runtime Parameters]] \ No newline at end of file +* [[Main page of Runtime Parameters | Runtime Parameters]] +* [[Main page of Star Formation | Star-Formation]] diff --git a/doc/wiki/Runtime-Parameters:-Timestep.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Timestep.md similarity index 96% rename from doc/wiki/Runtime-Parameters:-Timestep.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Timestep.md index 69047a1173..ba8000e787 100644 --- a/doc/wiki/Runtime-Parameters:-Timestep.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Timestep.md @@ -52,7 +52,7 @@ too large time-steps on lower levels. * **Description:** Courant–Friedrichs–Lewy (CFL) safety factor for the hydrodynamic solver. The default value and stable regime depend on the adopted -[[fluid scheme | Installation:-Simulation-Options#FLU_SCHEME]]. +[[fluid scheme | Installation:-Option-List#--flu_scheme]]. See Section 2.6, Eqs. [1-2] in the [GAMER-2 code paper](https://arxiv.org/abs/1712.07070) for the exact formulae. * **Restriction:** @@ -72,7 +72,7 @@ Using the speed of light as the maximum information propagation speed for determ in special relativistic hydrodynamic simulations. * **Restriction:** Only applicable when adopting the compilation option -[[SRHD | Installation:-Simulation-Options#SRHD]]. +[[--srhd | Installation:-Option-List#--srhd]]. * #### `DT__GRAVITY`   (≥0.0; <0.0 → set to default)   [-1.0] @@ -106,7 +106,7 @@ See Section 2.6, Eq. [3] in the [GAMER-2 code paper](https://arxiv.org/abs/1712. for the exact formula. * **Restriction:** Only applicable when adopting the compilation option -[[STORE_PAR_ACC | Installation:-Simulation-Options#STORE_PAR_ACC]]. +[[--store_par_acc | Installation:-Option-List#--store_par_acc]]. * #### `DT__CR_DIFFUSION`   (≥0.0)   [0.3] @@ -114,7 +114,7 @@ Only applicable when adopting the compilation option CFL safety factor for cosmic-ray diffusion. * **Restriction:** Only applicable when adopting the compilation option -[[CR_DIFFUSION | Installation:-Simulation-Options#CR_DIFFUSION]]. +[[--cr_diffusion | Installation:-Option-List#--cr_diffusion]]. * #### `DT__MAX_DELTA_A`   (≥0.0)   [0.01] @@ -123,7 +123,7 @@ Maximum allowed fraction of increase in the cosmic scale factor a. Specifically, it enforces Δa ≤ `DT__MAX_DELTA_A` ⋅ a. * **Restriction:** Only applicable when adopting the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. * #### `DT__SYNC_PARENT_LV`   (≥0.0)   [0.1] @@ -172,7 +172,7 @@ Record the timesteps set by various constraints in the file * **Description:** Automatically reduce timestep by a factor of [AUTO_REDUCE_DT_FACTOR](#AUTO_REDUCE_DT_FACTOR), -[[MINMOD_COEFF | Hydro#MINMOD_COEFF]] by a factor of +[[MINMOD_COEFF | Runtime-Parameters:-Hydro#MINMOD_COEFF]] by a factor of [AUTO_REDUCE_MINMOD_FACTOR](#AUTO_REDUCE_MINMOD_FACTOR), and [[INT_MONO_COEFF | Runtime-Parameters:-Interpolation#INT_MONO_COEFF]] by a factor of diff --git a/doc/wiki/Runtime-Parameters:-Units.md b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Units.md similarity index 87% rename from doc/wiki/Runtime-Parameters:-Units.md rename to doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Units.md index 39cb19d03b..a659156a23 100644 --- a/doc/wiki/Runtime-Parameters:-Units.md +++ b/doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Units.md @@ -2,7 +2,7 @@ ## Compilation Options Related options: -[[COMOVING | Installation:-Simulation-Options#COMOVING]]   +[[--comoving | Installation:-Option-List#--comoving]]   ## Runtime Parameters @@ -15,7 +15,7 @@ Parameters described on this page: [UNIT_D](#UNIT_D)   Other related parameters: -[[NEWTON_G| Gravity#NEWTON_G]],   +[[NEWTON_G| Runtime-Parameters:-Gravity#NEWTON_G]],   [[ELBDM_MASS | Wave-Dark-Matter#ELBDM_MASS]],   [[ELBDM_PLANCK_CONST | Wave-Dark-Matter#ELBDM_PLANCK_CONST]]   @@ -26,12 +26,12 @@ Parameters below are shown in the format:   **`Name`   (Valid Values) * **Description:** Enable code units. One must also set exactly *three* units among [UNIT_L](#UNIT_L), [UNIT_M](#UNIT_M), [UNIT_T](#UNIT_T), [UNIT_V](#UNIT_V), [UNIT_D](#UNIT_D) -(unless the compilation option [[COMOVING | Installation:-Simulation-Options#COMOVING]] +(unless the compilation option [[--comoving | Installation:-Option-List#--comoving]] is adopted; see [Units in Cosmological Simulations](#units-in-cosmological-simulations) for details). See also [Unit Consistency](#unit-consistency). * **Restriction:** It will be turned on automatically when enabling the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. * #### `UNIT_L`   (>0.0; ≤0.0 → set by other units)   [none] @@ -39,7 +39,7 @@ It will be turned on automatically when enabling the compilation option Length unit in CGS. * **Restriction:** It will be overwritten when enabling the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. See [Units in Cosmological Simulations](#units-in-cosmological-simulations) for details. @@ -49,7 +49,7 @@ for details. Mass unit in CGS. * **Restriction:** It will be overwritten when enabling the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. See [Units in Cosmological Simulations](#units-in-cosmological-simulations) for details. @@ -59,7 +59,7 @@ for details. Time unit in CGS. * **Restriction:** It will be overwritten when enabling the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. See [Units in Cosmological Simulations](#units-in-cosmological-simulations) for details. @@ -69,7 +69,7 @@ for details. Velocity unit in CGS. * **Restriction:** It will be overwritten when enabling the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. See [Units in Cosmological Simulations](#units-in-cosmological-simulations) for details. @@ -79,7 +79,7 @@ for details. Mass density unit in CGS. * **Restriction:** It will be overwritten when enabling the compilation option -[[COMOVING | Installation:-Simulation-Options#COMOVING]]. +[[--comoving | Installation:-Option-List#--comoving]]. See [Units in Cosmological Simulations](#units-in-cosmological-simulations) for details. @@ -91,7 +91,7 @@ When enabling units (i.e., [OPT__UNIT](#OPT__UNIT)=1), all input values (e.g., runtime parameters, refinement thresholds, and initial conditions) must be set consistently with the adopted unit system unless otherwise specified. All input physical constants (e.g., -[[NEWTON_G| Gravity#NEWTON_G]], +[[NEWTON_G| Runtime-Parameters:-Gravity#NEWTON_G]], [[ELBDM_MASS | Wave-Dark-Matter#ELBDM_MASS]], and [[ELBDM_PLANCK_CONST | Wave-Dark-Matter#ELBDM_PLANCK_CONST]]) will be reset automatically to conform to the adopted unit system. @@ -109,7 +109,7 @@ For example, to convert particle velocity `vel_code` from code units to km/s, one can use `vel_kms = vel_code*UNIT_V*Const_s/Const_km;`. ### Units in Cosmological Simulations -When enabling [[COMOVING | Installation:-Simulation-Options#COMOVING]], +When enabling [[--comoving | Installation:-Option-List#--comoving]], the unit system is currently fixed as follows. - [UNIT_L](#UNIT_L) = h-1 Mpc, where h=[[HUBBLE0 | Runtime-Parameters:-Cosmology#HUBBLE0]] is the dimensionless Hubble constant. diff --git a/doc/wiki/Runtime-Parameters.md b/doc/wiki/Runtime-Parameters.md index bf244f7159..6cbf3e8956 100644 --- a/doc/wiki/Runtime-Parameters.md +++ b/doc/wiki/Runtime-Parameters.md @@ -1,277 +1,10 @@ All runtime parameters are specified in the input files `Input__*`: -* [Input__Parameter](#input__parameter): **MOST of the runtime parameters are put here** -* [Input__TestProb](#input__testprob): problem-specific parameters -* [Input__Flag_*](#input__flag_): grid refinement criteria -* [Input__DumpTable](#input__dumptable): timetable for dumping data -* [Input__MemoryPool](#input__memorypool): numbers of patches to be preallocated for the memory pool -* [Input__Note](#input__note): simulation notes +* [[Input__Parameter | Runtime-Parameters:-Input__Parameter]]: **MOST of the runtime parameters are put here** +* [[Input__TestProb | Runtime-Parameters:-Input__TestProb]]: problem-specific parameters +* [[Input__Flag_* | Runtime-Parameters:-Input__Flag_*]]: grid refinement criteria +* [[Input__DumpTable | Runtime-Parameters:-Input__DumpTable]]: timetable for dumping data +* [[Input__MemoryPool | Runtime-Parameters:-Input__MemoryPool]]: numbers of patches to be preallocated for the memory pool +* [[Input__Note | Running-the-Code#taking-notes]]: simulation notes Input file templates are put in `example/input/`. - - -## Input__Parameter - -* [Parameter List](#parameter-list) -* [File Format](#file-format) -* [Adding New Parameters](#adding-new-parameters) - - -### Parameter List -* [[All]] --- List all parameters in alphabetical order - -* [[General | Runtime-Parameters:-General]] --- Parameters applicable to all simulations, such as simulation domain, root-level grid, simulation end time... - -* [[MPI and OpenMP | MPI-and-OpenMP#runtime-parameters]] --- Number of MPI processes and OpenMP threads, load-balancing parameters - -* [[GPU | GPU#runtime-parameters]] --- GPU IDs and optimization parameters - -* [[Units | Runtime-Parameters:-Units]] --- Unit system - -* [[Initial Conditions | Initial-Conditions]] --- Initialization methods, restarting simulations - -* [[Hydro | Hydro#runtime-parameters]] --- Hydro solvers, physical constants, boundary conditions - -* [[Gravity | Gravity#runtime-parameters]] --- Gravity solvers, physical constants, boundary conditions - -* [[Particles | Particles#runtime-parameters]] --- Particle parameters - -* [[Cosmology | Runtime-Parameters:-Cosmology]] --- Cosmological parameters - -* [[Chemistry and Radiation | Chemistry-and-Radiation#runtime-parameters]] --- GRACKLE parameters - -* [[Star Formation | Star-Formation#runtime-parameters]] --- Star formation parameters - -* [[Feedback | Feedback#runtime-parameters]] --- Feedback parameters - -* [[Timestep | Runtime-Parameters:-Timestep]] --- Timestep criteria - -* [[Refinement | Runtime-Parameters:-Refinement]] --- Grid refinement criteria - -* [[Interpolation | Runtime-Parameters:-Interpolation]] --- Interpolation schemes - -* [[Outputs | Outputs#runtime-parameters]] --- Data output parameters - -* [[Miscellaneous | Runtime-Parameters:-Miscellaneous]] --- Miscellaneous parameters such as timing options, log files, and self-checking options... - - -### File Format -All parameters in this file follow the syntax: - -``` -NAME VALUE # COMMENTS -``` - -* Comment symbol: #. - -* Empty and comment lines (i.e., lines starting with #) are ignored. - -* Parameter defaults are described as [DEFAULT] in the commentary. -For example, - - ``` - REGRID_COUNT 1 # refine every REGRID_COUNT sub-steps [4] - ``` - - indicates that the default value of the parameter `REGRID_COUNT` is 4. - -* Parameters set to "auto" (usually by assigning a negative value) do -not have deterministic defaults and will be reset later according to -the adopted compilation options and/or other runtime parameters. For -example, - - ``` - DT__FLUID -1.0 # hydro CFL factor (<0.0=auto) [-1.0] - ``` - - indicates that if the parameter `DT__FLUID` is assigned with a -negative value (which is also the default value as suggested by `[-1.0]`), -it will be reset later depending on other configurations -(in this case, it's value depends on the adopted hydro scheme). - -* For boolean options, 0=off and 1=on. - -* All dimensional variables must be set consistently with the adopted unit -system (set by [[OPT__UNIT | Runtime-Parameters:-Units#OPT__UNIT]]) unless otherwise specified. - -* Parameter names are case sensitive. - -* The program will display warning messages to stderr when detecting -duplicate or unrecognizable parameters. For example, - - ``` - WARNING : unrecognizable parameter [DUAL_ENERGY_SWITCH ] at line 113 !! - WARNING : duplicate parameter [OPT__VERBOSE ] at line 160 !! - ``` - - It will display stdout messages when setting any parameters -to defaults. For example - - ``` - NOTE : parameter [UNIT_L ] is set to the default value [-1.00000000000000e+00] - NOTE : parameter [UNIT_M ] is set to the default value [-1.00000000000000e+00] - ``` - - It will also display warning messages to stderr after resetting -any parameters (usually because they are either useless or set to -"auto" as described above). For example, - - ``` - WARNING : parameter [DT__FLUID ] is reset to [ 5.00000000000000e-01] - WARNING : parameter [GPU_NSTREAM ] is reset to [ 1 ] since GPU is disabled - WARNING : parameter [OPT__NORMALIZE_PASSIVE ] is reset to [ 0 ] since there are no passive scalars - ``` - - -### Adding New Parameters - -See [[ Adding Parameters|Adding-Parameters ]]. - - -## Input__TestProb - -Problem-specific runtime parameters. This file follows the same -syntax as [Input__Parameter](#file-format). See -`example/test_problem/*/*/Input__TestProb` for some examples. -The following shows -`example/test_problem/Hydro/Riemann/Input__TestProb`: - -``` -Riemann_Prob 0 # target Riemann problem (0 : Sod's shock tube - # 1 : strong shock - # 2 : two shocks - # 3 : Einfeldt's 1-2-0-3 - # 4 : Einfeldt's 1-1-2-5 - # 5 : sonic rarefaction wave -Riemann_LR +1 # wave propagation direction (>0/<0 --> positive/negative direction) [1] -Riemann_XYZ 0 # wave propagation axis (0/1/2 --> x/y/z) [0] -``` - - -## Input__Flag_* - -Refinement thresholds of various refinement criteria `OPT__FLAG_*` -described in [[Runtime Parameters -- Refinement | Runtime-Parameters:-Refinement]], -where each criterion has its own input file. -For instance, the following shows an example of the table `Input__Flag_Rho` -used by [[OPT__FLAG_RHO | Runtime-Parameters:-Refinement#OPT__FLAG_RHO]]: - -``` -# Level Density - 0 8.0 - 1 64.0 - 2 512.0 -``` - -In this example, cells on levels 0, 1, and 2 will be flagged for -refinement if their gas mass densities exceed 8.0, 64.0, and 512.0, -respectively. - -To add new flag tables, edit `src/Init/Init_Load_FlagCriteria.cpp`. - -Table format: - -* Must have one and only one header line. - -* The first column (i.e., levels 0, 1, 2 in the example above) -is actually useless and will not be loaded at all. The refinement -thresholds and other parameters (if any) must be put in column(s) -other than the first column. - -* Empty and comment lines (i.e., lines starting with #) are NOT allowed -except in the first header line. - -* Must contain at least [[MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]] -data lines excluding the header line. - - -## Input__DumpTable - -Timetable for dumping data when adopting -[[OPT__OUTPUT_MODE | Outputs#OPT__OUTPUT_MODE]]=3. -The following example will dump data at t=1.0, 2.3, and 3.7. - -``` -#Dump ID Dump Time - 0 1.0 - 1 2.3 - 2 3.7 -***************END LINE*************** -``` - -Note that this text file currently has a quite inflexible format: - -* Must have one and only one header line. - -* The first column (i.e., the dump IDs 0, 1, 2 in the example above) -is actually useless and will not be loaded at all. The output timetable -must be put in the second column. - -* Empty and comment lines (i.e., lines starting with #) are NOT allowed -except in the first header line. - -* Timetable must be in ascending order. - -* The loading routine will stop loading when detecting a line -starting with *. All remaining lines will be ignored. - -* Simulation end time [[END_T | Runtime-Parameters:-General#END_T]] -loaded from `Input__Parameter` will be reset to the maximum output -time in the dump table if the latter is found to be smaller. - - -## Input__MemoryPool - -Number of patches to be preallocated on each AMR level when enabling -[[OPT__MEMORY_POOL | Runtime-Parameters:-Refinement#OPT__MEMORY_POOL]]. -The following example will preallocate 100, 800 and 6400 patches on -levels 0, 1, and 2, respectively, and will not preallocate any patch -above level 2. - -``` -# Level Number of patches to be preallocated - 0 100 - 1 800 - 2 6400 -``` - -Table format: - -* Must have one and only one header line. - -* The first column (i.e., levels 0, 1, 2 in the example above) -is actually useless and will not be loaded at all. The numbers of -patches to be preallocated must be put in the second column. - -* Empty and comment lines (i.e., lines starting with #) are NOT allowed -except in the first header line. - -* At most -[[MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]]+1 -lines will be loaded. If there are fewer than -[[MAX_LEVEL | Runtime-Parameters:-Refinement#MAX_LEVEL]]+1 -lines in the input file, no patches will be preallocated on the -unspecified levels. - - -## Input__Note - -See [[Taking Notes | Running-the-Code#taking-notes]]. diff --git a/doc/wiki/Runtime-Parameters:-All.md b/doc/wiki/Runtime-Parameters:-All.md deleted file mode 100644 index d08fa3e6aa..0000000000 --- a/doc/wiki/Runtime-Parameters:-All.md +++ /dev/null @@ -1 +0,0 @@ -TBF \ No newline at end of file diff --git a/doc/wiki/Simulation-Logs:-Record__Center.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Center.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__Center.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Center.md diff --git a/doc/wiki/Simulation-Logs:-Record__Conservation.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Conservation.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__Conservation.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Conservation.md diff --git a/doc/wiki/Simulation-Logs:-Record__DivB.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__DivB.md similarity index 93% rename from doc/wiki/Simulation-Logs:-Record__DivB.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__DivB.md index 10bf88cfa9..af45b6c308 100644 --- a/doc/wiki/Simulation-Logs:-Record__DivB.md +++ b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__DivB.md @@ -33,10 +33,11 @@ Table format: specified on the top of this file -**Caution: errors should be on the order of machine precision but -may accumulate with time.** +> [!CAUTION] +> Errors should be on the order of machine precision but +may accumulate with time.
## Links -* [[Simulation Logs]] \ No newline at end of file +* [[Simulation Logs]] diff --git a/doc/wiki/Simulation-Logs:-Record__Dump.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Dump.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__Dump.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Dump.md diff --git a/doc/wiki/Simulation-Logs:-Record__LoadBalance.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__LoadBalance.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__LoadBalance.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__LoadBalance.md diff --git a/doc/wiki/Simulation-Logs:-Record__MemInfo.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__MemInfo.md similarity index 90% rename from doc/wiki/Simulation-Logs:-Record__MemInfo.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__MemInfo.md index f7714fdf30..1085d9256c 100644 --- a/doc/wiki/Simulation-Logs:-Record__MemInfo.md +++ b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__MemInfo.md @@ -20,8 +20,9 @@ Table format: * `Resident_Sum`: total resident memory consumption in all MPI processes -**Caution: CUDA may consume very large virtual memory. However, it doesn't seem to be -a serious problem in most cases.** +> [!CAUTION] +> CUDA may consume very large virtual memory. However, it doesn't seem to be +a serious problem in most cases.
diff --git a/doc/wiki/Simulation-Logs:-Record__NCorrUnphy.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__NCorrUnphy.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__NCorrUnphy.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__NCorrUnphy.md diff --git a/doc/wiki/Simulation-Logs:-Record__Note.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Note.md similarity index 99% rename from doc/wiki/Simulation-Logs:-Record__Note.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Note.md index 6524c11010..16e0210243 100644 --- a/doc/wiki/Simulation-Logs:-Record__Note.md +++ b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Note.md @@ -1,6 +1,6 @@ This file records all the simulation configurations, including * [[Simulation notes | Running-the-Code#taking-notes]] -* [[Makefile options | Installation:-Simulation-Options]] +* [[Configuration options | Installation:-Option-List#Option-List]] * Symbolic constants defined in various headers * [[Runtime parameters | Runtime Parameters]] set by various `Input__*` tables * Simulation resolutions (i.e., cell width) on different AMR levels @@ -493,4 +493,4 @@ Total Processing Time : 21.777708 s
## Links -* [[Simulation Logs]] \ No newline at end of file +* [[Simulation Logs]] diff --git a/doc/wiki/Simulation-Logs:-Record__ParticleCount.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__ParticleCount.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__ParticleCount.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__ParticleCount.md diff --git a/doc/wiki/Simulation-Logs:-Record__PatchCount.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__PatchCount.md similarity index 95% rename from doc/wiki/Simulation-Logs:-Record__PatchCount.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__PatchCount.md index b86b8bf768..e3b29c4954 100644 --- a/doc/wiki/Simulation-Logs:-Record__PatchCount.md +++ b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__PatchCount.md @@ -33,7 +33,8 @@ and the corresponding load imbalance (`Y`), estimated by (maximum-average)/ * `Weighted load-imbalance factor`: overall load imbalance, where different levels are weighted by their number of updates (i.e., time-steps) -**Caution: buffer patches (i.e., patches for filling the ghost zones) are not included here.** +> [!CAUTION] +> Buffer patches (i.e., patches for filling the ghost zones) are not included here.
diff --git a/doc/wiki/Simulation-Logs:-Record__Performance.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Performance.md similarity index 96% rename from doc/wiki/Simulation-Logs:-Record__Performance.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Performance.md index cd15dd4f25..d33d9a18b5 100644 --- a/doc/wiki/Simulation-Logs:-Record__Performance.md +++ b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Performance.md @@ -24,8 +24,9 @@ Table format: * `ParPerf_PerRank`: average performance per MPI process in particle updates per second * `NUpdate_Lv*`: number of time-steps on this level in this step -**On Tesla K20 or K40 GPUs, the typical performance per GPU is 1e7 ~ 2e7 -cell updates per second. Tesla P100 can be a factor of 2 faster.** +> [!NOTE] +> On Tesla K20 or K40 GPUs, the typical performance per GPU is 1e7 ~ 2e7 +cell updates per second. Tesla P100 can be a factor of 2 faster.
diff --git a/doc/wiki/Simulation-Logs:-Record__TimeStep.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__TimeStep.md similarity index 96% rename from doc/wiki/Simulation-Logs:-Record__TimeStep.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__TimeStep.md index c9ab6bf17b..844ec439f1 100644 --- a/doc/wiki/Simulation-Logs:-Record__TimeStep.md +++ b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__TimeStep.md @@ -28,8 +28,8 @@ Table format: * `Hydro_Acc`: gravitational acceleration in hydrodynamics (see [[DT__GRAVITY | Runtime-Parameters:-Timestep#DT__GRAVITY]]) * `Data_Dump`: timestep to reach the next data dump time (see -[[OPT__OUTPUT_MODE | Outputs#OPT__OUTPUT_MODE]] and -[[OUTPUT_DT | Outputs#OUTPUT_DT]]) +[[OPT__OUTPUT_MODE | Runtime-Parameters:-Outputs#OPT__OUTPUT_MODE]] and +[[OUTPUT_DT | Runtime-Parameters:-Outputs#OUTPUT_DT]]) * `End_Time`: timestep to reach the simulation end time (see [[END_T | Runtime-Parameters:-General#END_T]]) * `Par_Vel`: particle velocity (see @@ -47,4 +47,4 @@ Table format:
## Links -* [[Simulation Logs]] \ No newline at end of file +* [[Simulation Logs]] diff --git a/doc/wiki/Simulation-Logs:-Record__Timing.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Timing.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__Timing.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__Timing.md diff --git a/doc/wiki/Simulation-Logs:-Record__TimingMPI_Rank*.md b/doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__TimingMPI_Rank*.md similarity index 100% rename from doc/wiki/Simulation-Logs:-Record__TimingMPI_Rank*.md rename to doc/wiki/Simulation-Logs-related/Simulation-Logs:-Record__TimingMPI_Rank*.md diff --git a/doc/wiki/Simulation-Logs.md b/doc/wiki/Simulation-Logs.md index 660b24e997..bd140efd80 100644 --- a/doc/wiki/Simulation-Logs.md +++ b/doc/wiki/Simulation-Logs.md @@ -8,16 +8,16 @@ and runtime/compilation parameters. Click the filename for details. |:---|:---|:---| | [[Record__Center \| Simulation-Logs:-Record__Center]] | Position of maximum density, minimum potential, and center of mass | [[OPT__RECORD_CENTER \| Runtime Parameters:-Miscellaneous#OPT__RECORD_CENTER]] | | [[Record__Conservation \| Simulation-Logs:-Record__Conservation]] | Integrated values of conservative quantities | [[OPT__CK_CONSERVATION \| Runtime Parameters:-Miscellaneous#OPT__CK_CONSERVATION]] | -| [[Record__Dump \| Simulation-Logs:-Record__Dump]] | Physical time of each data dump | [[ OPT__OUTPUT_TOTAL \| Outputs#OPT__OUTPUT_TOTAL ]], [[OPT__OUTPUT_PART \| Outputs#OPT__OUTPUT_PART]], [[OPT__OUTPUT_USER\| Outputs#OPT__OUTPUT_USER]] | -| [[Record__LoadBalance \| Simulation-Logs:-Record__LoadBalance]] | Load-balancing estimation | [[OPT__RECORD_LOAD_BALANCE \| MPI and OpenMP#OPT__RECORD_LOAD_BALANCE]] | +| [[Record__Dump \| Simulation-Logs:-Record__Dump]] | Physical time of each data dump | [[OPT__OUTPUT_TOTAL \| Runtime-Parameters:-Outputs#OPT__OUTPUT_TOTAL]], [[OPT__OUTPUT_PART \| Runtime-Parameters:-Outputs#OPT__OUTPUT_PART]], [[OPT__OUTPUT_USER\| Runtime-Parameters:-Outputs#OPT__OUTPUT_USER]] | +| [[Record__LoadBalance \| Simulation-Logs:-Record__LoadBalance]] | Load-balancing estimation | [[OPT__RECORD_LOAD_BALANCE \| Runtime-Parameters:-MPI-and-OpenMP#OPT__RECORD_LOAD_BALANCE]] | | [[Record__MemInfo \| Simulation-Logs:-Record__MemInfo]] | Free CPU memory | [[OPT__RECORD_MEMORY \| Runtime Parameters:-Miscellaneous#OPT__RECORD_MEMORY]] | -| [[Record__NCorrUnphy \| Simulation-Logs:-Record__NCorrUnphy]] | Number of cells corrected by the 1st-order flux correction | [[OPT__1ST_FLUX_CORR \| Hydro#OPT__1ST_FLUX_CORR ]], [[OPT__RECORD_UNPHY \| Runtime Parameters:-Miscellaneous#OPT__RECORD_UNPHY]] | +| [[Record__NCorrUnphy \| Simulation-Logs:-Record__NCorrUnphy]] | Number of cells corrected by the 1st-order flux correction | [[OPT__1ST_FLUX_CORR \| Runtime-Parameters:-Hydro#OPT__1ST_FLUX_CORR]], [[OPT__RECORD_UNPHY \| Runtime Parameters:-Miscellaneous#OPT__RECORD_UNPHY]] | | [[Record__Note \| Simulation-Logs:-Record__Note]] | Runtime parameters, compilation options, CPU/GPU specifications, OpenMP configuration, ... | [[OPT__RECORD_NOTE \| Runtime Parameters:-Miscellaneous#OPT__RECORD_NOTE]] | | [[Record__PatchCount \| Simulation-Logs:-Record__PatchCount]] | Number of patches on each level in each MPI process | [[OPT__PATCH_COUNT \| Runtime-Parameters:-Refinement#OPT__PATCH_COUNT]] | | [[Record__ParticleCount \| Simulation-Logs:-Record__ParticleCount]] | Number of particles on each level in each MPI process | [[OPT__PARRTICLE_COUNT \| Runtime-Parameters:-Refinement#OPT__PARTICLE_COUNT]] | | [[Record__Performance \| Simulation-Logs:-Record__Performance]] | Code performance | [[OPT__RECORD_PERFORMANCE \| Runtime-Parameters:-Miscellaneous#OPT__RECORD_PERFORMANCE]] | | [[Record__TimeStep \| Simulation-Logs:-Record__TimeStep]] | Time-step constraints | [[OPT__RECORD_DT \| Runtime-Parameters:-Timestep#OPT__RECORD_DT]] | -| [[Record__Timing \| Simulation-Logs:-Record__Timing]] | Detailed timing analysis of all major routines | [[TIMING \| Installation: Simulation-Options#TIMING]], [[TIMING_SOLVER \| Installation: Simulation-Options#TIMING_SOLVER]] | +| [[Record__Timing \| Simulation-Logs:-Record__Timing]] | Detailed timing analysis of all major routines | [[--timing \| Installation:-Option-List#--timing]], [[--timing_solver \| Installation:-Option-List#--timing_solver]] | | [[Record__TimingMPI_Rank* \| Simulation-Logs:-Record__TimingMPI_Rank*]] | MPI bandwidths achieved by various MPI calls | [[OPT__TIMING_MPI \| Runtime-Parameters:-Miscellaneous#OPT__TIMING_MPI]] | | [[Record__DivB \| Simulation-Logs:-Record__DivB]] | Divergence-free error on the magnetic field | [[OPT__CK_DIVERGENCE_B \| Runtime-Parameters:-Miscellaneous#OPT__CK_DIVERGENCE_B]] | diff --git a/doc/wiki/Troubleshooting.md b/doc/wiki/Troubleshooting.md index 832327afd6..4e111bb137 100644 --- a/doc/wiki/Troubleshooting.md +++ b/doc/wiki/Troubleshooting.md @@ -1,14 +1,41 @@ +This page covers the following topics: +* [Running out of GPU memory](#running-out-of-gpu-memory) +* [Instability with MHD](#instability-with-mhd) +* [Check static arrays with AddressSanitizer (ASan)](#check-static-arrays-with-addresssanitizer-asan)) + +* * * + * #### Running out of GPU memory * **Description**: ``` ERROR : CUDA ERROR : out of memory !! ``` - * **Solution**: Reduce [[NSTREAM | GPU#NSTREAM]] until the issue is resolved. + * **Solution**: Reduce [[GPU_NSTREAM | Runtime-Parameters:-GPU#GPU_NSTREAM]] until the issue is resolved. * * * * #### Instability with MHD * **Description**: See this [issue](https://github.com/gamer-project/gamer/issues/80#issuecomment-1030177067) report. * **Solution**: Update `CUDA` to 11.3 or higher. - * * * +* #### Check static arrays with [AddressSanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer) (ASan) + * **Description**: Detect incorrect usage of static arrays. + * **Steps**: + 1. Use the `g++` compiler. + 2. Compile and link with flags `-fsanitize=undefined -fsanitize=address`. + + * **Example (on the `eureka` machine)** + 1. Uncomment the following lines in `configs/eureka_gnu.config` + ``` + #CXXFLAG -fsanitize=undefined -fsanitize=address + #LIBFLAG -fsanitize=undefined -fsanitize=address + ``` + 2. Generate `Makefile` + ``` + python configure.py --machine=eureka_gnu [--your_other_arguments] + ``` + 3. Compile + ``` + make clean && make -j4 + ``` +* * * diff --git a/doc/wiki/_Sidebar.md b/doc/wiki/_Sidebar.md index a03c9ddb55..3b8aca343a 100644 --- a/doc/wiki/_Sidebar.md +++ b/doc/wiki/_Sidebar.md @@ -1,34 +1,52 @@ -**[[ Home | Home ]]** +**[[Home | Home]]** **Getting Started** -* [[ Download | Download ]] -* [[ Quick Start | Quick-Start ]] +* [[Download | Download]] +* [[Quick Start | Quick-Start]] **User Guide** -* [[ Installation | Installation ]] -* [[ Running the Code | Running-the-Code ]] -* [[ Adding New Simulations | Adding-New-Simulations ]] -* [[ Runtime Parameters | Runtime-Parameters ]] -* [[ MPI and OpenMP | MPI-and-OpenMP ]] -* [[ GPU | GPU ]] -* [[ Physics Modules | Physics-Modules ]] -* [[ Outputs | Outputs ]] -* [[ Simulation Logs | Simulation-Logs ]] -* [[ Data Analysis | Data-Analysis ]] -* [[ In Situ Python Analysis | In-Situ-Python-Analysis ]] -* [[ Test Problems | Test-Problems ]] -* [[ Troubleshooting | Troubleshooting ]] - +* [[Installation | Installation]] + * [[Machine Configuration File | Installation:-Machine-Configuration-File]] + * [[External Libraries | Installation:-External-Libraries]] + * [[Option List | Installation:-Option-List]] +* [[Running the Code | Running-the-Code]] +* [[Adding New Simulations | Adding-New-Simulations]] + * [[Initial Conditions | Initial-Conditions]] +* [[Runtime Parameters | Runtime-Parameters]] + * [[Input__Parameter | Runtime-Parameters:-Input__Parameter]] + * [[Input__TestProb | Runtime-Parameters:-Input__TestProb]] + * [[Input__Flag_* | Runtime-Parameters:-Input__Flag_*]] + * [[Input__DumpTable | Runtime-Parameters:-Input__DumpTable]] + * [[Input__MemoryPool | Runtime-Parameters:-Input__MemoryPool]] + * [[Input__Note | Running-the-Code#taking-notes]] +* [[MPI and OpenMP | MPI-and-OpenMP]] +* [[GPU | GPU]] +* [[Physics Modules | Physics-Modules]] + * [[Hydro | Hydro]] + * [[ELBDM | ELBDM]] + * [[Equation of State | Equation-of-State]] + * [[Gravity | Gravity]] + * [[Particles | Particles]] + * [[Chemistry and Radiation | Chemistry-and-Radiation]] + * [[Star Formation | Star-Formation]] + * [[Feedback | Feedback]] +* [[Outputs | Outputs]] +* [[Simulation Logs | Simulation-Logs]] +* [[Data Analysis | Data-Analysis]] +* [[In Situ Python Analysis | In-Situ-Python-Analysis]] +* [[Test Problems | Test-Problems]] +* [[Troubleshooting | Troubleshooting]] **Advanced Topics** -* [[ Performance Optimizations | Performance-Optimizations ]] -* [[ Bitwise Reproducibility | Bitwise-Reproducibility ]] +* [[Performance Optimizations | Performance-Optimizations]] +* [[Bitwise Reproducibility | Bitwise-Reproducibility]] **Developer Guide** - * [[ Adding Parameters | Adding-Parameters ]] - * [[ AMR Structure | AMR-Structure ]] - * [[ ELBDM Hybrid Scheme | ELBDM-Hybrid-Scheme ]] - * [[ ELBDM Spectral Solver | ELBDM-Spectral-Solver ]] - * [[ ELBDM Spectral Interpolation | ELBDM-Spectral-Interpolation ]] - * [[ Style Guide | Style-Guide ]] - * [[ How to Contribute | How-to-Contribute ]] +* [[Adding Parameters | Adding-Parameters]] +* [[AMR Structure | AMR-Structure]] +* [[configure.py | configure.py]] +* [[ELBDM Hybrid Scheme | ELBDM-Hybrid-Scheme]] +* [[ELBDM Spectral Solver | ELBDM-Spectral-Solver]] +* [[ELBDM Spectral Interpolation | ELBDM-Spectral-Interpolation]] +* [[Style Guide | Style-Guide]] +* [[How to Contribute | How-to-Contribute]] diff --git a/doc/wiki/configure.py.md b/doc/wiki/configure.py.md new file mode 100644 index 0000000000..6ec9bb5cce --- /dev/null +++ b/doc/wiki/configure.py.md @@ -0,0 +1,144 @@ +This page includes: + - [Adding new source files](#adding-new-source-files) + - [Adding new library paths](#adding-new-library-paths) + - [Adding new compiler flag types](#adding-new-compiler-flag-types) + - [Rules of Makefile_base](#rules-of-makefile_base) + +## Adding new source files +Edit the section "source files" in the `Makefile_base` to add new source files. + +## Adding new simulation options +1. Add a Python argument reader for the new simulation option under `load_arguments()`. Here is a simple example of the argument reader: + + ```python + parser.add_argument( "--new_argument", type=int, metavar="INTEGER", gamer_name="NAME_IN_GAMER", + default=0, + help="Your help message.\n" + ) + ``` + + * Please check out the available options at [argparse document](https://docs.python.org/3/library/argparse.html#quick-links-for-add-argument). + * `gamer_name` is the simulation option name in GAMER. + * `default` is the default value of the argument. If the argument default depends on other arguments, + set `default=None` and assign the default value under `set_conditional_defaults()`. + For example, the default of `bitwise_reproducibility` is `True` when enabling `--debug` but otherwise is `False`. + + ```python + def set_conditional_defaults( args ): + ... + if args["new_argument"] == None: + args["new_argument"] = default_value_of_true if args["other_argument"] else default_value_of_false + ... + return args + ``` + +2. [Optional] If the argument depends on other arguments, add `depend={"depend_arg1":depend_value1, "depend_arg2":depend_value2}` so the argument will be loaded only if `depend_arg1==depend_value1` and `depend_arg2==depend_value2`. + + ```python + parser.add_argument( "--new_argument", type=int, metavar="INTEGER", gamer_name="NEW_SIMUALTION_OPTION", + default=0, + depend={"depend_arg1":depend_value1, "depend_arg2":depend_value2}, + help="Your help message.\n" + ) + ``` + +3. [Optional] To validate the input values, add `constraint={ val1:{"arg1":["a", "b"], val2:{"arg2":"c"} }`, + which will check whether the argument `arg1` is either `a` or `b` when the input value is `val1` + and whether the argument `arg2` is `c` when the input value is `val2`. + An error will be raised if any constraints are violated. For example, the following code + asserts `--eos=GAMMA` when adopting either `--flux=ROE` or `--flux=EXACT`. + + ```python + parser.add_argument( "--flux", type=str, metavar="TYPE", gamer_name="RSOLVER", + choices=["EXACT", "ROE", "HLLE", "HLLC", "HLLD"], + constraint={ "ROE":{"eos":"GAMMA"}, + "EXACT":{"eos":"GAMMA"} }, + ... + ) + ``` + +4. [Optional] Add additional checks in `validation()` and warning messages in `warning()` under `Functions`. + * `validation()` + + ```python + def validation( paths, depends, constraints, **kwargs ): + success = True + ... + + if kwargs["new_argument"] < -1: + LOGGER.error("Your error message.") + success = False + ... + + if not success: raise BaseException("The above validation failed.") + return + ``` + + * `warning()` + + ```python + def warning( paths, **kwargs ): + ... + if kwargs["new_argument"] == 0: + LOGGER.warning("Your warning message.") + ... + return + ``` + +## Adding new library paths +1. Add `NEW_PATH := @@@NEW_PATH@@@` under the `library paths` section in `Makefile_base`. + + ```makefile + # library paths + ####################################################################################################### + ... other paths ... + NEW_PATH := @@@NEW_PATH@@@ + ... + ``` + +2. Add `NEW_PATH /path/of/new` in your machine configuration file `configs/YOUR.config`. + + ``` + # 1. Paths + ... other paths ... + NEW_PATH /path/of/new + ... + ``` + +## Adding new compiler flag types +1. Add `NEW_FLAG := @@@NEW_FLAG@@@` under the `compilers and flags` section in `Makefile_base`. + + ```makefile + # compilers and flags + ####################################################################################################### + ... other flags ... + NEW_FLAG := @@@NEW_FLAG@@@ + ... + ``` + +2. Add `["NEW_FLAG":""]` in the dictionary variable `flags` of `load_config()` in `configure.py`. + + ```python + def load_config( config ): + LOGGER.info("Using %s as the config."%(config)) + paths, compilers = {}, {"CXX":"", "CXX_MPI":""} + flags = {"CXXFLAG":"", "OPENMPFLAG":"", "LIBFLAG":"", "NVCCFLAG_COM":"", "NVCCFLAG_FLU":"", "NVCCFLAG_POT":""} + gpus = {"GPU_COMPUTE_CAPABILITY":""} + ... + return paths, compilers, flags + ``` + +> [!IMPORTANT] +> All flags must be set in `flags`; otherwise, they will be interpreted as library paths. + +3. Add `NEW_FLAG -new_flag` in your [[machine configuration file | Installation:-Machine-Configuration-File]] `configs/YOUR.config`. + + ``` + # 2. Compiler flags + ... other flags ... + NEW_FLAG -new_flag + ... + ``` + +## Rules of `Makefile_base` +* The strings to be replaced by `configure.py` must be sandwiched by `@@@`. diff --git a/doc/wiki/images/CopyDocFromNewBranch.png b/doc/wiki/images/CopyDocFromNewBranch.png new file mode 100644 index 0000000000..633e9aa70b Binary files /dev/null and b/doc/wiki/images/CopyDocFromNewBranch.png differ diff --git a/doc/wiki/images/CopyWikiToNewBranch.png b/doc/wiki/images/CopyWikiToNewBranch.png new file mode 100644 index 0000000000..cef19136a9 Binary files /dev/null and b/doc/wiki/images/CopyWikiToNewBranch.png differ diff --git a/doc/wiki/images/CreateSecret.png b/doc/wiki/images/CreateSecret.png new file mode 100644 index 0000000000..e3a52256a3 Binary files /dev/null and b/doc/wiki/images/CreateSecret.png differ diff --git a/doc/wiki/images/CreateToken.png b/doc/wiki/images/CreateToken.png new file mode 100644 index 0000000000..5b7bdbf4f4 Binary files /dev/null and b/doc/wiki/images/CreateToken.png differ diff --git a/doc/wiki/images/CreateWiki.png b/doc/wiki/images/CreateWiki.png new file mode 100644 index 0000000000..ead50bd4f9 Binary files /dev/null and b/doc/wiki/images/CreateWiki.png differ diff --git a/doc/wiki/images/EnableWorkflows.png b/doc/wiki/images/EnableWorkflows.png new file mode 100644 index 0000000000..02531a5182 Binary files /dev/null and b/doc/wiki/images/EnableWorkflows.png differ diff --git a/doc/wiki/images/InitializeWiki.png b/doc/wiki/images/InitializeWiki.png new file mode 100644 index 0000000000..ec359f5efd Binary files /dev/null and b/doc/wiki/images/InitializeWiki.png differ diff --git a/doc/wiki/images/SetMail.png b/doc/wiki/images/SetMail.png new file mode 100644 index 0000000000..f6781ce13a Binary files /dev/null and b/doc/wiki/images/SetMail.png differ diff --git a/doc/wiki/images/SetToken.png b/doc/wiki/images/SetToken.png new file mode 100644 index 0000000000..9131078025 Binary files /dev/null and b/doc/wiki/images/SetToken.png differ diff --git a/doc/wiki/images/WikiGitLocation.png b/doc/wiki/images/WikiGitLocation.png new file mode 100644 index 0000000000..34f24c4530 Binary files /dev/null and b/doc/wiki/images/WikiGitLocation.png differ diff --git a/example/grackle/Make.mach.eureka-intel b/example/grackle/Make.mach.eureka-intel new file mode 100644 index 0000000000..3a9bf09c4b --- /dev/null +++ b/example/grackle/Make.mach.eureka-intel @@ -0,0 +1,97 @@ +#======================================================================= +# +# FILE: Make.mach.eureka-intel +# +# DESCRIPTION: Makefile for the calab-ntu Eureka GPU cluster with Intel +# compiler and OpenMP support +# +# AUTHOR: Hsi-Yu Schive (modified by Guan-Ming Su, Barry T. Chiang, +# and Chun-Yen Chen) +# +# DATE: April 1, 2016 (August 28, 2024) +#======================================================================= + +MACH_TEXT = Eureka Intel +MACH_VALID = 0 +MACH_FILE = Make.mach.eureka-intel + +#----------------------------------------------------------------------- +# Install paths (local variables) +#----------------------------------------------------------------------- + +LOCAL_HDF5_INSTALL = /software/hdf5/default +LOCAL_FC_INSTALL = /software/intel/oneapi/compiler/default/linux/compiler/lib/intel64 + +#----------------------------------------------------------------------- +# Compiler settings +#----------------------------------------------------------------------- + +MACH_CPP = icpc # C preprocessor command + +# Compilers +MACH_CC_NOMPI = icc # C compiler +MACH_CXX_NOMPI = icpc # C++ compiler +MACH_FC_NOMPI = ifort # Fortran 77 +MACH_F90_NOMPI = ifort # Fortran 90 +MACH_LD_NOMPI = icpc # Linker +MACH_LIBTOOL = libtool + +#----------------------------------------------------------------------- +# Machine-dependent defines +#----------------------------------------------------------------------- + +# Note: When compiling against HDF5 version 1.8 or greater, you need to +# compile HDF5 with --with-default-api-version=v16, or specify with +# -DH5_USE_16_API. + +MACH_DEFINES = -DLINUX -DH5_USE_16_API + +#----------------------------------------------------------------------- +# Compiler flag settings +#----------------------------------------------------------------------- + +MACH_OMPFLAGS = -fopenmp # OpenMP flags +MACH_CPPFLAGS = -P -traditional # C preprocessor flags +MACH_CFLAGS = -mp1 -prec_div -fp_port -align # C compiler flags +MACH_CXXFLAGS = -mp1 -prec_div -fp_port -align # C++ compiler flags +MACH_FFLAGS = # Fortran 77 compiler flags +MACH_F90FLAGS = -mp1 -prec_div -fp_port -align #-save -zero # Fortran 90 compiler flags +MACH_LDFLAGS = #-lifcore -lifport -lpthread -ldl # Linker flags + +#----------------------------------------------------------------------- +# Optimization flags +#----------------------------------------------------------------------- + +MACH_OPT_WARN = # Flags for verbose compiler warnings +MACH_OPT_DEBUG = -g -O0 # Flags for debugging +MACH_OPT_HIGH = -O2 # Flags for high conservative optimization +MACH_OPT_AGGRESSIVE = -O3 #-Mfptrap -Mflushz -fastsse -Mdaz -Mnontemporal -Mnofprelaxed -Mvect=altcode,assoc,prefetch -Kieee # Flags for aggressive optimization + +#----------------------------------------------------------------------- +# Includes +#----------------------------------------------------------------------- + +LOCAL_INCLUDES_HDF5 = -I$(LOCAL_HDF5_INSTALL)/include # HDF5 includes +MACH_INCLUDES = $(LOCAL_INCLUDES_HDF5) + +#----------------------------------------------------------------------- +# Libraries +#----------------------------------------------------------------------- + +LOCAL_LIBS_HDF5 = -L$(LOCAL_HDF5_INSTALL)/lib -lhdf5 # HDF5 libraries +LOCAL_LIBS_MACH = -L$(LOCAL_FC_INSTALL) -lm -lifcore -lifport # Machine-dependent libraries + +MACH_LIBS = $(LOCAL_LIBS_HDF5) $(LOCAL_LIBS_MACH) + +#----------------------------------------------------------------------- +# Installation +#----------------------------------------------------------------------- + +# if $(HOME)/local does not exist, mkdir before `make install` + +### Use this when make omp-on is set +MACH_INSTALL_PREFIX = /grackle_eureka_double_omp +### Use this when make omp-off is set +#MACH_INSTALL_PREFIX = /grackle_eureka_double_no_omp +MACH_INSTALL_LIB_DIR = +MACH_INSTALL_INCLUDE_DIR = diff --git a/example/grackle/Make.mach.spock-intel b/example/grackle/Make.mach.spock-intel new file mode 100644 index 0000000000..0129b59b38 --- /dev/null +++ b/example/grackle/Make.mach.spock-intel @@ -0,0 +1,97 @@ +#======================================================================= +# +# FILE: Make.mach.spock-intel +# +# DESCRIPTION: Makefile for the calab-ntu Spock GPU cluster with Intel +# compiler and OpenMP support +# +# AUTHOR: Hsi-Yu Schive (modified by Guan-Ming Su, Barry T. Chiang, +# and Chun-Yen Chen) +# +# DATE: April 1, 2016 (August 28, 2024) +#======================================================================= + +MACH_TEXT = Spock Intel +MACH_VALID = 0 +MACH_FILE = Make.mach.spock-intel + +#----------------------------------------------------------------------- +# Install paths (local variables) +#----------------------------------------------------------------------- + +LOCAL_HDF5_INSTALL = /software/hdf5/1.10.6-intel-2023.1.0 +LOCAL_FC_INSTALL = /software/intel/oneapi/compiler/latest/linux/compiler/lib/intel64 + +#----------------------------------------------------------------------- +# Compiler settings +#----------------------------------------------------------------------- + +MACH_CPP = icpc # C preprocessor command + +# Compilers +MACH_CC_NOMPI = icc # C compiler +MACH_CXX_NOMPI = icpc # C++ compiler +MACH_FC_NOMPI = ifort # Fortran 77 +MACH_F90_NOMPI = ifort # Fortran 90 +MACH_LD_NOMPI = icpc # Linker +MACH_LIBTOOL = libtool + +#----------------------------------------------------------------------- +# Machine-dependent defines +#----------------------------------------------------------------------- + +# Note: When compiling against HDF5 version 1.8 or greater, you need to +# compile HDF5 with --with-default-api-version=v16, or specify with +# -DH5_USE_16_API. + +MACH_DEFINES = -DLINUX -DH5_USE_16_API + +#----------------------------------------------------------------------- +# Compiler flag settings +#----------------------------------------------------------------------- + +MACH_OMPFLAGS = -fopenmp # OpenMP flags +MACH_CPPFLAGS = -P -traditional # C preprocessor flags +MACH_CFLAGS = -mp1 -prec_div -fp_port -align # C compiler flags +MACH_CXXFLAGS = -mp1 -prec_div -fp_port -align # C++ compiler flags +MACH_FFLAGS = # Fortran 77 compiler flags +MACH_F90FLAGS = -mp1 -prec_div -fp_port -align #-save -zero # Fortran 90 compiler flags +MACH_LDFLAGS = #-lifcore -lifport -lpthread -ldl # Linker flags + +#----------------------------------------------------------------------- +# Optimization flags +#----------------------------------------------------------------------- + +MACH_OPT_WARN = # Flags for verbose compiler warnings +MACH_OPT_DEBUG = -g -O0 # Flags for debugging +MACH_OPT_HIGH = -O2 # Flags for high conservative optimization +MACH_OPT_AGGRESSIVE = -O3 #-Mfptrap -Mflushz -fastsse -Mdaz -Mnontemporal -Mnofprelaxed -Mvect=altcode,assoc,prefetch -Kieee # Flags for aggressive optimization + +#----------------------------------------------------------------------- +# Includes +#----------------------------------------------------------------------- + +LOCAL_INCLUDES_HDF5 = -I$(LOCAL_HDF5_INSTALL)/include # HDF5 includes +MACH_INCLUDES = $(LOCAL_INCLUDES_HDF5) + +#----------------------------------------------------------------------- +# Libraries +#----------------------------------------------------------------------- + +LOCAL_LIBS_HDF5 = -L$(LOCAL_HDF5_INSTALL)/lib -lhdf5 # HDF5 libraries +LOCAL_LIBS_MACH = -L$(LOCAL_FC_INSTALL) -lm -lifcore -lifport # Machine-dependent libraries + +MACH_LIBS = $(LOCAL_LIBS_HDF5) $(LOCAL_LIBS_MACH) + +#----------------------------------------------------------------------- +# Installation +#----------------------------------------------------------------------- + +# if $(HOME)/local does not exist, mkdir before `make install` + +### Use this when make omp-on is set +MACH_INSTALL_PREFIX = /grackle_spock_double_omp +### Use this when make omp-off is set +#MACH_INSTALL_PREFIX = /grackle_spock_double_no_omp +MACH_INSTALL_LIB_DIR = +MACH_INSTALL_INCLUDE_DIR = diff --git a/example/grackle/README b/example/grackle/README new file mode 100644 index 0000000000..bbbad59b4f --- /dev/null +++ b/example/grackle/README @@ -0,0 +1,15 @@ +First-time GRACKLE installation guide (on calab-ntu gpu-clusters as an example): +======================================== +1. First download the source code by executing "git clone https://github.com/grackle-project/grackle" +2. Next navigate to "cd grackle". The required UVB interpolation tables can be downloaded via "git submodule update --init" +3. Next navigate to "./configure; cd src/clib" +4. Copy into the config files "Make.mach.eureka-intel" or "Make.mach.spock-intel" (from the directory "/example/grackle/") and change the prefix: "MACH_INSTALL_PREFIX = /grackle_spock_double_omp" in "Make.mach.spock-intel" to the path you wish to install the package +5. Next execute "make clean; make machine-spock-intel" or "make clean; make machine-eureka-intel" +6. Next execute "make precision-64" (double precision is recommended for GRACKLE) and "make omp-on" (GAMER does utilize OpenMP) +7. Next execute "make show-config" to verify "CONFIG_PRECISION: 64" and "CONFIG_OMP: on" +8. Next execute "make save-config-gamer" (save this GAMER-spock specific config setting) and "make load-config-gamer" (load this GAMER-spock specific config setting) +9. Lastly for code compilation, execute "make -j 4; make install" +10. To compile the corresponding gamer executable: + (1) Add the path "GRACKLE_PATH /grackle_spock_double_omp" to "/configs/spock_intel.config" + (2) Copy "generate_make.sh" from the AGORA test problem and change "--machine=spock_intel" in that file, and then execute "sh generate_make.sh" + (3) Generate a gamer executable via "make clean; make -j 4" diff --git a/example/input/Input__DumpTable b/example/input/Input__DumpTable index 2d8f0f4a5f..c3b00fc316 100644 --- a/example/input/Input__DumpTable +++ b/example/input/Input__DumpTable @@ -1,4 +1,4 @@ -#Dump ID Dump Time +#Dump_ID Dump_Time 0 0.0909090920000000 1 0.0965026241318910 2 0.1022642090403268 diff --git a/example/input/Input__Flag_AngularResolution b/example/input/Input__Flag_AngularResolution new file mode 100644 index 0000000000..70a2888e22 --- /dev/null +++ b/example/input/Input__Flag_AngularResolution @@ -0,0 +1,13 @@ +# Level AngRes_Max AngRes_Min AngRes_Max_R + 0 0.1 0.3 0.5 + 1 0.1 0.3 0.5 + 2 0.1 0.3 0.5 + 3 0.1 0.3 0.5 + 4 0.1 0.3 0.5 + 5 0.1 0.3 0.5 + 6 0.1 0.3 0.5 + 7 0.1 0.3 0.5 + 8 0.1 0.3 0.5 + 9 0.1 0.3 0.5 + 10 0.1 0.3 0.5 + 11 0.1 0.3 0.5 diff --git a/example/input/Input__Flag_Interference b/example/input/Input__Flag_Interference new file mode 100644 index 0000000000..2cdbf69876 --- /dev/null +++ b/example/input/Input__Flag_Interference @@ -0,0 +1,12 @@ +# Level QP Density PhaseLap OnlyAtExtrema + 0 0.03 0 1.0 0 + 1 0.03 0 1.0 0 + 2 0.03 0 1.0 0 + 3 0.03 0 1.0 0 + 4 0.03 0 1.0 0 + 5 0.03 0 1.0 0 + 6 0.03 0 1.0 0 + 7 0.03 0 1.0 0 + 8 0.03 0 1.0 0 + 9 0.03 0 1.0 0 + 10 0.03 0 1.0 0 diff --git a/example/input/Input__Flag_RadialResolution b/example/input/Input__Flag_RadialResolution new file mode 100644 index 0000000000..a8bf008af1 --- /dev/null +++ b/example/input/Input__Flag_RadialResolution @@ -0,0 +1,13 @@ +# Level Refine_Rad + 0 0.01 + 1 0.01 + 2 0.01 + 3 0.01 + 4 0.01 + 5 0.01 + 6 0.01 + 7 0.01 + 8 0.01 + 9 0.01 + 10 0.01 + 11 0.01 diff --git a/example/input/Input__Flag_Spectral b/example/input/Input__Flag_Spectral new file mode 100644 index 0000000000..dc2692bf61 --- /dev/null +++ b/example/input/Input__Flag_Spectral @@ -0,0 +1,13 @@ +# Level Refinement Derefinement (derefinement currently not functional) + 0 1.0 -1.0 + 1 1.0 -1.0 + 2 1.0 -1.0 + 3 1.0 -1.0 + 4 1.0 -1.0 + 5 1.0 -1.0 + 6 1.0 -1.0 + 7 1.0 -1.0 + 8 1.0 -1.0 + 9 1.0 -1.0 + 10 1.0 -1.0 + 11 1.0 -1.0 \ No newline at end of file diff --git a/example/input/Input__Par_Mesh b/example/input/Input__Par_Mesh new file mode 100644 index 0000000000..89f722f458 --- /dev/null +++ b/example/input/Input__Par_Mesh @@ -0,0 +1,14 @@ +# List of supported labels in different models: +# HYDRO : Dens, MomX, MomY, MomZ, Engy, VelX, VelY, VelZ, Pres, Temp, Entr, Eint +# [, Pote] [, MagX, MagY, MagZ, MagE] +# ELBDM : Dens, Real, Imag [, Pote] +# +# Note: +# --> Built-in passive fields are supported as well +# (check Init_Field() in src/Init/Init_Field.cpp for the labels of passive fields) +# --> The input field label is case sensitive +# --> The output field label in the HDF5 snapshots is prefixed with "Mesh" +# +Dens +Pres +VelX diff --git a/example/queue/submit_forerunnerI_gnu.job b/example/queue/submit_forerunnerI_gnu.job new file mode 100644 index 0000000000..63a1cc1540 --- /dev/null +++ b/example/queue/submit_forerunnerI_gnu.job @@ -0,0 +1,32 @@ +#!/bin/bash + +################################################################# +# OpenMPI(compiled by GNU) job script example # +################################################################# + +#SBATCH --account=ACCOUNT # (-A) Account/project number +#SBATCH --job-name=JOB_NAME # (-J) Job name +#SBATCH --partition=ct448 # (-p) Specific slurm partition +#SBATCH --nodes=2 # (-N) Maximum number of nodes to be allocated +#SBATCH --ntasks=32 # (-n) Number of total MPI tasks (i.e. processes) +#SBATCH --cpus-per-task=7 # (-c) Number of cores per MPI task +#SBATCH --ntasks-per-node=16 # Maximum number of tasks on each node +#SBATCH --mem=482000M # Memory limit per compute node for the job. Do not use with mem-per-cpu flag. +#SBATCH --time=2:00:00 # (-t) Wall time limit (days-hrs:min:sec) +##SBATCH -o job.%j.out +##SBATCH -e job.%j.err +##SBATCH --mail-type=BEGIN,END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) +##SBATCH --mail-user=EMAIL_ADDRESS # Where to send mail. Set this to your email address +##SBATCH --exclude=icpnp[101-102,255-256] # Example for excluding specified nodes + +LOG_FILE=log + +module purge +module use /home/d07222009/module_CALAB +module load gnu_13.2.0/gcc/13.2.0 gnu_13.2.0/fftw/3.3.10 gnu_13.2.0/gsl/2.8.0 gnu_13.2.0/hdf5/1.14.4 gnu_13.2.0/openmpi/5.0.0 gnu_13.2.0/openucx/1.18.0 +module list 1>>$LOG_FILE 2>&1 + +# See: https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man1/mpirun.1.html#the-map-by-option +# There are 8 NUMA nodes on each node, 4 per socket +mpirun -map-by ppr:2:numa:pe=7 --report-bindings ./gamer 1>>$LOG_FILE 2>&1 +echo "=============================================================" >> $LOG_FILE diff --git a/example/queue/submit_forerunnerI_intel.job b/example/queue/submit_forerunnerI_intel.job new file mode 100644 index 0000000000..c2c5c2b888 --- /dev/null +++ b/example/queue/submit_forerunnerI_intel.job @@ -0,0 +1,32 @@ +#!/bin/bash + +################################################################# +# OpenMPI(compiled by OneAPI) job script example # +################################################################# + +#SBATCH --account=ACCOUNT # (-A) Account/project number +#SBATCH --job-name=JOB_NAME # (-J) Job name +#SBATCH --partition=ct448 # (-p) Specific slurm partition +#SBATCH --nodes=2 # (-N) Maximum number of nodes to be allocated +#SBATCH --ntasks=32 # (-n) Number of total MPI tasks (i.e. processes) +#SBATCH --cpus-per-task=7 # (-c) Number of cores per MPI task +#SBATCH --ntasks-per-node=16 # Maximum number of tasks on each node +#SBATCH --mem=482000M # Memory limit per compute node for the job. Do not use with mem-per-cpu flag. +#SBATCH --time=2:00:00 # (-t) Wall time limit (days-hrs:min:sec) +##SBATCH -o job.%j.out +##SBATCH -e job.%j.err +##SBATCH --mail-type=BEGIN,END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) +##SBATCH --mail-user=EMAIL_ADDRESS # Where to send mail. Set this to your email address +##SBATCH --exclude=icpnp[101-102,255-256] # Example for excluding specified nodes + +LOG_FILE=log + +module purge +module use /home/d07222009/module_CALAB +module load intel/2024_01_46 oneapi_2024/fftw/3.3.10 oneapi_2024/gsl/2.8.0 oneapi_2024/hdf5/1.14.4 oneapi_2024/openmpi/5.0.0 oneapi_2024/openucx/1.18.0 +module list 1>>$LOG_FILE 2>&1 + +# See: https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man1/mpirun.1.html#the-map-by-option +# There are 8 NUMA nodes on each node, 4 per socket +mpirun -map-by ppr:2:numa:pe=7 --report-bindings ./gamer 1>>$LOG_FILE 2>&1 +echo "=============================================================" >> $LOG_FILE diff --git a/example/queue/submit_taiwania3_gnu.job b/example/queue/submit_taiwania3_gnu.job index fe789002c2..87b02f081a 100644 --- a/example/queue/submit_taiwania3_gnu.job +++ b/example/queue/submit_taiwania3_gnu.job @@ -1,9 +1,9 @@ +#!/bin/bash + ############################################### # GNU MPI job script example # ############################################### -#!/bin/bash - #SBATCH --account=ACCOUNT # (-A) Account/project number #SBATCH --job-name=JOB_NAME # (-J) Job name #SBATCH --partition=ctest # (-p) Specific slurm partition @@ -13,19 +13,20 @@ #SBATCH --cpus-per-task=14 # (-c) Number of cores per MPI task #SBATCH --mem=162400M # Memory limit per compute node for the job. Do not use with mem-per-cpu flag. #SBATCH --time=00:30:00 # (-t) Wall time limit (days-hrs:min:sec) -##SBATCH -o log_taiwania_III +##SBATCH -o log ##SBATCH -e job.%j.err ##SBATCH --mail-type=BEGIN,END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) ##SBATCH --mail-user=EMAIL_ADDRESS # Where to send mail. Set this to your email address #SBATCH --exclude=cpn[3001-3120,3241-3360] # Exclude large-memory nodes -LOG_FILE=log_taiwania_III_gnu_9.4.0 +LOG_FILE=log module purge -module load compiler/gcc/9.4.0 OpenMPI/4.1.1 -module list >> $LOG_FILE - -export LD_LIBRARY_PATH="/opt/ohpc/Taiwania3/libs/gcc485/ompi410/hdf5-1.12/lib:FFTW_PATH/lib:$LD_LIBRARY_PATH" +module use /home/d07222009/module_CALAB +module load gcc/13.2.0 gnu_13.2.0/fftw/3.3.10 gnu_13.2.0/gsl/2.8.0 gnu_13.2.0/hdf5/1.14.4 gnu_13.2.0/openmpi/5.0.5 gnu_13.2.0/openucx/1.18.0 +module list 1>>$LOG_FILE 2>&1 -mpirun -map-by ppr:2:socket:pe=14 --report-bindings ./gamer 1>>$LOG_FILE 2>&1 -echo "=============================================================" >> $LOG_FILE +# See: https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man1/mpirun.1.html#the-map-by-option +# There are 2 NUMA nodes on each node, 1 per socket +mpirun -map-by ppr:2:numa:pe=14 --report-bindings ./gamer 1>>$LOG_FILE 2>&1 +echo "=============================================================" 1>>$LOG_FILE 2>&1 diff --git a/example/queue/submit_taiwania3_intel.job b/example/queue/submit_taiwania3_intel.job index 74b419a679..b42e4a7947 100644 --- a/example/queue/submit_taiwania3_intel.job +++ b/example/queue/submit_taiwania3_intel.job @@ -1,9 +1,9 @@ +#!/bin/bash + ############################################### # Intel MPI job script example # ############################################### -#!/bin/bash - #SBATCH --account=ACCOUNT # (-A) Account/project number #SBATCH --job-name=JOB_NAME # (-J) Job name #SBATCH --partition=ctest # (-p) Specific slurm partition @@ -13,20 +13,20 @@ #SBATCH --cpus-per-task=14 # (-c) Number of cores per MPI task #SBATCH --mem=162400M # Memory limit per compute node for the job. Do not use with mem-per-cpu flag. #SBATCH --time=00:30:00 # (-t) Wall time limit (days-hrs:min:sec) -##SBATCH -o log_taiwania_III +##SBATCH -o log ##SBATCH -e job.%j.err #SBATCH --mail-type=BEGIN,END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) #SBATCH --mail-user=EMAIL_ACCOUNT # Where to send mail. Set this to your email address #SBATCH --exclude=cpn[3001-3120,3241-3360] # Exclude large-memory nodes -LOG_FILE=log_taiwania_III_intel_2018 +LOG_FILE=log module purge -module load compiler/intel/2018u4 IntelMPI/2018u4 -module list >> LOG_FILE -export LD_LIBRARY_PATH="FFTW_PATH/lib:$LD_LIBRARY_PATH" -export UCX_TLS="ud,dc,shm,self" +module use /home/d07222009/module_CALAB +module load intel/2024 intel_2024/fftw/3.3.10 intel_2024/gsl/2.8.0 intel_2024/hdf5/1.14.4 intel_2024/openmpi/5.0.5 intel_2024/openucx/1.18.0 +module list 1>>$LOG_FILE 2>&1 -mpiexec.hydra -bootstrap slurm -n $SLURM_NTASKS ./gamer >> $LOG_FILE 2>&1 -#mpirun -map-by ppr:2:socket:pe=14 -print-rank-map ./gamer 1>>$LOG_FILE 2>&1 -echo "=============================================================" >> $LOG_FILE +# See: https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man1/mpirun.1.html#the-map-by-option +# There are 2 NUMA nodes on each node, 1 per socket +mpirun -map-by ppr:2:numa:pe=14 --report-bindings ./gamer 1>>$LOG_FILE 2>&1 +echo "=============================================================" 1>>$LOG_FILE 2>&1 diff --git a/example/script/clean.sh b/example/script/clean.sh index d6c66b60b8..cc9345ab86 100644 --- a/example/script/clean.sh +++ b/example/script/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Center \ - GRACKLE_INFO Record__DivB + GRACKLE_INFO Record__DivB Record__Hybrid diff --git a/example/test_problem/ELBDM/DiskHeating/DensTableExample b/example/test_problem/ELBDM/DiskHeating/DensTableExample new file mode 100644 index 0000000000..6469688293 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/DensTableExample @@ -0,0 +1,388 @@ +# radius (kpc) density (g/cm^3) +5.967904692125181e-02 1.127398940587602e-23 +6.064884386046022e-02 1.137773414631666e-23 +8.508169350868788e-02 1.127887838430367e-23 +1.049166812363333e-01 1.119757126647969e-23 +1.212970873991709e-01 1.122934549415392e-23 +1.336147053154722e-01 1.115285190358454e-23 +1.471831670433211e-01 1.107595763294151e-23 +1.701625448514275e-01 1.102849232495445e-23 +1.814957928459816e-01 1.097292804190173e-23 +1.904883873381100e-01 1.097139003467226e-23 +1.999265390215758e-01 1.090308300370590e-23 +2.098323239736347e-01 1.083716591279447e-23 +2.167073721559990e-01 1.084775735779502e-23 +2.238076777563557e-01 1.078236772746672e-23 +2.425929741607858e-01 1.073987795746785e-23 +2.465351605050992e-01 1.067006225185465e-23 +2.546127582508699e-01 1.063076380888987e-23 +2.629550143326325e-01 1.060274539679119e-23 +2.672280880696475e-01 1.055897692796490e-23 +2.759836789451054e-01 1.049901548899937e-23 +2.804684711949819e-01 1.048616160891342e-23 +2.943648772203501e-01 1.038518124168192e-23 +2.991483677696454e-01 1.037995914042226e-23 +3.089498101935024e-01 1.032469393415659e-23 +3.139703089405758e-01 1.028079000918807e-23 +3.242573846442659e-01 1.021302952519688e-23 +3.295266346636028e-01 1.016160836121982e-23 +3.403234053792958e-01 1.010744482973136e-23 +3.458537315809412e-01 1.005415294443138e-23 +3.514739267349218e-01 1.003917219720165e-23 +3.571854512304263e-01 9.989523125124693e-24 +3.629897891882715e-01 9.951347493282803e-24 +3.688884488465480e-01 9.888549539644256e-24 +3.809748891609392e-01 9.811454063637114e-24 +3.871658104387383e-01 9.759096485848333e-24 +3.934573354764133e-01 9.714160473621187e-24 +3.998510991060104e-01 9.664139243731232e-24 +4.063487627259373e-01 9.619788351952369e-24 +4.196625709594866e-01 9.502304021624033e-24 +4.264821751222990e-01 9.447247826618909e-24 +4.334125992727770e-01 9.395727571792467e-24 +4.404556442587957e-01 9.338290925946234e-24 +4.476131401923853e-01 9.257224252197791e-24 +4.548869469252716e-01 9.216126304122215e-24 +4.622789545321641e-01 9.160730707568329e-24 +4.697910838018779e-01 9.096940264673882e-24 +4.774252867364464e-01 9.061145818100212e-24 +4.851835470583421e-01 8.948121453499290e-24 +4.930678807259413e-01 8.882501814828118e-24 +5.010803364573656e-01 8.828333095847913e-24 +5.092229962628262e-01 8.746922872153511e-24 +5.174979759856403e-01 8.681156313053058e-24 +5.259074258520172e-01 8.598387743111771e-24 +5.344535310297901e-01 8.541325267723124e-24 +5.431385121962243e-01 8.459358365703292e-24 +5.519646261150534e-01 8.386026508319772e-24 +5.609341662228933e-01 8.311080785430627e-24 +5.700494632251762e-01 8.215523683164733e-24 +5.793128857017893e-01 8.104268601359583e-24 +5.887268407225342e-01 8.016729065489138e-24 +5.982937744725979e-01 7.962919799311366e-24 +6.080161728881858e-01 7.889548349968674e-24 +6.178965623024846e-01 7.776490974947911e-24 +6.279375101021236e-01 7.671181509276225e-24 +6.381416253942922e-01 7.562955912685749e-24 +6.485115596847222e-01 7.480215044038845e-24 +6.590500075666630e-01 7.380787506758842e-24 +6.697597074210659e-01 7.307986373108950e-24 +6.806434421281424e-01 7.200643136636133e-24 +6.917040397904870e-01 7.083167796225677e-24 +7.029443744679533e-01 6.975073584772102e-24 +7.143673669244570e-01 6.899719532547228e-24 +7.259759853869447e-01 6.777657693552330e-24 +7.377732463166657e-01 6.685845496820097e-24 +7.497622151929929e-01 6.584446175493451e-24 +7.619460073099772e-01 6.448278890588671e-24 +7.743277885858466e-01 6.345848922469148e-24 +7.869107763856628e-01 6.230117219011781e-24 +7.996982403573298e-01 6.116194146039691e-24 +8.126935032812208e-01 5.997420739510584e-24 +8.258999419335784e-01 5.896763714751286e-24 +8.393209879639629e-01 5.765814812935475e-24 +8.529601287869537e-01 5.653898202832119e-24 +8.668209084883440e-01 5.536559110237282e-24 +8.809069287460622e-01 5.422530729610690e-24 +8.952218497660425e-01 5.297576977199071e-24 +9.097693912333382e-01 5.179734874450507e-24 +9.245533332786562e-01 5.073740682113218e-24 +9.395775174606138e-01 4.944744337502179e-24 +9.548458477639561e-01 4.833540189994916e-24 +9.703622916139936e-01 4.703419852970734e-24 +9.861308809075273e-01 4.582097220582799e-24 +1.002155713060510e+00 4.459261558102618e-24 +1.018440952072767e+00 4.335530219059499e-24 +1.034990829609986e+00 4.221411751270444e-24 +1.051809646103302e+00 4.102861181931818e-24 +1.068901771866752e+00 3.993609954595193e-24 +1.086271648232886e+00 3.875093074669796e-24 +1.103923788706836e+00 3.738644692002888e-24 +1.121862780139121e+00 3.633716199290756e-24 +1.140093283917547e+00 3.531863816044027e-24 +1.158620037178440e+00 3.421089911806486e-24 +1.177447854037577e+00 3.304986685875536e-24 +1.196581626841120e+00 3.191067739246340e-24 +1.216026327436871e+00 3.084750746943772e-24 +1.235787008466203e+00 2.982187368755914e-24 +1.255868804676948e+00 2.882927207494185e-24 +1.276276934257672e+00 2.779230812411474e-24 +1.297016700193590e+00 2.685290917162804e-24 +1.318093491644527e+00 2.582069845779673e-24 +1.339512785345282e+00 2.491457872690128e-24 +1.361280147028730e+00 2.400033703825308e-24 +1.383401232872075e+00 2.305154887785479e-24 +1.405881790966556e+00 2.214274516356826e-24 +1.428727662811113e+00 2.129919751333224e-24 +1.451944784830252e+00 2.041837175864289e-24 +1.475539189916613e+00 1.966187812523663e-24 +1.499517008998606e+00 1.885709130000226e-24 +1.523884472633485e+00 1.806793802693778e-24 +1.548647912626373e+00 1.742408240539953e-24 +1.573813763675541e+00 1.665345908634699e-24 +1.599388565044447e+00 1.598424807127638e-24 +1.625378962260940e+00 1.528230266314316e-24 +1.651791708844081e+00 1.464449780161086e-24 +1.678633668059029e+00 1.407537256652847e-24 +1.705911814700412e+00 1.345839259242587e-24 +1.733633236904740e+00 1.293695189688161e-24 +1.761805137992213e+00 1.235558136785217e-24 +1.790434838338484e+00 1.185823273343146e-24 +1.819529777276835e+00 1.129767373659536e-24 +1.849097515031261e+00 1.089066731976520e-24 +1.879145734680979e+00 1.037051219897031e-24 +1.909682244156824e+00 9.967877771107034e-25 +1.940714978270150e+00 9.509845740895015e-25 +1.972252000774645e+00 9.132425497621187e-25 +2.004301506461671e+00 8.720033319623635e-25 +2.036871823289655e+00 8.370898666396444e-25 +2.069971414548086e+00 8.006659598407444e-25 +2.103608881056676e+00 7.669046354150865e-25 +2.137792963400222e+00 7.350448753502249e-25 +2.172532544199870e+00 7.033052029533597e-25 +2.207836650421202e+00 6.756317470616627e-25 +2.243714455719868e+00 6.460801341875871e-25 +2.280175282825335e+00 6.199175007962817e-25 +2.317228605963363e+00 5.956722695893998e-25 +2.354884053317864e+00 5.709362107016651e-25 +2.393151409532715e+00 5.484029529639351e-25 +2.432040618254322e+00 5.270122540414737e-25 +2.471561784715405e+00 5.065223910527253e-25 +2.511725178360821e+00 4.867339169001474e-25 +2.552541235516054e+00 4.687960726120802e-25 +2.594020562099020e+00 4.509965885964898e-25 +2.636173936376039e+00 4.341902532717477e-25 +2.679012311762495e+00 4.188286053185525e-25 +2.722546819669050e+00 4.052541852965764e-25 +2.766788772394110e+00 3.897588606248798e-25 +2.811749666063283e+00 3.755759078501531e-25 +2.857441183616626e+00 3.638725331586690e-25 +2.903875197844368e+00 3.526014102106276e-25 +2.951063774472086e+00 3.389943230449233e-25 +2.999019175295901e+00 3.278102370061026e-25 +3.047753861368671e+00 3.160797881004001e-25 +3.097280496237959e+00 3.055260476974870e-25 +3.147611949236613e+00 2.962831980325706e-25 +3.198761298826834e+00 2.856992425073186e-25 +3.250741835998515e+00 2.760606072965308e-25 +3.303567067722942e+00 2.663768325398848e-25 +3.357250720462485e+00 2.567382689904185e-25 +3.411806743737387e+00 2.485939157766528e-25 +3.467249313750496e+00 2.401639624166846e-25 +3.523592837070912e+00 2.322215733924149e-25 +3.580851954377493e+00 2.251484312126170e-25 +3.639041544263137e+00 2.181536483381551e-25 +3.698176727101018e+00 2.117277883791743e-25 +3.758272868973505e+00 2.058164620111951e-25 +3.819345585665008e+00 2.003846712386836e-25 +3.881410746719684e+00 1.952369655713000e-25 +3.944484479565089e+00 1.910134605778926e-25 +4.008583173702847e+00 1.864957199867478e-25 +4.073723484967353e+00 1.833473314789739e-25 +4.139922339853823e+00 1.795459555776047e-25 +4.207196939916530e+00 1.765520594911228e-25 +4.275564766238588e+00 1.736803112556888e-25 +4.345043583974348e+00 1.703727922047143e-25 +4.415651446965621e+00 1.684475265648046e-25 +4.487406702432923e+00 1.652323104280428e-25 +4.560327995742871e+00 1.625360931375033e-25 +4.634434275253227e+00 1.598834884275338e-25 +4.709744797236490e+00 1.567745285333286e-25 +4.786279130883601e+00 1.538979412730620e-25 +4.864057163388928e+00 1.509427618650410e-25 +4.943099105117886e+00 1.482265804376793e-25 +5.023425494858559e+00 1.450891895205857e-25 +5.105057205158552e+00 1.426911522859353e-25 +5.188015447748777e+00 1.406491258372321e-25 +5.272321779055169e+00 1.383627551217531e-25 +5.357998105800071e+00 1.372051320925959e-25 +5.445066690694631e+00 1.353935215453449e-25 +5.533550158223683e+00 1.349155972100849e-25 +5.623471500524676e+00 1.339710379471805e-25 +5.714854083362012e+00 1.335239466521643e-25 +5.807721652198699e+00 1.326293280740091e-25 +5.902098338366438e+00 1.319572517351957e-25 +5.998008665336096e+00 1.303465636092941e-25 +6.095477555090048e+00 1.283960558344008e-25 +6.194530334598075e+00 1.259078525215507e-25 +6.295192742398511e+00 1.227843098584635e-25 +6.397490935286224e+00 1.194880682010985e-25 +6.501451495109521e+00 1.152078608687583e-25 +6.607101435677253e+00 1.107122521717306e-25 +6.714468209778292e+00 1.064729799930043e-25 +6.823579716315042e+00 1.023803234876508e-25 +6.934464307552883e+00 9.865855641339699e-26 +7.047150796487440e+00 9.508727988824301e-26 +7.161668464331427e+00 9.250777849557254e-26 +7.278047068123453e+00 9.031832870519979e-26 +7.396316848460167e+00 8.839527300608182e-26 +7.516508537354213e+00 8.697094866095315e-26 +7.638653366219840e+00 8.555318200123143e-26 +7.762783073988281e+00 8.411829143781733e-26 +7.888929915355043e+00 8.262438830153437e-26 +8.017126669161051e+00 8.100484452740191e-26 +8.147406646910325e+00 7.883655451852640e-26 +8.279803701425720e+00 7.675162472355235e-26 +8.414352235645524e+00 7.448442229576448e-26 +8.551087211562919e+00 7.218067389704076e-26 +8.690044159310769e+00 6.994034983118804e-26 +8.831259186394028e+00 6.800102491187607e-26 +8.974768987072016e+00 6.615821287731542e-26 +9.120610851893513e+00 6.457119597011420e-26 +9.268822677386451e+00 6.310263646106842e-26 +9.419442975905227e+00 6.161875137121399e-26 +9.572510885638055e+00 6.014009117533226e-26 +9.728066180776743e+00 5.852198466617293e-26 +9.886149281852116e+00 5.681977196685150e-26 +1.004680126623700e+01 5.520544146360909e-26 +1.021006387882008e+01 5.362244869810976e-26 +1.037597954285323e+01 5.233498687827249e-26 +1.054459137097484e+01 5.125675559477709e-26 +1.071594317641283e+01 5.028055157326684e-26 +1.089007948436911e+01 4.949456198320113e-26 +1.106704554358942e+01 4.845418259324849e-26 +1.124688733812101e+01 4.734270281406557e-26 +1.142965159926151e+01 4.610657459690618e-26 +1.161538581770188e+01 4.473119573289557e-26 +1.180413825586659e+01 4.336192961242806e-26 +1.199595796045466e+01 4.198049474345829e-26 +1.219089477518417e+01 4.060763005084075e-26 +1.238899935374398e+01 3.932063770563067e-26 +1.259032317295593e+01 3.798963530067686e-26 +1.279491854615097e+01 3.672347096670550e-26 +1.300283863676258e+01 3.552642105172632e-26 +1.321413747214098e+01 3.444079556809445e-26 +1.342886995759222e+01 3.346930803304456e-26 +1.364709189064495e+01 3.255066933126238e-26 +1.386885997554932e+01 3.165388239165717e-26 +1.409423183801128e+01 3.076613453743422e-26 +1.432326604016658e+01 2.985100234729342e-26 +1.455602209579786e+01 2.889132176786951e-26 +1.479256048579899e+01 2.785412071401189e-26 +1.503294267389112e+01 2.684663511811691e-26 +1.527723112259360e+01 2.592926354137510e-26 +1.552548930945474e+01 2.516777387560006e-26 +1.577778174354622e+01 2.452648354586315e-26 +1.603417398222556e+01 2.390753120262996e-26 +1.629473264817108e+01 2.314008956877138e-26 +1.655952544669328e+01 2.222202259065510e-26 +1.682862118332825e+01 2.119959204659193e-26 +1.710208978171630e+01 2.023495539466881e-26 +1.738000230177147e+01 1.946691809676393e-26 +1.766243095814619e+01 1.889124227939758e-26 +1.794944913899604e+01 1.843617050866870e-26 +1.824113142504945e+01 1.797177329015623e-26 +1.853755360898704e+01 1.743712472510303e-26 +1.883879271513647e+01 1.688696410941136e-26 +1.914492701948668e+01 1.637985215401873e-26 +1.945603607002775e+01 1.598514612906590e-26 +1.977220070742116e+01 1.566547971448914e-26 +2.009350308600595e+01 1.530781070216547e-26 +2.042002669514638e+01 1.480413695144952e-26 +2.075185638092601e+01 1.411632022577918e-26 +2.108907836819518e+01 1.337743654751412e-26 +2.143178028297591e+01 1.274994049247744e-26 +2.178005117523133e+01 1.234751531756609e-26 +2.213398154200500e+01 1.209380067360784e-26 +2.249366335093631e+01 1.182983592506946e-26 +2.285919006415800e+01 1.145296031871243e-26 +2.323065666258166e+01 1.102486272402146e-26 +2.360815967057877e+01 1.068970036919585e-26 +2.399179718106183e+01 1.045517785201164e-26 +2.438166888097361e+01 1.025062487259429e-26 +2.477787607719042e+01 1.000221257042979e-26 +2.518052172284646e+01 9.674445038399919e-27 +2.558971044408587e+01 9.300623142695025e-27 +2.600554856724911e+01 8.906317172215793e-27 +2.642814414650212e+01 8.510128573501161e-27 +2.685760699191344e+01 8.121599116127128e-27 +2.729404869798809e+01 7.730545400769217e-27 +2.773758267266503e+01 7.367538049892562e-27 +2.818832416678584e+01 7.082507083181793e-27 +2.864639030404239e+01 6.843180604965076e-27 +2.911190011141059e+01 6.595674431495126e-27 +2.958497455007985e+01 6.340990363125453e-27 +3.006573654688394e+01 6.132170852280757e-27 +3.055431102624332e+01 5.975856075625596e-27 +3.105082494262627e+01 5.818582948021805e-27 +3.155540731353762e+01 5.608675919859258e-27 +3.206818925304366e+01 5.346513089885441e-27 +3.258930400584116e+01 5.086166534995140e-27 +3.311888698188132e+01 4.875360214555895e-27 +3.365707579155516e+01 4.718752095466635e-27 +3.420401028145119e+01 4.569138897001720e-27 +3.475983257069409e+01 4.375847206135559e-27 +3.532468708787391e+01 4.156933428844510e-27 +3.589872060857554e+01 3.971498042612144e-27 +3.648208229351721e+01 3.803602419259295e-27 +3.707492372731035e+01 3.611928422686495e-27 +3.767739895784770e+01 3.460289024596762e-27 +3.828966453633240e+01 3.386226659651756e-27 +3.891187955795716e+01 3.289777060318703e-27 +3.954420570324477e+01 3.142321188421409e-27 +4.018680728006029e+01 3.019459301092026e-27 +4.083985126630536e+01 2.904682923610275e-27 +4.150350735330775e+01 2.764423344857696e-27 +4.217794798991447e+01 2.647998649665928e-27 +4.286334842730224e+01 2.582369525606335e-27 +4.355988676451584e+01 2.490145007696827e-27 +4.426774399474667e+01 2.341964323108344e-27 +4.498710405236331e+01 2.210445046801357e-27 +4.571815386070561e+01 2.119817407825343e-27 +4.646108338065716e+01 2.032356682975057e-27 +4.721608566000528e+01 1.937820604496433e-27 +4.798335688360402e+01 1.836455570270898e-27 +4.876309642435236e+01 1.736926647034524e-27 +4.955550689499984e+01 1.665225676911459e-27 +5.036079420079591e+01 1.606346048416841e-27 +5.117916759299304e+01 1.519969600481343e-27 +5.201083972322012e+01 1.430496726598301e-27 +5.285602669873948e+01 1.374777185800932e-27 +5.371494813860085e+01 1.321910023245289e-27 +5.458782723070987e+01 1.252800768409013e-27 +5.547489078982191e+01 1.184626270664887e-27 +5.637636931647936e+01 1.119715428563933e-27 +5.729249705690637e+01 1.052066862696217e-27 +5.822351206387709e+01 9.966622765617625e-28 +5.916965625857299e+01 9.579973613082531e-28 +6.013117549344442e+01 9.238749809346667e-28 +6.110831961609595e+01 8.809036787615531e-28 +6.210134253420753e+01 8.293155893608045e-28 +6.311050228151176e+01 7.783627781564644e-28 +6.413606108484312e+01 7.383185505788139e-28 +6.517828543227679e+01 7.094419515437592e-28 +6.623744614237489e+01 6.725554750598382e-28 +6.731381843455677e+01 6.258286797972389e-28 +6.840768200061545e+01 5.799209420857523e-28 +6.951932107739358e+01 5.451912732730001e-28 +7.064902452064167e+01 5.232840544195202e-28 +7.179708588007637e+01 4.914575236267251e-28 +7.296380347565827e+01 4.596456011954125e-28 +7.414948047510977e+01 4.311178289556114e-28 +7.535442497269101e+01 4.001678545619092e-28 +7.657895006925889e+01 3.769009036940164e-28 +7.782337395362417e+01 3.561114094170975e-28 +7.908801998523197e+01 3.359943167688709e-28 +8.037321677818576e+01 3.130280832472630e-28 +8.167929828663662e+01 2.867454640850293e-28 +8.300660389156050e+01 2.660362396435601e-28 +8.435547848894376e+01 2.479844027638787e-28 +8.572627257940547e+01 2.279941602789714e-28 +8.711934235927235e+01 2.116186954887996e-28 +8.853504981313563e+01 1.990129068024858e-28 +8.997376280791148e+01 1.840421175463048e-28 +9.143585518843011e+01 1.649478050149463e-28 +9.292170687457843e+01 1.477387056955990e-28 +9.443170396001943e+01 1.354890073452201e-28 +9.596623881251975e+01 1.231771039051641e-28 +9.752571017590347e+01 1.106539849253688e-28 +9.911052327366488e+01 9.999819153420658e-29 +1.007210899142644e+02 9.052755184696057e-29 +1.023578285981359e+02 8.084078157406028e-29 +1.040211646264324e+02 7.117077350413077e-29 +1.057115302115383e+02 6.216063675393502e-29 +1.074293645893806e+02 5.353696794261152e-29 +1.091751141335608e+02 4.525721060844072e-29 +1.109492324713447e+02 3.770983442005429e-29 +1.127521806015354e+02 3.102875412146339e-29 +1.145844270142628e+02 2.489310876250868e-29 diff --git a/example/test_problem/ELBDM/DiskHeating/DispTableExample b/example/test_problem/ELBDM/DiskHeating/DispTableExample new file mode 100644 index 0000000000..567a08795b --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/DispTableExample @@ -0,0 +1,1001 @@ +# radius (kpc) 1d velocity dispersion (km/s) +9.051444959215345e-02 9.991245314344237e+00 +1.665676403020703e-01 9.974770950373200e+00 +2.168297368851021e-01 9.967924939657628e+00 +2.579357120415600e-01 9.923881567789760e+00 +2.936667891184207e-01 9.909181752434900e+00 +3.259621754414989e-01 9.880184724377930e+00 +3.555403686481572e-01 9.858400815375209e+00 +3.831672366202105e-01 9.824941485562107e+00 +4.091418862056036e-01 9.787784424040263e+00 +4.337513397389973e-01 9.776855879291269e+00 +4.572413416428418e-01 9.736616033616709e+00 +4.797112340834107e-01 9.733217868916796e+00 +5.013028308130825e-01 9.676159978358191e+00 +5.221848955793882e-01 9.654856706290374e+00 +5.423839583953626e-01 9.655754055887940e+00 +5.619105846589300e-01 9.624842557014430e+00 +5.809637408456354e-01 9.575227190106119e+00 +5.995399913132514e-01 9.589805805555189e+00 +6.176695341218641e-01 9.564170067875601e+00 +6.353619067366739e-01 9.530739777996587e+00 +6.527297342476823e-01 9.494612409016778e+00 +6.697130268715661e-01 9.513824287857258e+00 +6.863941661246031e-01 9.482170742613858e+00 +7.027689912333419e-01 9.454796418522410e+00 +7.188446924516487e-01 9.420729979463745e+00 +7.345692932481849e-01 9.412663731652367e+00 +7.500827845424061e-01 9.370348006504232e+00 +7.654373591142728e-01 9.385312719377993e+00 +7.804999278784134e-01 9.339504446262865e+00 +7.953811293006449e-01 9.345420316581190e+00 +8.100397201210403e-01 9.338389191965502e+00 +8.244635053628488e-01 9.315276259459335e+00 +8.387264751506742e-01 9.255228783714800e+00 +8.528137419016346e-01 9.266941005610802e+00 +8.667800636562711e-01 9.258116533666671e+00 +8.805700161017986e-01 9.241237610296029e+00 +8.942246502571259e-01 9.222024007435367e+00 +9.076913718999982e-01 9.200273763680448e+00 +9.210333451320235e-01 9.190156422365469e+00 +9.342267878961147e-01 9.130663313299825e+00 +9.473282036083772e-01 9.159845716734345e+00 +9.602564801501545e-01 9.139629858066456e+00 +9.730754024950397e-01 9.116926888660963e+00 +9.858303523313331e-01 9.110481821338666e+00 +9.984906671579762e-01 9.072113241060105e+00 +1.010995065164045e+00 9.086279985429703e+00 +1.023407864780478e+00 9.063227946617056e+00 +1.035707379885587e+00 9.045744479990947e+00 +1.047958031253424e+00 9.024470893824738e+00 +1.060114738259678e+00 9.021836007243493e+00 +1.072175293676792e+00 9.019826247067181e+00 +1.084076769065261e+00 8.976305088229291e+00 +1.095932037662822e+00 8.963177049471254e+00 +1.107703662875320e+00 8.951629743138472e+00 +1.119431621560145e+00 8.962875101146103e+00 +1.131054377662430e+00 8.961016741651424e+00 +1.142647108713709e+00 8.906825129744497e+00 +1.154162512767211e+00 8.900993076172583e+00 +1.165577212095682e+00 8.880261572359849e+00 +1.176947776759482e+00 8.891696317698349e+00 +1.188234271150456e+00 8.850774366001524e+00 +1.199458836258812e+00 8.859126537032051e+00 +1.210579995757309e+00 8.863669690080147e+00 +1.221671341673499e+00 8.852880925331977e+00 +1.232704023447025e+00 8.790609260295579e+00 +1.243667625393673e+00 8.783352784175660e+00 +1.254572338025936e+00 8.730794080770842e+00 +1.265408990306328e+00 8.769090154059002e+00 +1.276200350491230e+00 8.771066091949187e+00 +1.286970056494707e+00 8.749738671424270e+00 +1.297697581518465e+00 8.700815296796394e+00 +1.308389311359829e+00 8.710467026280680e+00 +1.319007322915593e+00 8.673441896453621e+00 +1.329570581306716e+00 8.655570007202479e+00 +1.340096938279985e+00 8.671804102706988e+00 +1.350546544861093e+00 8.643139166829620e+00 +1.361012985661630e+00 8.630794011317560e+00 +1.371442898126210e+00 8.622599864214271e+00 +1.381832478553920e+00 8.578731936879631e+00 +1.392171511069554e+00 8.599955504430127e+00 +1.402451600285972e+00 8.590516193851725e+00 +1.412685407845439e+00 8.530474704548379e+00 +1.422868874906741e+00 8.542868352367142e+00 +1.432994573480347e+00 8.534483786181079e+00 +1.443067858395854e+00 8.525789976068292e+00 +1.453101423971246e+00 8.489407222908676e+00 +1.463083946348457e+00 8.493135104228774e+00 +1.473062438780361e+00 8.519960808618055e+00 +1.483051250951952e+00 8.460396433425821e+00 +1.493010266912880e+00 8.479782703312120e+00 +1.502906984394867e+00 8.437813527461969e+00 +1.512733120187583e+00 8.446946665397959e+00 +1.522584185099444e+00 8.441494554820448e+00 +1.532402583601626e+00 8.416287932704822e+00 +1.542179743343738e+00 8.380436539953063e+00 +1.551947268130736e+00 8.350197626559977e+00 +1.561653970996335e+00 8.390253329492015e+00 +1.571353308265052e+00 8.361925477995605e+00 +1.581024856418998e+00 8.363211813403693e+00 +1.590631647727006e+00 8.333128505146457e+00 +1.600203587130945e+00 8.317683794089872e+00 +1.609805756475869e+00 8.306978534973876e+00 +1.619341866615469e+00 8.294721039230749e+00 +1.628853424065078e+00 8.283839910175541e+00 +1.638377919819222e+00 8.269880664799969e+00 +1.647843256089553e+00 8.274823210280525e+00 +1.657292296377826e+00 8.243372023317864e+00 +1.666705493968850e+00 8.228433790096524e+00 +1.676069831797134e+00 8.232840559516459e+00 +1.685472931023503e+00 8.229628933061854e+00 +1.694841078809259e+00 8.183429330855526e+00 +1.704154857830086e+00 8.191621012259018e+00 +1.713463839254789e+00 8.200987494747755e+00 +1.722741017433113e+00 8.180154817006043e+00 +1.732001291648819e+00 8.165203724680502e+00 +1.741230326149062e+00 8.148628362099178e+00 +1.750473518538592e+00 8.122148471995976e+00 +1.759676068848852e+00 8.130077650779143e+00 +1.768843570470882e+00 8.112870867813641e+00 +1.777976413479944e+00 8.110884681312490e+00 +1.787102863608611e+00 8.088284332144537e+00 +1.796244299958847e+00 8.052865624895301e+00 +1.805391337772920e+00 8.086877546045820e+00 +1.814474213560776e+00 8.084848525479904e+00 +1.823527596119607e+00 8.019307790688694e+00 +1.832601286160442e+00 8.043749017840216e+00 +1.841613944179411e+00 8.038914334160525e+00 +1.850656182881113e+00 8.020469326148413e+00 +1.859664238102065e+00 8.020624009049893e+00 +1.868629941357082e+00 8.014170216102398e+00 +1.877561297999507e+00 8.020700604150223e+00 +1.886483683817743e+00 7.983540975306535e+00 +1.895450404495590e+00 7.965629858874210e+00 +1.904367276352159e+00 7.940362661959291e+00 +1.913271683746916e+00 7.946254506659045e+00 +1.922161464076581e+00 7.909615065140586e+00 +1.931045087255394e+00 7.914249489894001e+00 +1.939940182133234e+00 7.895984997353528e+00 +1.948779124276933e+00 7.879651549188996e+00 +1.957624838731837e+00 7.879262761808786e+00 +1.966471882664920e+00 7.874318316117771e+00 +1.975299804771322e+00 7.839840782192348e+00 +1.984109574894776e+00 7.811255332364292e+00 +1.992886195769491e+00 7.822795912437560e+00 +2.001664282128357e+00 7.825913527695614e+00 +2.010432508647122e+00 7.814854843410613e+00 +2.019176146364370e+00 7.802430942256996e+00 +2.027905102470577e+00 7.774787728749876e+00 +2.036600009676353e+00 7.756400086907671e+00 +2.045278821184444e+00 7.759872170528842e+00 +2.053983603035677e+00 7.728151743278678e+00 +2.062672472888424e+00 7.733224695684336e+00 +2.071333113024306e+00 7.697226130631383e+00 +2.080013077752956e+00 7.689843294363090e+00 +2.088643855571413e+00 7.677536828432466e+00 +2.097254603532997e+00 7.677542114847082e+00 +2.105865109914667e+00 7.662523525325232e+00 +2.114466231849850e+00 7.652452172072873e+00 +2.123071200694739e+00 7.649438883850697e+00 +2.131632522236911e+00 7.619574138172604e+00 +2.140198305444741e+00 7.631375114126253e+00 +2.148747007139111e+00 7.607122685381352e+00 +2.157317601430382e+00 7.627721580706606e+00 +2.165852253169238e+00 7.561091729032874e+00 +2.174393632598873e+00 7.573994258626739e+00 +2.182916933550291e+00 7.560845881073616e+00 +2.191471504556234e+00 7.540601003899781e+00 +2.199970953701423e+00 7.510339994827286e+00 +2.208489688190068e+00 7.528279179547338e+00 +2.216989794986489e+00 7.531784855724363e+00 +2.225471856967510e+00 7.507171096923062e+00 +2.233954023274007e+00 7.476527111821166e+00 +2.242425446057462e+00 7.483195090702154e+00 +2.250878878374888e+00 7.472079789586532e+00 +2.259351283365691e+00 7.479042076041706e+00 +2.267801783086895e+00 7.447910674864783e+00 +2.276245721448047e+00 7.446598653057381e+00 +2.284682700832589e+00 7.425308530250501e+00 +2.293140148488713e+00 7.410482614875118e+00 +2.301584866965947e+00 7.387314613386135e+00 +2.310012258708539e+00 7.406262224653140e+00 +2.318428018997302e+00 7.382405565936730e+00 +2.326806961961323e+00 7.357158082804374e+00 +2.335183570942871e+00 7.369526310796542e+00 +2.343541751756464e+00 7.366978240664894e+00 +2.351906543804045e+00 7.348166849515945e+00 +2.360277228177180e+00 7.342588841032855e+00 +2.368658665785069e+00 7.324841086735391e+00 +2.377034128780185e+00 7.301419446033844e+00 +2.385380326443058e+00 7.297098680817219e+00 +2.393731403107788e+00 7.294085350492770e+00 +2.402078575366105e+00 7.291463834021896e+00 +2.410403279123224e+00 7.265827183192958e+00 +2.418712973813680e+00 7.247520145213514e+00 +2.427050814477540e+00 7.229690523742098e+00 +2.435378135474957e+00 7.236392741531482e+00 +2.443699285990923e+00 7.236892051686334e+00 +2.452033533018096e+00 7.227921983499942e+00 +2.460338270139747e+00 7.218505323924853e+00 +2.468651119860710e+00 7.198535601990642e+00 +2.476921153293524e+00 7.204656826773620e+00 +2.485213327702420e+00 7.165087726812131e+00 +2.493496654654376e+00 7.175685110423185e+00 +2.501786862504055e+00 7.184072849065688e+00 +2.510095434434051e+00 7.131211586668751e+00 +2.518413457556911e+00 7.136859972984735e+00 +2.526697456265067e+00 7.127468262539246e+00 +2.534945999203352e+00 7.127993082080171e+00 +2.543233098790593e+00 7.132116753954445e+00 +2.551503872053626e+00 7.096895676859104e+00 +2.559722589115218e+00 7.111635476162524e+00 +2.567995913792863e+00 7.091447268850341e+00 +2.576232190511472e+00 7.078394640459382e+00 +2.584481221632604e+00 7.074994009985541e+00 +2.592722378676825e+00 7.048491613550237e+00 +2.600959225457898e+00 7.038103553376057e+00 +2.609183994065232e+00 7.022390981493949e+00 +2.617411311385273e+00 7.033429226364427e+00 +2.625644235565350e+00 7.013837938356181e+00 +2.633882948163897e+00 6.989914717125933e+00 +2.642091942666962e+00 7.009461809926071e+00 +2.650305512980348e+00 6.982962186294321e+00 +2.658533246365642e+00 6.995243988888186e+00 +2.666746872682312e+00 6.990989866869168e+00 +2.674937392302140e+00 6.944173506889364e+00 +2.683150410954906e+00 6.963202361744078e+00 +2.691374207483112e+00 6.939473960572973e+00 +2.699572428959399e+00 6.933174500289426e+00 +2.707780726096840e+00 6.920847031086003e+00 +2.715986511752155e+00 6.925440543511925e+00 +2.724182211675575e+00 6.904073952700576e+00 +2.732344916724764e+00 6.890884558416359e+00 +2.740514960907789e+00 6.898957714479621e+00 +2.748696473940421e+00 6.902599060738130e+00 +2.756859586069139e+00 6.897139252191656e+00 +2.765018565014290e+00 6.854141195835196e+00 +2.773208021942693e+00 6.862680183697208e+00 +2.781392630925537e+00 6.843945952547908e+00 +2.789574826524269e+00 6.834240131786919e+00 +2.797720627166225e+00 6.801597620706762e+00 +2.805859120914128e+00 6.803250015292916e+00 +2.814014400809385e+00 6.797816865685114e+00 +2.822155126358587e+00 6.794610479098450e+00 +2.830314006296903e+00 6.786892277059615e+00 +2.838477934777611e+00 6.777580846030349e+00 +2.846660996334601e+00 6.778627037607439e+00 +2.854842516658457e+00 6.756274868911380e+00 +2.863008476912600e+00 6.745973570706161e+00 +2.871144783573757e+00 6.757733574373458e+00 +2.879289653251275e+00 6.738909149250871e+00 +2.887434640733716e+00 6.708406020893334e+00 +2.895569873444713e+00 6.710000923689988e+00 +2.903711340261766e+00 6.693768291037554e+00 +2.911908295134767e+00 6.685359214371700e+00 +2.920096338354381e+00 6.670608041030361e+00 +2.928232696022754e+00 6.659105345590580e+00 +2.936390842255041e+00 6.657812417668506e+00 +2.944560619079065e+00 6.622170276789201e+00 +2.952737389364393e+00 6.625827356530229e+00 +2.960880279570787e+00 6.610335246203304e+00 +2.969012770921461e+00 6.648910668810753e+00 +2.977141887360566e+00 6.588772640075120e+00 +2.985318736643642e+00 6.619080441608707e+00 +2.993511349322409e+00 6.593131961845067e+00 +3.001681937239850e+00 6.587913801261859e+00 +3.009842053367899e+00 6.571872010545192e+00 +3.017999446038180e+00 6.558342605615748e+00 +3.026177065799167e+00 6.554540082607050e+00 +3.034333209599952e+00 6.542646907603297e+00 +3.042482281682498e+00 6.528952350403667e+00 +3.050619066799459e+00 6.528435495725641e+00 +3.058759146148514e+00 6.512735368242679e+00 +3.066921831120243e+00 6.528781203226288e+00 +3.075107875067048e+00 6.499774043198638e+00 +3.083257604824291e+00 6.498123461253160e+00 +3.091378510907192e+00 6.486276410201403e+00 +3.099523900100231e+00 6.457603613096756e+00 +3.107707101900611e+00 6.472581387932846e+00 +3.115899853474430e+00 6.461509149905489e+00 +3.124060357544717e+00 6.427010358551749e+00 +3.132209481698509e+00 6.427060195142793e+00 +3.140357233432207e+00 6.455309960847099e+00 +3.148516452580783e+00 6.444426858558794e+00 +3.156669904365537e+00 6.389151029718747e+00 +3.164822414822372e+00 6.390982711226430e+00 +3.172995552918557e+00 6.387622899298519e+00 +3.181174994506634e+00 6.393465824144870e+00 +3.189354294700637e+00 6.375697101673302e+00 +3.197559576582689e+00 6.380841216242212e+00 +3.205712208474667e+00 6.370941169988106e+00 +3.213880567635618e+00 6.356783714053370e+00 +3.222051236624577e+00 6.359750176127593e+00 +3.230220468960430e+00 6.351763817138030e+00 +3.238419811324323e+00 6.296777232335423e+00 +3.246625583846536e+00 6.313101118393933e+00 +3.254806943901181e+00 6.336160215897265e+00 +3.262995596430245e+00 6.306112539813000e+00 +3.271160142736533e+00 6.297539064532894e+00 +3.279320979699928e+00 6.302851471295559e+00 +3.287504155256635e+00 6.287098995688323e+00 +3.295708805811539e+00 6.277885621240162e+00 +3.303914571221958e+00 6.260010269707073e+00 +3.312118256346885e+00 6.262133007535448e+00 +3.320296050344696e+00 6.247878429715598e+00 +3.328498363341823e+00 6.217171244236360e+00 +3.336699122031593e+00 6.242690238892128e+00 +3.344905476369670e+00 6.207488487913248e+00 +3.353109306902884e+00 6.207974684342064e+00 +3.361345255511544e+00 6.209998965011036e+00 +3.369572602638848e+00 6.189154619168844e+00 +3.377790205587923e+00 6.167400733733901e+00 +3.386003590971256e+00 6.171585031025693e+00 +3.394234377791271e+00 6.169684996729550e+00 +3.402459111003897e+00 6.147795946782023e+00 +3.410669232506410e+00 6.128594575851698e+00 +3.418926333994528e+00 6.145180138474571e+00 +3.427151507857932e+00 6.132999335138090e+00 +3.435360871355089e+00 6.114339987046916e+00 +3.443583739037654e+00 6.100391686175635e+00 +3.451784387280049e+00 6.094120131511723e+00 +3.460012762348004e+00 6.092642333315316e+00 +3.468234548719138e+00 6.076114616376823e+00 +3.476492000186071e+00 6.075112136796298e+00 +3.484731291659109e+00 6.066619898788500e+00 +3.492981933805859e+00 6.074125890057736e+00 +3.501232557361044e+00 6.031583223664412e+00 +3.509489740519445e+00 6.031029557528474e+00 +3.517758349272442e+00 6.047449265396898e+00 +3.526035905366625e+00 6.028682189613619e+00 +3.534314018553630e+00 6.023039962449616e+00 +3.542595956391936e+00 6.008333359930960e+00 +3.550867313870244e+00 6.021585002543975e+00 +3.559143469064073e+00 6.007139654187062e+00 +3.567391087349857e+00 5.956507262819867e+00 +3.575669373035081e+00 5.988930404341501e+00 +3.583953954027788e+00 5.963479067823802e+00 +3.592253187278612e+00 5.945324192139310e+00 +3.600547745042975e+00 5.942947617758270e+00 +3.608851379331711e+00 5.955495988472750e+00 +3.617175831979941e+00 5.940192903720446e+00 +3.625472304214326e+00 5.923788147442503e+00 +3.633764190621232e+00 5.920871312836272e+00 +3.642075357990406e+00 5.924743163068129e+00 +3.650401110722733e+00 5.914470534137101e+00 +3.658711323092430e+00 5.890086267018806e+00 +3.667028096349673e+00 5.895898913187962e+00 +3.675356844717340e+00 5.877799849120480e+00 +3.683710607464128e+00 5.853363310397377e+00 +3.692038106272393e+00 5.851106764640295e+00 +3.700361496907619e+00 5.866414118282698e+00 +3.708716332126331e+00 5.836065813789561e+00 +3.717080070104264e+00 5.836475213874331e+00 +3.725450916046979e+00 5.813329484521305e+00 +3.733842636404055e+00 5.777121785009736e+00 +3.742256340638015e+00 5.820344345668640e+00 +3.750639806736132e+00 5.791101270082161e+00 +3.759001352793136e+00 5.788900958879745e+00 +3.767388508861550e+00 5.791697541766860e+00 +3.775814239296701e+00 5.763180883667969e+00 +3.784224309892063e+00 5.750513821549282e+00 +3.792647280128901e+00 5.749937047936728e+00 +3.801061121887466e+00 5.745514677783294e+00 +3.809457463682138e+00 5.735052295150908e+00 +3.817866443523861e+00 5.728578899894710e+00 +3.826277988129487e+00 5.731474114310211e+00 +3.834718335655524e+00 5.706289245172696e+00 +3.843177875969209e+00 5.699642707864293e+00 +3.851600040321013e+00 5.678811710958494e+00 +3.860068217276394e+00 5.684268423210794e+00 +3.868521172276363e+00 5.672558636582172e+00 +3.876996420865674e+00 5.672401892949099e+00 +3.885418371418381e+00 5.654626698147651e+00 +3.893880144785535e+00 5.647901015550290e+00 +3.902362581633269e+00 5.641189728573530e+00 +3.910838394318595e+00 5.630696047562357e+00 +3.919346170513434e+00 5.612575254431053e+00 +3.927819217722589e+00 5.614732545631213e+00 +3.936294445076828e+00 5.608937364279955e+00 +3.944775422841003e+00 5.608364906797574e+00 +3.953257875639325e+00 5.606081811410886e+00 +3.961732938599100e+00 5.567204020184716e+00 +3.970244496213813e+00 5.572686037058609e+00 +3.978752949715724e+00 5.563607968528980e+00 +3.987273543226327e+00 5.567584958690826e+00 +3.995822413309198e+00 5.539127048651292e+00 +4.004358284083194e+00 5.545317805230821e+00 +4.012900565739628e+00 5.535605338375364e+00 +4.021464713842511e+00 5.540213257741856e+00 +4.030039466810087e+00 5.530602806265496e+00 +4.038632176028856e+00 5.503882373185770e+00 +4.047236896494178e+00 5.492071343806506e+00 +4.055845886992667e+00 5.485695833382739e+00 +4.064427700379603e+00 5.488329570869939e+00 +4.073005666551637e+00 5.485833557219857e+00 +4.081629959946633e+00 5.474381712548883e+00 +4.090232222949410e+00 5.463701392727389e+00 +4.098820779152379e+00 5.461466928218084e+00 +4.107399820926972e+00 5.449451295731829e+00 +4.116009600562549e+00 5.450277950209292e+00 +4.124617164996230e+00 5.425281153768283e+00 +4.133263358140320e+00 5.424148701580206e+00 +4.141907316933409e+00 5.442616402845466e+00 +4.150568036060033e+00 5.421989005677480e+00 +4.159221468867925e+00 5.378517745418850e+00 +4.167897469550966e+00 5.386390808069870e+00 +4.176584654274534e+00 5.386331193037437e+00 +4.185242164115321e+00 5.371954561681155e+00 +4.193931551261469e+00 5.375467405498643e+00 +4.202622533251951e+00 5.368480096826873e+00 +4.211311149948073e+00 5.365167805346929e+00 +4.220002043483638e+00 5.336262284943715e+00 +4.228686334878920e+00 5.327957555607427e+00 +4.237411288377338e+00 5.329814095034768e+00 +4.246151832155660e+00 5.294817188182140e+00 +4.254901090794918e+00 5.298202313842639e+00 +4.263664224394870e+00 5.309325801766002e+00 +4.272434295977463e+00 5.310894187401803e+00 +4.281179133596256e+00 5.308177026009643e+00 +4.289933101117387e+00 5.274037131533065e+00 +4.298707920825039e+00 5.274001441944628e+00 +4.307495079708110e+00 5.275252338826882e+00 +4.316298002165444e+00 5.255275573282980e+00 +4.325090768429716e+00 5.255701015002868e+00 +4.333882666801149e+00 5.232701959074258e+00 +4.342688585350415e+00 5.229627949067891e+00 +4.351490178001815e+00 5.226271350114633e+00 +4.360301197159095e+00 5.216522580279598e+00 +4.369130701508078e+00 5.217157113714349e+00 +4.378000668845476e+00 5.208127274005363e+00 +4.386855924316897e+00 5.196374143321233e+00 +4.395715769297293e+00 5.184254548258965e+00 +4.404546478259401e+00 5.192365382912064e+00 +4.413395412956774e+00 5.150760121280335e+00 +4.422284592755359e+00 5.176718870524613e+00 +4.431173737431078e+00 5.166754399164956e+00 +4.440072004637432e+00 5.155916849897993e+00 +4.449010242127653e+00 5.158934281625097e+00 +4.457929922439059e+00 5.137117517801758e+00 +4.466831002323119e+00 5.135967613376123e+00 +4.475752437663731e+00 5.121977546364575e+00 +4.484706731190525e+00 5.115655149734904e+00 +4.493668179762668e+00 5.118254676788109e+00 +4.502640914966831e+00 5.091449052202423e+00 +4.511608688247889e+00 5.109578022074562e+00 +4.520571438145049e+00 5.090007416012543e+00 +4.529558720313506e+00 5.077083683279709e+00 +4.538552734241494e+00 5.076086250966188e+00 +4.547579762521288e+00 5.059528707445230e+00 +4.556598215724882e+00 5.049910738655414e+00 +4.565635392304602e+00 5.038614272510560e+00 +4.574675171292834e+00 5.040159169903469e+00 +4.583736083399470e+00 5.040270092617535e+00 +4.592804581618599e+00 5.012833782133060e+00 +4.601872232730690e+00 5.031726480623454e+00 +4.610959948010735e+00 5.008479608492928e+00 +4.620047801278620e+00 5.000083574479217e+00 +4.629125921466623e+00 5.004293068014920e+00 +4.638226400852952e+00 4.979163958439991e+00 +4.647335080506092e+00 4.976879921518334e+00 +4.656425421145590e+00 4.965170701962748e+00 +4.665559981544257e+00 4.971501315409909e+00 +4.674695827545593e+00 4.981398293091504e+00 +4.683841261396431e+00 4.944994852649408e+00 +4.692999054161809e+00 4.926018895827054e+00 +4.702182020274011e+00 4.934480214505056e+00 +4.711398158763521e+00 4.919917304298099e+00 +4.720597919972222e+00 4.917677535261827e+00 +4.729811853271841e+00 4.905730629211804e+00 +4.739042472138693e+00 4.913822311556495e+00 +4.748259040691588e+00 4.896776900406905e+00 +4.757492914311331e+00 4.878581277731388e+00 +4.766725352930628e+00 4.881030016454018e+00 +4.775972896585908e+00 4.852164547430513e+00 +4.785232560867947e+00 4.874912399621820e+00 +4.794506320662743e+00 4.851335779694763e+00 +4.803770100913604e+00 4.842258636417895e+00 +4.813079943463439e+00 4.829743536564853e+00 +4.822375856599675e+00 4.836507327414035e+00 +4.831702863948692e+00 4.805072850888902e+00 +4.841062136910322e+00 4.796855462690245e+00 +4.850424349465538e+00 4.796165860042131e+00 +4.859761405165313e+00 4.795787491703195e+00 +4.869121276832495e+00 4.774669667803403e+00 +4.878510911924899e+00 4.781814022099654e+00 +4.887916273838806e+00 4.764720554962618e+00 +4.897349996616254e+00 4.773298881391852e+00 +4.906784472846828e+00 4.755226407709046e+00 +4.916217732070275e+00 4.750157592679571e+00 +4.925682410215659e+00 4.742510720661729e+00 +4.935124794979468e+00 4.739741448143403e+00 +4.944616624121466e+00 4.740618582219865e+00 +4.954104676801201e+00 4.711137374999883e+00 +4.963566843768075e+00 4.705749503263436e+00 +4.973071339956582e+00 4.686342159934660e+00 +4.982572864662687e+00 4.703775946351056e+00 +4.992086260905965e+00 4.687943329808800e+00 +5.001604908881880e+00 4.682017970855279e+00 +5.011114119275693e+00 4.682988517847212e+00 +5.020677004353428e+00 4.675026837513317e+00 +5.030213056057235e+00 4.668576588278317e+00 +5.039795585267298e+00 4.660036298441026e+00 +5.049386756716143e+00 4.653250345678063e+00 +5.059004513087085e+00 4.648107212457630e+00 +5.068649715405418e+00 4.640870185160491e+00 +5.078305337455581e+00 4.630313385276423e+00 +5.087951265598921e+00 4.618887242233978e+00 +5.097579717210087e+00 4.617276139345906e+00 +5.107232409848767e+00 4.600385082228846e+00 +5.116898276480450e+00 4.619817069104812e+00 +5.126598840406791e+00 4.596163338636813e+00 +5.136289281213891e+00 4.580727261943482e+00 +5.145997827335001e+00 4.587964108400219e+00 +5.155714137546062e+00 4.594043145500852e+00 +5.165451438050630e+00 4.580772572196066e+00 +5.175173215542804e+00 4.561510705457366e+00 +5.184895999236295e+00 4.556490367751648e+00 +5.194650629585702e+00 4.551853217111221e+00 +5.204411237391924e+00 4.558323917451319e+00 +5.214177860834836e+00 4.530017738672282e+00 +5.223998907254732e+00 4.536692236889771e+00 +5.233824512836004e+00 4.518127143401045e+00 +5.243674688703988e+00 4.522233641566471e+00 +5.253523520673234e+00 4.524616024354042e+00 +5.263374300562907e+00 4.493678738773324e+00 +5.273272747419278e+00 4.484919161838895e+00 +5.283210217370249e+00 4.483897144598834e+00 +5.293175432905500e+00 4.487273213793420e+00 +5.303137254568096e+00 4.462619884504717e+00 +5.313088024258258e+00 4.466933937369546e+00 +5.323049394255925e+00 4.457223812254113e+00 +5.333032191086468e+00 4.457018686207477e+00 +5.343026445074742e+00 4.446116646122910e+00 +5.353054264914664e+00 4.446513114394743e+00 +5.363094257083325e+00 4.428586745988746e+00 +5.373112894536689e+00 4.431039527821000e+00 +5.383132838183279e+00 4.428500608686486e+00 +5.393184753807840e+00 4.416071571481235e+00 +5.403277217087020e+00 4.386892264325899e+00 +5.413408681065474e+00 4.390408399078179e+00 +5.423521932024232e+00 4.393324491515308e+00 +5.433601762420428e+00 4.377772785394577e+00 +5.443721244311186e+00 4.362181425635068e+00 +5.453873215964512e+00 4.360691133339622e+00 +5.464046783147966e+00 4.364308010844866e+00 +5.474234603343787e+00 4.351496394897069e+00 +5.484399077201892e+00 4.350923744384971e+00 +5.494592280467954e+00 4.339980787976829e+00 +5.504831092698558e+00 4.321800879707885e+00 +5.515095595742240e+00 4.315707676033429e+00 +5.525362159830939e+00 4.315028268156754e+00 +5.535623236182191e+00 4.311569153735311e+00 +5.545929300969305e+00 4.307071394712189e+00 +5.556217629370403e+00 4.302366664119734e+00 +5.566529093853396e+00 4.287166739060715e+00 +5.576892170070350e+00 4.270887937084442e+00 +5.587263918344445e+00 4.282682830077253e+00 +5.597643046175391e+00 4.238171031655002e+00 +5.608027632433751e+00 4.264841539358067e+00 +5.618455629792979e+00 4.245642393659355e+00 +5.628844273246369e+00 4.241949425233143e+00 +5.639271311521084e+00 4.232622628955517e+00 +5.649744738418186e+00 4.228054675311080e+00 +5.660187736499131e+00 4.212700078049735e+00 +5.670670141784420e+00 4.208740522485945e+00 +5.681198502276006e+00 4.201062745367489e+00 +5.691775408827341e+00 4.183294694361227e+00 +5.702344654388274e+00 4.203908358668071e+00 +5.712923227070999e+00 4.181191314016644e+00 +5.723498053079581e+00 4.174671475274480e+00 +5.734105347429111e+00 4.166529420298161e+00 +5.744713826034659e+00 4.145359755128664e+00 +5.755347752168925e+00 4.140083160979465e+00 +5.766020358978351e+00 4.135408826683570e+00 +5.776679189107777e+00 4.118826813554116e+00 +5.787343653947743e+00 4.111715760253884e+00 +5.798086506056043e+00 4.114878616185942e+00 +5.808826618129560e+00 4.104633352353054e+00 +5.819558092283962e+00 4.097525332143333e+00 +5.830305252217725e+00 4.094188224219189e+00 +5.841058097431667e+00 4.087743995939009e+00 +5.851875923687886e+00 4.077281304476455e+00 +5.862714314089049e+00 4.069570006436522e+00 +5.873550734935986e+00 4.064410321185776e+00 +5.884409261865312e+00 4.070857378791387e+00 +5.895321586829691e+00 4.048405293873888e+00 +5.906217192346527e+00 4.034720400370873e+00 +5.917132628894704e+00 4.038426614042643e+00 +5.928074406672715e+00 4.028283562531364e+00 +5.939038293813677e+00 4.017970787539179e+00 +5.950057961466672e+00 4.005217508948509e+00 +5.961034005994071e+00 4.011435747635095e+00 +5.972061882761555e+00 3.993330964943866e+00 +5.983116706955193e+00 3.982999950854193e+00 +5.994181016035154e+00 3.988102212664813e+00 +6.005249430749426e+00 3.971027047731904e+00 +6.016367356999431e+00 3.969484295395704e+00 +6.027518880963474e+00 3.976506681134188e+00 +6.038661341953857e+00 3.959692703324433e+00 +6.049839686373002e+00 3.946899767555518e+00 +6.061064807161273e+00 3.934828326863590e+00 +6.072266551293311e+00 3.926213968901975e+00 +6.083523457123882e+00 3.923250943499193e+00 +6.094780048272005e+00 3.934329662296955e+00 +6.106044436908094e+00 3.913287550885834e+00 +6.117294302736195e+00 3.894921658596802e+00 +6.128627491427410e+00 3.897829861847746e+00 +6.140015424554287e+00 3.892053482710369e+00 +6.151406629531670e+00 3.887467831796218e+00 +6.162773073531773e+00 3.881531122604892e+00 +6.174158206700111e+00 3.849038971658570e+00 +6.185537937527248e+00 3.857634632155060e+00 +6.196963490298209e+00 3.848824044640410e+00 +6.208436260258430e+00 3.851828455597820e+00 +6.219965890710361e+00 3.836317275893189e+00 +6.231475437997032e+00 3.828929443504019e+00 +6.243017897834330e+00 3.821974450331766e+00 +6.254549192562205e+00 3.811442548545233e+00 +6.266110505690510e+00 3.802176043632312e+00 +6.277724953484727e+00 3.796961261388644e+00 +6.289360780343508e+00 3.785181301025694e+00 +6.300985941326545e+00 3.779938655739200e+00 +6.312596206790520e+00 3.789595549161791e+00 +6.324316135092385e+00 3.764974479900200e+00 +6.336086912594243e+00 3.760405167234205e+00 +6.347848073390830e+00 3.764123707896650e+00 +6.359592680163706e+00 3.759473869822676e+00 +6.371330616837175e+00 3.748180643270865e+00 +6.383153394093961e+00 3.725686483824433e+00 +6.394994658128362e+00 3.725454766999768e+00 +6.406828334162558e+00 3.719217942042828e+00 +6.418714048111982e+00 3.731801971669117e+00 +6.430598501025155e+00 3.706170743551907e+00 +6.442606887718113e+00 3.712373043236293e+00 +6.454631431745382e+00 3.684589614619088e+00 +6.466676304657094e+00 3.692669212766601e+00 +6.478687234267866e+00 3.683940282651618e+00 +6.490746893859312e+00 3.677124527539288e+00 +6.502831437156746e+00 3.675902130854609e+00 +6.514940906336868e+00 3.662807395603968e+00 +6.527040044835199e+00 3.651064962347081e+00 +6.539210499588886e+00 3.635077915945885e+00 +6.551412362792649e+00 3.624785641303959e+00 +6.563663907662078e+00 3.632143157997755e+00 +6.575913317597744e+00 3.619810662283532e+00 +6.588198286490552e+00 3.626786258060599e+00 +6.600550964003801e+00 3.606271748617919e+00 +6.612879814222400e+00 3.612541804473595e+00 +6.625249535557891e+00 3.597832857883881e+00 +6.637627551542804e+00 3.589990864400884e+00 +6.650041571608855e+00 3.586210631997906e+00 +6.662453647102328e+00 3.580031935638931e+00 +6.674944308261752e+00 3.564159599850784e+00 +6.687458821008684e+00 3.557481138867959e+00 +6.699973497007099e+00 3.556809946468211e+00 +6.712535782128611e+00 3.545766443237728e+00 +6.725098278510889e+00 3.541567805042965e+00 +6.737688462452954e+00 3.529624469542065e+00 +6.750333582499698e+00 3.530259642717706e+00 +6.763027242205489e+00 3.515493466038007e+00 +6.775700601414991e+00 3.515014580982985e+00 +6.788457909891222e+00 3.490243347163166e+00 +6.801227729565912e+00 3.483401110470984e+00 +6.814020648676300e+00 3.496892895717156e+00 +6.826829916581953e+00 3.479763410352272e+00 +6.839697749896733e+00 3.463988147804116e+00 +6.852590419132625e+00 3.464981306958875e+00 +6.865516880795735e+00 3.457694148081713e+00 +6.878479405327546e+00 3.453219137074385e+00 +6.891434287204564e+00 3.446343029382040e+00 +6.904445503159838e+00 3.445000005330413e+00 +6.917491693237846e+00 3.437630234298092e+00 +6.930602556801307e+00 3.416096272189539e+00 +6.943730462113793e+00 3.417968696465262e+00 +6.956855071770337e+00 3.407970942619714e+00 +6.970015777978787e+00 3.401138733451607e+00 +6.983223701637078e+00 3.390325529293037e+00 +6.996467242132024e+00 3.388455441762548e+00 +7.009757435628131e+00 3.378534890910256e+00 +7.023026002015287e+00 3.389052971449339e+00 +7.036347433039875e+00 3.376967902360148e+00 +7.049693087589527e+00 3.374563039810714e+00 +7.063103789147761e+00 3.359225768396887e+00 +7.076510691114111e+00 3.357062514749456e+00 +7.089983446381979e+00 3.341264204117231e+00 +7.103516685581478e+00 3.344801651327169e+00 +7.117070813556541e+00 3.320378136147368e+00 +7.130675556166977e+00 3.325347992679506e+00 +7.144348708940647e+00 3.315067091648295e+00 +7.157997911077988e+00 3.319095004357175e+00 +7.171713846345034e+00 3.298692262271332e+00 +7.185520555927099e+00 3.294004795751782e+00 +7.199352789276878e+00 3.296492584580011e+00 +7.213150352464662e+00 3.288689178859935e+00 +7.226933277116557e+00 3.274709962256319e+00 +7.240795032642382e+00 3.274648148013556e+00 +7.254712642923061e+00 3.263714738372886e+00 +7.268649384195200e+00 3.262457121231561e+00 +7.282639306327520e+00 3.250119470400902e+00 +7.296662972046594e+00 3.243701913355220e+00 +7.310719578453972e+00 3.241622957692827e+00 +7.324825346708137e+00 3.223906453135259e+00 +7.338959120098628e+00 3.222984262777465e+00 +7.353114157845634e+00 3.212457944089323e+00 +7.367309116070627e+00 3.218138424160495e+00 +7.381585742575831e+00 3.193270225198602e+00 +7.395837986469177e+00 3.197618970958155e+00 +7.410163118954403e+00 3.180786987330056e+00 +7.424555271853719e+00 3.185470799304978e+00 +7.438928914582668e+00 3.171454996451875e+00 +7.453367745513813e+00 3.158677442062837e+00 +7.467885085606354e+00 3.159600499014134e+00 +7.482456713182288e+00 3.148405601844239e+00 +7.497003259886452e+00 3.142541647137014e+00 +7.511680694519247e+00 3.138323682810002e+00 +7.526411491834713e+00 3.122884371444718e+00 +7.541082882746271e+00 3.121657257768797e+00 +7.555767066141364e+00 3.107898202274828e+00 +7.570566068647715e+00 3.094396285418785e+00 +7.585483002893878e+00 3.096515255015056e+00 +7.600404957188168e+00 3.090070121791309e+00 +7.615326452701997e+00 3.089287073196698e+00 +7.630305924401187e+00 3.081043190651930e+00 +7.645370879666919e+00 3.066527009575232e+00 +7.660417643131973e+00 3.052964649754162e+00 +7.675570274651377e+00 3.041446693449690e+00 +7.690736909180981e+00 3.038813503129471e+00 +7.705952836691163e+00 3.027987904071338e+00 +7.721203389870149e+00 3.022885647193073e+00 +7.736509213621817e+00 3.027800554221720e+00 +7.751867804722576e+00 3.018192923810358e+00 +7.767314319866564e+00 3.006624326937754e+00 +7.782783613108003e+00 2.999578062018823e+00 +7.798287410962590e+00 2.988309102608365e+00 +7.813836723253146e+00 2.981355359294452e+00 +7.829451971594067e+00 2.969953907124979e+00 +7.845154653468577e+00 2.976027125229647e+00 +7.860846523379060e+00 2.955437493873336e+00 +7.876609381993871e+00 2.959147276237673e+00 +7.892407076995961e+00 2.952527453760685e+00 +7.908282093620814e+00 2.934904315676216e+00 +7.924199672240439e+00 2.935671588057940e+00 +7.940117547607845e+00 2.926752115973458e+00 +7.956061650389660e+00 2.913819908714446e+00 +7.972112247388439e+00 2.915559175516016e+00 +7.988230053090938e+00 2.910848702066093e+00 +8.004387327964469e+00 2.900498667936511e+00 +8.020581442339507e+00 2.895886947158500e+00 +8.036822189012153e+00 2.889661459104354e+00 +8.053167406874495e+00 2.877645447714864e+00 +8.069594638246542e+00 2.851291559553903e+00 +8.086065562105691e+00 2.854703612437219e+00 +8.102581251064896e+00 2.848455824487961e+00 +8.119141568332681e+00 2.836860609557971e+00 +8.135740858003214e+00 2.831850484129236e+00 +8.152424794636607e+00 2.821343540160209e+00 +8.169206669873219e+00 2.809806878881043e+00 +8.185989338112380e+00 2.808367922999205e+00 +8.202878753866104e+00 2.797027537916351e+00 +8.219845899358495e+00 2.794984809305661e+00 +8.236871918505098e+00 2.783748364906226e+00 +8.253884664213098e+00 2.788465926541341e+00 +8.270966343595335e+00 2.770073158525793e+00 +8.288078930730448e+00 2.770535737575271e+00 +8.305279777981903e+00 2.758736181909892e+00 +8.322567842336857e+00 2.752487372629047e+00 +8.339967103584096e+00 2.741627804880288e+00 +8.357398818217588e+00 2.744461348240287e+00 +8.374838098525723e+00 2.737274118538594e+00 +8.392361808598423e+00 2.725478131928304e+00 +8.409955759633485e+00 2.713297302051984e+00 +8.427668201515749e+00 2.706080654565976e+00 +8.445405487785710e+00 2.695233698666157e+00 +8.463226811505059e+00 2.704061381726464e+00 +8.481141308562794e+00 2.674671510643962e+00 +8.499120405968828e+00 2.679813129031822e+00 +8.517107749700537e+00 2.673685767943390e+00 +8.535156814913350e+00 2.657247221786385e+00 +8.553332080364903e+00 2.652909254520416e+00 +8.571559056523148e+00 2.650898606589686e+00 +8.589877291409554e+00 2.639144537057880e+00 +8.608282525512919e+00 2.635516013997829e+00 +8.626719350260537e+00 2.632390720700676e+00 +8.645289600751155e+00 2.620700954131104e+00 +8.663965626593621e+00 2.612252413728478e+00 +8.682658157759494e+00 2.614126032661007e+00 +8.701445979197439e+00 2.597593287384506e+00 +8.720359422297363e+00 2.589314261699760e+00 +8.739184840003235e+00 2.579149494857749e+00 +8.758074298993101e+00 2.574244495672498e+00 +8.777160522226643e+00 2.573366210105512e+00 +8.796293606807650e+00 2.556282805880690e+00 +8.815562106304318e+00 2.552268933531098e+00 +8.834835601244366e+00 2.550887044879634e+00 +8.854189564687649e+00 2.536590892216023e+00 +8.873673751054733e+00 2.525899863210910e+00 +8.893248416182921e+00 2.518632394881933e+00 +8.912888405843276e+00 2.519248742264150e+00 +8.932591764325029e+00 2.506690561103154e+00 +8.952435986282028e+00 2.502486189662333e+00 +8.972357961949458e+00 2.493994159567435e+00 +8.992333251432614e+00 2.491282792530783e+00 +9.012440287007630e+00 2.476662753490056e+00 +9.032697918627564e+00 2.472633024315560e+00 +9.052897096278015e+00 2.460776466498469e+00 +9.073244818964366e+00 2.456616760969580e+00 +9.093756280848165e+00 2.444518386032422e+00 +9.114378891040934e+00 2.441329979721503e+00 +9.135028531983528e+00 2.432691945217595e+00 +9.155798816280653e+00 2.420086595613153e+00 +9.176660212753060e+00 2.409398229944333e+00 +9.197612570742654e+00 2.400733412883347e+00 +9.218595974446435e+00 2.397732204255574e+00 +9.239743356473054e+00 2.387762592615275e+00 +9.261033236974651e+00 2.384921872086804e+00 +9.282314054497562e+00 2.369260093385027e+00 +9.303654919984035e+00 2.363409436377947e+00 +9.325219064231849e+00 2.350868014406362e+00 +9.346867437287070e+00 2.348813790451135e+00 +9.368592280481810e+00 2.334661907179259e+00 +9.390461084950465e+00 2.331054483437840e+00 +9.412480441702488e+00 2.324942472378589e+00 +9.434609308465520e+00 2.310021077766146e+00 +9.456787744880494e+00 2.304363196151857e+00 +9.479132859779758e+00 2.291934168302471e+00 +9.501532273866964e+00 2.292906210231002e+00 +9.524074884720834e+00 2.281543996116447e+00 +9.546760175522760e+00 2.270811346196987e+00 +9.569662939507941e+00 2.260849311515461e+00 +9.592664577658210e+00 2.255008733022742e+00 +9.615751972517165e+00 2.245149227232055e+00 +9.638867596873414e+00 2.240448613601230e+00 +9.662121740420160e+00 2.235439636001920e+00 +9.685603315333678e+00 2.214555471204426e+00 +9.709137568744383e+00 2.212331508486050e+00 +9.732771065787128e+00 2.207324221547729e+00 +9.756546505348966e+00 2.194533992775143e+00 +9.780387840606352e+00 2.189828973006383e+00 +9.804419768315384e+00 2.184797523996344e+00 +9.828582133660241e+00 2.173201716131107e+00 +9.852925991717951e+00 2.174129558366568e+00 +9.877389832029518e+00 2.167607235642016e+00 +9.902009145422760e+00 2.154101463863629e+00 +9.926812707367047e+00 2.151189881182799e+00 +9.951668043124464e+00 2.123855781509024e+00 +9.976789344237023e+00 2.128871418600208e+00 +1.000193792146594e+01 2.114329173829787e+00 +1.002728297157961e+01 2.109363668873138e+00 +1.005273624707605e+01 2.095016648319172e+00 +1.007845610131479e+01 2.086317598939071e+00 +1.010425508516770e+01 2.080434477993742e+00 +1.013013614699210e+01 2.070748148102609e+00 +1.015613430196925e+01 2.066100239678576e+00 +1.018245065285365e+01 2.059366254736164e+00 +1.020885369000165e+01 2.048781467833260e+00 +1.023542733232621e+01 2.042676299492451e+00 +1.026215423165389e+01 2.036520048379253e+00 +1.028897659278438e+01 2.035379085874967e+00 +1.031598557409722e+01 2.022940909540991e+00 +1.034325640110906e+01 2.011561093858037e+00 +1.037070561220523e+01 2.012309279605455e+00 +1.039828479406370e+01 1.998446747026668e+00 +1.042601367265439e+01 1.993153061584416e+00 +1.045405236205431e+01 1.987534970893656e+00 +1.048223825780211e+01 1.978372501429631e+00 +1.051062946279310e+01 1.970922835192932e+00 +1.053922431181391e+01 1.964546271531353e+00 +1.056791894659611e+01 1.951547004853847e+00 +1.059681990914897e+01 1.947752319986311e+00 +1.062598184157560e+01 1.938822333494130e+00 +1.065520980325237e+01 1.931693153320327e+00 +1.068475675289162e+01 1.920962954547917e+00 +1.071457381922773e+01 1.920762603351708e+00 +1.074452218913663e+01 1.908283801870663e+00 +1.077470044587385e+01 1.899828093647898e+00 +1.080529519883718e+01 1.898026089907203e+00 +1.083591686155712e+01 1.882638782054732e+00 +1.086687059750680e+01 1.870984119630311e+00 +1.089800006536714e+01 1.861767050428116e+00 +1.092924936189662e+01 1.857769025796347e+00 +1.096069152773907e+01 1.852275104329806e+00 +1.099262670006797e+01 1.839674948083331e+00 +1.102482457585336e+01 1.830886593173797e+00 +1.105731619871706e+01 1.827033737341105e+00 +1.108987707187318e+01 1.817521594806416e+00 +1.112283089469190e+01 1.809485305285870e+00 +1.115606970854127e+01 1.799488825785699e+00 +1.118933945977239e+01 1.788087517568392e+00 +1.122285940573241e+01 1.787965691024092e+00 +1.125678966553714e+01 1.774239684881761e+00 +1.129109968243578e+01 1.764341792974305e+00 +1.132555474510823e+01 1.755567880755174e+00 +1.136046582409104e+01 1.750230401953144e+00 +1.139574483886010e+01 1.743240182994079e+00 +1.143106978440181e+01 1.735355423316995e+00 +1.146678606872380e+01 1.725598780373527e+00 +1.150288296881248e+01 1.718516113266582e+00 +1.153920715822614e+01 1.709753488661443e+00 +1.157604626834376e+01 1.709350723883968e+00 +1.161312028935976e+01 1.693667994960284e+00 +1.165028012742078e+01 1.678968553552141e+00 +1.168793289059454e+01 1.670550296975824e+00 +1.172610471209537e+01 1.657131024283915e+00 +1.176459260492638e+01 1.651268961350075e+00 +1.180336772075291e+01 1.636610141465336e+00 +1.184249359904616e+01 1.634491817281363e+00 +1.188194271004327e+01 1.619572033615788e+00 +1.192174979859032e+01 1.613905069167474e+00 +1.196209700035650e+01 1.612073607623486e+00 +1.200286471269033e+01 1.600197414383230e+00 +1.204403216146022e+01 1.589787025590657e+00 +1.208569449561884e+01 1.575241383432848e+00 +1.212772406981022e+01 1.561841496959909e+00 +1.217031748369286e+01 1.559056543964437e+00 +1.221331312560338e+01 1.544762360955713e+00 +1.225676792866482e+01 1.533449820590916e+00 +1.230064979482002e+01 1.524497863416844e+00 +1.234476550651174e+01 1.515097883130812e+00 +1.238961073579248e+01 1.507004397218803e+00 +1.243487468792004e+01 1.500061720460831e+00 +1.248066924011938e+01 1.500513033442246e+00 +1.252708843316362e+01 1.490386995264767e+00 +1.257414997469930e+01 1.488993419643792e+00 +1.262182492035476e+01 1.479529860339208e+00 +1.267009493352072e+01 1.468891328497975e+00 +1.271888368754871e+01 1.461499892986887e+00 +1.276828246118984e+01 1.451402354733088e+00 +1.281830420042961e+01 1.441069267030485e+00 +1.286888912042902e+01 1.434688492527573e+00 +1.291996260858576e+01 1.417643078485916e+00 +1.297190846976042e+01 1.406795643415921e+00 +1.302488385375759e+01 1.392432252907555e+00 +1.307820478032981e+01 1.377530938665278e+00 +1.313245303531817e+01 1.370448188327311e+00 +1.318736319606146e+01 1.358155264497709e+00 +1.324333171191776e+01 1.342321935095090e+00 +1.329986364716511e+01 1.333227122926989e+00 +1.335731802367998e+01 1.320974574249329e+00 +1.341562495807058e+01 1.310530892775097e+00 +1.347485234240245e+01 1.296799107859835e+00 +1.353509525855492e+01 1.286541354450607e+00 +1.359626006079933e+01 1.270326517075242e+00 +1.365843569018352e+01 1.249569524456653e+00 +1.372165680261726e+01 1.237734932380492e+00 +1.378589719320418e+01 1.213727944928627e+00 +1.385100535214515e+01 1.205980157063200e+00 +1.391747309463467e+01 1.192863578523194e+00 +1.398506845795805e+01 1.184789098814713e+00 +1.405363080218904e+01 1.178242093925171e+00 +1.412350505351254e+01 1.164452884725742e+00 +1.419485363793802e+01 1.159511171393126e+00 +1.426747025743661e+01 1.146265267693796e+00 +1.434142460993240e+01 1.134390556093717e+00 +1.441708047808282e+01 1.125565268863087e+00 +1.449435250885427e+01 1.115198215173279e+00 +1.457308480943307e+01 1.108006697975223e+00 +1.465329819966831e+01 1.089002051815754e+00 +1.473531320186686e+01 1.078620070673199e+00 +1.481914971229275e+01 1.061106606245876e+00 +1.490494291923437e+01 1.046010494406160e+00 +1.499293084576228e+01 1.028232627334566e+00 +1.508298399066317e+01 1.010213891705542e+00 +1.517541065745850e+01 1.008709912203584e+00 +1.527008219051617e+01 9.961635236125702e-01 +1.536745062502385e+01 9.903182559964580e-01 +1.546714308265249e+01 9.889532951294517e-01 +1.556952555032566e+01 9.866554248245296e-01 +1.567451843087067e+01 9.751022739757471e-01 +1.578258318133163e+01 9.581752004806124e-01 +1.589400105194650e+01 9.428478100725186e-01 +1.600883576639662e+01 9.315844261645112e-01 +1.612739873627202e+01 9.145155214678200e-01 +1.624994892403645e+01 9.033965869332343e-01 +1.637672258877143e+01 8.903349831849883e-01 +1.650779077679548e+01 8.815423628951109e-01 +1.664418992799417e+01 8.783163735036886e-01 +1.678554308959072e+01 8.616450519516042e-01 +1.693258133573742e+01 8.430254720373530e-01 +1.708569091866682e+01 8.197364551275157e-01 +1.724545509659271e+01 7.985487295339642e-01 +1.741298582570438e+01 7.731383750842359e-01 +1.758826809793949e+01 7.532898987246466e-01 +1.777225827066799e+01 7.324988226802176e-01 +1.796765617555977e+01 7.068536024157870e-01 +1.817428149684734e+01 6.998162255020254e-01 +1.839271680267985e+01 6.859530057856070e-01 +1.862568646838732e+01 6.774751369416968e-01 +1.887587394900956e+01 6.754708661651644e-01 +1.914386953833550e+01 6.455320858921243e-01 +1.943304403340177e+01 6.213828327528838e-01 +1.974863831988926e+01 5.979866618972404e-01 +2.009461352598835e+01 5.886938310784255e-01 +2.047803223982858e+01 5.757747375246646e-01 +2.090855495752863e+01 5.539528352816189e-01 +2.139949714153402e+01 5.102306067839727e-01 +2.197195509896472e+01 5.050121141028469e-01 +2.265608929794178e+01 4.457184212285230e-01 +2.351362565544672e+01 4.134252642197285e-01 +2.466187871583055e+01 3.929338773153763e-01 +2.642192176286753e+01 3.509561515969558e-01 +3.101828541027504e+01 2.806767148869000e-01 diff --git a/example/test_problem/ELBDM/DiskHeating/Input__Flag_NParPatch b/example/test_problem/ELBDM/DiskHeating/Input__Flag_NParPatch new file mode 100644 index 0000000000..b0f491a5e8 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/Input__Flag_NParPatch @@ -0,0 +1,12 @@ +# Level Number_of_particles_per_patch + 0 200 + 1 200 + 2 200 + 3 200 + 4 200 + 5 200 + 6 200 + 7 200 + 8 200 + 9 200 + 10 200 diff --git a/example/test_problem/ELBDM/DiskHeating/Input__Flag_Rho b/example/test_problem/ELBDM/DiskHeating/Input__Flag_Rho new file mode 100644 index 0000000000..41cc130a80 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/Input__Flag_Rho @@ -0,0 +1,5 @@ +# Level Density + 0 1.0e+3 + 1 7.0e+3 + 2 1.0e+5 + 3 4.0e+5 diff --git a/example/test_problem/ELBDM/DiskHeating/Input__Parameter b/example/test_problem/ELBDM/DiskHeating/Input__Parameter new file mode 100644 index 0000000000..006f339808 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/Input__Parameter @@ -0,0 +1,320 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.60671536e-01 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 480 # number of base-level cells along x +NX0_TOT_Y 480 # number of base-level cells along y +NX0_TOT_Z 480 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T 2.5e-1 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1013 # test problem ID [0] + # 1003: ELBDM soliton merger (+GRAVITY) + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L 4.436632034507548e+24 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V 1.00000000000000e+07 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D 2.5758579703106658e-30 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 4 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 4 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 4 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 4 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 2 # gravity boundary condition: (1=periodic, 2=isolated) +GFUNC_COEFF0 -1.0 # Green's function coefficient at the origin for the isolated BC (<0=auto) [-1.0] + + +# particle (PARTICLE only) +PAR_NPAR 20000000 # total number of particles (must be set for PAR_INIT==1/3; must be an integer) +PAR_INIT 1 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") +PAR_IC_FORMAT 1 # data format of PAR_IC: (1=[attribute][id], 2=[id][attribute]; row-major) [1] +PAR_IC_FLOAT8 -1 # floating-point precision for PAR_IC (<0: default, 0: single, 1: double) [default: same as FLOAT8_PAR] +PAR_IC_MASS -1.0 # mass of all particles for PAR_INIT==3 (<0=off) [-1.0] +PAR_IC_TYPE -1 # type of all particles for PAR_INIT==3 (<0=off) [-1] +PAR_INTERP 3 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] +PAR_INTEG 2 # particle integration scheme: (1=Euler, 2=KDK) [2] +PAR_TR_INTERP 3 # tracer particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [3] +PAR_TR_INTEG 2 # tracer particle integration scheme: (1=Euler, 2=RK2) [2] +PAR_IMPROVE_ACC 1 # improve force accuracy at patch boundaries [1] ##STORE_POT_GHOST and PAR_INTERP=2/3 ONLY## +PAR_PREDICT_POS 1 # predict particle position during mass assignment [1] +PAR_REMOVE_CELL -1.0 # remove particles X-root-cells from the boundaries (non-periodic BC only; <0=auto) [-1.0] +OPT__FREEZE_PAR 0 # do not update particles (except for tracers) [0] +PAR_TR_VEL_CORR 0 # correct tracer particle velocities in regions of discontinuous flow [0] + +# time-step +DT__MAX -1.0 # dt criterion: maximum allowed dt (<0=off) [-1.0] +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__SPEED_OF_LIGHT 0 # dt criterion: speed of light [0] ##SRHD ONLY## +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__CR_DIFFUSION 0.3 # dt criterion: cosmic-ray diffusion CFL factor [0.3] ##CR_DIFFUSION only## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 0.8 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] +AUTO_REDUCE_MINMOD_FACTOR 0.8 # reduce MINMOD_COEFF by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] ##HYDRO ONLY## +AUTO_REDUCE_MINMOD_MIN 1.0e-2 # minimum allowed MINMOD_COEFF after consecutive failures [1.0e-2] ##HYDRO ONLY## +AUTO_REDUCE_INT_MONO_FACTOR 0.8 # reduce INT_MONO_COEFF(_B) by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] +AUTO_REDUCE_INT_MONO_MIN 1.0e-2 # minimum allowed INT_MONO_COEFF(_B) after consecutive failures [1.0e-2] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +REFINE_NLEVEL 1 # number of new AMR levels to be created at once during refinement [1] +FLAG_BUFFER_SIZE 8 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV 4 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 2 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_PRES_GRADIENT 0 # flag: pressure gradient (Input__Flag_PresGradient) [0] ##HYDRO ONLY## +OPT__FLAG_LRTZ_GRADIENT 0 # flag: Lorentz factor gradient (Input__Flag_LrtzGradient) [0] ##SRHD ONLY## +OPT__FLAG_VORTICITY 0 # flag: vorticity (Input__Flag_Vorticity) [0] ##HYDRO ONLY## +OPT__FLAG_JEANS 0 # flag: Jeans length (Input__Flag_Jeans) [0] ##HYDRO ONLY## +OPT__FLAG_CURRENT 0 # flag: current density in MHD (Input__Flag_Current) [0] ##MHD ONLY## +OPT__FLAG_CRAY 0 # flag: cosmic-ray energy (Input__Flag_CRay) [0] ##COSMIC_RAY ONLY## +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 0 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL 0 # flag: spectral refinement (Input__Flag_Spectral) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL_N 2 # number of pol. coefficients to use for spectral refinement [2] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_ENGY 0 # flag: Lohner for energy density (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_PRES 0 # flag: Lohner for pressure (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_TEMP 0 # flag: Lohner for temperature (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_ENTR 0 # flag: Lohner for entropy (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_CRAY 0 # flag: Lohner for cosmic-ray energy (Input__Flag_Lohner) [0] ##COSMIC_RAY ONLY## +OPT__FLAG_LOHNER_FORM 4 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_USER_NUM 1 # number of threshold values in user-defined table (Input__Flag_User) [1] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 2 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 1.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 1 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 4.0e-23 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 1 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL -1 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_ELECTRIC 1 # correct coarse grids by the fine-grid boundary electric field [1] ##MHD ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__INT_FRAC_PASSIVE_LR 1 # convert specified passive scalars to mass fraction during data reconstruction [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +OPT__RESET_FLUID_INIT -1 # reset fluid variables during initialization (<0=auto -> OPT__RESET_FLUID, 0=off, 1=on) [-1] +OPT__FREEZE_FLUID 0 # do not evolve fluid at all [0] +OPT__CHECK_PRES_AFTER_FLU -1 # check unphysical pressure at the end of the fluid solver (<0=auto) [-1] +OPT__LAST_RESORT_FLOOR 1 # apply floor values as the last resort when the fluid solver fails [1] ##HYDRO and MHD ONLY## +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## +MIN_PRES 0.0 # minimum pressure (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_EINT 0.0 # minimum internal energy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_TEMP 0.0 # minimum temperature in K (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_ENTR 0.0 # minimum entropy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +JEANS_MIN_PRES 0 # minimum pressure estimated from the Jeans length [0] ##HYDRO/MHD and GRAVITY ONLY## +JEANS_MIN_PRES_LEVEL -1 # for JEANS_MIN_PRES; ensure Jeans length is resolved by JEANS_MIN_PRES_NCELL*dh[JEANS_MIN_PRES_LEVEL] + # (<0=auto -> MAX_LEVEL) [-1] +JEANS_MIN_PRES_NCELL 4 # for JEANS_MIN_PRES; see JEANS_MIN_PRES_LEVEL [4] + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +MG_MAX_ITER -1 # maximum number of iterations in multigrid: (<0=auto) [-1] +MG_NPRE_SMOOTH -1 # number of pre-smoothing steps in multigrid: (<0=auto) [-1] +MG_NPOST_SMOOTH -1 # number of post-smoothing steps in multigrid: (<0=auto) [-1] +MG_TOLERATED_ERROR -1.0 # maximum tolerated error in multigrid (<0=auto) [-1.0] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__GRA_P5_GRADIENT 0 # 5-points gradient in the Gravity solver (must have GRA/USG_GHOST_SIZE_G>=2) [0] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + +# initialization +OPT__INIT 3 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +OPT__INIT_BFIELD_BYVECPOT 0 # initialize the magnetic field from vector potential + # (0=off, 1=external disk file named "B_IC", see tool/inits/gen_vec_pot.py for example, 2=function) [0] ##MHD ONLY## +RESTART_LOAD_NRANK 4 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 0 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NLEVEL 3 # number of AMR levels UM_IC [1] --> edit "Input__UM_IC" if >1 +OPT__UM_IC_NVAR 2 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_FLOAT8 -1 # floating-point precision for UM_IC (<0: default, 0: single, 1: double) [default: same as FLOAT8] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 4 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] +OPT__FFTW_STARTUP -1 # initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PRIM 1 # switch to primitive variables when the interpolation on conserved variables fails [1] ##HYDRO ONLY## +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__RES_PHASE 0 # restriction on phase [0] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__MAG_INT_SCHEME 4 # ghost-zone magnetic field for the MHD solver (2,3,4,6 only) [4] +OPT__REF_MAG_INT_SCHEME 4 # newly allocated magnetic field during grid refinement (2,3,4,6 only) [4] +OPT__POT_INT_SCHEME 5 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 5 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 5 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +INT_MONO_COEFF_B 2.0 # coefficient for ensuring the interpolation monotonicity of B field (1.0~4.0) [2.0] ##MHD ONLY## +MONO_MAX_ITER 10 # maximum number of iterations to reduce INT_MONO_COEFF when interpolation fails (0=off) [10] +INT_OPP_SIGN_0TH_ORDER 0 # switch to 0th-order interpolation if adjacent values change signs [HYDRO:1; ELBDM:0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_XY_INSTEAD_DEPHA 1 # interpolate x and y (real and imaginary parts in current implementation) + # around vortices instead of density and phase for the spectral interpolation, + # which has the advantage of being well-defined across vortices [1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_VORTEX_THRESHOLD 0.1 # vortex detection threshold for SPEC_INT_XY_INSTEAD_DEPHA [0.1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_GHOST_BOUNDARY 4 # ghost boundary size for spectral interpolation [4] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of floating-point variables in output text files [%24.16e] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## +OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## +OPT__OUTPUT_TEMP 0 # output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## +OPT__OUTPUT_ENTR 0 # output gas entropy [0] ##HYDRO ONLY## +OPT__OUTPUT_CS 0 # output sound speed [0] ##HYDRO ONLY## +OPT__OUTPUT_DIVVEL 0 # output divergence(velocity) [0] ##HYDRO ONLY## +OPT__OUTPUT_MACH 0 # output mach number [0] ##HYDRO ONLY## +OPT__OUTPUT_DIVMAG 0 # output |divergence(B)*dh/|B|| [0] ##MHD ONLY## +OPT__OUTPUT_LORENTZ 0 # output Lorentz factor [0] ##SRHD ONLY## +OPT__OUTPUT_3VELOCITY 0 # output 3-velocities [0] ##SRHD ONLY## +OPT__OUTPUT_ENTHALPY 1 # output reduced enthalpy [1] ##SRHD ONLY## +OPT__OUTPUT_USER_FIELD 0 # output user-defined derived fields [0] -> edit "Flu_DerivedField_User.cpp" +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OPT__OUTPUT_RESTART 0 # output data immediately after restart [0] +OUTPUT_STEP 40 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-2 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_WALLTIME -1.0 # output data every OUTPUT_WALLTIME walltime (<=0.0=off) [-1.0] +OUTPUT_WALLTIME_UNIT 0 # unit of OUTPUT_WALLTIME (0=second, 1=minute, 2=hour, 3=day) [0] +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 1 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data, stop run, or pause run during the runtime + # (by generating the file DUMP_GAMER_DUMP, STOP_GAMER_STOP, PAUSE_GAMER_PAUSE, respectively) [1] +OPT__RECORD_CENTER 1 # record the position of maximum density, minimum potential, and center of mass [0] +COM_CEN_X -1.0 # x coordinate as an initial guess for determining center of mass (if one of COM_CEN_X/Y/Z < 0 -> peak density position x) [-1.0] +COM_CEN_Y -1.0 # y coordinate as an initial guess for determining center of mass (if one of COM_CEN_X/Y/Z < 0 -> peak density position y) [-1.0] +COM_CEN_Z -1.0 # z coordinate as an initial guess for determining center of mass (if one of COM_CEN_X/Y/Z < 0 -> peak density position z) [-1.0] +COM_MAX_R -1.0 # maximum radius for determining center of mass (<0=auto -> __FLT_MAX__) [-1.0] +COM_MIN_RHO 0.0 # minimum density for determining center of mass (must >= 0.0) [0.0] +COM_TOLERR_R -1.0 # maximum tolerated error of deviation in radius during the iterations of determining the center of mass (<0=auto -> amr->dh[MAX_LEVEL]) [-1.0] +COM_MAX_ITER 10 # maximum number of iterations for determining the center of mass (must >= 1) [10] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] +OPT__SORT_PATCH_BY_LBIDX 1 # sort patches to improve bitwise reproducibility [SERIAL:0, LOAD_BALACNE:1] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +ANGMOM_ORIGIN_X -1.0 # x coordinate of the origin for angular momentum (<0=auto -> BoxCenter) [-1.0] +ANGMOM_ORIGIN_Y -1.0 # y coordinate of the origin for angular momentum (<0=auto -> BoxCenter) [-1.0] +ANGMOM_ORIGIN_Z -1.0 # z coordinate of the origin for angular momentum (<0=auto -> BoxCenter) [-1.0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated [0] ##HYDRO and ELBDM ONLY## +OPT__CK_NEGATIVE 0 # check the negative values: (0=off, 1=density, 2=pressure and entropy, 3=both) [0] ##HYDRO ONLY## +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/DiskHeating/Input__TestProb b/example/test_problem/ELBDM/DiskHeating/Input__TestProb new file mode 100644 index 0000000000..cc2cfad7cc --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/Input__TestProb @@ -0,0 +1,31 @@ +# center of the halo (only useful when AddFixedHalo=1 or (AddParWhenRestart=1 and AddParWhenRestartByFile=0)) +CenX 7.9770907e-02 # center of the halo +CenY 7.9854590e-02 # center of the halo +CenZ 8.0858787e-02 # center of the halo + +# parameters for background fixed halo (disabled in this example) +AddFixedHalo 0 # add a fixed halo [0] ## must set OPT__INIT=1 and OPT__FREEZE_FLUID=1 ## +HaloUseTable 0 # use density table for the fixed halo [0] ## AddFixedHalo=1 ONLY## + +# parameters for analytical function ---------- HaloUseTable=0 ONLY ----------------------------------------- +# soliton parameters +#m_22 # m_22 of the analytical halo [0.4] +#CoreRadius # core radius (in kpc) [1.0] +# alpha-beta-gamma density profile parameters +#Rho_0 # halo rho_0 (in 1.0e+10 Msun*kpc^-3) [1.0] +#Rs # halo Rs (in kpc) [1.0] +#Alpha # dimensionless [1.0] +#Beta # dimensionless [1.0] +#Gamma # dimensionless [1.0] + +# density profile table parameters ------------ HaloUseTable=1 ONLY --------------------------------------------- +DensTableFile DensTableExample # density table name, radius should be in kpc and density should be in g/cm^3 + +# parameters for new disk (disabled in this example) +AddParWhenRestart 0 # add a new disk to an existing snapshot [0] ## must set OPT__INIT=2 and OPT__RESTART_RESET=1 ## +AddParWhenRestartByFile 0 # 0=add a thin disk (must enable SUPPORT_GSL), 1=add new disk via DiskHeatingParticleIC [1] ## AddParWhenRestart = 1 ONLY ## +AddParWhenRestartNPar 10000000 # total particles of new disk [0] ## AddParWhenRestart = 1 ONLY ## +NewDisk_RSeed 1002 # random seed for setting thin disk particle position and velocity [1002] ## AddParWhenRestartByFile = 0 ONLY ## +Disk_Mass 0.00139812 # thin disk total mass (code unit) [1.0] ## AddParWhenRestartByFile = 0 ONLY ## +Disk_R 0.0020865 # thin disk scale radius (code unit) [1.0] ## AddParWhenRestartByFile = 0 ONLY ## +DispTableFile DispTableExample # velocity dispersion table filename, radius should be in kpc and dispersion should be in km/s ## AddParWhenRestartByFile = 0 ONLY ## diff --git a/example/test_problem/ELBDM/DiskHeating/Input__UM_IC_RefineRegion b/example/test_problem/ELBDM/DiskHeating/Input__UM_IC_RefineRegion new file mode 100644 index 0000000000..8764515e0f --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/Input__UM_IC_RefineRegion @@ -0,0 +1,9 @@ +# For loading an AMR initial condition from a file --> OPT__INIT=3 && OPT__UM_IC_NLEVEL>1 +# +# dLv : target AMR level = OPT__UM_IC_LEVEL + dLv +# NP_Skip_xL: number of patches on the parent level to be skipped in the x direction +# from the left edge of the parent refinement region +# ================================================================================== +# dLv NP_Skip_xL NP_Skip_xR NP_Skip_yL NP_Skip_yR NP_Skip_zL NP_Skip_zR + 1 7 7 7 7 7 7 + 2 25 25 25 25 25 25 diff --git a/example/test_problem/ELBDM/DiskHeating/README b/example/test_problem/ELBDM/DiskHeating/README new file mode 100644 index 0000000000..13cff87560 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/README @@ -0,0 +1,122 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY, PARTICLE, STORE_PAR_ACC, SUPPORT_HDF5, + SUPPORT_GSL (optional, only useful for thin disk) + +Disable : COMOVING + + +Note: +======================================== +DiskHeatingParticleIC uses the floating-point type for particle type and assumes single precision + + +Quick start: +======================================= +0. Copy "generate_make.sh" to the directory "src", execute "sh generate_make.sh" to generate "Makefile", + and then execute "make clean" and "make -j 4" to generate the executable "gamer" + +1. Download initial conditions of m_22=0.4, M_h=7e10 Msun halo and stellar disk with "sh download_ic.sh" + +2. Ensure PAR_INIT = 1 and OPT__INIT = 3 in Input__Parameter + +3. Default END_T is 2.5e-1 (about 3.5 Gyr) as in Yang et al. 2023 and OUTPUT_DT is 1.0e-2 (about 0.14 Gyr) + +4. To switch to a high-resolution run, command "ln -sf ic_files/PAR_IC_0.4_M7 DiskHeatingParticleIC" + Set PAR_NPAR=80000000, MAX_LEVEL=3, and change all values in Input__Flag_NParPatch to 800 + + +General initial condition setup: +======================================== +1. Disk + + a. Generate the disk via modified GALIC (https://github.com/HsunYeong/GALIC.git) + The snapshots have the filenames snap_XXX.hdf5 + + b. Set the filename, units in get_par_ic.py to match the GALIC set-up + + c. Set center to be location of the soliton in get_par_ic.py + + d. Execute get_par_ic.py, it will generate DiskHeatingParticleIC + +2. Halo + + a. If the data is binary file UM_IC + + * Set OPT__INIT = 3 and PAR_INIT = 1 + * Input__UM_IC_RefineRegion is required + + b. If the data is GAMER snapshot + + * Command "ln -s Data_XXXXXX RESTART" to create a soft link + * Set OPT__INIT = 2 and PAR_INIT = 2 in Input__Parameter + * Turn on AddParWhenRestart and AddParWhenRestartByFile in Input__TestProb + * Set AddParWhenRestartNPar in Input__TestProb + * Turn on OPT__RESTART_RESET in Input__Parameter + # Recommand to turn off AddParWhenRestart, AddParWhenRestartByFile, OPT__RESTART_RESET right after the simulation starts + + c. The code for FDM halo reconstruction (https://github.com/calab-ntu/psidm-halo-reconstruction) + +3. Thin disk (optional) + + a. Command "ln -s Data_XXXXXX RESTART" to create a soft link for restart + + b. Set Set OPT__INIT = 2 and PAR_INIT = 2 and turn on OPT__RESTART_RESET in Input__Parameter + + c. Turn on AddParWhenRestart in Input__TestProb + + d. Set AddParWhenRestartNPar, Disk_Mass, Disk_R, and DispTableFile in Input__TestProb + + +Analysis scripts: +======================================== +1. particle_proj.py, plot_halo_slice.py: + + * Plot the projection of disk particles or halo density slice + * Output files: particle_proj_*.png, Data_*_Slice_x_Dens.png + +2. plot_halo_density.py, plot_halo_potential.py: + + * Compute and plot shell-averaged halo density or gravitational potential profiles + * Output files: Data_*_1d-Profile_radius_Dens.png, Halo_Dens_Data_*.npy, + Data_*_1d-Profile_radius_Pote.png, Halo_Pote_Data_*.npy + +3. data_disk.py: + + * Compute the disk information (rotation speed, velocity dispersion, surface density, scale height, etc.) + * Output files: Data_Disk_*.npy + +4. data_halo.py: + + * Compute the halo information (enclosed mass, velocity dispersion, etc.) + * Required files: Halo_Dens_*.npy (generated by "plot_halo_density.py") and Halo_Pote_*.npy (by "plot_halo_potential.py") + * Output files: Data_Halo_*.npy + +5. vel_distribution.py + + * Compute the velocity distribution in 2-kpc-wide radial bins centered on R = 4, 6, 8, 10 kpc + * Output files: Vel_data_*.npz, vel_*.png + +6. get_heating.py + + * Compute the theoretical heating rate of the stellar disk as a function of radius + * Required files: Data_Disk_*.npy (generated by "data_disk.py"), Data_Halo_*.npy (by "data_halo.py") + * Output files: Heating_*.npz + +7. get_heating_rate_theory.py + + * Get the time-averaged theoretical heating rate + * Required files: Heating_*.npz (generated by "get_heating.py") + * Output files: printed plain text + +8. get_heating_rate_simulation.py + + * Compute ensemble- and time-averaged disk heating rates measured from simulation data + * Required files: Vel_data_*.npz (generated by "vel_distribution.py") + * Output files: sigma_z_sqr.png and printed plain text + +9. plot_data_example.py + + * An example script to plot the angle-averaged disk rotation curve and shell-averaged density profile + * Required files: Data_Disk_*.npy (generated by "data_disk.py") and/or Data_Halo_*.npy (by "data_halo.py") + * Output files: Rotation_Curve.png, Halo_Density_Profile.png diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/data_disk.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/data_disk.py new file mode 100644 index 0000000000..987bca944a --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/data_disk.py @@ -0,0 +1,172 @@ +import h5py +import math +import numpy as np +import argparse +import sys + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +Div_disk = 500 # total number of data points sampled per disk rotation curve +ratio = 0.76159415595 # tanh(1) + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Get disk properties' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def SearchIndex(x, A, N): + i = 0 + j = N - 1 + while(i <= j): + mid = int(i + (j - i)/2) + if(A[mid] == x): + i = mid + break + elif(A[mid] > x): + j = mid - 1 + else: i = mid + 1 + return i + +f = h5py.File('../../Data_%06d'%idx_start, 'r') +Unit_L = f['Info']['InputPara']['Unit_L'] +Unit_T = f['Info']['InputPara']['Unit_T']*(3.16887646e-14) +Unit_V = f['Info']['InputPara']['Unit_V'] +Unit_M = f['Info']['InputPara']['Unit_M'] +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +Center = Center * Unit_L +f.close() +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + + +#----------------------------------------------------------------------------------------------------------------- +# analyze simulation data and generate processed output files +for idx in range(idx_start, idx_end+1, didx): + print('loading file Data_%06d ...'%idx) + with h5py.File('../../Data_%06d'%idx, 'r') as f: + disk_mass = np.array(f['Particle/ParMass'], dtype = np.float64) * Unit_M + disk_posx = np.array(f['Particle/ParPosX'], dtype = np.float64) * Unit_L + disk_posy = np.array(f['Particle/ParPosY'], dtype = np.float64) * Unit_L + disk_posz = np.array(f['Particle/ParPosZ'], dtype = np.float64) * Unit_L + disk_velx = np.array(f['Particle/ParVelX'], dtype = np.float64) * Unit_V + disk_vely = np.array(f['Particle/ParVelY'], dtype = np.float64) * Unit_V + disk_velz = np.array(f['Particle/ParVelZ'], dtype = np.float64) * Unit_V + disk_type = np.array(f['Particle/ParType'], dtype = np.int32) + current_step = f['Info/KeyInfo']['Step'] + time = f['Info/KeyInfo']['Time'][0]*Unit_T + # particle filter: disk particles have ParType=2 + disk_index = (disk_type==2) + disk_mass = disk_mass[disk_index] + disk_posx = disk_posx[disk_index] + disk_posy = disk_posy[disk_index] + disk_posz = disk_posz[disk_index] + disk_velx = disk_velx[disk_index] + disk_vely = disk_vely[disk_index] + disk_velz = disk_velz[disk_index] + disk_size = np.size(disk_mass) + print("number of disk particles = %d"%disk_size) + VCM = [ np.sum(disk_mass*disk_velx)/ np.sum(disk_mass), + np.sum(disk_mass*disk_vely)/ np.sum(disk_mass), + np.sum(disk_mass*disk_velz)/ np.sum(disk_mass) ] + center = Center[current_step,3:6] + disk_posx = disk_posx - center[0] + disk_posy = disk_posy - center[1] + disk_posz = disk_posz - center[2] + disk_velx = disk_velx - VCM[0] + disk_vely = disk_vely - VCM[1] + disk_velz = disk_velz - VCM[2] + # compute angular momentum + disk_pos = np.zeros((disk_size, 3)) + disk_vel = np.zeros((disk_size, 3)) + disk_pos[:,0] = disk_posx + disk_pos[:,1] = disk_posy + disk_pos[:,2] = disk_posz + disk_vel[:,0] = disk_velx + disk_vel[:,1] = disk_vely + disk_vel[:,2] = disk_velz + disk_L = np.cross(disk_pos, disk_vel) + tot_L = np.array([np.sum(disk_L[:,0]),np.sum(disk_L[:,1]),np.sum(disk_L[:,2])]) + tot_L = tot_L/(tot_L[0]**2+tot_L[1]**2+tot_L[2]**2)**0.5 + + vec = np.cross(tot_L, np.array([0,0,1])) + c = tot_L[2] + s = 1-c**2 + matric = np.array([ [0, -vec[2], vec[1]], + [vec[2], 0, -vec[0]], + [-vec[1], vec[0], 0] ]) + R = np.identity(3) + matric + np.matmul(matric, matric)/(1+c) + disk_pos_new = np.matmul(R, np.transpose(disk_pos)) + disk_vel_new = np.matmul(R, np.transpose(disk_vel)) + disk_posx = disk_pos_new[0,:] + disk_posy = disk_pos_new[1,:] + disk_posz = disk_pos_new[2,:] + disk_velx = disk_vel_new[0,:] + disk_vely = disk_vel_new[1,:] + disk_velz = disk_vel_new[2,:] + + disk_r = (disk_posx**2 + disk_posy**2)**0.5 + disk_velr = (disk_posx*disk_velx + disk_posy*disk_vely)/disk_r + disk_velp = (disk_posx*disk_vely - disk_posy*disk_velx)/disk_r + disk_sortR = np.sort(disk_r) + disk_indexR = np.argsort(disk_r) + Data = np.zeros((8,Div_disk)) + + r = 0 + disk_num = 0 + dr = 15.0*3.08568e+21/Div_disk + for j in range(Div_disk): + disk_num_pre = disk_num + Data[0,j] = r + 0.5 * dr + disk_num = SearchIndex( r+dr, disk_sortR, disk_size ) + mean_vr = np.mean( disk_velr[ disk_indexR[ disk_num_pre:disk_num ] ] ) + mean_vp = np.mean( disk_velp[ disk_indexR[ disk_num_pre:disk_num ] ] ) + mean_vz = np.mean( disk_velz[ disk_indexR[ disk_num_pre:disk_num ] ] ) + mean_vp2 = np.mean( disk_velp[ disk_indexR[ disk_num_pre:disk_num ] ]**2 ) + Data[1,j] = mean_vp # rotation curve + Data[2,j] = (np.mean(( disk_velr[ disk_indexR[ disk_num_pre:disk_num ] ] - mean_vr )**2))**0.5 # sigma_r + Data[3,j] = (np.mean(( disk_velz[ disk_indexR[ disk_num_pre:disk_num ] ] - mean_vz )**2))**0.5 # sigma_z + mass = disk_mass[0]*( disk_num-disk_num_pre ) + mass_total = disk_mass[0]*disk_num + area = (math.pi *((r + dr)**2 - r**2)) + Data[4,j] = mass/area # surface density Sigma + Data[5,j] = mean_vp2 # sigma_phi^2 + Data[6,j] = mass_total # enclosed mass + # get sacle height + CMZ = np.average(disk_posz[ disk_indexR[ disk_num_pre:disk_num ] ]) + disk_z = np.abs( disk_posz[ disk_indexR[ disk_num_pre:disk_num ] ] - CMZ ) + sortZ = np.sort(disk_z) + target_index = ratio*len(disk_z) + index_plus = int(target_index) + index_minus = int(target_index - 1) + target_z = sortZ[index_minus] + (target_index - index_minus)*(sortZ[index_plus] - sortZ[index_minus]) + Data[7,j] = target_z # scale height + + r = r + dr + + np.save('Data_Disk_%06d'%idx, Data) + print(' ') diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating.py new file mode 100644 index 0000000000..c2bae1df12 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating.py @@ -0,0 +1,157 @@ +import numpy as np +import argparse +import sys +import scipy.special as sp +from scipy.integrate import quad +import yt + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +Div_disk = 500 # total number of evenly divided radial bins +dr = 15.0/Div_disk + +r_min = 5.0e-2 +r_max = 1.2e+2 +n_bin = 500 +ratio = (r_max/r_min)**(1.0/(n_bin-1.0)) + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Compute theoretical heating rate of each snapshot' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +# ------------------------------------------------------------------------------------------------------------------------- +# specify script unit setting +''' +unit_base = {'UnitLength_in_cm' : 3.08568e+21, + 'UnitMass_in_g' : 1.989e+43, + 'UnitVelocity_in_cm_per_s' : 100000} +''' +G = 6.6743e-8 # gravitational constant (cm**3/(g*s**2)) +hb = 1.0546e-27 # reduced planck const cm**2*g/s +kappa1 = 0.526 +kappa2 = 1.0 +ILambda1 = 4.82 +ILambda2 = 3.33 + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def Gx(x): + return (sp.erf(x)-2*x*np.exp(-x*x)/(np.pi)**0.5)/2/x**2 + +def interpolation(r, array_radius, array_value): + log_radius = np.log(array_radius) + count = int(np.log(r/r_min)/np.log(ratio)) + while(r > array_radius[count]): + count = count+1 + output = array_value[count-1]+(array_value[count]-array_value[count-1])*(np.log(r)-log_radius[count-1])/(log_radius[count]-log_radius[count-1]) + return output + +def phi_bg(R, x, h): + z = x*h + radius = (R*R+z*z)**0.5/3.08568e+21 + if radius < r_p[0]: + out = pote_data[0] + elif radius > r_p[-2]: + out = pote_data[-2] + else: + out = interpolation(radius, r_p, pote_data) + return out + +def phi_int(r, h, x, x1): + phi_diff = phi_bg(r, x, h) - phi_bg(r, x1, h) + if((phi_diff) < 1.0e-50): + return 0.0 + else: + return 2.0/(2.0*phi_diff)**0.5 + +def IP2(r, x, h): + return quad(lambda x1: phi_int(r, h, x, x1), 0, x)[0] + +def IP2_log_IP2_int(r, x, h): + ip2 = IP2(r, x, h) + if (ip2 < 1.0e-50): + return 0.0 + else: + return ip2*np.log(ip2)*2.0*np.exp(-x*x)/(np.pi**0.5) + + +#----------------------------------------------------------------------------------------------------------------- +# analyze simulation data and generate processed output files +ds = yt.load( '../../Data_%06d'%idx_start ) +ma = ds.parameters["ELBDM_Mass"]*ds.parameters["Unit_M"] # FDM particle mass [gram] + +for idx in range(idx_start, idx_end+1, didx): + data = np.load('Data_Disk_%06d.npy'%idx) + data_h = np.load('../halo/Data_Halo_%06d.npy'%idx) + + # data in cgs + r = data[0] + r_in_kpc = r/3.08568e+21 + v_c = data[1] + sigma_r = data[2] + sigma_z = data[3] + Sigma = data[4] + v_c2 = data[5] + enmass = data[6] + data_h[2] + dMdR = np.gradient(enmass, r) + rho_eff = dMdR/(4.0*np.pi*r**2)-enmass/(4.0*np.pi*r**3) + sigma_h = data_h[3] + rho_h = data_h[1] + rho_bg_eff = rho_h - rho_eff + rho_bg_eff = rho_bg_eff.clip(min=0) + nu = (((v_c2 + sigma_z**2 + sigma_r**2)/3.0)**0.5)/sigma_z + r_p = data_h[4] + pote_data = data_h[5] + h = data[7] + mean_P1 = sigma_z*4.82/(np.pi*G*Sigma) + mean_P2 = np.zeros(Div_disk) + + for i in range(Div_disk): + mean_P2[i] = 2*h[i]*IP2(r[i], 1, h[i]) +# np.save('mean_P2_%06d'%idx, mean_P2) +# mean_P2 = np.load('mean_P2_%06d.npy'%idx) + + X = nu*sigma_z*3**0.5/2**0.5/sigma_h + E = (4.0*X)/(3.0*nu**2*np.pi**0.5)*np.exp(-X**2) + (1-nu**(-2))*(sp.erf(X)-Gx(X)) + tau = hb/(2**0.5*ma*sigma_h**2) + M = (np.pi**(2.5)*G**2*hb**3*rho_h**2)/(6**0.5*ma**3*sigma_h**3*nu*sigma_z)*E + + heat_SGD = kappa1*M*np.log(mean_P1/tau) + heat_BGD = kappa2*M*np.log(mean_P2/tau) + + heat = np.zeros(Div_disk) + for i in range(Div_disk): + k = sigma_z[i]*(8*G*rho_bg_eff[i])**0.5/(np.pi*G*Sigma[i]) + if (k<0.5): + heat[i] = heat_SGD[i] + elif (k>1.5): + heat[i] = heat_BGD[i] + else: + heat[i] = (k-0.5)*heat_BGD[i] + (1.5-k)*heat_SGD[i] + + np.savez('Heating_%06d'%idx, a = r, b = heat) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating_rate_simulation.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating_rate_simulation.py new file mode 100644 index 0000000000..8b3484d262 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating_rate_simulation.py @@ -0,0 +1,106 @@ +import matplotlib +matplotlib.use('Agg') +import numpy as np +import argparse +import sys +import matplotlib.pyplot as plt +from scipy.optimize import curve_fit +from matplotlib.pyplot import cm +from matplotlib.patches import Rectangle + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Compute the time-averaged simulating heating rate' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def fit(t, a, b): + return a*t+b + + +#----------------------------------------------------------------------------------------------------------------- +# compute disk heating rates from simulation data +delta_t = 140.59 # delta_t between snapshots (Myr) +dt = delta_t*1e6*365*24*3600 +t = [] +for idx in range(idx_start, idx_end+1): + t.append(idx*delta_t) +t = np.array(t) +mean_disp = np.zeros((4, len(t))) +i = 0 +for idx in range(idx_start, idx_end+1): + ParData = np.load('Vel_data_%06d.npz'%idx) + mean_disp[0,i] = ParData['disp'][0]**2. + mean_disp[1,i] = ParData['disp'][1]**2. + mean_disp[2,i] = ParData['disp'][2]**2. + mean_disp[3,i] = ParData['disp'][3]**2. + i = i + 1 + +heating = np.zeros(4) +const = np.zeros(4) +print('R(kpc) heating rate (km^2/(s^2*Gyr))') +for i in range(4): + xData = t + yData = mean_disp[i,:] + para_F, _ = curve_fit(fit, xData, yData) + heating[i] = para_F[0] + const[i] = para_F[1] + print('%2d %2.6f'%(i*2+4, heating[i]*1000 )) + +# plot result +lines=[] +color = [cm.Blues(np.linspace(0.4, 0.7, 2)), + cm.Oranges(np.linspace(0.3, 0.6, 2)), + cm.Greens(np.linspace(0.4, 0.7, 2)), + cm.Reds(np.linspace(0.5, 0.8, 2))] + +fig = plt.figure() +axs = fig.add_subplot(111) +plt.title('$\sigma_z^2$, bin size = 2 kpc') +for i in range(4): + l1, = axs.plot(t/1000., mean_disp[i,:],'-o', ms=2, c=color[i][1]) + l2, = axs.plot(t/1000., heating[i]*t+const[i],'--', dashes=(5,1), ms=2, c=color[i][0]) + lines.append([l1, l2]) + +# create legend +extra = Rectangle((0, 0), 1, 1.0, fc="w", fill=False, edgecolor='none', linewidth=0) + +legend_handle = [extra, extra , extra , extra , extra, + extra, lines[0][0], lines[1][0], lines[2][0], lines[3][0], + extra, lines[0][1], lines[1][1], lines[2][1], lines[3][1]] + +length = len(legend_handle) +legend_handle = np.array(legend_handle).reshape(int(length/5), 5).T.reshape(length) + +label_row1 = ['' , '$R$ = 4 kpc', '$R$ = 6 kpc', '$R$ = 8 kpc', '$R$ = 10 kpc'] +label_row2 = ['simulation', '' , '' , '' , '' ] +label_row3 = ['linear fit', '' , '' , '' , '' ] +legend_labels = np.concatenate([label_row1, label_row2, label_row3]).reshape(int(length/5), 5).T.reshape(length) + +axs.legend(legend_handle, legend_labels, loc='upper left',fontsize=7, ncol = 5, handletextpad = -2.5, handlelength=2.5, handleheight=1.5) + +plt.ylim(0, 1.1*max(mean_disp[0])) +plt.xlabel(r"$t_{\rm rel}$ (Gyr)") +plt.ylabel("$\sigma_z^2$ (km$^2$/s$^2$)") +plt.savefig("sigma_z_sqr.png", dpi = 140, bbox_inches="tight") +plt.close() diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating_rate_theory.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating_rate_theory.py new file mode 100644 index 0000000000..11270b7a8f --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/get_heating_rate_theory.py @@ -0,0 +1,87 @@ +import numpy as np +import argparse +import sys + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +Div_disk = 500 # total number of evenly divided radial bins +delta_t = 140.59 # delta_t between snapshots (Myr) + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Compute the time-averaged theoretical heating rate' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def SearchIndex(x, A, N): + i = 0 + j = N - 1 + while(i <= j): + mid = int(i + (j - i)/2) + if(A[mid] == x): + i = mid + break + elif(A[mid] > x): + j = mid - 1 + else: i = mid + 1 + return i + + +#----------------------------------------------------------------------------------------------------------------- +# compute theoretical disk heating rates +t = [] +for idx in range(idx_start, idx_end+1): + t.append(idx*delta_t) +t = np.array(t) +h_theory = np.zeros((Div_disk, len(t))) +w = np.zeros((Div_disk, len(t))) +mean_theory = np.zeros((4, len(t))) +i = 0 +for idx in range(idx_start, idx_end+1): + F = np.load('Data_Disk_%06d.npy'%idx) + H = np.load('Heating_%06d.npz'%idx) + r = F[0]/3.08568e+21 + w[:,i] = r*F[4] ## weight = r*Sigma + h_theory[:,i] = H['b']*(1e9*365*24*3600)/1e10 + i = i + 1 +dt = delta_t*1e6*365*24*3600 + +h_theory[h_theory==-np.inf]=0 + +num_3 = SearchIndex( 3, r, Div_disk ) +num_5 = SearchIndex( 5, r, Div_disk ) +num_7 = SearchIndex( 7, r, Div_disk ) +num_9 = SearchIndex( 9, r, Div_disk ) +num_11 = SearchIndex( 11, r, Div_disk ) + +for i in range (len(t)): + mean_theory[0,i] = np.average(h_theory[num_3:num_5,i], weights=w[num_3:num_5,i]) + mean_theory[1,i] = np.average(h_theory[num_5:num_7,i], weights=w[num_5:num_7,i]) + mean_theory[2,i] = np.average(h_theory[num_7:num_9,i], weights=w[num_7:num_9,i]) + mean_theory[3,i] = np.average(h_theory[num_9:num_11,i], weights=w[num_9:num_11,i]) + + +print('R(kpc) heating rate (km^2/(s^2*Gyr))') +for i in range(4): + print('%2d %2.6f'%(i*2+4, np.mean(mean_theory[i,:]) )) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/particle_proj.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/particle_proj.py new file mode 100644 index 0000000000..11642e0998 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/particle_proj.py @@ -0,0 +1,139 @@ +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import numpy as np +import yt +from mpl_toolkits.axes_grid1 import AxesGrid +import argparse +import sys + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +FONT_SIZE = 24.0 +LINE_WIDTH = 0.5 +colormap = 'arbre' + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot the face-on and edge-on projection of stellar disk' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +# ------------------------------------------------------------------------------------------------------------------------- +# specify script unit and output figure settings +cm = 1/2.54 # centimeters in inches +field = ('Disk', 'ParMass') +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + + +plt.rcParams['font.size'] = FONT_SIZE +plt.rcParams['figure.titlesize'] = 2*FONT_SIZE + +plt.rcParams['axes.titlesize'] = 2*FONT_SIZE +plt.rcParams['axes.labelsize'] = FONT_SIZE +plt.rcParams['axes.labelpad'] = 0.05 +plt.rcParams['axes.linewidth'] = LINE_WIDTH + +plt.rcParams['legend.fontsize'] = 6.0 +plt.rcParams['lines.linewidth'] = LINE_WIDTH + +plt.rcParams['xtick.major.size'] = 2 +plt.rcParams['xtick.major.width'] = 0.5 +plt.rcParams['xtick.minor.size'] = 1 +plt.rcParams['xtick.minor.width'] = 0.25 +plt.rcParams['xtick.labelsize'] = FONT_SIZE + +plt.rcParams['ytick.major.size'] = 2 +plt.rcParams['ytick.major.width'] = 0.5 +plt.rcParams['ytick.minor.size'] = 1 +plt.rcParams['ytick.minor.width'] = 0.25 +plt.rcParams['ytick.labelsize'] = FONT_SIZE + +plt.rcParams['font.family'] = 'STIXGeneral' +plt.rcParams['mathtext.fontset'] = 'custom' +plt.rcParams['mathtext.rm'] = 'STIXGeneral:regular' +plt.rcParams['mathtext.it'] = 'STIXGeneral:italic' +plt.rcParams['mathtext.bf'] = 'STIXGeneral:italic:bold' + +# add yt particle filter +def Disk(pfilter, data): + filter = data['all', 'ParType'] == 2 + return filter +yt.add_particle_filter('Disk', function = Disk, filtered_type = 'all', requires = ['ParType']) + +# ------------------------------------------------------------------------------------------------------------------------- +# output figures +fig = plt.figure() +fig.dpi = 150 + +grid = AxesGrid( fig, (0.1, 0.05, 3.2, 2.7), nrows_ncols=(1, 2), axes_pad=(1.2,0.5), label_mode="all", share_all=True, cbar_location="right", cbar_mode="single", cbar_size="2%", cbar_pad="2%") + +for idx in range(idx_start, idx_end+1, didx): + ds = yt.load( '../../Data_%06d'%idx ) + ds.add_particle_filter('Disk') + if sys.version_info[0] == 2: + ds.periodicity=(True,True,True) + current_step = ds.parameters["Step"] + print("Current Simulation Time = %.5e [code units]"%ds.parameters["Time"][0]) + print("Current Simulation Step = %i"%current_step) + + parx = yt.ParticleProjectionPlot( ds, 'x', fields = field, center = Center[current_step,3:6], width =( (60, 'kpc'),(60,'kpc'))) + parx.set_background_color( field ) + parx.set_cmap( field, colormap ) + parx.set_colorbar_label(field, "Projected stellar mass (M$_\odot$)") + parx.set_font( {'size':FONT_SIZE} ) + parx.set_axes_unit( 'kpc' ) + parx.set_unit( field, 'Msun' ) + parx.set_zlim( field, 5.5e+5, 5.5e+2, dynamic_range=None) + parx.annotate_text([ 0.05, 0.92], 'edge-on', coord_system="axis",text_args={"size":FONT_SIZE,"color":"black","weight":"normal","bbox":dict(boxstyle="round",ec='white',fc='white',alpha=0.7)}) + plot = parx.plots[field] + plot.figure = fig + plot.axes = grid[0].axes + plot.cax = grid.cbar_axes[0] + parx._setup_plots() + + parz = yt.ParticleProjectionPlot( ds, 'z', fields = field, center = Center[current_step,3:6], width =( (60, 'kpc'),(60,'kpc'))) + parz.set_background_color( field ) + parz.set_cmap( field, colormap ) + parz.set_colorbar_label(field, "Projected stellar mass (M$_\odot$)") + parz.set_font( {'size':FONT_SIZE} ) + parz.set_axes_unit( 'kpc' ) + parz.set_unit( field, 'Msun' ) + parz.set_zlim( field, 5.5e+5, 5.5e+2, dynamic_range=None) + parz.annotate_text([ 0.05, 0.92], 'face-on', coord_system="axis",text_args={"size":FONT_SIZE,"color":"black","weight":"normal","bbox":dict(boxstyle="round",ec='white',fc='white',alpha=0.7)}) + parz.annotate_text([ 0.75, 0.92], r'$t_{\rm rel}$ = %2.1f Gyr'%(140.59*idx/1000.), coord_system="axis", text_args={"size":FONT_SIZE,"color":"white"}) + plot = parz.plots[field] + plot.figure = fig + plot.axes = grid[1].axes + plot.cax = grid.cbar_axes[1] + parz._setup_plots() + + fig.set_size_inches(18*cm, 8*cm) + fig.savefig("particle_proj_%06d.png"%idx, bbox_inches='tight',pad_inches=0.02) + #fig.savefig("particle_proj_%06d.pdf"%idx, bbox_inches='tight',pad_inches=0.02) + + print('\nparticle_proj_%06d.png completed\n'%idx) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/vel_distribution.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/vel_distribution.py new file mode 100644 index 0000000000..7c828213dc --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/disk/vel_distribution.py @@ -0,0 +1,217 @@ +import matplotlib +matplotlib.use('Agg') +import h5py +import numpy as np +import argparse +import sys +import matplotlib.pyplot as plt + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +Div_disk = 249 # total number of evenly divided radial bins + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Get the velocity distribution of each 2-kpc bin' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def SearchIndex(x, A, N): + i = 0 + j = N - 1 + while(i <= j): + mid = int(i + (j - i)/2) + if(A[mid] == x): + i = mid + break + elif(A[mid] > x): + j = mid - 1 + else: i = mid + 1 + return i + +def Gauss(x, mean, disp): + return np.exp(-(x-mean)**2./2./disp**2.)/disp/(2.*np.pi)**0.5 + + +#----------------------------------------------------------------------------------------------------------------- +# load simulation units and parameters +''' +unit_base = {'UnitLength_in_cm' : 3.08568e+21, + 'UnitMass_in_g' : 1.989e+43, + 'UnitVelocity_in_cm_per_s' : 100000} +''' +f = h5py.File('../../Data_%06d'%idx_start, 'r') +Unit_L = f['Info']['InputPara']['Unit_L'] +Unit_T = f['Info']['InputPara']['Unit_T']*(3.16887646e-14) +Unit_V = f['Info']['InputPara']['Unit_V'] +Unit_M = f['Info']['InputPara']['Unit_M'] +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +Center = Center * Unit_L +f.close() +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + + +#----------------------------------------------------------------------------------------------------------------- +# analyze and plot input simulation data +label = ['$R$ = 4 kpc','$R$ = 6 kpc','$R$ = 8 kpc','$R$ = 10 kpc'] +for idx in range(idx_start, idx_end+1, didx): + print('loading file Data_%06d ...'%idx) + with h5py.File('../../Data_%06d'%idx, 'r') as f: + disk_mass = np.array(f['Particle/ParMass'], dtype = np.float64) * Unit_M + disk_posx = np.array(f['Particle/ParPosX'], dtype = np.float64) * Unit_L + disk_posy = np.array(f['Particle/ParPosY'], dtype = np.float64) * Unit_L + disk_posz = np.array(f['Particle/ParPosZ'], dtype = np.float64) * Unit_L + disk_velx = np.array(f['Particle/ParVelX'], dtype = np.float64) * Unit_V + disk_vely = np.array(f['Particle/ParVelY'], dtype = np.float64) * Unit_V + disk_velz = np.array(f['Particle/ParVelZ'], dtype = np.float64) * Unit_V + disk_type = np.array(f['Particle/ParType'], dtype = np.int32) + current_step = f['Info/KeyInfo']['Step'] + time = f['Info/KeyInfo']['Time'][0]*Unit_T + # particle filter: disk particles have ParType=2 + disk_index = (disk_type==2) + disk_mass = disk_mass[disk_index] + disk_posx = disk_posx[disk_index] + disk_posy = disk_posy[disk_index] + disk_posz = disk_posz[disk_index] + disk_velx = disk_velx[disk_index] + disk_vely = disk_vely[disk_index] + disk_velz = disk_velz[disk_index] + disk_size = np.size(disk_mass) + VCM = [ np.sum(disk_mass*disk_velx)/ np.sum(disk_mass), + np.sum(disk_mass*disk_vely)/ np.sum(disk_mass), + np.sum(disk_mass*disk_velz)/ np.sum(disk_mass) ] + center = Center[current_step,3:6] + disk_posx = disk_posx - center[0] + disk_posy = disk_posy - center[1] + disk_posz = disk_posz - center[2] + disk_velx = disk_velx - VCM[0] + disk_vely = disk_vely - VCM[1] + disk_velz = disk_velz - VCM[2] + # compute angular momentum + disk_pos = np.zeros((disk_size, 3)) + disk_vel = np.zeros((disk_size, 3)) + disk_pos[:,0] = disk_posx + disk_pos[:,1] = disk_posy + disk_pos[:,2] = disk_posz + disk_vel[:,0] = disk_velx + disk_vel[:,1] = disk_vely + disk_vel[:,2] = disk_velz + disk_L = np.cross(disk_pos, disk_vel) + tot_L = np.array([np.sum(disk_L[:,0]),np.sum(disk_L[:,1]),np.sum(disk_L[:,2])]) + tot_L = tot_L/(tot_L[0]**2+tot_L[1]**2+tot_L[2]**2)**0.5 + vec = np.cross(tot_L, np.array([0,0,1])) + c = tot_L[2] + s = 1-c**2 + matric = np.array([ [0, -vec[2], vec[1]], + [vec[2], 0, -vec[0]], + [-vec[1], vec[0], 0] ]) + R = np.identity(3) + matric + np.matmul(matric, matric)/(1+c) + disk_pos_new = np.matmul(R, np.transpose(disk_pos)) + disk_vel_new = np.matmul(R, np.transpose(disk_vel)) + disk_posx = disk_pos_new[0,:] + disk_posy = disk_pos_new[1,:] + disk_posz = disk_pos_new[2,:] + disk_velx = disk_vel_new[0,:] + disk_vely = disk_vel_new[1,:] + disk_velz = disk_vel_new[2,:] + + disk_r = (disk_posx**2 + disk_posy**2)**0.5 + disk_sortR = np.sort(disk_r)/3.08568e+21 + disk_indexR = np.argsort(disk_r) + + num_3 = SearchIndex( 3, disk_sortR, disk_size ) + num_5 = SearchIndex( 5, disk_sortR, disk_size ) + num_7 = SearchIndex( 7, disk_sortR, disk_size ) + num_9 = SearchIndex( 9, disk_sortR, disk_size ) + num_11 = SearchIndex( 11, disk_sortR, disk_size ) + + vel = [] + vel.append( np.sort( disk_velz[disk_indexR[num_3:num_5]] )/1e+5 ) + vel.append( np.sort( disk_velz[disk_indexR[num_5:num_7]] )/1e+5 ) + vel.append( np.sort( disk_velz[disk_indexR[num_7:num_9]] )/1e+5 ) + vel.append( np.sort( disk_velz[disk_indexR[num_9:num_11]] )/1e+5 ) + + vmean = np.zeros(4) + disp = np.zeros(4) + mean_new = np.zeros(4) + disp_new = np.zeros(4) + vmax = np.zeros(4) + vmin = np.zeros(4) + dv = np.zeros(4) + index_max = np.zeros(4, dtype = np.int32) + index_min = np.zeros(4, dtype = np.int32) + + for i in range(4): + vmean[i] = np.mean(vel[i]) + disp[i] = np.mean( (vel[i] - vmean[i])**2. )**0.5 + vmax[i] = vmean[i] + 3.*disp[i] + vmin[i] = vmean[i] - 3.*disp[i] + index_max[i] = SearchIndex( vmax[i], vel[i], len(vel[i]) ) + index_min[i] = SearchIndex( vmin[i], vel[i], len(vel[i]) ) + mean_new[i] = np.mean(vel[i][index_min[i]:index_max[i]]) + disp_new[i] = np.mean( (vel[i][index_min[i]:index_max[i]] - mean_new[i])**2. )**0.5 + dv[i] = (vmax[i]-vmin[i])/Div_disk + + Data = np.zeros((4, 2, Div_disk)) + for i in range(4): + num_v = index_min[i] + v = vmin[i] + for j in range(Div_disk): + num_v_pre = num_v + Data[i,0,j] = v + 0.5*dv[i] + num_v = SearchIndex( v + dv[i], vel[i], len(vel[i]) ) + Data[i,1,j] = (num_v - num_v_pre)/dv[i]/(index_max[i]- index_min[i]) + v = v + dv[i] + + np.savez('Vel_data_%06d'%idx, data = Data, mean = mean_new, disp = disp_new, time_Myr = time) + + print('plotting vel_%06d.png ...'%idx) + fig, axs = plt.subplots(2, 2) + fig_num = 0 + for i in range(2): + for j in range(2): + axs[i, j].plot(Data[fig_num,0,:], Data[fig_num,1,:], color = 'blue') + axs[i, j].plot(Data[fig_num,0,:], Gauss(Data[fig_num,0,:],mean_new[fig_num],disp_new[fig_num]),'--', lw=0.8, color = 'red', label ='Gaussian') + axs[i, j].set_title(label[fig_num], fontsize=6) + axs[i, j].set_xlim((vmean[fig_num]-3*disp[fig_num],vmean[fig_num]+3*disp[fig_num])) + axs[i, j].tick_params(axis='both', labelsize=6) + axs[i, j].grid(ls='--',lw=0.3) + axs[i, j].legend(loc='best', shadow=True, fontsize=6) + + fig_num += 1 + axs[0, 0].set_ylabel('number density', fontsize=6) + axs[1, 0].set_ylabel('number density', fontsize=6) + axs[1, 0].set_xlabel('$v(km/s)$', fontsize=6 ) + axs[1, 1].set_xlabel('$v(km/s)$', fontsize=6 ) + + fig.tight_layout() + fig.suptitle('t = %4.1f Myr' %time, fontsize=8) + plt.savefig("vel_%06d.png"%idx, dpi = 140) + plt.close() + + print(' ') diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/data_halo.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/data_halo.py new file mode 100644 index 0000000000..cee42bb490 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/data_halo.py @@ -0,0 +1,204 @@ +import numpy as np +import argparse +import sys +import warnings +from scipy.integrate import quad + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +Div_disk = 500 # total number of evenly divided radial bins +r_min = 5.0e-2 +r_max = 1.2e+2 +ratio = (r_max/r_min)**(1.0/(Div_disk-1.0)) +r_log = np.zeros(Div_disk) + +for i in range(Div_disk): + r_log[i] = r_min * (ratio)**(i) + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Convert halo properties for later heating rate calculation' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +# ------------------------------------------------------------------------------------------------------------------------- +# specify script unit setting +Unit_L = 3.08568e+21 +Unit_M = 1.989e+43 +Unit_V = 100000 +G = 6.6743e-8*Unit_M/Unit_L + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def interpolation(r, array_radius, array_value): + count = 0 + log_radius = np.log(array_radius) + while(r > array_radius[count]): + count = count+1 + output = array_value[count-1]+(array_value[count]-array_value[count-1])*(np.log(r)-log_radius[count-1])/(log_radius[count]-log_radius[count-1]) + return output + +def log_interpolation(r, array_radius, array_value): + count = 0 + log_value = np.log(array_value) + log_radius = np.log(array_radius) + while(r > array_radius[count]): + count = count+1 + output = log_value[count-1]+(log_value[count]-log_value[count-1])*(np.log(r)-log_radius[count-1])/(log_radius[count]-log_radius[count-1]) + return np.exp(output) +def density(r): + if (isinstance(r, int) or isinstance(r, float)): + if r < r_d[0]: + return dens[0] + elif r > r_d[-1]: + return 0 + else: + return log_interpolation(r, r_d, dens) + else: + out = np.zeros(len(r)) + for i in range(len(r)): + if r[i] < r_d[0]: + out[i] = dens[0] + elif r[i] > r_d[-1]: + out[i] = dens[-1] + else: + out[i] = log_interpolation(r[i], r_d, dens) + return out + +def enclosed_mass_int(r): + warnings.filterwarnings("ignore") + if (isinstance(r, int) or isinstance(r, float)): + return quad(lambda x: 4*np.pi*x*x*density(x), 0, r)[0] + else: + temp = [] + for i in r: + temp.append( quad(lambda x: 4*np.pi*x*x*density(x), 0, i)[0] ) + result = np.array(temp) + return result + +def potential(r): + if (isinstance(r, int) or isinstance(r, float)): + if r < r_p[0]: + return pote[0] + elif r > r_p[-1]: + return pote[-1] + else: + return log_interpolation(r, r_p, pote) + else: + out = np.zeros(len(r)) + for i in range(len(r)): + if r[i] < r_p[0]: + out[i] = pote[0] + elif r[i] > r_p[-1]: + out[i] = pote[-1] + else: + out[i] = interpolation(r[i], r_p, pote) + return out + +def jeans_int(r): + if (isinstance(r, int) or isinstance(r, float)): + return quad(lambda x: density(x)*jeans_interpolation(x), r, np.inf)[0] + else: + temp = [] + for i in r: + temp.append( quad(lambda x: density(x)*jeans_interpolation(x), i, np.inf)[0] ) + result = np.array(temp) + return result + +def jeans_interpolation(r): + if (isinstance(r, int) or isinstance(r, float)): + if r < r_p[0]: + return DPotDr[0] + elif r > r_p[-1]: + return DPotDr[-1] + else: + return interpolation(r, r_p, DPotDr) + else: + out = np.zeros(len(r)) + for i in range(len(r)): + if r[i] < r_p[0]: + out[i] = DPotDr[0] + elif r[i] > r_p[-1]: + out[i] = DPotDr[-1] + else: + out[i] = interpolation(r[i], r_p, DPotDr) + return out + + +#----------------------------------------------------------------------------------------------------------------- +# analyze simulation data and generate processed output files +for idx in range(idx_start, idx_end+1, didx): + Dens = np.load('Halo_Dens_Data_%06d.npy'%idx) + r_d = Dens[0] + dens_cgs = Dens[1] + dens = dens_cgs*Unit_L**3/Unit_M + enmass = enclosed_mass_int(r_log) + mass_cgs = enmass*Unit_M + + Pote = np.load('Halo_Pote_Data_%06d.npy'%idx) + r_p = Pote[0] + pote = Pote[1] + pote_cgs = potential(r_log) + + DPotDr = np.gradient(pote, r_p) + sigma = ((jeans_int(r_p)/density(r_p))*0.5)**0.5 + + r_in_kpc = np.zeros(Div_disk) + rho = np.zeros(Div_disk) + M_h = np.zeros(Div_disk) + disp = np.zeros(Div_disk) + phi_h = np.zeros(Div_disk) + + r = 0 + num_dens = 0 + num_log = 0 + num_disp = 0 + + dr = 15.0/float(Div_disk) + for j in range(Div_disk): + r_in_kpc[j] = r + 0.5 * dr + while r_d[num_dens] < (r + 0.5*dr): + num_dens += 1 + rho[j] = dens_cgs[num_dens-1] + (dens_cgs[num_dens] - dens_cgs[num_dens-1])*(r_in_kpc[j]-r_d[num_dens-1])/(r_d[num_dens]-r_d[num_dens-1]) + while r_log[num_log] < (r + 0.5*dr): + num_log += 1 + M_h[j] = mass_cgs[num_log-1] + (mass_cgs[num_log] - mass_cgs[num_log-1])*(r_in_kpc[j]-r_log[num_log-1])/(r_log[num_log]-r_log[num_log-1]) + while r_p[num_disp] < (r + 0.5*dr): + num_disp += 1 + disp[j] = sigma[num_disp-1] + (sigma[num_disp] - sigma[num_disp-1])*(r_in_kpc[j]-r_p[num_disp-1])/(r_p[num_disp]-r_p[num_disp-1]) + + r = r + dr + + Data = np.zeros((6,Div_disk)) + Data[0] = r_in_kpc + Data[1] = rho # halo density + Data[2] = M_h # enclosed mass + Data[3] = disp # Jeans velocity dispersion/sqrt(2) + Data[4] = r_log # r in log bins (used for computation) + Data[5] = pote_cgs # Phi(halo potential) in log bins (used for computation) + + np.save('Data_Halo_%06d'%idx, Data) + print('Data_Halo_%06d.npy completed'%idx) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_density.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_density.py new file mode 100644 index 0000000000..314105a8ec --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_density.py @@ -0,0 +1,70 @@ +import argparse +import sys +import yt +import numpy as np + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +dpi = 150 +nbin = 256*2 + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Get the halo density profile' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])), +print( '' ) +print( '-------------------------------------------------------------------\n' ) + +# ------------------------------------------------------------------------------------------------------------------------- +# output figures +field = ('gamer', 'Dens') +center_mode = 'max' +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + +for idx in range(idx_start, idx_end+1, didx): + ds = yt.load( '../../Data_%06d'%idx ) + current_step = ds.parameters["Step"] + CellSize = ds.parameters["CellSize"] + MaxLevel = ds.parameters["MaxLevel"] + Resolution = CellSize[MaxLevel]*ds.parameters["Unit_L"]/3.08568e+21 # spatial resolution in kpc + print("Current Simulation Time = %.5e [code units]"%ds.parameters["Time"][0]) + print("Current Simulation Step = %i"%current_step) + + sp = ds.sphere( Center[current_step,3:6], 0.5*ds.domain_width.to_value().max() ) + prof = yt.create_profile( sp, 'radius', field, + weight_field='cell_volume', + n_bins=nbin, + units={"radius":"kpc", field:"g/cm**3"}, + logs={"radius":True, field:True}, + extrema={"radius":((Resolution/2., "kpc"), (0.5*ds.domain_width.to_value().max(), "code_length"))}) + plot = yt.ProfilePlot.from_profiles(prof) + plot.save( mpl_kwargs={"dpi":dpi} ) + + A = prof.x + B = prof[field] + C = [A,B] + Data = np.asarray(C) + Data = np.delete(Data, np.nonzero(Data[1]==0)[0] , axis = 1) + np.save("Halo_Dens_"+str(ds),Data) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_potential.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_potential.py new file mode 100644 index 0000000000..684e9c2608 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_potential.py @@ -0,0 +1,70 @@ +import argparse +import sys +import yt +import numpy as np + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +dpi = 150 +nbin = 256*2 + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Get the halo potential profile' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])), +print( '' ) +print( '-------------------------------------------------------------------\n' ) + +# ------------------------------------------------------------------------------------------------------------------------- +# output figures +field = ('gamer', 'Pote') +center_mode = 'max' +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + +for idx in range(idx_start, idx_end+1, didx): + ds = yt.load( '../../Data_%06d'%idx ) + current_step = ds.parameters["Step"] + CellSize = ds.parameters["CellSize"] + MaxLevel = ds.parameters["MaxLevel"] + Resolution = CellSize[MaxLevel]*ds.parameters["Unit_L"]/3.08568e+21 # spatial resolution in kpc + print("Current Simulation Time = %.5e [code units]"%ds.parameters["Time"][0]) + print("Current Simulation Step = %i"%current_step) + + sp = ds.sphere( Center[current_step,3:6], 0.5*ds.domain_width.to_value().max() ) + prof = yt.create_profile( sp, 'radius', field, + weight_field='cell_volume', + n_bins=nbin, + units={"radius":"kpc", field:"cm**2/s**2"}, + logs={"radius":True, field:False}, + extrema={"radius":((Resolution/2., "kpc"), (0.5*ds.domain_width.to_value().max(), "code_length"))}) + plot = yt.ProfilePlot.from_profiles(prof) + plot.set_log(field, False) + plot.save( mpl_kwargs={"dpi":dpi} ) + A = prof.x + B = prof[field] + C = [A,B] + Data = np.asarray(C) + Data = np.delete(Data, np.nonzero(Data[1]==0)[0] , axis = 1) + np.save("Halo_Pote_"+str(ds),Data) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_slice.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_slice.py new file mode 100644 index 0000000000..6273f14820 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/halo/plot_halo_slice.py @@ -0,0 +1,66 @@ +import argparse +import sys +import yt +import numpy as np + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +colormap = 'algae' +dpi = 150 + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot the halo slices' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +# ------------------------------------------------------------------------------------------------------------------------- +# output figures +yt.enable_parallelism() + +field = ('Dens') +center_mode = 'max' +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + +for idx in range(idx_start, idx_end+1, didx): + ds = yt.load( '../../Data_%06d'%idx ) + if sys.version_info[0] == 2: + ds.periodicity = (True, True, True) + current_step = ds.parameters["Step"] + print("Current Simulation Time = %.5e [code units]"%ds.parameters["Time"][0]) + print("Current Simulation Step = %i"%current_step) + + dens = yt.SlicePlot( ds, 0, fields = field, center = Center[current_step,3:6], width = (60 ,'kpc')) + dens.set_background_color( field ) + dens.set_zlim( field, 1.0e+1, 1.0e+9, dynamic_range=None) + dens.set_cmap( field, colormap ) + dens.set_font( {'size':16} ) + dens.set_axes_unit( 'kpc' ) + dens.annotate_grids() + dens.annotate_sphere( center = Center[current_step,3:6], radius=(0.05, 'kpc'),circle_args={'color':'red'}) + dens.annotate_timestamp( time_unit='Myr', corner='upper_right', text_args={'color':'k'} ) + dens.save( mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/plot_data_example.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/plot_data_example.py new file mode 100644 index 0000000000..cdaa9f00a0 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/plot_data_example.py @@ -0,0 +1,87 @@ +import matplotlib +matplotlib.use('Agg') +import numpy as np +import argparse +import sys +import matplotlib.pyplot as plt +from matplotlib.pyplot import cm + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +output_mode = int(3) # [1] angle-averaged rotation curve; [2] shell-averaged halo density profile; [3] both +figure_dpi = 140 + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='An example script to plot disk/halo data from existing .npy files' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +#------------------------------------------------------------------------------------------------------------------------- +# analyze and plot input simulation data +# [1] angle-averaged rotation curve +if (output_mode == 1 or output_mode == 3): + plt.figure(dpi = figure_dpi) + for idx in range(idx_start, idx_end+1, didx): + + data = np.load('disk/Data_Disk_%06d.npy'%idx) + r = data[0] + r_in_kpc = r/3.08568e+21 + v_c = data[1]/1.0e5 # rotaion speed + sigma_r = data[2]/1.0e5 # sigma_r + sigma_z = data[3]/1.0e5 # sigma_z + Sigma = data[4] # surface density + height = data[7] # scale height + plt.plot(r_in_kpc, v_c, color = cm.Blues(0.3+0.6*(idx-idx_start)/(idx_end+1-idx_start)), label ='id=%d'%idx) + + plt.xlim((0, 15)) + plt.ylim((0, 100)) + plt.grid(ls='--') + plt.legend(loc='lower right', shadow=True, prop={'size':8}) ## loc='best', 'upper left', 'upper right', 'lower left', 'lower right' + plt.xlabel(r"$R$ (kpc)") + plt.ylabel(r"$v_{\rm cir}$ (km/s)") + plt.savefig("Rotation_Curve.png", dpi = figure_dpi) + plt.close() + +# [2] plot halo density profile +if (output_mode == 2 or output_mode == 3): + plt.figure(dpi = figure_dpi) + for idx in range(idx_start, idx_end+1, didx): + + Dens = np.load('halo/Halo_Dens_Data_%06d.npy'%idx) + Dens = np.delete(Dens, np.nonzero(Dens[1]==0)[0] , axis = 1) + r_d = Dens[0] + dens_cgs = Dens[1] + plt.plot(r_d, dens_cgs, color = cm.Blues(0.3+0.6*(idx-idx_start)/(idx_end+1-idx_start)), label ='id=%d'%idx) + + plt.xlim((1e-1, 1e2)) + plt.grid(ls='--') + plt.legend(loc='lower left', shadow=True, prop={'size':8}) ## loc='best', 'upper left', 'upper right', 'lower left', 'lower right' + plt.xlabel(r"$r$ (kpc)") + plt.ylabel(r"$\rho_{\rm h}$ (g/cm$^3$)") + plt.xscale('log') + plt.yscale('log') + plt.savefig("Halo_Density_Profile.png", dpi = figure_dpi) + plt.close() diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/thin_disk/data_thin_disk.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/thin_disk/data_thin_disk.py new file mode 100644 index 0000000000..bcebd1751a --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/thin_disk/data_thin_disk.py @@ -0,0 +1,172 @@ +import h5py +import math +import numpy as np +import argparse +import sys + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +Div_disk = 500 # total number of data points sampled per disk rotation curve +ratio = 0.76159415595 # tanh(1) + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Get disk properties' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +#----------------------------------------------------------------------------------------------------------------- +# predefined functions +def SearchIndex(x, A, N): + i = 0 + j = N - 1 + while(i <= j): + mid = int(i + (j - i)/2) + if(A[mid] == x): + i = mid + break + elif(A[mid] > x): + j = mid - 1 + else: i = mid + 1 + return i + +f = h5py.File('../../Data_%06d'%idx_start, 'r') +Unit_L = f['Info']['InputPara']['Unit_L'] +Unit_T = f['Info']['InputPara']['Unit_T']*(3.16887646e-14) +Unit_V = f['Info']['InputPara']['Unit_V'] +Unit_M = f['Info']['InputPara']['Unit_M'] +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +Center = Center * Unit_L +f.close() +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + + +#----------------------------------------------------------------------------------------------------------------- +# analyze simulation data and generate processed output files +for idx in range(idx_start, idx_end+1, didx): + print('loading file Data_%06d ...'%idx) + with h5py.File('../../Data_%06d'%idx, 'r') as f: + disk_mass = np.array(f['Particle/ParMass'], dtype = np.float64) * Unit_M + disk_posx = np.array(f['Particle/ParPosX'], dtype = np.float64) * Unit_L + disk_posy = np.array(f['Particle/ParPosY'], dtype = np.float64) * Unit_L + disk_posz = np.array(f['Particle/ParPosZ'], dtype = np.float64) * Unit_L + disk_velx = np.array(f['Particle/ParVelX'], dtype = np.float64) * Unit_V + disk_vely = np.array(f['Particle/ParVelY'], dtype = np.float64) * Unit_V + disk_velz = np.array(f['Particle/ParVelZ'], dtype = np.float64) * Unit_V + disk_type = np.array(f['Particle/ParType'], dtype = np.int32) + current_step = f['Info/KeyInfo']['Step'] + time = f['Info/KeyInfo']['Time'][0]*Unit_T + # particle filter: thin disk particles have ParType=3 + disk_index = (disk_type==3) + disk_mass = disk_mass[disk_index] + disk_posx = disk_posx[disk_index] + disk_posy = disk_posy[disk_index] + disk_posz = disk_posz[disk_index] + disk_velx = disk_velx[disk_index] + disk_vely = disk_vely[disk_index] + disk_velz = disk_velz[disk_index] + disk_size = np.size(disk_mass) + print("number of thin disk particles = %d"%disk_size) + VCM = [ np.sum(disk_mass*disk_velx)/ np.sum(disk_mass), + np.sum(disk_mass*disk_vely)/ np.sum(disk_mass), + np.sum(disk_mass*disk_velz)/ np.sum(disk_mass) ] + center = Center[current_step,3:6] + disk_posx = disk_posx - center[0] + disk_posy = disk_posy - center[1] + disk_posz = disk_posz - center[2] + disk_velx = disk_velx - VCM[0] + disk_vely = disk_vely - VCM[1] + disk_velz = disk_velz - VCM[2] + # compute angular momentum + disk_pos = np.zeros((disk_size, 3)) + disk_vel = np.zeros((disk_size, 3)) + disk_pos[:,0] = disk_posx + disk_pos[:,1] = disk_posy + disk_pos[:,2] = disk_posz + disk_vel[:,0] = disk_velx + disk_vel[:,1] = disk_vely + disk_vel[:,2] = disk_velz + disk_L = np.cross(disk_pos, disk_vel) + tot_L = np.array([np.sum(disk_L[:,0]),np.sum(disk_L[:,1]),np.sum(disk_L[:,2])]) + tot_L = tot_L/(tot_L[0]**2+tot_L[1]**2+tot_L[2]**2)**0.5 + + vec = np.cross(tot_L, np.array([0,0,1])) + c = tot_L[2] + s = 1-c**2 + matric = np.array([ [0, -vec[2], vec[1]], + [vec[2], 0, -vec[0]], + [-vec[1], vec[0], 0] ]) + R = np.identity(3) + matric + np.matmul(matric, matric)/(1+c) + disk_pos_new = np.matmul(R, np.transpose(disk_pos)) + disk_vel_new = np.matmul(R, np.transpose(disk_vel)) + disk_posx = disk_pos_new[0,:] + disk_posy = disk_pos_new[1,:] + disk_posz = disk_pos_new[2,:] + disk_velx = disk_vel_new[0,:] + disk_vely = disk_vel_new[1,:] + disk_velz = disk_vel_new[2,:] + + disk_r = (disk_posx**2 + disk_posy**2)**0.5 + disk_velr = (disk_posx*disk_velx + disk_posy*disk_vely)/disk_r + disk_velp = (disk_posx*disk_vely - disk_posy*disk_velx)/disk_r + disk_sortR = np.sort(disk_r) + disk_indexR = np.argsort(disk_r) + Data = np.zeros((8,Div_disk)) + + r = 0 + disk_num = 0 + dr = 15.0*3.08568e+21/Div_disk + for j in range(Div_disk): + disk_num_pre = disk_num + Data[0,j] = r + 0.5 * dr + disk_num = SearchIndex( r+dr, disk_sortR, disk_size ) + mean_vr = np.mean( disk_velr[ disk_indexR[ disk_num_pre:disk_num ] ] ) + mean_vp = np.mean( disk_velp[ disk_indexR[ disk_num_pre:disk_num ] ] ) + mean_vz = np.mean( disk_velz[ disk_indexR[ disk_num_pre:disk_num ] ] ) + mean_vp2 = np.mean( disk_velp[ disk_indexR[ disk_num_pre:disk_num ] ]**2 ) + Data[1,j] = mean_vp # rotation curve + Data[2,j] = (np.mean(( disk_velr[ disk_indexR[ disk_num_pre:disk_num ] ] - mean_vr )**2))**0.5 # sigma_r + Data[3,j] = (np.mean(( disk_velz[ disk_indexR[ disk_num_pre:disk_num ] ] - mean_vz )**2))**0.5 # sigma_z + mass = disk_mass[0]*( disk_num-disk_num_pre ) + mass_total = disk_mass[0]*disk_num + area = (math.pi *((r + dr)**2 - r**2)) + Data[4,j] = mass/area # surface density Sigma + Data[5,j] = mean_vp2 # sigma_phi^2 + Data[6,j] = mass_total # enclosed mass + # get sacle height + CMZ = np.average(disk_posz[ disk_indexR[ disk_num_pre:disk_num ] ]) + disk_z = np.abs( disk_posz[ disk_indexR[ disk_num_pre:disk_num ] ] - CMZ ) + sortZ = np.sort(disk_z) + target_index = ratio*len(disk_z) + index_plus = int(target_index) + index_minus = int(target_index - 1) + target_z = sortZ[index_minus] + (target_index - index_minus)*(sortZ[index_plus] - sortZ[index_minus]) + Data[7,j] = target_z # scale height + + r = r + dr + + np.save('Data_Thin_Disk_%06d'%idx, Data) + print(' ') diff --git a/example/test_problem/ELBDM/DiskHeating/analysis_script/thin_disk/particle_proj_thin_disk.py b/example/test_problem/ELBDM/DiskHeating/analysis_script/thin_disk/particle_proj_thin_disk.py new file mode 100644 index 0000000000..fe3251f135 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/analysis_script/thin_disk/particle_proj_thin_disk.py @@ -0,0 +1,139 @@ +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import numpy as np +import yt +from mpl_toolkits.axes_grid1 import AxesGrid +import argparse +import sys + + +# ------------------------------------------------------------------------------------------------------------------------- +# user-specified parameters +FONT_SIZE = 24.0 +LINE_WIDTH = 0.5 +colormap = 'arbre' + + +#------------------------------------------------------------------------------------------------------------------------- +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot the face-on and edge-on projection of stellar disk' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx + +# print command-line parameters +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print( str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +# ------------------------------------------------------------------------------------------------------------------------- +# specify script unit and output figure settings +cm = 1/2.54 # centimeters in inches +field = ('ThinDisk', 'ParMass') +Center = np.loadtxt('../../Record__Center', skiprows=1, dtype=float) +if Center.ndim == 1: + Center = Center.reshape(1,len(Center)) # reshape the array if there is only one row + + +plt.rcParams['font.size'] = FONT_SIZE +plt.rcParams['figure.titlesize'] = 2*FONT_SIZE + +plt.rcParams['axes.titlesize'] = 2*FONT_SIZE +plt.rcParams['axes.labelsize'] = FONT_SIZE +plt.rcParams['axes.labelpad'] = 0.05 +plt.rcParams['axes.linewidth'] = LINE_WIDTH + +plt.rcParams['legend.fontsize'] = 6.0 +plt.rcParams['lines.linewidth'] = LINE_WIDTH + +plt.rcParams['xtick.major.size'] = 2 +plt.rcParams['xtick.major.width'] = 0.5 +plt.rcParams['xtick.minor.size'] = 1 +plt.rcParams['xtick.minor.width'] = 0.25 +plt.rcParams['xtick.labelsize'] = FONT_SIZE + +plt.rcParams['ytick.major.size'] = 2 +plt.rcParams['ytick.major.width'] = 0.5 +plt.rcParams['ytick.minor.size'] = 1 +plt.rcParams['ytick.minor.width'] = 0.25 +plt.rcParams['ytick.labelsize'] = FONT_SIZE + +plt.rcParams['font.family'] = 'STIXGeneral' +plt.rcParams['mathtext.fontset'] = 'custom' +plt.rcParams['mathtext.rm'] = 'STIXGeneral:regular' +plt.rcParams['mathtext.it'] = 'STIXGeneral:italic' +plt.rcParams['mathtext.bf'] = 'STIXGeneral:italic:bold' + +# add yt particle filter +def Disk(pfilter, data): + filter = data['all', 'ParType'] == 3 + return filter +yt.add_particle_filter('ThinDisk', function = Disk, filtered_type = 'all', requires = ['ParType']) + +# ------------------------------------------------------------------------------------------------------------------------- +# output figures +fig = plt.figure() +fig.dpi = 150 + +grid = AxesGrid( fig, (0.1, 0.05, 3.2, 2.7), nrows_ncols=(1, 2), axes_pad=(1.2,0.5), label_mode="all", share_all=True, cbar_location="right", cbar_mode="single", cbar_size="2%", cbar_pad="2%") + +for idx in range(idx_start, idx_end+1, didx): + ds = yt.load( '../../Data_%06d'%idx ) + ds.add_particle_filter('ThinDisk') + if sys.version_info[0] == 2: + ds.periodicity=(True,True,True) + current_step = ds.parameters["Step"] + print("Current Simulation Time = %.5e [code units]"%ds.parameters["Time"][0]) + print("Current Simulation Step = %i"%current_step) + + parx = yt.ParticleProjectionPlot( ds, 'x', fields = field, center = Center[current_step,3:6], width =( (60, 'kpc'),(60,'kpc'))) + parx.set_background_color( field ) + parx.set_cmap( field, colormap ) + parx.set_colorbar_label(field, "Projected stellar mass (M$_\odot$)") + parx.set_font( {'size':FONT_SIZE} ) + parx.set_axes_unit( 'kpc' ) + parx.set_unit( field, 'Msun' ) + parx.set_zlim( field, 5.5e+5, 5.5e+2, dynamic_range=None) + parx.annotate_text([ 0.05, 0.92], 'edge-on', coord_system="axis",text_args={"size":FONT_SIZE,"color":"black","weight":"normal","bbox":dict(boxstyle="round",ec='white',fc='white',alpha=0.7)}) + plot = parx.plots[field] + plot.figure = fig + plot.axes = grid[0].axes + plot.cax = grid.cbar_axes[0] + parx._setup_plots() + + parz = yt.ParticleProjectionPlot( ds, 'z', fields = field, center = Center[current_step,3:6], width =( (60, 'kpc'),(60,'kpc'))) + parz.set_background_color( field ) + parz.set_cmap( field, colormap ) + parz.set_colorbar_label(field, "Projected stellar mass (M$_\odot$)") + parz.set_font( {'size':FONT_SIZE} ) + parz.set_axes_unit( 'kpc' ) + parz.set_unit( field, 'Msun' ) + parz.set_zlim( field, 5.5e+5, 5.5e+2, dynamic_range=None) + parz.annotate_text([ 0.05, 0.92], 'face-on', coord_system="axis",text_args={"size":FONT_SIZE,"color":"black","weight":"normal","bbox":dict(boxstyle="round",ec='white',fc='white',alpha=0.7)}) + parz.annotate_text([ 0.75, 0.92], r'$t_{\rm rel}$ = %2.1f Gyr'%(140.59*idx/1000.), coord_system="axis", text_args={"size":FONT_SIZE,"color":"white"}) + plot = parz.plots[field] + plot.figure = fig + plot.axes = grid[1].axes + plot.cax = grid.cbar_axes[1] + parz._setup_plots() + + fig.set_size_inches(18*cm, 8*cm) + fig.savefig("particle_proj_%06d.png"%idx, bbox_inches='tight',pad_inches=0.02) + #fig.savefig("particle_proj_%06d.pdf"%idx, bbox_inches='tight',pad_inches=0.02) + + print('\nparticle_proj_%06d.png completed\n'%idx) diff --git a/example/test_problem/ELBDM/DiskHeating/clean.sh b/example/test_problem/ELBDM/DiskHeating/clean.sh new file mode 100644 index 0000000000..cc9345ab86 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/clean.sh @@ -0,0 +1,6 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Center \ + GRACKLE_INFO Record__DivB Record__Hybrid diff --git a/example/test_problem/ELBDM/DiskHeating/download_ic.sh b/example/test_problem/ELBDM/DiskHeating/download_ic.sh new file mode 100644 index 0000000000..fe24da5b58 --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/download_ic.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +LOCAL_FILENAME="disk-heating-ic" +FILE_ID="677dd2d0999605c485c8de8f" +FILE_SHA256="5c981ffe1f0cd85237b51e9e2872e8047dad8a87e0419575255e4c1d5d8cf17a" + +# 1 download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}.tgz" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME}.tgz | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}.tgz" + +# 3. unzip and link +tar -zxvf ${LOCAL_FILENAME}.tgz +rm ${LOCAL_FILENAME}.tgz +ln -s ${LOCAL_FILENAME}/UM_IC_0.4_M7 UM_IC +ln -s ${LOCAL_FILENAME}/PAR_IC_0.4_M7_low_res DiskHeatingParticleIC diff --git a/example/test_problem/ELBDM/DiskHeating/generate_make.sh b/example/test_problem/ELBDM/DiskHeating/generate_make.sh new file mode 100644 index 0000000000..19d04c42bc --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/generate_make.sh @@ -0,0 +1,7 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true --particle=true --store_par_acc=true \ + --gsl=true --max_patch=20000000 "$@" diff --git a/example/test_problem/ELBDM/DiskHeating/get_par_ic.py b/example/test_problem/ELBDM/DiskHeating/get_par_ic.py new file mode 100644 index 0000000000..735c5ec93c --- /dev/null +++ b/example/test_problem/ELBDM/DiskHeating/get_par_ic.py @@ -0,0 +1,85 @@ +import h5py +import numpy as np + +filename = "snap_001.hdf5" +UNIT_L_GALIC = 3.08568e+21 +UNIT_M_GALIC = 1.989e+43 +UNIT_D_GALIC = UNIT_M_GALIC/UNIT_L_GALIC**3 +UNIT_V_GALIC = 1.0e+5 + +UNIT_L = 4.436632034507548e+24 +UNIT_D = 2.5758579703106658e-30 +UNIT_M = UNIT_D*UNIT_L**3 +UNIT_V = 1.0e+7 + +def SearchIndex(x, A, N): + i = 0 + j = N - 1 + while(i <= j): + mid = int(i + (j - i)/2) + if(A[mid] == x): + i = mid + break + elif(A[mid] > x): + j = mid - 1 + else: i = mid + 1 + return i + +with h5py.File(filename, "r") as f: + N_Disk = f['PartType2']['Masses'].size + mass = f['PartType2']['Masses'][0] *UNIT_M_GALIC/UNIT_M + disk_posx = np.array(f['PartType2']['Coordinates'][:,0], dtype = np.float64) *UNIT_L_GALIC/UNIT_L + disk_posy = np.array(f['PartType2']['Coordinates'][:,1], dtype = np.float64) *UNIT_L_GALIC/UNIT_L + disk_posz = np.array(f['PartType2']['Coordinates'][:,2], dtype = np.float64) *UNIT_L_GALIC/UNIT_L + disk_velx = np.array(f['PartType2']['Velocities'][:,0], dtype = np.float64) *UNIT_V_GALIC/UNIT_V + disk_vely = np.array(f['PartType2']['Velocities'][:,1], dtype = np.float64) *UNIT_V_GALIC/UNIT_V + disk_velz = np.array(f['PartType2']['Velocities'][:,2], dtype = np.float64) *UNIT_V_GALIC/UNIT_V + +CM = [ np.sum(disk_posx)/ N_Disk, + np.sum(disk_posy)/ N_Disk, + np.sum(disk_posz)/ N_Disk ] +VCM = [ np.sum(disk_velx)/ N_Disk, + np.sum(disk_vely)/ N_Disk, + np.sum(disk_velz)/ N_Disk ] +#print(np.array(VCM)*UNIT_V/UNIT_V_GALIC) + +center = [7.9770907e-02, 7.9854590e-02, 8.0858787e-02] +disk_posx = disk_posx - CM[0] +disk_posy = disk_posy - CM[1] +disk_posz = disk_posz - CM[2] +disk_velx = disk_velx - VCM[0] +disk_vely = disk_vely - VCM[1] +disk_velz = disk_velz - VCM[2] +disk_r = (disk_posx**2+disk_posy**2+disk_posz**2)**0.5 +sortR_kpc = np.sort(disk_r)*UNIT_L/UNIT_L_GALIC + +#print(sortR_kpc[0]) +#print(sortR_kpc[-1]) + +indexR = np.argsort(disk_r) + +# exclude particles with r > 70 kpc +num = SearchIndex( 70, sortR_kpc, N_Disk ) + +disk_posx = disk_posx[ indexR[:num] ] + center[0] +disk_posy = disk_posy[ indexR[:num] ] + center[1] +disk_posz = disk_posz[ indexR[:num] ] + center[2] +disk_velx = disk_velx[ indexR[:num] ] +disk_vely = disk_vely[ indexR[:num] ] +disk_velz = disk_velz[ indexR[:num] ] + +disk_type = np.full(num, 2) +disk_mass = np.full(num, mass) +with open('DiskHeatingParticleIC', 'wb') as output: + output.write(disk_mass.astype('f').tobytes()) + output.write(disk_posx.astype('f').tobytes()) + output.write(disk_posy.astype('f').tobytes()) + output.write(disk_posz.astype('f').tobytes()) + output.write(disk_velx.astype('f').tobytes()) + output.write(disk_vely.astype('f').tobytes()) + output.write(disk_velz.astype('f').tobytes()) + output.write(disk_type.astype('f').tobytes()) +output.close() +#print('Disk particles = '+ str(len(disk_posx))) +print('Disk particles = '+ str(num)) +print('DiskHeatingParticleIC complete') diff --git a/example/test_problem/ELBDM/ExtPot/Input__Parameter b/example/test_problem/ELBDM/ExtPot/Input__Parameter index 05660d3d40..979c4e4b38 100644 --- a/example/test_problem/ELBDM/ExtPot/Input__Parameter +++ b/example/test_problem/ELBDM/ExtPot/Input__Parameter @@ -7,7 +7,8 @@ # 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values # and will be set according to the adopted compilation options and/or other runtime parameters # 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" -# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) # 6. For boolean options: 0/1 -> off/on # ================================================================================================================= @@ -42,6 +43,7 @@ OPT__BC_POT 2 # gravity boundary condition: (1=perio # time-step +DT__MAX -1.0 # dt criterion: maximum allowed dt (<0=off) [-1.0] DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] @@ -80,7 +82,7 @@ OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_M # load balance (LOAD_BALANCE only) LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] -OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) @@ -89,7 +91,10 @@ ELBDM_MASS 2.3 # particle mass in ev/c^2 (input unit ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## -ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [1] +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] # fluid solvers in all models @@ -108,21 +113,24 @@ SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (< SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] POT_GPU_NPGROUP -1 # number of patch groups sent into the GPU Poisson solver (<=0=auto) [-1] -OPT__GRA_P5_GRADIENT 0 # 5-points gradient in the Gravity solver (must have GRA/USG_GHOST_SIZE_G>=2) [0] OPT__SELF_GRAVITY 1 # add self-gravity [1] OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## OPT__EXT_POT 1 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too # initialization OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] -# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar) +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] @@ -131,15 +139,15 @@ OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Pois OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## - # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## OPT__OUTPUT_USER_FIELD 0 # output user-defined derived fields [0] -> edit "Flu_DerivedField_User.cpp" OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## @@ -148,6 +156,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous @@ -160,6 +169,7 @@ OPT__RECORD_PERFORMANCE 1 # record the code performance [1] OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] # checks diff --git a/example/test_problem/ELBDM/ExtPot/Input__TestProb b/example/test_problem/ELBDM/ExtPot/Input__TestProb index 98a4c3ddc5..f31c6630e2 100644 --- a/example/test_problem/ELBDM/ExtPot/Input__TestProb +++ b/example/test_problem/ELBDM/ExtPot/Input__TestProb @@ -1,6 +1,6 @@ # problem-specific runtime parameters -ExtPot_Amp 1.0 # initial wave function amplitude -ExtPot_M 1.0e2 # point source mass -ExtPot_Cen_X -1.0 # point source position x (<0=default) [box center] -ExtPot_Cen_Y -1.0 # point source position y (<0=default) [box center] -ExtPot_Cen_Z -1.0 # point source position z (<0=default) [box center] +ELBDM_ExtPot_Amp 1.0 # initial wave function amplitude +ELBDM_ExtPot_M 1.0e2 # point source mass +ELBDM_ExtPot_Cen_X -1.0 # point source position x (<0=default) [box center] +ELBDM_ExtPot_Cen_Y -1.0 # point source position y (<0=default) [box center] +ELBDM_ExtPot_Cen_Z -1.0 # point source position z (<0=default) [box center] diff --git a/example/test_problem/ELBDM/ExtPot/clean.sh b/example/test_problem/ELBDM/ExtPot/clean.sh index 58fa7c7783..e0261d4d97 100644 --- a/example/test_problem/ELBDM/ExtPot/clean.sh +++ b/example/test_problem/ELBDM/ExtPot/clean.sh @@ -1,7 +1,7 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ - Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid rm -f AcousticWave_* diff --git a/example/test_problem/ELBDM/ExtPot/generate_make.sh b/example/test_problem/ELBDM/ExtPot/generate_make.sh new file mode 100644 index 0000000000..fab2dfe0c6 --- /dev/null +++ b/example/test_problem/ELBDM/ExtPot/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true "$@" diff --git a/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter b/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter new file mode 100644 index 0000000000..d6de8f50fb --- /dev/null +++ b/example/test_problem/ELBDM/GaussianWavePacket/Input__Parameter @@ -0,0 +1,177 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 16 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1008 # test problem ID [0] + # 1008: ELBDM 1D Gaussian wave packet + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 4 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 4 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 4 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 4 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 6.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-2 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 1 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/GaussianWavePacket/Input__TestProb b/example/test_problem/ELBDM/GaussianWavePacket/Input__TestProb new file mode 100644 index 0000000000..ad6a5dd3b3 --- /dev/null +++ b/example/test_problem/ELBDM/GaussianWavePacket/Input__TestProb @@ -0,0 +1,6 @@ +# problem-specific runtime parameters +Gau_v0 3.0 # mean velocity [1.0] +Gau_Width 1.0e-1 # Gaussian width [0.1] +Gau_Center 0.125 # Gaussian center [box center] +Gau_XYZ 0 # wave propagation direction (0/1/2 --> x/y/z) [0] +Gau_PeriodicN 0 # periodic boundary condition (0 = non-periodic, >0 = number of periodic images each side) [0] diff --git a/example/test_problem/ELBDM/GaussianWavePacket/README b/example/test_problem/ELBDM/GaussianWavePacket/README new file mode 100644 index 0000000000..99dea00dd8 --- /dev/null +++ b/example/test_problem/ELBDM/GaussianWavePacket/README @@ -0,0 +1,16 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM +Disable: GRAVITY, PARTICLE + + +Default setup: +======================================== +1. Evolve the Gaussian wave packet for half of box +2. Apply the analytical solution as user-defined BC + --> Set OPT__BC_FLU_* = 4 + + +Note: +======================================== +1. Only support 1D --> Use "Gau_XYZ" to control the propagation direction diff --git a/example/test_problem/ELBDM/GaussianWavePacket/clean.sh b/example/test_problem/ELBDM/GaussianWavePacket/clean.sh new file mode 100644 index 0000000000..1ed5787641 --- /dev/null +++ b/example/test_problem/ELBDM/GaussianWavePacket/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f Gaussian_* diff --git a/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh b/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh new file mode 100644 index 0000000000..68b0c3d80b --- /dev/null +++ b/example/test_problem/ELBDM/GaussianWavePacket/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM "$@" diff --git a/example/test_problem/ELBDM/GaussianWavePacket/plot.gpt b/example/test_problem/ELBDM/GaussianWavePacket/plot.gpt new file mode 100644 index 0000000000..c73e794e59 --- /dev/null +++ b/example/test_problem/ELBDM/GaussianWavePacket/plot.gpt @@ -0,0 +1,89 @@ +reset + + +# target files +# ----------------------------------------------------------- +FILE_IN_PREFIX = 'Gaussian_Dens' +FILE_IN_SUFFIX = '' +FILE_OUT_PREFIX = 'Fig__Gaussian_Dens' +START_ID = 0 +END_ID = 17 +DELTA_ID = 1 +PAUSE = -1.0 # <= 0.0 --> mouse + + +# terminal +# ----------------------------------------------------------- + set term x11 enhanced +#set term png enhanced crop size 1280,800 +#set term postscript eps enhanced color 'Helvetica' 16 + + +# plot style +# ----------------------------------------------------------- +#set log xy + set key reverse Left spacing 2 right +#set key reverse Left spacing 1 at first 1.5e2, 1e8 +set xlabel "r" +set ylabel "Density" +#set format x "10^{%T}" +#set format y "10^{%T}" + set pointsize 1.0 +#set size square +#set xrange [3.0e-2:1e2] + set yrange [0.0:6.0] + + +# constants +# ----------------------------------------------------------- + + +# set the output file extension automatically +# ----------------------------------------------------------- +if ( GPVAL_TERM eq 'pngcairo' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'png' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'postscript' ) FILE_OUT_EXT='eps'; \ +else if ( GPVAL_TERM ne 'x11' ) print 'Unkown terminal for settting the output file extension !!'; quit + + + +# loop over all files +# ----------------------------------------------------------- +print "Start plotting ..." + +do for [ID=START_ID:END_ID:DELTA_ID] { + +# set the input and output filenames + FILE_IN = sprintf( '%s_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + + if ( GPVAL_TERM ne 'x11' ) { set output sprintf( '%s_%06d.%s', FILE_OUT_PREFIX, ID, FILE_OUT_EXT ) } + + +# load the physical time + DUMP_TABLE = './Record__Dump' + NHEADER = 1 + LOAD_TIME = sprintf( "awk '{if(NR==%d+%d) {print $2}}' %s", NHEADER, ID+1, DUMP_TABLE ) + TIME = system( LOAD_TIME )*1.0 # *1.0 --> convert string to number + + +# set title + set title sprintf( 'DataID %06d (t = %9.3e)', ID, TIME ) + print sprintf( ' Plotting DataID %06d (t = %9.3e) ...', ID, TIME ) + + +# plot + first = 0 + + plot FILE_IN u 1:2 w p pt 6 lc 7 title 'Simulation' \ + ,FILE_IN u 1:3 w l lc 8 title 'Analytical' + + + if ( GPVAL_TERM eq 'x11' ) { if ( PAUSE <= 0.0 ) { pause mouse } else { pause PAUSE } }; + +} #do for [ID=START_ID:END_ID:DELTA_ID] + + +print "Done"; +if ( GPVAL_TERM eq 'x11' ) { pause -1 }; + + diff --git a/example/test_problem/ELBDM/HaloMerger/HaloDensityProfile b/example/test_problem/ELBDM/HaloMerger/HaloDensityProfile new file mode 100644 index 0000000000..a3cd3b808d --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/HaloDensityProfile @@ -0,0 +1,4097 @@ +# r density + 6.95500000e-06 4.29282103e+04 + 6.97184057e-06 4.29282103e+04 + 6.98872191e-06 4.29282103e+04 + 7.00564413e-06 4.29282103e+04 + 7.02260732e-06 4.29282103e+04 + 7.03961159e-06 4.29282103e+04 + 7.05665703e-06 4.29282103e+04 + 7.07374374e-06 4.29282103e+04 + 7.09087183e-06 4.29282103e+04 + 7.10804138e-06 4.29282103e+04 + 7.12525252e-06 4.29282103e+04 + 7.14250533e-06 4.29282103e+04 + 7.15979991e-06 4.29282103e+04 + 7.17713637e-06 4.29282103e+04 + 7.19451480e-06 4.29282103e+04 + 7.21193532e-06 4.29282103e+04 + 7.22939802e-06 4.29282103e+04 + 7.24690300e-06 4.29282103e+04 + 7.26445037e-06 4.29282103e+04 + 7.28204022e-06 4.29282103e+04 + 7.29967267e-06 4.29282103e+04 + 7.31734781e-06 4.29282103e+04 + 7.33506575e-06 4.29282103e+04 + 7.35282659e-06 4.29282103e+04 + 7.37063044e-06 4.29282103e+04 + 7.38847739e-06 4.29282103e+04 + 7.40636756e-06 4.29282103e+04 + 7.42430105e-06 4.29282103e+04 + 7.44227796e-06 4.29282103e+04 + 7.46029841e-06 4.29282103e+04 + 7.47836248e-06 4.29282103e+04 + 7.49647029e-06 4.29282103e+04 + 7.51462195e-06 4.29282103e+04 + 7.53281757e-06 4.29282103e+04 + 7.55105723e-06 4.29282103e+04 + 7.56934107e-06 4.29282103e+04 + 7.58766918e-06 4.29282103e+04 + 7.60604166e-06 4.29282103e+04 + 7.62445863e-06 4.29282103e+04 + 7.64292020e-06 4.29282103e+04 + 7.66142647e-06 4.29282103e+04 + 7.67997754e-06 4.29282103e+04 + 7.69857354e-06 4.29282103e+04 + 7.71721456e-06 4.29282103e+04 + 7.73590073e-06 4.29282103e+04 + 7.75463213e-06 4.29282103e+04 + 7.77340890e-06 4.29282103e+04 + 7.79223112e-06 4.29282103e+04 + 7.81109893e-06 4.29282103e+04 + 7.83001242e-06 4.29282103e+04 + 7.84897170e-06 4.29282103e+04 + 7.86797689e-06 4.29282103e+04 + 7.88702811e-06 4.29282103e+04 + 7.90612545e-06 4.29282103e+04 + 7.92526903e-06 4.29282103e+04 + 7.94445897e-06 4.29282103e+04 + 7.96369537e-06 4.29282103e+04 + 7.98297835e-06 4.29282103e+04 + 8.00230802e-06 4.29282103e+04 + 8.02168449e-06 4.29282103e+04 + 8.04110789e-06 4.29282103e+04 + 8.06057831e-06 4.29282103e+04 + 8.08009588e-06 4.29282103e+04 + 8.09966071e-06 4.29282103e+04 + 8.11927291e-06 4.29282103e+04 + 8.13893260e-06 4.29282103e+04 + 8.15863989e-06 4.29282103e+04 + 8.17839490e-06 4.29282103e+04 + 8.19819775e-06 4.29282103e+04 + 8.21804854e-06 4.29282103e+04 + 8.23794740e-06 4.29282103e+04 + 8.25789445e-06 4.29282103e+04 + 8.27788979e-06 4.29282103e+04 + 8.29793355e-06 4.29282103e+04 + 8.31802584e-06 4.29282103e+04 + 8.33816678e-06 4.29282103e+04 + 8.35835649e-06 4.29282103e+04 + 8.37859509e-06 4.29282103e+04 + 8.39888269e-06 4.29282103e+04 + 8.41921942e-06 4.29282103e+04 + 8.43960538e-06 4.29282103e+04 + 8.46004071e-06 4.29282103e+04 + 8.48052553e-06 4.29282103e+04 + 8.50105994e-06 4.29282103e+04 + 8.52164407e-06 4.29282103e+04 + 8.54227805e-06 4.29282103e+04 + 8.56296199e-06 4.29282103e+04 + 8.58369601e-06 4.29282103e+04 + 8.60448023e-06 4.29282103e+04 + 8.62531478e-06 4.29282103e+04 + 8.64619978e-06 4.29282103e+04 + 8.66713535e-06 4.29282103e+04 + 8.68812161e-06 4.29282103e+04 + 8.70915869e-06 4.29282103e+04 + 8.73024671e-06 4.29282103e+04 + 8.75138579e-06 4.29282103e+04 + 8.77257605e-06 4.29282103e+04 + 8.79381762e-06 4.29282103e+04 + 8.81511063e-06 4.29282103e+04 + 8.83645519e-06 4.29282103e+04 + 8.85785144e-06 4.29282103e+04 + 8.87929949e-06 4.29282103e+04 + 8.90079948e-06 4.29282103e+04 + 8.92235153e-06 4.29282103e+04 + 8.94395576e-06 4.29282103e+04 + 8.96561230e-06 4.29282103e+04 + 8.98732129e-06 4.29282103e+04 + 9.00908283e-06 4.29282103e+04 + 9.03089708e-06 4.29282103e+04 + 9.05276414e-06 4.29282103e+04 + 9.07468414e-06 4.29282103e+04 + 9.09665723e-06 4.29282103e+04 + 9.11868352e-06 4.29282103e+04 + 9.14076314e-06 4.29282103e+04 + 9.16289623e-06 4.29282103e+04 + 9.18508291e-06 4.29282103e+04 + 9.20732331e-06 4.29282103e+04 + 9.22961756e-06 4.29282103e+04 + 9.25196579e-06 4.29282103e+04 + 9.27436814e-06 4.29282103e+04 + 9.29682473e-06 4.29282103e+04 + 9.31933570e-06 4.29282103e+04 + 9.34190118e-06 4.29282103e+04 + 9.36452129e-06 4.29282103e+04 + 9.38719617e-06 4.29282103e+04 + 9.40992596e-06 4.29282103e+04 + 9.43271079e-06 4.29282103e+04 + 9.45555079e-06 4.29282103e+04 + 9.47844609e-06 4.29282103e+04 + 9.50139683e-06 4.29282103e+04 + 9.52440314e-06 4.29282103e+04 + 9.54746515e-06 4.29282103e+04 + 9.57058301e-06 4.29282103e+04 + 9.59375685e-06 4.29282103e+04 + 9.61698679e-06 4.29282103e+04 + 9.64027299e-06 4.29282103e+04 + 9.66361557e-06 4.29282103e+04 + 9.68701467e-06 4.29282103e+04 + 9.71047043e-06 4.29282103e+04 + 9.73398298e-06 4.29282103e+04 + 9.75755246e-06 4.29282103e+04 + 9.78117902e-06 4.29282103e+04 + 9.80486278e-06 4.29282103e+04 + 9.82860389e-06 4.29282103e+04 + 9.85240249e-06 4.29282103e+04 + 9.87625871e-06 4.29282103e+04 + 9.90017270e-06 4.29282103e+04 + 9.92414459e-06 4.29282103e+04 + 9.94817453e-06 4.29282103e+04 + 9.97226265e-06 4.29282103e+04 + 9.99640909e-06 4.29282103e+04 + 1.00206140e-05 4.29282103e+04 + 1.00448775e-05 4.29282103e+04 + 1.00691998e-05 4.29282103e+04 + 1.00935810e-05 4.29282103e+04 + 1.01180212e-05 4.29282103e+04 + 1.01425205e-05 4.29282103e+04 + 1.01670793e-05 4.29282103e+04 + 1.01916974e-05 4.29282103e+04 + 1.02163752e-05 4.29282103e+04 + 1.02411127e-05 4.29282103e+04 + 1.02659102e-05 4.29282103e+04 + 1.02907676e-05 4.29282103e+04 + 1.03156853e-05 4.29282103e+04 + 1.03406633e-05 4.29282103e+04 + 1.03657018e-05 4.29282103e+04 + 1.03908009e-05 4.29282103e+04 + 1.04159607e-05 4.29282103e+04 + 1.04411815e-05 4.29282103e+04 + 1.04664634e-05 4.29282103e+04 + 1.04918065e-05 4.29282103e+04 + 1.05172109e-05 4.29282103e+04 + 1.05426769e-05 4.29282103e+04 + 1.05682045e-05 4.29282103e+04 + 1.05937940e-05 4.29282103e+04 + 1.06194454e-05 4.29282103e+04 + 1.06451589e-05 4.29282103e+04 + 1.06709347e-05 4.29282103e+04 + 1.06967728e-05 4.29282103e+04 + 1.07226736e-05 4.29282103e+04 + 1.07486370e-05 4.29282103e+04 + 1.07746634e-05 4.29282103e+04 + 1.08007527e-05 4.29282103e+04 + 1.08269052e-05 4.29282103e+04 + 1.08531211e-05 4.29282103e+04 + 1.08794004e-05 4.29282103e+04 + 1.09057434e-05 4.29282103e+04 + 1.09321501e-05 4.29282103e+04 + 1.09586208e-05 4.29282103e+04 + 1.09851556e-05 4.29282103e+04 + 1.10117546e-05 4.29282103e+04 + 1.10384180e-05 4.29282103e+04 + 1.10651460e-05 4.29282103e+04 + 1.10919387e-05 4.29282103e+04 + 1.11187963e-05 4.29282103e+04 + 1.11457189e-05 4.29282103e+04 + 1.11727067e-05 4.29282103e+04 + 1.11997599e-05 4.29282103e+04 + 1.12268785e-05 4.29282103e+04 + 1.12540629e-05 4.29282103e+04 + 1.12813130e-05 4.29282103e+04 + 1.13086291e-05 4.29282103e+04 + 1.13360114e-05 4.29282103e+04 + 1.13634600e-05 4.29282103e+04 + 1.13909750e-05 4.29282103e+04 + 1.14185567e-05 4.29282103e+04 + 1.14462051e-05 4.29282103e+04 + 1.14739205e-05 4.29282103e+04 + 1.15017030e-05 4.29282103e+04 + 1.15295528e-05 4.29282103e+04 + 1.15574700e-05 4.29282103e+04 + 1.15854548e-05 4.29282103e+04 + 1.16135074e-05 4.29282103e+04 + 1.16416279e-05 4.29282103e+04 + 1.16698165e-05 4.29282103e+04 + 1.16980733e-05 4.29282103e+04 + 1.17263986e-05 4.29282103e+04 + 1.17547924e-05 4.29282103e+04 + 1.17832550e-05 4.29282103e+04 + 1.18117865e-05 4.29282103e+04 + 1.18403871e-05 4.29282103e+04 + 1.18690569e-05 4.29282103e+04 + 1.18977962e-05 4.29282103e+04 + 1.19266051e-05 4.29282103e+04 + 1.19554837e-05 4.29282103e+04 + 1.19844322e-05 4.29282103e+04 + 1.20134509e-05 4.29282103e+04 + 1.20425398e-05 4.29282103e+04 + 1.20716991e-05 4.29282103e+04 + 1.21009290e-05 4.29282103e+04 + 1.21302298e-05 4.29282103e+04 + 1.21596014e-05 4.29282103e+04 + 1.21890442e-05 4.29282103e+04 + 1.22185583e-05 4.29282103e+04 + 1.22481438e-05 4.29282103e+04 + 1.22778010e-05 4.29282103e+04 + 1.23075300e-05 4.29282103e+04 + 1.23373309e-05 4.29282103e+04 + 1.23672041e-05 4.29282103e+04 + 1.23971495e-05 4.29282103e+04 + 1.24271675e-05 4.29282103e+04 + 1.24572582e-05 4.29282103e+04 + 1.24874217e-05 4.29282103e+04 + 1.25176582e-05 4.29282103e+04 + 1.25479680e-05 4.29282103e+04 + 1.25783512e-05 4.29282103e+04 + 1.26088079e-05 4.29282103e+04 + 1.26393384e-05 4.29282103e+04 + 1.26699428e-05 4.29282103e+04 + 1.27006213e-05 4.29282103e+04 + 1.27313741e-05 4.29282103e+04 + 1.27622013e-05 4.29282103e+04 + 1.27931032e-05 4.29282103e+04 + 1.28240799e-05 4.29282103e+04 + 1.28551317e-05 4.29282103e+04 + 1.28862586e-05 4.29282103e+04 + 1.29174608e-05 4.29282103e+04 + 1.29487387e-05 4.29282103e+04 + 1.29800922e-05 4.29282103e+04 + 1.30115217e-05 4.29282103e+04 + 1.30430273e-05 4.29282103e+04 + 1.30746092e-05 4.29282103e+04 + 1.31062675e-05 4.29282103e+04 + 1.31380026e-05 4.29282103e+04 + 1.31698144e-05 4.29282103e+04 + 1.32017033e-05 4.29282103e+04 + 1.32336694e-05 4.29282103e+04 + 1.32657128e-05 4.29282103e+04 + 1.32978339e-05 4.29282103e+04 + 1.33300328e-05 4.29282103e+04 + 1.33623096e-05 4.29282103e+04 + 1.33946646e-05 4.29282103e+04 + 1.34270979e-05 4.29282103e+04 + 1.34596097e-05 4.29282103e+04 + 1.34922003e-05 4.29282103e+04 + 1.35248698e-05 4.29282103e+04 + 1.35576184e-05 4.29282103e+04 + 1.35904463e-05 4.29282103e+04 + 1.36233536e-05 4.29282103e+04 + 1.36563407e-05 4.29282103e+04 + 1.36894076e-05 4.29282103e+04 + 1.37225546e-05 4.29282103e+04 + 1.37557819e-05 4.29282103e+04 + 1.37890896e-05 4.29282103e+04 + 1.38224780e-05 4.29282103e+04 + 1.38559472e-05 4.29282103e+04 + 1.38894974e-05 4.29282103e+04 + 1.39231289e-05 4.29282103e+04 + 1.39568418e-05 4.29282103e+04 + 1.39906364e-05 4.29282103e+04 + 1.40245127e-05 4.29282103e+04 + 1.40584711e-05 4.29282103e+04 + 1.40925118e-05 4.29282103e+04 + 1.41266348e-05 4.29282103e+04 + 1.41608405e-05 4.29282103e+04 + 1.41951290e-05 4.29282103e+04 + 1.42295006e-05 4.29282103e+04 + 1.42639553e-05 4.29282103e+04 + 1.42984935e-05 4.29282103e+04 + 1.43331153e-05 4.29282103e+04 + 1.43678209e-05 4.29282103e+04 + 1.44026106e-05 4.29282103e+04 + 1.44374845e-05 4.29282103e+04 + 1.44724429e-05 4.29282103e+04 + 1.45074859e-05 4.29282103e+04 + 1.45426138e-05 4.29282103e+04 + 1.45778267e-05 4.29282103e+04 + 1.46131249e-05 4.29282103e+04 + 1.46485085e-05 4.29282103e+04 + 1.46839778e-05 4.29282103e+04 + 1.47195330e-05 4.29282103e+04 + 1.47551743e-05 4.29282103e+04 + 1.47909019e-05 4.29282103e+04 + 1.48267161e-05 4.29282103e+04 + 1.48626169e-05 4.29282103e+04 + 1.48986046e-05 4.29282103e+04 + 1.49346795e-05 4.29282103e+04 + 1.49708418e-05 4.29282103e+04 + 1.50070916e-05 4.29282103e+04 + 1.50434292e-05 4.29282103e+04 + 1.50798548e-05 4.29282103e+04 + 1.51163685e-05 4.29282103e+04 + 1.51529707e-05 4.29282103e+04 + 1.51896615e-05 4.29282103e+04 + 1.52264412e-05 4.29282103e+04 + 1.52633099e-05 4.29282103e+04 + 1.53002679e-05 4.29282103e+04 + 1.53373153e-05 4.29282103e+04 + 1.53744525e-05 4.29282103e+04 + 1.54116796e-05 4.29282103e+04 + 1.54489968e-05 4.29282103e+04 + 1.54864044e-05 4.29282103e+04 + 1.55239026e-05 4.29282103e+04 + 1.55614916e-05 4.29282103e+04 + 1.55991716e-05 4.29282103e+04 + 1.56369428e-05 4.29282103e+04 + 1.56748055e-05 4.29282103e+04 + 1.57127598e-05 4.29282103e+04 + 1.57508061e-05 4.29282103e+04 + 1.57889445e-05 4.29282103e+04 + 1.58271752e-05 4.29282103e+04 + 1.58654985e-05 4.29282103e+04 + 1.59039146e-05 4.29282103e+04 + 1.59424237e-05 4.29282103e+04 + 1.59810261e-05 4.29282103e+04 + 1.60197219e-05 4.29282103e+04 + 1.60585114e-05 4.29282103e+04 + 1.60973949e-05 4.29282103e+04 + 1.61363725e-05 4.29282103e+04 + 1.61754445e-05 4.29282103e+04 + 1.62146111e-05 4.29282103e+04 + 1.62538725e-05 4.29282103e+04 + 1.62932290e-05 4.29282103e+04 + 1.63326808e-05 4.29282103e+04 + 1.63722281e-05 4.29282103e+04 + 1.64118712e-05 4.29282103e+04 + 1.64516102e-05 4.29282103e+04 + 1.64914455e-05 4.29282103e+04 + 1.65313772e-05 4.29282103e+04 + 1.65714057e-05 4.29282103e+04 + 1.66115310e-05 4.29282103e+04 + 1.66517535e-05 4.29282103e+04 + 1.66920734e-05 4.29282103e+04 + 1.67324910e-05 4.29282103e+04 + 1.67730064e-05 4.29282103e+04 + 1.68136199e-05 4.29282103e+04 + 1.68543317e-05 4.29282103e+04 + 1.68951421e-05 4.29282103e+04 + 1.69360514e-05 4.29282103e+04 + 1.69770597e-05 4.29282103e+04 + 1.70181672e-05 4.29282103e+04 + 1.70593744e-05 4.29282103e+04 + 1.71006813e-05 4.29282103e+04 + 1.71420882e-05 4.29282103e+04 + 1.71835954e-05 4.29282103e+04 + 1.72252031e-05 4.29282103e+04 + 1.72669115e-05 4.29282103e+04 + 1.73087209e-05 4.29282103e+04 + 1.73506316e-05 4.29282103e+04 + 1.73926437e-05 4.29282103e+04 + 1.74347576e-05 4.29282103e+04 + 1.74769734e-05 4.29282103e+04 + 1.75192915e-05 4.29282103e+04 + 1.75617120e-05 4.29282103e+04 + 1.76042352e-05 4.29282103e+04 + 1.76468615e-05 4.29282103e+04 + 1.76895909e-05 4.29282103e+04 + 1.77324238e-05 4.29282103e+04 + 1.77753604e-05 4.29282103e+04 + 1.78184009e-05 4.29282103e+04 + 1.78615457e-05 4.29282103e+04 + 1.79047949e-05 4.29282103e+04 + 1.79481489e-05 4.29282103e+04 + 1.79916079e-05 4.29282103e+04 + 1.80351720e-05 4.29282103e+04 + 1.80788417e-05 4.29282103e+04 + 1.81226171e-05 4.29282103e+04 + 1.81664985e-05 4.29282103e+04 + 1.82104861e-05 4.29282103e+04 + 1.82545803e-05 4.29282103e+04 + 1.82987812e-05 4.29282103e+04 + 1.83430892e-05 4.29282103e+04 + 1.83875044e-05 4.29282103e+04 + 1.84320272e-05 4.29282103e+04 + 1.84766578e-05 4.29282103e+04 + 1.85213964e-05 4.29282103e+04 + 1.85662434e-05 4.29282103e+04 + 1.86111990e-05 4.29282103e+04 + 1.86562634e-05 4.29282103e+04 + 1.87014370e-05 4.29282103e+04 + 1.87467199e-05 4.29282103e+04 + 1.87921125e-05 4.29282103e+04 + 1.88376150e-05 4.29282103e+04 + 1.88832276e-05 4.29282103e+04 + 1.89289507e-05 4.29282103e+04 + 1.89747845e-05 4.29282103e+04 + 1.90207293e-05 4.29282103e+04 + 1.90667854e-05 4.29282103e+04 + 1.91129530e-05 4.29282103e+04 + 1.91592323e-05 4.29282103e+04 + 1.92056237e-05 4.29282103e+04 + 1.92521275e-05 4.29282103e+04 + 1.92987438e-05 4.29282103e+04 + 1.93454730e-05 4.29282103e+04 + 1.93923154e-05 4.29282103e+04 + 1.94392712e-05 4.29282103e+04 + 1.94863407e-05 4.29282103e+04 + 1.95335242e-05 4.29282103e+04 + 1.95808219e-05 4.29282103e+04 + 1.96282341e-05 4.29282103e+04 + 1.96757612e-05 4.29282103e+04 + 1.97234033e-05 4.29282103e+04 + 1.97711607e-05 4.29282103e+04 + 1.98190339e-05 4.29282103e+04 + 1.98670229e-05 4.29282103e+04 + 1.99151281e-05 4.29282103e+04 + 1.99633498e-05 4.29282103e+04 + 2.00116883e-05 4.29282103e+04 + 2.00601438e-05 4.29282103e+04 + 2.01087167e-05 4.29282103e+04 + 2.01574071e-05 4.29282103e+04 + 2.02062155e-05 4.29282103e+04 + 2.02551420e-05 4.29282103e+04 + 2.03041870e-05 4.29282103e+04 + 2.03533508e-05 4.29282103e+04 + 2.04026336e-05 4.29282103e+04 + 2.04520357e-05 4.29282103e+04 + 2.05015575e-05 4.29282103e+04 + 2.05511992e-05 4.29282103e+04 + 2.06009610e-05 4.29282103e+04 + 2.06508434e-05 4.29282103e+04 + 2.07008465e-05 4.29282103e+04 + 2.07509708e-05 4.29282103e+04 + 2.08012164e-05 4.29282103e+04 + 2.08515836e-05 4.29282103e+04 + 2.09020728e-05 4.29282103e+04 + 2.09526843e-05 4.29282103e+04 + 2.10034183e-05 4.29282103e+04 + 2.10542751e-05 4.29282103e+04 + 2.11052551e-05 4.29282103e+04 + 2.11563586e-05 4.29282103e+04 + 2.12075858e-05 4.29282103e+04 + 2.12589370e-05 4.29282103e+04 + 2.13104125e-05 4.29282103e+04 + 2.13620127e-05 4.29282103e+04 + 2.14137379e-05 4.29282103e+04 + 2.14655883e-05 4.29282103e+04 + 2.15175642e-05 4.29282103e+04 + 2.15696660e-05 4.29282103e+04 + 2.16218939e-05 4.29282103e+04 + 2.16742483e-05 4.29282103e+04 + 2.17267295e-05 4.29282103e+04 + 2.17793378e-05 4.29282103e+04 + 2.18320734e-05 4.29282103e+04 + 2.18849367e-05 4.29282103e+04 + 2.19379280e-05 4.29282103e+04 + 2.19910477e-05 4.29282103e+04 + 2.20442960e-05 4.29282103e+04 + 2.20976731e-05 4.29282103e+04 + 2.21511796e-05 4.29282103e+04 + 2.22048156e-05 4.29282103e+04 + 2.22585815e-05 4.29282103e+04 + 2.23124775e-05 4.29282103e+04 + 2.23665041e-05 4.29282103e+04 + 2.24206615e-05 4.29282103e+04 + 2.24749500e-05 4.29282103e+04 + 2.25293699e-05 4.29282103e+04 + 2.25839217e-05 4.29282103e+04 + 2.26386055e-05 4.29282103e+04 + 2.26934217e-05 4.29282103e+04 + 2.27483707e-05 4.29282103e+04 + 2.28034527e-05 4.29282103e+04 + 2.28586681e-05 4.29282103e+04 + 2.29140172e-05 4.29282103e+04 + 2.29695003e-05 4.29282103e+04 + 2.30251177e-05 4.29282103e+04 + 2.30808698e-05 4.29282103e+04 + 2.31367570e-05 4.29282103e+04 + 2.31927794e-05 4.29282103e+04 + 2.32489375e-05 4.29282103e+04 + 2.33052315e-05 4.29282103e+04 + 2.33616619e-05 4.29282103e+04 + 2.34182289e-05 4.29282103e+04 + 2.34749329e-05 4.29282103e+04 + 2.35317742e-05 4.29282103e+04 + 2.35887531e-05 4.29282103e+04 + 2.36458700e-05 4.29282103e+04 + 2.37031252e-05 4.29282103e+04 + 2.37605190e-05 4.29282103e+04 + 2.38180518e-05 4.29282103e+04 + 2.38757239e-05 4.29282103e+04 + 2.39335356e-05 4.29282103e+04 + 2.39914874e-05 4.29282103e+04 + 2.40495794e-05 4.29282103e+04 + 2.41078121e-05 4.29282103e+04 + 2.41661858e-05 4.29282103e+04 + 2.42247009e-05 4.29282103e+04 + 2.42833576e-05 4.29282103e+04 + 2.43421564e-05 4.29282103e+04 + 2.44010975e-05 4.29282103e+04 + 2.44601814e-05 4.29282103e+04 + 2.45194083e-05 4.29282103e+04 + 2.45787787e-05 4.29282103e+04 + 2.46382928e-05 4.29282103e+04 + 2.46979510e-05 4.29282103e+04 + 2.47577536e-05 4.29282103e+04 + 2.48177011e-05 4.29282103e+04 + 2.48777937e-05 4.29282103e+04 + 2.49380318e-05 4.29282103e+04 + 2.49984158e-05 4.29282103e+04 + 2.50589460e-05 4.29282103e+04 + 2.51196227e-05 4.29282103e+04 + 2.51804464e-05 4.29282103e+04 + 2.52414173e-05 4.29282103e+04 + 2.53025359e-05 4.29282103e+04 + 2.53638025e-05 4.29282103e+04 + 2.54252174e-05 4.29282103e+04 + 2.54867810e-05 4.29282103e+04 + 2.55484937e-05 4.29282103e+04 + 2.56103558e-05 4.29282103e+04 + 2.56723677e-05 4.29282103e+04 + 2.57345298e-05 4.29282103e+04 + 2.57968424e-05 4.29282103e+04 + 2.58593059e-05 4.29282103e+04 + 2.59219206e-05 4.29282103e+04 + 2.59846869e-05 4.29282103e+04 + 2.60476052e-05 4.29282103e+04 + 2.61106758e-05 4.29282103e+04 + 2.61738992e-05 4.29282103e+04 + 2.62372757e-05 4.29282103e+04 + 2.63008056e-05 4.29282103e+04 + 2.63644893e-05 4.29282103e+04 + 2.64283273e-05 4.29282103e+04 + 2.64923198e-05 4.29282103e+04 + 2.65564672e-05 4.29282103e+04 + 2.66207700e-05 4.29282103e+04 + 2.66852285e-05 4.29282103e+04 + 2.67498431e-05 4.29282103e+04 + 2.68146141e-05 4.29282103e+04 + 2.68795420e-05 4.29282103e+04 + 2.69446270e-05 4.29282103e+04 + 2.70098697e-05 4.29282103e+04 + 2.70752704e-05 4.29282103e+04 + 2.71408294e-05 4.29282103e+04 + 2.72065471e-05 4.29282103e+04 + 2.72724240e-05 4.29282103e+04 + 2.73384603e-05 4.29282103e+04 + 2.74046566e-05 4.29282103e+04 + 2.74710132e-05 4.29282103e+04 + 2.75375304e-05 4.29282103e+04 + 2.76042087e-05 4.29282103e+04 + 2.76710485e-05 4.29282103e+04 + 2.77380501e-05 4.29282103e+04 + 2.78052139e-05 4.29282103e+04 + 2.78725403e-05 4.29282103e+04 + 2.79400298e-05 4.29282103e+04 + 2.80076827e-05 4.29282103e+04 + 2.80754994e-05 4.29282103e+04 + 2.81434803e-05 4.29282103e+04 + 2.82116259e-05 4.29282103e+04 + 2.82799364e-05 4.29282103e+04 + 2.83484123e-05 4.29282103e+04 + 2.84170541e-05 4.29282103e+04 + 2.84858620e-05 4.29282103e+04 + 2.85548365e-05 4.29282103e+04 + 2.86239781e-05 4.29282103e+04 + 2.86932871e-05 4.29282103e+04 + 2.87627639e-05 4.29282103e+04 + 2.88324089e-05 4.29282103e+04 + 2.89022226e-05 4.29282103e+04 + 2.89722053e-05 4.29282103e+04 + 2.90423575e-05 4.29282103e+04 + 2.91126795e-05 4.29282103e+04 + 2.91831718e-05 4.29282103e+04 + 2.92538348e-05 4.29282103e+04 + 2.93246689e-05 4.29282103e+04 + 2.93956745e-05 4.29282103e+04 + 2.94668520e-05 4.29282103e+04 + 2.95382019e-05 4.29282103e+04 + 2.96097245e-05 4.29282103e+04 + 2.96814204e-05 4.29282103e+04 + 2.97532898e-05 4.29282103e+04 + 2.98253332e-05 4.29282103e+04 + 2.98975511e-05 4.29282103e+04 + 2.99699439e-05 4.29282103e+04 + 3.00425119e-05 4.29282103e+04 + 3.01152557e-05 4.29282103e+04 + 3.01881756e-05 4.29282103e+04 + 3.02612721e-05 4.29282103e+04 + 3.03345455e-05 4.29282103e+04 + 3.04079964e-05 4.29282103e+04 + 3.04816252e-05 4.29282103e+04 + 3.05554322e-05 4.29282103e+04 + 3.06294179e-05 4.29282103e+04 + 3.07035828e-05 4.29282103e+04 + 3.07779272e-05 4.29282103e+04 + 3.08524517e-05 4.29282103e+04 + 3.09271566e-05 4.29282103e+04 + 3.10020424e-05 4.29282103e+04 + 3.10771095e-05 4.29282103e+04 + 3.11523584e-05 4.29282103e+04 + 3.12277895e-05 4.29282103e+04 + 3.13034033e-05 4.29282103e+04 + 3.13792001e-05 4.29282103e+04 + 3.14551805e-05 4.29282103e+04 + 3.15313448e-05 4.29282103e+04 + 3.16076936e-05 4.29282103e+04 + 3.16842272e-05 4.29282103e+04 + 3.17609462e-05 4.29282103e+04 + 3.18378509e-05 4.29282103e+04 + 3.19149418e-05 4.29282103e+04 + 3.19922194e-05 4.29282103e+04 + 3.20696841e-05 4.29282103e+04 + 3.21473364e-05 4.29282103e+04 + 3.22251767e-05 4.29282103e+04 + 3.23032055e-05 4.29282103e+04 + 3.23814232e-05 4.29282103e+04 + 3.24598303e-05 4.29282103e+04 + 3.25384273e-05 4.29282103e+04 + 3.26172145e-05 4.29282103e+04 + 3.26961926e-05 4.29282103e+04 + 3.27753619e-05 4.29282103e+04 + 3.28547228e-05 4.29282103e+04 + 3.29342760e-05 4.29282103e+04 + 3.30140217e-05 4.29282103e+04 + 3.30939606e-05 4.29282103e+04 + 3.31740930e-05 4.29282103e+04 + 3.32544195e-05 4.29282103e+04 + 3.33349404e-05 4.29282103e+04 + 3.34156563e-05 4.29282103e+04 + 3.34965677e-05 4.29282103e+04 + 3.35776750e-05 4.29282103e+04 + 3.36589787e-05 4.29282103e+04 + 3.37404792e-05 4.29282103e+04 + 3.38221771e-05 4.29282103e+04 + 3.39040728e-05 4.29282103e+04 + 3.39861667e-05 4.29282103e+04 + 3.40684595e-05 4.29282103e+04 + 3.41509516e-05 4.29282103e+04 + 3.42336433e-05 4.29282103e+04 + 3.43165353e-05 4.29282103e+04 + 3.43996281e-05 4.29282103e+04 + 3.44829220e-05 4.29282103e+04 + 3.45664176e-05 4.29282103e+04 + 3.46501153e-05 4.29282103e+04 + 3.47340158e-05 4.29282103e+04 + 3.48181194e-05 4.29282103e+04 + 3.49024266e-05 4.29282103e+04 + 3.49869380e-05 4.29282103e+04 + 3.50716540e-05 4.29282103e+04 + 3.51565751e-05 4.29282103e+04 + 3.52417018e-05 4.29282103e+04 + 3.53270347e-05 4.29282103e+04 + 3.54125742e-05 4.29282103e+04 + 3.54983208e-05 4.29282103e+04 + 3.55842751e-05 4.29282103e+04 + 3.56704374e-05 4.29282103e+04 + 3.57568085e-05 4.29282103e+04 + 3.58433886e-05 4.29282103e+04 + 3.59301784e-05 4.29282103e+04 + 3.60171783e-05 4.29282103e+04 + 3.61043889e-05 4.29282103e+04 + 3.61918106e-05 4.29282103e+04 + 3.62794441e-05 4.29282103e+04 + 3.63672897e-05 4.29282103e+04 + 3.64553480e-05 4.29282103e+04 + 3.65436196e-05 4.29282103e+04 + 3.66321049e-05 4.29282103e+04 + 3.67208044e-05 4.29282103e+04 + 3.68097187e-05 4.29282103e+04 + 3.68988483e-05 4.29282103e+04 + 3.69881938e-05 4.29282103e+04 + 3.70777555e-05 4.29282103e+04 + 3.71675342e-05 4.29282103e+04 + 3.72575302e-05 4.29282103e+04 + 3.73477441e-05 4.29282103e+04 + 3.74381765e-05 4.29282103e+04 + 3.75288278e-05 4.29282103e+04 + 3.76196986e-05 4.29282103e+04 + 3.77107895e-05 4.29282103e+04 + 3.78021009e-05 4.29282103e+04 + 3.78936334e-05 4.29282103e+04 + 3.79853876e-05 4.29282103e+04 + 3.80773639e-05 4.29282103e+04 + 3.81695630e-05 4.29282103e+04 + 3.82619853e-05 4.29282103e+04 + 3.83546313e-05 4.29282103e+04 + 3.84475017e-05 4.29282103e+04 + 3.85405970e-05 4.29282103e+04 + 3.86339177e-05 4.29282103e+04 + 3.87274644e-05 4.29282103e+04 + 3.88212375e-05 4.29282103e+04 + 3.89152378e-05 4.29282103e+04 + 3.90094656e-05 4.29282103e+04 + 3.91039216e-05 4.29282103e+04 + 3.91986063e-05 4.29282103e+04 + 3.92935203e-05 4.29282103e+04 + 3.93886640e-05 4.29282103e+04 + 3.94840382e-05 4.29282103e+04 + 3.95796433e-05 4.29282103e+04 + 3.96754799e-05 4.29282103e+04 + 3.97715486e-05 4.29282103e+04 + 3.98678498e-05 4.29282103e+04 + 3.99643843e-05 4.29282103e+04 + 4.00611525e-05 4.29282103e+04 + 4.01581550e-05 4.29282103e+04 + 4.02553924e-05 4.29282103e+04 + 4.03528652e-05 4.29282103e+04 + 4.04505741e-05 4.29282103e+04 + 4.05485195e-05 4.29282103e+04 + 4.06467021e-05 4.29282103e+04 + 4.07451224e-05 4.29282103e+04 + 4.08437811e-05 4.29282103e+04 + 4.09426786e-05 4.29282103e+04 + 4.10418156e-05 4.29282103e+04 + 4.11411926e-05 4.29282103e+04 + 4.12408103e-05 4.29282103e+04 + 4.13406692e-05 4.29282103e+04 + 4.14407699e-05 4.29282103e+04 + 4.15411129e-05 4.29282103e+04 + 4.16416990e-05 4.29282103e+04 + 4.17425285e-05 4.29282103e+04 + 4.18436023e-05 4.29282103e+04 + 4.19449207e-05 4.29282103e+04 + 4.20464845e-05 4.29282103e+04 + 4.21482942e-05 4.29282103e+04 + 4.22503505e-05 4.29282103e+04 + 4.23526538e-05 4.29282103e+04 + 4.24552049e-05 4.29282103e+04 + 4.25580042e-05 4.29282103e+04 + 4.26610525e-05 4.29282103e+04 + 4.27643503e-05 4.29282103e+04 + 4.28678982e-05 4.29282103e+04 + 4.29716969e-05 4.29282103e+04 + 4.30757469e-05 4.29282103e+04 + 4.31800488e-05 4.29282103e+04 + 4.32846033e-05 4.29282103e+04 + 4.33894109e-05 4.29282103e+04 + 4.34944723e-05 4.29282103e+04 + 4.35997882e-05 4.29282103e+04 + 4.37053590e-05 4.29282103e+04 + 4.38111854e-05 4.29282102e+04 + 4.39172681e-05 4.29282102e+04 + 4.40236077e-05 4.29282102e+04 + 4.41302047e-05 4.29282102e+04 + 4.42370599e-05 4.29282102e+04 + 4.43441737e-05 4.29282102e+04 + 4.44515470e-05 4.29282102e+04 + 4.45591802e-05 4.29282102e+04 + 4.46670741e-05 4.29282102e+04 + 4.47752292e-05 4.29282102e+04 + 4.48836462e-05 4.29282102e+04 + 4.49923257e-05 4.29282102e+04 + 4.51012683e-05 4.29282102e+04 + 4.52104748e-05 4.29282102e+04 + 4.53199456e-05 4.29282102e+04 + 4.54296816e-05 4.29282102e+04 + 4.55396832e-05 4.29282102e+04 + 4.56499513e-05 4.29282102e+04 + 4.57604863e-05 4.29282102e+04 + 4.58712889e-05 4.29282102e+04 + 4.59823598e-05 4.29282102e+04 + 4.60936997e-05 4.29282102e+04 + 4.62053092e-05 4.29282102e+04 + 4.63171889e-05 4.29282102e+04 + 4.64293396e-05 4.29282102e+04 + 4.65417618e-05 4.29282102e+04 + 4.66544562e-05 4.29282102e+04 + 4.67674234e-05 4.29282102e+04 + 4.68806642e-05 4.29282102e+04 + 4.69941792e-05 4.29282102e+04 + 4.71079691e-05 4.29282102e+04 + 4.72220345e-05 4.29282102e+04 + 4.73363761e-05 4.29282102e+04 + 4.74509945e-05 4.29282102e+04 + 4.75658905e-05 4.29282102e+04 + 4.76810647e-05 4.29282102e+04 + 4.77965178e-05 4.29282102e+04 + 4.79122504e-05 4.29282102e+04 + 4.80282632e-05 4.29282102e+04 + 4.81445570e-05 4.29282102e+04 + 4.82611323e-05 4.29282102e+04 + 4.83779899e-05 4.29282102e+04 + 4.84951305e-05 4.29282102e+04 + 4.86125547e-05 4.29282102e+04 + 4.87302633e-05 4.29282102e+04 + 4.88482568e-05 4.29282102e+04 + 4.89665361e-05 4.29282102e+04 + 4.90851017e-05 4.29282102e+04 + 4.92039545e-05 4.29282102e+04 + 4.93230950e-05 4.29282102e+04 + 4.94425240e-05 4.29282102e+04 + 4.95622422e-05 4.29282102e+04 + 4.96822503e-05 4.29282102e+04 + 4.98025489e-05 4.29282102e+04 + 4.99231389e-05 4.29282102e+04 + 5.00440208e-05 4.29282102e+04 + 5.01651954e-05 4.29282102e+04 + 5.02866635e-05 4.29282102e+04 + 5.04084256e-05 4.29282102e+04 + 5.05304826e-05 4.29282102e+04 + 5.06528352e-05 4.29282102e+04 + 5.07754839e-05 4.29282102e+04 + 5.08984297e-05 4.29282102e+04 + 5.10216732e-05 4.29282102e+04 + 5.11452151e-05 4.29282102e+04 + 5.12690561e-05 4.29282102e+04 + 5.13931970e-05 4.29282102e+04 + 5.15176384e-05 4.29282102e+04 + 5.16423812e-05 4.29282102e+04 + 5.17674261e-05 4.29282102e+04 + 5.18927737e-05 4.29282102e+04 + 5.20184248e-05 4.29282102e+04 + 5.21443802e-05 4.29282102e+04 + 5.22706406e-05 4.29282102e+04 + 5.23972066e-05 4.29282102e+04 + 5.25240792e-05 4.29282102e+04 + 5.26512589e-05 4.29282102e+04 + 5.27787466e-05 4.29282102e+04 + 5.29065430e-05 4.29282102e+04 + 5.30346489e-05 4.29282102e+04 + 5.31630649e-05 4.29282102e+04 + 5.32917918e-05 4.29282102e+04 + 5.34208305e-05 4.29282102e+04 + 5.35501816e-05 4.29282102e+04 + 5.36798459e-05 4.29282102e+04 + 5.38098242e-05 4.29282102e+04 + 5.39401172e-05 4.29282102e+04 + 5.40707257e-05 4.29282102e+04 + 5.42016504e-05 4.29282102e+04 + 5.43328922e-05 4.29282102e+04 + 5.44644517e-05 4.29282102e+04 + 5.45963298e-05 4.29282102e+04 + 5.47285272e-05 4.29282102e+04 + 5.48610447e-05 4.29282102e+04 + 5.49938831e-05 4.29282102e+04 + 5.51270432e-05 4.29282102e+04 + 5.52605256e-05 4.29282102e+04 + 5.53943313e-05 4.29282102e+04 + 5.55284610e-05 4.29282102e+04 + 5.56629154e-05 4.29282102e+04 + 5.57976954e-05 4.29282102e+04 + 5.59328018e-05 4.29282102e+04 + 5.60682353e-05 4.29282102e+04 + 5.62039967e-05 4.29282102e+04 + 5.63400869e-05 4.29282102e+04 + 5.64765065e-05 4.29282102e+04 + 5.66132565e-05 4.29282102e+04 + 5.67503377e-05 4.29282102e+04 + 5.68877507e-05 4.29282102e+04 + 5.70254965e-05 4.29282102e+04 + 5.71635758e-05 4.29282102e+04 + 5.73019894e-05 4.29282102e+04 + 5.74407382e-05 4.29282102e+04 + 5.75798230e-05 4.29282102e+04 + 5.77192445e-05 4.29282101e+04 + 5.78590036e-05 4.29282101e+04 + 5.79991011e-05 4.29282101e+04 + 5.81395379e-05 4.29282101e+04 + 5.82803147e-05 4.29282101e+04 + 5.84214324e-05 4.29282101e+04 + 5.85628917e-05 4.29282101e+04 + 5.87046936e-05 4.29282101e+04 + 5.88468389e-05 4.29282101e+04 + 5.89893283e-05 4.29282101e+04 + 5.91321628e-05 4.29282101e+04 + 5.92753431e-05 4.29282101e+04 + 5.94188701e-05 4.29282101e+04 + 5.95627446e-05 4.29282101e+04 + 5.97069675e-05 4.29282101e+04 + 5.98515396e-05 4.29282101e+04 + 5.99964618e-05 4.29282101e+04 + 6.01417349e-05 4.29282101e+04 + 6.02873597e-05 4.29282101e+04 + 6.04333372e-05 4.29282101e+04 + 6.05796681e-05 4.29282101e+04 + 6.07263533e-05 4.29282101e+04 + 6.08733937e-05 4.29282101e+04 + 6.10207902e-05 4.29282101e+04 + 6.11685435e-05 4.29282101e+04 + 6.13166546e-05 4.29282101e+04 + 6.14651244e-05 4.29282101e+04 + 6.16139536e-05 4.29282101e+04 + 6.17631432e-05 4.29282101e+04 + 6.19126941e-05 4.29282101e+04 + 6.20626071e-05 4.29282101e+04 + 6.22128830e-05 4.29282101e+04 + 6.23635229e-05 4.29282101e+04 + 6.25145275e-05 4.29282101e+04 + 6.26658977e-05 4.29282101e+04 + 6.28176345e-05 4.29282101e+04 + 6.29697386e-05 4.29282101e+04 + 6.31222111e-05 4.29282101e+04 + 6.32750527e-05 4.29282101e+04 + 6.34282645e-05 4.29282101e+04 + 6.35818472e-05 4.29282101e+04 + 6.37358018e-05 4.29282101e+04 + 6.38901292e-05 4.29282101e+04 + 6.40448302e-05 4.29282101e+04 + 6.41999059e-05 4.29282101e+04 + 6.43553570e-05 4.29282101e+04 + 6.45111845e-05 4.29282101e+04 + 6.46673894e-05 4.29282101e+04 + 6.48239725e-05 4.29282100e+04 + 6.49809347e-05 4.29282100e+04 + 6.51382770e-05 4.29282100e+04 + 6.52960003e-05 4.29282100e+04 + 6.54541054e-05 4.29282100e+04 + 6.56125935e-05 4.29282100e+04 + 6.57714652e-05 4.29282100e+04 + 6.59307217e-05 4.29282100e+04 + 6.60903637e-05 4.29282100e+04 + 6.62503924e-05 4.29282100e+04 + 6.64108085e-05 4.29282100e+04 + 6.65716130e-05 4.29282100e+04 + 6.67328069e-05 4.29282100e+04 + 6.68943911e-05 4.29282100e+04 + 6.70563666e-05 4.29282100e+04 + 6.72187342e-05 4.29282100e+04 + 6.73814950e-05 4.29282100e+04 + 6.75446499e-05 4.29282100e+04 + 6.77081999e-05 4.29282100e+04 + 6.78721459e-05 4.29282100e+04 + 6.80364889e-05 4.29282100e+04 + 6.82012297e-05 4.29282100e+04 + 6.83663695e-05 4.29282100e+04 + 6.85319092e-05 4.29282100e+04 + 6.86978497e-05 4.29282100e+04 + 6.88641920e-05 4.29282100e+04 + 6.90309370e-05 4.29282100e+04 + 6.91980858e-05 4.29282100e+04 + 6.93656394e-05 4.29282100e+04 + 6.95335986e-05 4.29282100e+04 + 6.97019645e-05 4.29282099e+04 + 6.98707381e-05 4.29282099e+04 + 7.00399204e-05 4.29282099e+04 + 7.02095123e-05 4.29282099e+04 + 7.03795149e-05 4.29282099e+04 + 7.05499291e-05 4.29282099e+04 + 7.07207559e-05 4.29282099e+04 + 7.08919964e-05 4.29282099e+04 + 7.10636515e-05 4.29282099e+04 + 7.12357223e-05 4.29282099e+04 + 7.14082096e-05 4.29282099e+04 + 7.15811147e-05 4.29282099e+04 + 7.17544384e-05 4.29282099e+04 + 7.19281818e-05 4.29282099e+04 + 7.21023459e-05 4.29282099e+04 + 7.22769317e-05 4.29282099e+04 + 7.24519402e-05 4.29282099e+04 + 7.26273725e-05 4.29282099e+04 + 7.28032296e-05 4.29282099e+04 + 7.29795125e-05 4.29282099e+04 + 7.31562222e-05 4.29282099e+04 + 7.33333598e-05 4.29282099e+04 + 7.35109263e-05 4.29282098e+04 + 7.36889228e-05 4.29282098e+04 + 7.38673503e-05 4.29282098e+04 + 7.40462098e-05 4.29282098e+04 + 7.42255024e-05 4.29282098e+04 + 7.44052291e-05 4.29282098e+04 + 7.45853910e-05 4.29282098e+04 + 7.47659892e-05 4.29282098e+04 + 7.49470246e-05 4.29282098e+04 + 7.51284984e-05 4.29282098e+04 + 7.53104116e-05 4.29282098e+04 + 7.54927653e-05 4.29282098e+04 + 7.56755605e-05 4.29282098e+04 + 7.58587983e-05 4.29282098e+04 + 7.60424799e-05 4.29282098e+04 + 7.62266062e-05 4.29282098e+04 + 7.64111783e-05 4.29282098e+04 + 7.65961973e-05 4.29282098e+04 + 7.67816643e-05 4.29282097e+04 + 7.69675805e-05 4.29282097e+04 + 7.71539467e-05 4.29282097e+04 + 7.73407643e-05 4.29282097e+04 + 7.75280342e-05 4.29282097e+04 + 7.77157575e-05 4.29282097e+04 + 7.79039354e-05 4.29282097e+04 + 7.80925690e-05 4.29282097e+04 + 7.82816593e-05 4.29282097e+04 + 7.84712074e-05 4.29282097e+04 + 7.86612145e-05 4.29282097e+04 + 7.88516817e-05 4.29282097e+04 + 7.90426101e-05 4.29282097e+04 + 7.92340007e-05 4.29282097e+04 + 7.94258549e-05 4.29282097e+04 + 7.96181735e-05 4.29282096e+04 + 7.98109578e-05 4.29282096e+04 + 8.00042090e-05 4.29282096e+04 + 8.01979280e-05 4.29282096e+04 + 8.03921162e-05 4.29282096e+04 + 8.05867745e-05 4.29282096e+04 + 8.07819041e-05 4.29282096e+04 + 8.09775063e-05 4.29282096e+04 + 8.11735820e-05 4.29282096e+04 + 8.13701326e-05 4.29282096e+04 + 8.15671590e-05 4.29282096e+04 + 8.17646626e-05 4.29282096e+04 + 8.19626443e-05 4.29282095e+04 + 8.21611054e-05 4.29282095e+04 + 8.23600471e-05 4.29282095e+04 + 8.25594705e-05 4.29282095e+04 + 8.27593768e-05 4.29282095e+04 + 8.29597671e-05 4.29282095e+04 + 8.31606426e-05 4.29282095e+04 + 8.33620046e-05 4.29282095e+04 + 8.35638541e-05 4.29282095e+04 + 8.37661923e-05 4.29282095e+04 + 8.39690205e-05 4.29282095e+04 + 8.41723398e-05 4.29282094e+04 + 8.43761514e-05 4.29282094e+04 + 8.45804565e-05 4.29282094e+04 + 8.47852563e-05 4.29282094e+04 + 8.49905520e-05 4.29282094e+04 + 8.51963448e-05 4.29282094e+04 + 8.54026359e-05 4.29282094e+04 + 8.56094265e-05 4.29282094e+04 + 8.58167178e-05 4.29282094e+04 + 8.60245110e-05 4.29282094e+04 + 8.62328074e-05 4.29282093e+04 + 8.64416082e-05 4.29282093e+04 + 8.66509145e-05 4.29282093e+04 + 8.68607276e-05 4.29282093e+04 + 8.70710488e-05 4.29282093e+04 + 8.72818792e-05 4.29282093e+04 + 8.74932201e-05 4.29282093e+04 + 8.77050728e-05 4.29282093e+04 + 8.79174384e-05 4.29282093e+04 + 8.81303183e-05 4.29282092e+04 + 8.83437136e-05 4.29282092e+04 + 8.85576256e-05 4.29282092e+04 + 8.87720556e-05 4.29282092e+04 + 8.89870047e-05 4.29282092e+04 + 8.92024744e-05 4.29282092e+04 + 8.94184658e-05 4.29282092e+04 + 8.96349801e-05 4.29282092e+04 + 8.98520188e-05 4.29282091e+04 + 9.00695829e-05 4.29282091e+04 + 9.02876739e-05 4.29282091e+04 + 9.05062929e-05 4.29282091e+04 + 9.07254413e-05 4.29282091e+04 + 9.09451204e-05 4.29282091e+04 + 9.11653313e-05 4.29282091e+04 + 9.13860755e-05 4.29282090e+04 + 9.16073541e-05 4.29282090e+04 + 9.18291686e-05 4.29282090e+04 + 9.20515202e-05 4.29282090e+04 + 9.22744101e-05 4.29282090e+04 + 9.24978397e-05 4.29282090e+04 + 9.27218104e-05 4.29282090e+04 + 9.29463234e-05 4.29282089e+04 + 9.31713799e-05 4.29282089e+04 + 9.33969815e-05 4.29282089e+04 + 9.36231293e-05 4.29282089e+04 + 9.38498246e-05 4.29282089e+04 + 9.40770689e-05 4.29282089e+04 + 9.43048635e-05 4.29282088e+04 + 9.45332096e-05 4.29282088e+04 + 9.47621086e-05 4.29282088e+04 + 9.49915618e-05 4.29282088e+04 + 9.52215707e-05 4.29282088e+04 + 9.54521365e-05 4.29282088e+04 + 9.56832605e-05 4.29282087e+04 + 9.59149442e-05 4.29282087e+04 + 9.61471889e-05 4.29282087e+04 + 9.63799960e-05 4.29282087e+04 + 9.66133667e-05 4.29282087e+04 + 9.68473025e-05 4.29282086e+04 + 9.70818048e-05 4.29282086e+04 + 9.73168749e-05 4.29282086e+04 + 9.75525142e-05 4.29282086e+04 + 9.77887240e-05 4.29282086e+04 + 9.80255058e-05 4.29282085e+04 + 9.82628609e-05 4.29282085e+04 + 9.85007908e-05 4.29282085e+04 + 9.87392967e-05 4.29282085e+04 + 9.89783802e-05 4.29282085e+04 + 9.92180426e-05 4.29282084e+04 + 9.94582852e-05 4.29282084e+04 + 9.96991096e-05 4.29282084e+04 + 9.99405172e-05 4.29282084e+04 + 1.00182509e-04 4.29282084e+04 + 1.00425087e-04 4.29282083e+04 + 1.00668253e-04 4.29282083e+04 + 1.00912007e-04 4.29282083e+04 + 1.01156351e-04 4.29282083e+04 + 1.01401287e-04 4.29282082e+04 + 1.01646816e-04 4.29282082e+04 + 1.01892940e-04 4.29282082e+04 + 1.02139659e-04 4.29282082e+04 + 1.02386976e-04 4.29282081e+04 + 1.02634892e-04 4.29282081e+04 + 1.02883408e-04 4.29282081e+04 + 1.03132526e-04 4.29282081e+04 + 1.03382247e-04 4.29282080e+04 + 1.03632573e-04 4.29282080e+04 + 1.03883505e-04 4.29282080e+04 + 1.04135044e-04 4.29282080e+04 + 1.04387193e-04 4.29282079e+04 + 1.04639952e-04 4.29282079e+04 + 1.04893323e-04 4.29282079e+04 + 1.05147308e-04 4.29282078e+04 + 1.05401907e-04 4.29282078e+04 + 1.05657123e-04 4.29282078e+04 + 1.05912957e-04 4.29282078e+04 + 1.06169411e-04 4.29282077e+04 + 1.06426485e-04 4.29282077e+04 + 1.06684182e-04 4.29282077e+04 + 1.06942503e-04 4.29282076e+04 + 1.07201449e-04 4.29282076e+04 + 1.07461023e-04 4.29282076e+04 + 1.07721225e-04 4.29282075e+04 + 1.07982057e-04 4.29282075e+04 + 1.08243520e-04 4.29282075e+04 + 1.08505617e-04 4.29282075e+04 + 1.08768348e-04 4.29282074e+04 + 1.09031715e-04 4.29282074e+04 + 1.09295721e-04 4.29282074e+04 + 1.09560365e-04 4.29282073e+04 + 1.09825650e-04 4.29282073e+04 + 1.10091578e-04 4.29282072e+04 + 1.10358149e-04 4.29282072e+04 + 1.10625366e-04 4.29282072e+04 + 1.10893230e-04 4.29282071e+04 + 1.11161742e-04 4.29282071e+04 + 1.11430905e-04 4.29282071e+04 + 1.11700720e-04 4.29282070e+04 + 1.11971187e-04 4.29282070e+04 + 1.12242310e-04 4.29282070e+04 + 1.12514089e-04 4.29282069e+04 + 1.12786526e-04 4.29282069e+04 + 1.13059623e-04 4.29282068e+04 + 1.13333381e-04 4.29282068e+04 + 1.13607802e-04 4.29282068e+04 + 1.13882888e-04 4.29282067e+04 + 1.14158639e-04 4.29282067e+04 + 1.14435059e-04 4.29282066e+04 + 1.14712147e-04 4.29282066e+04 + 1.14989907e-04 4.29282065e+04 + 1.15268339e-04 4.29282065e+04 + 1.15547445e-04 4.29282065e+04 + 1.15827227e-04 4.29282064e+04 + 1.16107687e-04 4.29282064e+04 + 1.16388825e-04 4.29282063e+04 + 1.16670645e-04 4.29282063e+04 + 1.16953146e-04 4.29282062e+04 + 1.17236332e-04 4.29282062e+04 + 1.17520204e-04 4.29282061e+04 + 1.17804762e-04 4.29282061e+04 + 1.18090010e-04 4.29282060e+04 + 1.18375949e-04 4.29282060e+04 + 1.18662580e-04 4.29282059e+04 + 1.18949905e-04 4.29282059e+04 + 1.19237925e-04 4.29282058e+04 + 1.19526643e-04 4.29282058e+04 + 1.19816060e-04 4.29282057e+04 + 1.20106178e-04 4.29282057e+04 + 1.20396999e-04 4.29282056e+04 + 1.20688523e-04 4.29282056e+04 + 1.20980754e-04 4.29282055e+04 + 1.21273692e-04 4.29282055e+04 + 1.21567339e-04 4.29282054e+04 + 1.21861698e-04 4.29282053e+04 + 1.22156769e-04 4.29282053e+04 + 1.22452554e-04 4.29282052e+04 + 1.22749056e-04 4.29282052e+04 + 1.23046276e-04 4.29282051e+04 + 1.23344215e-04 4.29282050e+04 + 1.23642876e-04 4.29282050e+04 + 1.23942260e-04 4.29282049e+04 + 1.24242369e-04 4.29282049e+04 + 1.24543205e-04 4.29282048e+04 + 1.24844769e-04 4.29282047e+04 + 1.25147063e-04 4.29282047e+04 + 1.25450089e-04 4.29282046e+04 + 1.25753849e-04 4.29282045e+04 + 1.26058345e-04 4.29282045e+04 + 1.26363577e-04 4.29282044e+04 + 1.26669549e-04 4.29282043e+04 + 1.26976262e-04 4.29282043e+04 + 1.27283717e-04 4.29282042e+04 + 1.27591917e-04 4.29282041e+04 + 1.27900863e-04 4.29282040e+04 + 1.28210557e-04 4.29282040e+04 + 1.28521001e-04 4.29282039e+04 + 1.28832197e-04 4.29282038e+04 + 1.29144146e-04 4.29282037e+04 + 1.29456851e-04 4.29282037e+04 + 1.29770313e-04 4.29282036e+04 + 1.30084533e-04 4.29282035e+04 + 1.30399515e-04 4.29282034e+04 + 1.30715259e-04 4.29282034e+04 + 1.31031768e-04 4.29282033e+04 + 1.31349043e-04 4.29282032e+04 + 1.31667087e-04 4.29282031e+04 + 1.31985900e-04 4.29282030e+04 + 1.32305486e-04 4.29282029e+04 + 1.32625845e-04 4.29282029e+04 + 1.32946980e-04 4.29282028e+04 + 1.33268893e-04 4.29282027e+04 + 1.33591585e-04 4.29282026e+04 + 1.33915058e-04 4.29282025e+04 + 1.34239315e-04 4.29282024e+04 + 1.34564357e-04 4.29282023e+04 + 1.34890185e-04 4.29282022e+04 + 1.35216803e-04 4.29282021e+04 + 1.35544212e-04 4.29282020e+04 + 1.35872413e-04 4.29282019e+04 + 1.36201410e-04 4.29282018e+04 + 1.36531202e-04 4.29282017e+04 + 1.36861794e-04 4.29282016e+04 + 1.37193185e-04 4.29282015e+04 + 1.37525380e-04 4.29282014e+04 + 1.37858378e-04 4.29282013e+04 + 1.38192183e-04 4.29282012e+04 + 1.38526796e-04 4.29282011e+04 + 1.38862220e-04 4.29282010e+04 + 1.39198455e-04 4.29282009e+04 + 1.39535505e-04 4.29282008e+04 + 1.39873371e-04 4.29282007e+04 + 1.40212055e-04 4.29282006e+04 + 1.40551558e-04 4.29282005e+04 + 1.40891885e-04 4.29282004e+04 + 1.41233035e-04 4.29282002e+04 + 1.41575011e-04 4.29282001e+04 + 1.41917815e-04 4.29282000e+04 + 1.42261449e-04 4.29281999e+04 + 1.42605915e-04 4.29281998e+04 + 1.42951216e-04 4.29281996e+04 + 1.43297352e-04 4.29281995e+04 + 1.43644327e-04 4.29281994e+04 + 1.43992142e-04 4.29281993e+04 + 1.44340799e-04 4.29281991e+04 + 1.44690300e-04 4.29281990e+04 + 1.45040647e-04 4.29281989e+04 + 1.45391843e-04 4.29281987e+04 + 1.45743889e-04 4.29281986e+04 + 1.46096788e-04 4.29281985e+04 + 1.46450541e-04 4.29281983e+04 + 1.46805150e-04 4.29281982e+04 + 1.47160619e-04 4.29281980e+04 + 1.47516947e-04 4.29281979e+04 + 1.47874139e-04 4.29281978e+04 + 1.48232196e-04 4.29281976e+04 + 1.48591120e-04 4.29281975e+04 + 1.48950912e-04 4.29281973e+04 + 1.49311576e-04 4.29281972e+04 + 1.49673113e-04 4.29281970e+04 + 1.50035526e-04 4.29281969e+04 + 1.50398816e-04 4.29281967e+04 + 1.50762986e-04 4.29281965e+04 + 1.51128038e-04 4.29281964e+04 + 1.51493973e-04 4.29281962e+04 + 1.51860795e-04 4.29281961e+04 + 1.52228504e-04 4.29281959e+04 + 1.52597105e-04 4.29281957e+04 + 1.52966597e-04 4.29281956e+04 + 1.53336985e-04 4.29281954e+04 + 1.53708269e-04 4.29281952e+04 + 1.54080452e-04 4.29281950e+04 + 1.54453536e-04 4.29281949e+04 + 1.54827524e-04 4.29281947e+04 + 1.55202417e-04 4.29281945e+04 + 1.55578218e-04 4.29281943e+04 + 1.55954929e-04 4.29281941e+04 + 1.56332553e-04 4.29281939e+04 + 1.56711090e-04 4.29281937e+04 + 1.57090544e-04 4.29281935e+04 + 1.57470917e-04 4.29281933e+04 + 1.57852211e-04 4.29281932e+04 + 1.58234428e-04 4.29281930e+04 + 1.58617571e-04 4.29281927e+04 + 1.59001641e-04 4.29281925e+04 + 1.59386641e-04 4.29281923e+04 + 1.59772574e-04 4.29281921e+04 + 1.60159441e-04 4.29281919e+04 + 1.60547245e-04 4.29281917e+04 + 1.60935988e-04 4.29281915e+04 + 1.61325672e-04 4.29281913e+04 + 1.61716299e-04 4.29281910e+04 + 1.62107873e-04 4.29281908e+04 + 1.62500395e-04 4.29281906e+04 + 1.62893867e-04 4.29281904e+04 + 1.63288292e-04 4.29281901e+04 + 1.63683671e-04 4.29281899e+04 + 1.64080009e-04 4.29281897e+04 + 1.64477306e-04 4.29281894e+04 + 1.64875565e-04 4.29281892e+04 + 1.65274788e-04 4.29281889e+04 + 1.65674978e-04 4.29281887e+04 + 1.66076137e-04 4.29281884e+04 + 1.66478267e-04 4.29281882e+04 + 1.66881371e-04 4.29281879e+04 + 1.67285451e-04 4.29281876e+04 + 1.67690509e-04 4.29281874e+04 + 1.68096548e-04 4.29281871e+04 + 1.68503571e-04 4.29281868e+04 + 1.68911579e-04 4.29281866e+04 + 1.69320575e-04 4.29281863e+04 + 1.69730561e-04 4.29281860e+04 + 1.70141540e-04 4.29281857e+04 + 1.70553514e-04 4.29281854e+04 + 1.70966486e-04 4.29281852e+04 + 1.71380457e-04 4.29281849e+04 + 1.71795431e-04 4.29281846e+04 + 1.72211410e-04 4.29281843e+04 + 1.72628396e-04 4.29281840e+04 + 1.73046391e-04 4.29281837e+04 + 1.73465399e-04 4.29281833e+04 + 1.73885421e-04 4.29281830e+04 + 1.74306461e-04 4.29281827e+04 + 1.74728520e-04 4.29281824e+04 + 1.75151600e-04 4.29281821e+04 + 1.75575706e-04 4.29281817e+04 + 1.76000838e-04 4.29281814e+04 + 1.76426999e-04 4.29281811e+04 + 1.76854193e-04 4.29281807e+04 + 1.77282421e-04 4.29281804e+04 + 1.77711685e-04 4.29281800e+04 + 1.78141989e-04 4.29281797e+04 + 1.78573335e-04 4.29281793e+04 + 1.79005726e-04 4.29281790e+04 + 1.79439163e-04 4.29281786e+04 + 1.79873650e-04 4.29281782e+04 + 1.80309189e-04 4.29281778e+04 + 1.80745783e-04 4.29281775e+04 + 1.81183434e-04 4.29281771e+04 + 1.81622144e-04 4.29281767e+04 + 1.82061917e-04 4.29281763e+04 + 1.82502755e-04 4.29281759e+04 + 1.82944660e-04 4.29281755e+04 + 1.83387635e-04 4.29281751e+04 + 1.83831682e-04 4.29281747e+04 + 1.84276805e-04 4.29281743e+04 + 1.84723006e-04 4.29281738e+04 + 1.85170287e-04 4.29281734e+04 + 1.85618651e-04 4.29281730e+04 + 1.86068101e-04 4.29281726e+04 + 1.86518639e-04 4.29281721e+04 + 1.86970268e-04 4.29281717e+04 + 1.87422990e-04 4.29281712e+04 + 1.87876809e-04 4.29281708e+04 + 1.88331726e-04 4.29281703e+04 + 1.88787745e-04 4.29281698e+04 + 1.89244869e-04 4.29281694e+04 + 1.89703099e-04 4.29281689e+04 + 1.90162438e-04 4.29281684e+04 + 1.90622890e-04 4.29281679e+04 + 1.91084457e-04 4.29281674e+04 + 1.91547141e-04 4.29281669e+04 + 1.92010946e-04 4.29281664e+04 + 1.92475874e-04 4.29281659e+04 + 1.92941928e-04 4.29281654e+04 + 1.93409110e-04 4.29281649e+04 + 1.93877423e-04 4.29281643e+04 + 1.94346870e-04 4.29281638e+04 + 1.94817454e-04 4.29281632e+04 + 1.95289177e-04 4.29281627e+04 + 1.95762043e-04 4.29281621e+04 + 1.96236053e-04 4.29281616e+04 + 1.96711212e-04 4.29281610e+04 + 1.97187521e-04 4.29281604e+04 + 1.97664983e-04 4.29281599e+04 + 1.98143601e-04 4.29281593e+04 + 1.98623378e-04 4.29281587e+04 + 1.99104317e-04 4.29281581e+04 + 1.99586420e-04 4.29281575e+04 + 2.00069691e-04 4.29281568e+04 + 2.00554132e-04 4.29281562e+04 + 2.01039746e-04 4.29281556e+04 + 2.01526536e-04 4.29281549e+04 + 2.02014504e-04 4.29281543e+04 + 2.02503654e-04 4.29281536e+04 + 2.02993989e-04 4.29281530e+04 + 2.03485510e-04 4.29281523e+04 + 2.03978222e-04 4.29281516e+04 + 2.04472127e-04 4.29281509e+04 + 2.04967228e-04 4.29281503e+04 + 2.05463527e-04 4.29281496e+04 + 2.05961029e-04 4.29281488e+04 + 2.06459735e-04 4.29281481e+04 + 2.06959648e-04 4.29281474e+04 + 2.07460772e-04 4.29281467e+04 + 2.07963110e-04 4.29281459e+04 + 2.08466663e-04 4.29281452e+04 + 2.08971436e-04 4.29281444e+04 + 2.09477432e-04 4.29281436e+04 + 2.09984652e-04 4.29281429e+04 + 2.10493101e-04 4.29281421e+04 + 2.11002780e-04 4.29281413e+04 + 2.11513694e-04 4.29281405e+04 + 2.12025845e-04 4.29281397e+04 + 2.12539236e-04 4.29281388e+04 + 2.13053871e-04 4.29281380e+04 + 2.13569751e-04 4.29281372e+04 + 2.14086880e-04 4.29281363e+04 + 2.14605262e-04 4.29281354e+04 + 2.15124899e-04 4.29281346e+04 + 2.15645794e-04 4.29281337e+04 + 2.16167950e-04 4.29281328e+04 + 2.16691371e-04 4.29281319e+04 + 2.17216059e-04 4.29281310e+04 + 2.17742017e-04 4.29281300e+04 + 2.18269249e-04 4.29281291e+04 + 2.18797758e-04 4.29281282e+04 + 2.19327546e-04 4.29281272e+04 + 2.19858617e-04 4.29281262e+04 + 2.20390974e-04 4.29281252e+04 + 2.20924620e-04 4.29281243e+04 + 2.21459558e-04 4.29281233e+04 + 2.21995792e-04 4.29281222e+04 + 2.22533324e-04 4.29281212e+04 + 2.23072157e-04 4.29281202e+04 + 2.23612296e-04 4.29281191e+04 + 2.24153742e-04 4.29281181e+04 + 2.24696499e-04 4.29281170e+04 + 2.25240570e-04 4.29281159e+04 + 2.25785959e-04 4.29281148e+04 + 2.26332668e-04 4.29281137e+04 + 2.26880701e-04 4.29281125e+04 + 2.27430061e-04 4.29281114e+04 + 2.27980751e-04 4.29281102e+04 + 2.28532775e-04 4.29281091e+04 + 2.29086135e-04 4.29281079e+04 + 2.29640836e-04 4.29281067e+04 + 2.30196879e-04 4.29281055e+04 + 2.30754269e-04 4.29281043e+04 + 2.31313008e-04 4.29281030e+04 + 2.31873100e-04 4.29281018e+04 + 2.32434549e-04 4.29281005e+04 + 2.32997357e-04 4.29280992e+04 + 2.33561527e-04 4.29280979e+04 + 2.34127064e-04 4.29280966e+04 + 2.34693970e-04 4.29280953e+04 + 2.35262249e-04 4.29280939e+04 + 2.35831904e-04 4.29280926e+04 + 2.36402938e-04 4.29280912e+04 + 2.36975355e-04 4.29280898e+04 + 2.37549157e-04 4.29280884e+04 + 2.38124350e-04 4.29280870e+04 + 2.38700935e-04 4.29280856e+04 + 2.39278916e-04 4.29280841e+04 + 2.39858296e-04 4.29280826e+04 + 2.40439080e-04 4.29280811e+04 + 2.41021270e-04 4.29280796e+04 + 2.41604869e-04 4.29280781e+04 + 2.42189882e-04 4.29280766e+04 + 2.42776311e-04 4.29280750e+04 + 2.43364160e-04 4.29280734e+04 + 2.43953432e-04 4.29280718e+04 + 2.44544132e-04 4.29280702e+04 + 2.45136261e-04 4.29280686e+04 + 2.45729824e-04 4.29280669e+04 + 2.46324825e-04 4.29280652e+04 + 2.46921266e-04 4.29280635e+04 + 2.47519152e-04 4.29280618e+04 + 2.48118485e-04 4.29280601e+04 + 2.48719269e-04 4.29280583e+04 + 2.49321509e-04 4.29280566e+04 + 2.49925206e-04 4.29280548e+04 + 2.50530365e-04 4.29280530e+04 + 2.51136989e-04 4.29280511e+04 + 2.51745083e-04 4.29280493e+04 + 2.52354648e-04 4.29280474e+04 + 2.52965690e-04 4.29280455e+04 + 2.53578211e-04 4.29280436e+04 + 2.54192216e-04 4.29280416e+04 + 2.54807707e-04 4.29280396e+04 + 2.55424688e-04 4.29280376e+04 + 2.56043163e-04 4.29280356e+04 + 2.56663136e-04 4.29280336e+04 + 2.57284610e-04 4.29280315e+04 + 2.57907589e-04 4.29280294e+04 + 2.58532077e-04 4.29280273e+04 + 2.59158076e-04 4.29280252e+04 + 2.59785591e-04 4.29280230e+04 + 2.60414626e-04 4.29280208e+04 + 2.61045184e-04 4.29280186e+04 + 2.61677268e-04 4.29280164e+04 + 2.62310883e-04 4.29280141e+04 + 2.62946033e-04 4.29280118e+04 + 2.63582720e-04 4.29280095e+04 + 2.64220949e-04 4.29280072e+04 + 2.64860723e-04 4.29280048e+04 + 2.65502046e-04 4.29280024e+04 + 2.66144923e-04 4.29280000e+04 + 2.66789356e-04 4.29279975e+04 + 2.67435349e-04 4.29279950e+04 + 2.68082906e-04 4.29279925e+04 + 2.68732032e-04 4.29279900e+04 + 2.69382729e-04 4.29279874e+04 + 2.70035002e-04 4.29279848e+04 + 2.70688854e-04 4.29279822e+04 + 2.71344289e-04 4.29279795e+04 + 2.72001312e-04 4.29279768e+04 + 2.72659925e-04 4.29279741e+04 + 2.73320133e-04 4.29279713e+04 + 2.73981940e-04 4.29279685e+04 + 2.74645349e-04 4.29279657e+04 + 2.75310365e-04 4.29279629e+04 + 2.75976990e-04 4.29279600e+04 + 2.76645230e-04 4.29279571e+04 + 2.77315088e-04 4.29279541e+04 + 2.77986568e-04 4.29279511e+04 + 2.78659674e-04 4.29279481e+04 + 2.79334409e-04 4.29279450e+04 + 2.80010779e-04 4.29279419e+04 + 2.80688786e-04 4.29279388e+04 + 2.81368435e-04 4.29279356e+04 + 2.82049729e-04 4.29279324e+04 + 2.82732673e-04 4.29279292e+04 + 2.83417271e-04 4.29279259e+04 + 2.84103527e-04 4.29279226e+04 + 2.84791444e-04 4.29279192e+04 + 2.85481027e-04 4.29279158e+04 + 2.86172279e-04 4.29279124e+04 + 2.86865206e-04 4.29279089e+04 + 2.87559810e-04 4.29279054e+04 + 2.88256096e-04 4.29279018e+04 + 2.88954068e-04 4.29278982e+04 + 2.89653730e-04 4.29278946e+04 + 2.90355086e-04 4.29278909e+04 + 2.91058141e-04 4.29278872e+04 + 2.91762897e-04 4.29278834e+04 + 2.92469361e-04 4.29278796e+04 + 2.93177535e-04 4.29278757e+04 + 2.93887423e-04 4.29278718e+04 + 2.94599031e-04 4.29278678e+04 + 2.95312361e-04 4.29278638e+04 + 2.96027419e-04 4.29278598e+04 + 2.96744208e-04 4.29278557e+04 + 2.97462733e-04 4.29278516e+04 + 2.98182998e-04 4.29278474e+04 + 2.98905006e-04 4.29278431e+04 + 2.99628763e-04 4.29278389e+04 + 3.00354273e-04 4.29278345e+04 + 3.01081539e-04 4.29278301e+04 + 3.01810566e-04 4.29278257e+04 + 3.02541358e-04 4.29278212e+04 + 3.03273920e-04 4.29278167e+04 + 3.04008255e-04 4.29278121e+04 + 3.04744369e-04 4.29278074e+04 + 3.05482265e-04 4.29278027e+04 + 3.06221948e-04 4.29277980e+04 + 3.06963422e-04 4.29277931e+04 + 3.07706691e-04 4.29277883e+04 + 3.08451760e-04 4.29277833e+04 + 3.09198633e-04 4.29277784e+04 + 3.09947314e-04 4.29277733e+04 + 3.10697809e-04 4.29277682e+04 + 3.11450120e-04 4.29277630e+04 + 3.12204253e-04 4.29277578e+04 + 3.12960212e-04 4.29277525e+04 + 3.13718002e-04 4.29277472e+04 + 3.14477627e-04 4.29277418e+04 + 3.15239090e-04 4.29277363e+04 + 3.16002398e-04 4.29277308e+04 + 3.16767554e-04 4.29277252e+04 + 3.17534562e-04 4.29277195e+04 + 3.18303428e-04 4.29277138e+04 + 3.19074156e-04 4.29277080e+04 + 3.19846749e-04 4.29277021e+04 + 3.20621214e-04 4.29276962e+04 + 3.21397553e-04 4.29276902e+04 + 3.22175773e-04 4.29276841e+04 + 3.22955877e-04 4.29276780e+04 + 3.23737869e-04 4.29276718e+04 + 3.24521755e-04 4.29276655e+04 + 3.25307540e-04 4.29276591e+04 + 3.26095227e-04 4.29276527e+04 + 3.26884821e-04 4.29276462e+04 + 3.27676327e-04 4.29276396e+04 + 3.28469750e-04 4.29276329e+04 + 3.29265093e-04 4.29276262e+04 + 3.30062363e-04 4.29276194e+04 + 3.30861563e-04 4.29276125e+04 + 3.31662698e-04 4.29276055e+04 + 3.32465773e-04 4.29275984e+04 + 3.33270793e-04 4.29275913e+04 + 3.34077762e-04 4.29275840e+04 + 3.34886685e-04 4.29275767e+04 + 3.35697566e-04 4.29275693e+04 + 3.36510411e-04 4.29275619e+04 + 3.37325224e-04 4.29275543e+04 + 3.38142010e-04 4.29275466e+04 + 3.38960774e-04 4.29275389e+04 + 3.39781521e-04 4.29275310e+04 + 3.40604254e-04 4.29275231e+04 + 3.41428980e-04 4.29275151e+04 + 3.42255703e-04 4.29275070e+04 + 3.43084427e-04 4.29274987e+04 + 3.43915159e-04 4.29274904e+04 + 3.44747901e-04 4.29274820e+04 + 3.45582660e-04 4.29274735e+04 + 3.46419441e-04 4.29274649e+04 + 3.47258247e-04 4.29274562e+04 + 3.48099085e-04 4.29274474e+04 + 3.48941958e-04 4.29274385e+04 + 3.49786873e-04 4.29274295e+04 + 3.50633833e-04 4.29274204e+04 + 3.51482844e-04 4.29274112e+04 + 3.52333911e-04 4.29274018e+04 + 3.53187038e-04 4.29273924e+04 + 3.54042231e-04 4.29273828e+04 + 3.54899495e-04 4.29273732e+04 + 3.55758835e-04 4.29273634e+04 + 3.56620256e-04 4.29273535e+04 + 3.57483762e-04 4.29273435e+04 + 3.58349359e-04 4.29273334e+04 + 3.59217052e-04 4.29273232e+04 + 3.60086846e-04 4.29273128e+04 + 3.60958747e-04 4.29273023e+04 + 3.61832758e-04 4.29272917e+04 + 3.62708886e-04 4.29272810e+04 + 3.63587135e-04 4.29272702e+04 + 3.64467510e-04 4.29272592e+04 + 3.65350018e-04 4.29272481e+04 + 3.66234662e-04 4.29272368e+04 + 3.67121448e-04 4.29272255e+04 + 3.68010382e-04 4.29272140e+04 + 3.68901468e-04 4.29272023e+04 + 3.69794711e-04 4.29271906e+04 + 3.70690118e-04 4.29271787e+04 + 3.71587692e-04 4.29271666e+04 + 3.72487440e-04 4.29271544e+04 + 3.73389367e-04 4.29271421e+04 + 3.74293477e-04 4.29271296e+04 + 3.75199777e-04 4.29271170e+04 + 3.76108271e-04 4.29271042e+04 + 3.77018965e-04 4.29270913e+04 + 3.77931863e-04 4.29270783e+04 + 3.78846973e-04 4.29270651e+04 + 3.79764298e-04 4.29270517e+04 + 3.80683845e-04 4.29270382e+04 + 3.81605617e-04 4.29270245e+04 + 3.82529622e-04 4.29270106e+04 + 3.83455865e-04 4.29269966e+04 + 3.84384350e-04 4.29269824e+04 + 3.85315083e-04 4.29269681e+04 + 3.86248070e-04 4.29269536e+04 + 3.87183316e-04 4.29269389e+04 + 3.88120826e-04 4.29269241e+04 + 3.89060607e-04 4.29269091e+04 + 3.90002663e-04 4.29268939e+04 + 3.90947000e-04 4.29268785e+04 + 3.91893624e-04 4.29268630e+04 + 3.92842540e-04 4.29268472e+04 + 3.93793753e-04 4.29268313e+04 + 3.94747270e-04 4.29268152e+04 + 3.95703096e-04 4.29267989e+04 + 3.96661236e-04 4.29267824e+04 + 3.97621696e-04 4.29267658e+04 + 3.98584481e-04 4.29267489e+04 + 3.99549598e-04 4.29267319e+04 + 4.00517052e-04 4.29267146e+04 + 4.01486848e-04 4.29266971e+04 + 4.02458993e-04 4.29266795e+04 + 4.03433491e-04 4.29266616e+04 + 4.04410349e-04 4.29266435e+04 + 4.05389573e-04 4.29266252e+04 + 4.06371167e-04 4.29266067e+04 + 4.07355138e-04 4.29265880e+04 + 4.08341492e-04 4.29265690e+04 + 4.09330234e-04 4.29265499e+04 + 4.10321370e-04 4.29265305e+04 + 4.11314906e-04 4.29265109e+04 + 4.12310848e-04 4.29264910e+04 + 4.13309202e-04 4.29264710e+04 + 4.14309972e-04 4.29264507e+04 + 4.15313166e-04 4.29264301e+04 + 4.16318789e-04 4.29264093e+04 + 4.17326847e-04 4.29263883e+04 + 4.18337346e-04 4.29263670e+04 + 4.19350292e-04 4.29263455e+04 + 4.20365690e-04 4.29263237e+04 + 4.21383547e-04 4.29263017e+04 + 4.22403869e-04 4.29262794e+04 + 4.23426661e-04 4.29262569e+04 + 4.24451930e-04 4.29262341e+04 + 4.25479681e-04 4.29262110e+04 + 4.26509921e-04 4.29261877e+04 + 4.27542655e-04 4.29261640e+04 + 4.28577890e-04 4.29261402e+04 + 4.29615632e-04 4.29261160e+04 + 4.30655887e-04 4.29260915e+04 + 4.31698660e-04 4.29260668e+04 + 4.32743958e-04 4.29260418e+04 + 4.33791787e-04 4.29260165e+04 + 4.34842154e-04 4.29259908e+04 + 4.35895064e-04 4.29259649e+04 + 4.36950523e-04 4.29259387e+04 + 4.38008538e-04 4.29259122e+04 + 4.39069114e-04 4.29258854e+04 + 4.40132259e-04 4.29258582e+04 + 4.41197978e-04 4.29258308e+04 + 4.42266278e-04 4.29258030e+04 + 4.43337164e-04 4.29257749e+04 + 4.44410643e-04 4.29257464e+04 + 4.45486722e-04 4.29257177e+04 + 4.46565406e-04 4.29256886e+04 + 4.47646702e-04 4.29256591e+04 + 4.48730616e-04 4.29256293e+04 + 4.49817155e-04 4.29255992e+04 + 4.50906325e-04 4.29255687e+04 + 4.51998131e-04 4.29255379e+04 + 4.53092582e-04 4.29255067e+04 + 4.54189683e-04 4.29254751e+04 + 4.55289440e-04 4.29254432e+04 + 4.56391860e-04 4.29254109e+04 + 4.57496949e-04 4.29253782e+04 + 4.58604714e-04 4.29253451e+04 + 4.59715162e-04 4.29253117e+04 + 4.60828298e-04 4.29252778e+04 + 4.61944130e-04 4.29252436e+04 + 4.63062663e-04 4.29252090e+04 + 4.64183905e-04 4.29251739e+04 + 4.65307862e-04 4.29251385e+04 + 4.66434540e-04 4.29251026e+04 + 4.67563946e-04 4.29250663e+04 + 4.68696087e-04 4.29250296e+04 + 4.69830970e-04 4.29249925e+04 + 4.70968600e-04 4.29249549e+04 + 4.72108985e-04 4.29249169e+04 + 4.73252131e-04 4.29248785e+04 + 4.74398045e-04 4.29248396e+04 + 4.75546734e-04 4.29248002e+04 + 4.76698204e-04 4.29247604e+04 + 4.77852463e-04 4.29247201e+04 + 4.79009516e-04 4.29246794e+04 + 4.80169371e-04 4.29246381e+04 + 4.81332034e-04 4.29245964e+04 + 4.82497513e-04 4.29245542e+04 + 4.83665813e-04 4.29245116e+04 + 4.84836943e-04 4.29244684e+04 + 4.86010908e-04 4.29244247e+04 + 4.87187716e-04 4.29243805e+04 + 4.88367373e-04 4.29243358e+04 + 4.89549887e-04 4.29242905e+04 + 4.90735264e-04 4.29242448e+04 + 4.91923511e-04 4.29241985e+04 + 4.93114635e-04 4.29241517e+04 + 4.94308644e-04 4.29241043e+04 + 4.95505543e-04 4.29240563e+04 + 4.96705341e-04 4.29240078e+04 + 4.97908044e-04 4.29239588e+04 + 4.99113659e-04 4.29239091e+04 + 5.00322193e-04 4.29238589e+04 + 5.01533654e-04 4.29238081e+04 + 5.02748048e-04 4.29237567e+04 + 5.03965382e-04 4.29237047e+04 + 5.05185664e-04 4.29236521e+04 + 5.06408901e-04 4.29235989e+04 + 5.07635100e-04 4.29235451e+04 + 5.08864267e-04 4.29234906e+04 + 5.10096411e-04 4.29234355e+04 + 5.11331539e-04 4.29233798e+04 + 5.12569657e-04 4.29233234e+04 + 5.13810773e-04 4.29232663e+04 + 5.15054894e-04 4.29232086e+04 + 5.16302028e-04 4.29231502e+04 + 5.17552182e-04 4.29230912e+04 + 5.18805362e-04 4.29230314e+04 + 5.20061577e-04 4.29229709e+04 + 5.21320834e-04 4.29229098e+04 + 5.22583140e-04 4.29228479e+04 + 5.23848502e-04 4.29227853e+04 + 5.25116928e-04 4.29227220e+04 + 5.26388426e-04 4.29226579e+04 + 5.27663002e-04 4.29225931e+04 + 5.28940665e-04 4.29225275e+04 + 5.30221421e-04 4.29224611e+04 + 5.31505279e-04 4.29223940e+04 + 5.32792245e-04 4.29223261e+04 + 5.34082327e-04 4.29222574e+04 + 5.35375533e-04 4.29221879e+04 + 5.36671870e-04 4.29221176e+04 + 5.37971347e-04 4.29220465e+04 + 5.39273969e-04 4.29219746e+04 + 5.40579746e-04 4.29219018e+04 + 5.41888685e-04 4.29218281e+04 + 5.43200793e-04 4.29217536e+04 + 5.44516078e-04 4.29216782e+04 + 5.45834548e-04 4.29216020e+04 + 5.47156210e-04 4.29215248e+04 + 5.48481073e-04 4.29214468e+04 + 5.49809143e-04 4.29213678e+04 + 5.51140430e-04 4.29212880e+04 + 5.52474940e-04 4.29212072e+04 + 5.53812681e-04 4.29211254e+04 + 5.55153661e-04 4.29210427e+04 + 5.56497889e-04 4.29209590e+04 + 5.57845371e-04 4.29208744e+04 + 5.59196116e-04 4.29207887e+04 + 5.60550131e-04 4.29207021e+04 + 5.61907425e-04 4.29206145e+04 + 5.63268006e-04 4.29205258e+04 + 5.64631881e-04 4.29204361e+04 + 5.65999059e-04 4.29203453e+04 + 5.67369547e-04 4.29202535e+04 + 5.68743353e-04 4.29201606e+04 + 5.70120486e-04 4.29200667e+04 + 5.71500953e-04 4.29199716e+04 + 5.72884763e-04 4.29198754e+04 + 5.74271924e-04 4.29197781e+04 + 5.75662444e-04 4.29196797e+04 + 5.77056330e-04 4.29195801e+04 + 5.78453592e-04 4.29194794e+04 + 5.79854237e-04 4.29193775e+04 + 5.81258273e-04 4.29192744e+04 + 5.82665709e-04 4.29191701e+04 + 5.84076553e-04 4.29190645e+04 + 5.85490813e-04 4.29189578e+04 + 5.86908498e-04 4.29188498e+04 + 5.88329615e-04 4.29187405e+04 + 5.89754173e-04 4.29186300e+04 + 5.91182181e-04 4.29185182e+04 + 5.92613646e-04 4.29184050e+04 + 5.94048578e-04 4.29182906e+04 + 5.95486984e-04 4.29181748e+04 + 5.96928873e-04 4.29180576e+04 + 5.98374253e-04 4.29179391e+04 + 5.99823133e-04 4.29178192e+04 + 6.01275521e-04 4.29176979e+04 + 6.02731426e-04 4.29175752e+04 + 6.04190856e-04 4.29174511e+04 + 6.05653820e-04 4.29173255e+04 + 6.07120327e-04 4.29171985e+04 + 6.08590384e-04 4.29170699e+04 + 6.10064001e-04 4.29169399e+04 + 6.11541186e-04 4.29168084e+04 + 6.13021948e-04 4.29166753e+04 + 6.14506295e-04 4.29165406e+04 + 6.15994237e-04 4.29164044e+04 + 6.17485781e-04 4.29162666e+04 + 6.18980937e-04 4.29161272e+04 + 6.20479713e-04 4.29159862e+04 + 6.21982119e-04 4.29158435e+04 + 6.23488162e-04 4.29156992e+04 + 6.24997852e-04 4.29155531e+04 + 6.26511197e-04 4.29154054e+04 + 6.28028207e-04 4.29152560e+04 + 6.29548890e-04 4.29151048e+04 + 6.31073255e-04 4.29149518e+04 + 6.32601311e-04 4.29147971e+04 + 6.34133067e-04 4.29146405e+04 + 6.35668532e-04 4.29144821e+04 + 6.37207715e-04 4.29143219e+04 + 6.38750624e-04 4.29141598e+04 + 6.40297270e-04 4.29139958e+04 + 6.41847661e-04 4.29138299e+04 + 6.43401806e-04 4.29136621e+04 + 6.44959714e-04 4.29134923e+04 + 6.46521394e-04 4.29133205e+04 + 6.48086855e-04 4.29131467e+04 + 6.49656108e-04 4.29129709e+04 + 6.51229159e-04 4.29127931e+04 + 6.52806020e-04 4.29126132e+04 + 6.54386699e-04 4.29124311e+04 + 6.55971206e-04 4.29122470e+04 + 6.57559549e-04 4.29120607e+04 + 6.59151737e-04 4.29118722e+04 + 6.60747782e-04 4.29116815e+04 + 6.62347690e-04 4.29114886e+04 + 6.63951473e-04 4.29112935e+04 + 6.65559139e-04 4.29110961e+04 + 6.67170698e-04 4.29108963e+04 + 6.68786159e-04 4.29106943e+04 + 6.70405532e-04 4.29104899e+04 + 6.72028826e-04 4.29102831e+04 + 6.73656050e-04 4.29100739e+04 + 6.75287214e-04 4.29098622e+04 + 6.76922328e-04 4.29096481e+04 + 6.78561401e-04 4.29094315e+04 + 6.80204443e-04 4.29092124e+04 + 6.81851464e-04 4.29089907e+04 + 6.83502472e-04 4.29087664e+04 + 6.85157478e-04 4.29085395e+04 + 6.86816492e-04 4.29083099e+04 + 6.88479522e-04 4.29080777e+04 + 6.90146580e-04 4.29078428e+04 + 6.91817674e-04 4.29076051e+04 + 6.93492814e-04 4.29073647e+04 + 6.95172010e-04 4.29071214e+04 + 6.96855273e-04 4.29068754e+04 + 6.98542611e-04 4.29066264e+04 + 7.00234034e-04 4.29063746e+04 + 7.01929554e-04 4.29061198e+04 + 7.03629178e-04 4.29058620e+04 + 7.05332919e-04 4.29056012e+04 + 7.07040784e-04 4.29053374e+04 + 7.08752785e-04 4.29050705e+04 + 7.10468931e-04 4.29048006e+04 + 7.12189233e-04 4.29045274e+04 + 7.13913700e-04 4.29042511e+04 + 7.15642343e-04 4.29039715e+04 + 7.17375171e-04 4.29036887e+04 + 7.19112195e-04 4.29034026e+04 + 7.20853425e-04 4.29031132e+04 + 7.22598872e-04 4.29028204e+04 + 7.24348544e-04 4.29025241e+04 + 7.26102453e-04 4.29022244e+04 + 7.27860609e-04 4.29019213e+04 + 7.29623023e-04 4.29016146e+04 + 7.31389703e-04 4.29013043e+04 + 7.33160662e-04 4.29009904e+04 + 7.34935908e-04 4.29006728e+04 + 7.36715453e-04 4.29003515e+04 + 7.38499307e-04 4.29000265e+04 + 7.40287480e-04 4.28996977e+04 + 7.42079984e-04 4.28993651e+04 + 7.43876827e-04 4.28990286e+04 + 7.45678021e-04 4.28986882e+04 + 7.47483577e-04 4.28983438e+04 + 7.49293504e-04 4.28979953e+04 + 7.51107814e-04 4.28976429e+04 + 7.52926517e-04 4.28972863e+04 + 7.54749624e-04 4.28969256e+04 + 7.56577145e-04 4.28965606e+04 + 7.58409092e-04 4.28961914e+04 + 7.60245474e-04 4.28958179e+04 + 7.62086302e-04 4.28954401e+04 + 7.63931588e-04 4.28950578e+04 + 7.65781342e-04 4.28946711e+04 + 7.67635575e-04 4.28942799e+04 + 7.69494298e-04 4.28938841e+04 + 7.71357521e-04 4.28934838e+04 + 7.73225256e-04 4.28930787e+04 + 7.75097514e-04 4.28926689e+04 + 7.76974304e-04 4.28922544e+04 + 7.78855639e-04 4.28918350e+04 + 7.80741530e-04 4.28914108e+04 + 7.82631987e-04 4.28909816e+04 + 7.84527021e-04 4.28905474e+04 + 7.86426644e-04 4.28901081e+04 + 7.88330867e-04 4.28896637e+04 + 7.90239701e-04 4.28892142e+04 + 7.92153156e-04 4.28887594e+04 + 7.94071245e-04 4.28882993e+04 + 7.95993978e-04 4.28878338e+04 + 7.97921366e-04 4.28873630e+04 + 7.99853422e-04 4.28868866e+04 + 8.01790156e-04 4.28864047e+04 + 8.03731579e-04 4.28859172e+04 + 8.05677703e-04 4.28854240e+04 + 8.07628540e-04 4.28849251e+04 + 8.09584100e-04 4.28844203e+04 + 8.11544395e-04 4.28839097e+04 + 8.13509437e-04 4.28833931e+04 + 8.15479237e-04 4.28828706e+04 + 8.17453806e-04 4.28823419e+04 + 8.19433157e-04 4.28818071e+04 + 8.21417300e-04 4.28812660e+04 + 8.23406248e-04 4.28807186e+04 + 8.25400012e-04 4.28801649e+04 + 8.27398603e-04 4.28796047e+04 + 8.29402033e-04 4.28790380e+04 + 8.31410315e-04 4.28784648e+04 + 8.33423459e-04 4.28778848e+04 + 8.35441478e-04 4.28772981e+04 + 8.37464384e-04 4.28767045e+04 + 8.39492187e-04 4.28761041e+04 + 8.41524901e-04 4.28754966e+04 + 8.43562536e-04 4.28748821e+04 + 8.45605105e-04 4.28742604e+04 + 8.47652621e-04 4.28736315e+04 + 8.49705093e-04 4.28729953e+04 + 8.51762536e-04 4.28723517e+04 + 8.53824961e-04 4.28717006e+04 + 8.55892379e-04 4.28710419e+04 + 8.57964803e-04 4.28703755e+04 + 8.60042246e-04 4.28697014e+04 + 8.62124718e-04 4.28690194e+04 + 8.64212233e-04 4.28683295e+04 + 8.66304803e-04 4.28676316e+04 + 8.68402439e-04 4.28669256e+04 + 8.70505155e-04 4.28662113e+04 + 8.72612962e-04 4.28654888e+04 + 8.74725873e-04 4.28647578e+04 + 8.76843900e-04 4.28640183e+04 + 8.78967056e-04 4.28632703e+04 + 8.81095352e-04 4.28625135e+04 + 8.83228802e-04 4.28617479e+04 + 8.85367417e-04 4.28609735e+04 + 8.87511211e-04 4.28601900e+04 + 8.89660196e-04 4.28593974e+04 + 8.91814385e-04 4.28585956e+04 + 8.93973789e-04 4.28577845e+04 + 8.96138422e-04 4.28569639e+04 + 8.98308297e-04 4.28561338e+04 + 9.00483425e-04 4.28552940e+04 + 9.02663821e-04 4.28544445e+04 + 9.04849495e-04 4.28535851e+04 + 9.07040463e-04 4.28527158e+04 + 9.09236735e-04 4.28518363e+04 + 9.11438325e-04 4.28509466e+04 + 9.13645246e-04 4.28500465e+04 + 9.15857511e-04 4.28491360e+04 + 9.18075132e-04 4.28482149e+04 + 9.20298124e-04 4.28472831e+04 + 9.22526497e-04 4.28463405e+04 + 9.24760267e-04 4.28453869e+04 + 9.26999445e-04 4.28444223e+04 + 9.29244045e-04 4.28434464e+04 + 9.31494081e-04 4.28424592e+04 + 9.33749564e-04 4.28414606e+04 + 9.36010509e-04 4.28404503e+04 + 9.38276928e-04 4.28394283e+04 + 9.40548835e-04 4.28383944e+04 + 9.42826243e-04 4.28373486e+04 + 9.45109165e-04 4.28362906e+04 + 9.47397616e-04 4.28352202e+04 + 9.49691607e-04 4.28341375e+04 + 9.51991153e-04 4.28330422e+04 + 9.54296267e-04 4.28319342e+04 + 9.56606963e-04 4.28308133e+04 + 9.58923254e-04 4.28296794e+04 + 9.61245153e-04 4.28285324e+04 + 9.63572674e-04 4.28273720e+04 + 9.65905831e-04 4.28261982e+04 + 9.68244638e-04 4.28250107e+04 + 9.70589108e-04 4.28238095e+04 + 9.72939254e-04 4.28225943e+04 + 9.75295091e-04 4.28213650e+04 + 9.77656633e-04 4.28201215e+04 + 9.80023892e-04 4.28188635e+04 + 9.82396884e-04 4.28175910e+04 + 9.84775621e-04 4.28163036e+04 + 9.87160118e-04 4.28150014e+04 + 9.89550389e-04 4.28136841e+04 + 9.91946447e-04 4.28123514e+04 + 9.94348308e-04 4.28110034e+04 + 9.96755984e-04 4.28096396e+04 + 9.99169490e-04 4.28082601e+04 + 1.00158884e-03 4.28068646e+04 + 1.00401405e-03 4.28054529e+04 + 1.00644513e-03 4.28040249e+04 + 1.00888209e-03 4.28025803e+04 + 1.01132496e-03 4.28011190e+04 + 1.01377375e-03 4.27996407e+04 + 1.01622846e-03 4.27981453e+04 + 1.01868911e-03 4.27966326e+04 + 1.02115573e-03 4.27951023e+04 + 1.02362831e-03 4.27935543e+04 + 1.02610689e-03 4.27919884e+04 + 1.02859146e-03 4.27904044e+04 + 1.03108205e-03 4.27888020e+04 + 1.03357867e-03 4.27871811e+04 + 1.03608134e-03 4.27855414e+04 + 1.03859007e-03 4.27838827e+04 + 1.04110487e-03 4.27822048e+04 + 1.04362576e-03 4.27805075e+04 + 1.04615275e-03 4.27787905e+04 + 1.04868587e-03 4.27770537e+04 + 1.05122512e-03 4.27752968e+04 + 1.05377051e-03 4.27735196e+04 + 1.05632207e-03 4.27717218e+04 + 1.05887981e-03 4.27699032e+04 + 1.06144374e-03 4.27680635e+04 + 1.06401387e-03 4.27662026e+04 + 1.06659024e-03 4.27643202e+04 + 1.06917284e-03 4.27624160e+04 + 1.07176169e-03 4.27604898e+04 + 1.07435681e-03 4.27585414e+04 + 1.07695822e-03 4.27565704e+04 + 1.07956592e-03 4.27545766e+04 + 1.08217994e-03 4.27525598e+04 + 1.08480029e-03 4.27505197e+04 + 1.08742698e-03 4.27484560e+04 + 1.09006003e-03 4.27463685e+04 + 1.09269946e-03 4.27442569e+04 + 1.09534528e-03 4.27421209e+04 + 1.09799751e-03 4.27399602e+04 + 1.10065616e-03 4.27377746e+04 + 1.10332124e-03 4.27355638e+04 + 1.10599278e-03 4.27333274e+04 + 1.10867079e-03 4.27310653e+04 + 1.11135528e-03 4.27287770e+04 + 1.11404627e-03 4.27264623e+04 + 1.11674378e-03 4.27241210e+04 + 1.11944782e-03 4.27217526e+04 + 1.12215841e-03 4.27193569e+04 + 1.12487556e-03 4.27169336e+04 + 1.12759929e-03 4.27144823e+04 + 1.13032961e-03 4.27120028e+04 + 1.13306655e-03 4.27094947e+04 + 1.13581011e-03 4.27069577e+04 + 1.13856032e-03 4.27043915e+04 + 1.14131718e-03 4.27017957e+04 + 1.14408072e-03 4.26991701e+04 + 1.14685096e-03 4.26965141e+04 + 1.14962790e-03 4.26938276e+04 + 1.15241156e-03 4.26911102e+04 + 1.15520196e-03 4.26883615e+04 + 1.15799912e-03 4.26855811e+04 + 1.16080306e-03 4.26827688e+04 + 1.16361378e-03 4.26799241e+04 + 1.16643131e-03 4.26770467e+04 + 1.16925566e-03 4.26741362e+04 + 1.17208685e-03 4.26711922e+04 + 1.17492490e-03 4.26682143e+04 + 1.17776981e-03 4.26652023e+04 + 1.18062162e-03 4.26621556e+04 + 1.18348033e-03 4.26590739e+04 + 1.18634596e-03 4.26559568e+04 + 1.18921854e-03 4.26528039e+04 + 1.19209806e-03 4.26496148e+04 + 1.19498456e-03 4.26463891e+04 + 1.19787805e-03 4.26431263e+04 + 1.20077855e-03 4.26398261e+04 + 1.20368606e-03 4.26364880e+04 + 1.20660062e-03 4.26331117e+04 + 1.20952224e-03 4.26296966e+04 + 1.21245093e-03 4.26262423e+04 + 1.21538671e-03 4.26227484e+04 + 1.21832960e-03 4.26192145e+04 + 1.22127961e-03 4.26156400e+04 + 1.22423677e-03 4.26120247e+04 + 1.22720109e-03 4.26083678e+04 + 1.23017259e-03 4.26046692e+04 + 1.23315128e-03 4.26009281e+04 + 1.23613718e-03 4.25971442e+04 + 1.23913032e-03 4.25933171e+04 + 1.24213070e-03 4.25894461e+04 + 1.24513835e-03 4.25855308e+04 + 1.24815328e-03 4.25815708e+04 + 1.25117551e-03 4.25775654e+04 + 1.25420505e-03 4.25735143e+04 + 1.25724194e-03 4.25694169e+04 + 1.26028617e-03 4.25652727e+04 + 1.26333778e-03 4.25610811e+04 + 1.26639678e-03 4.25568416e+04 + 1.26946318e-03 4.25525538e+04 + 1.27253701e-03 4.25482170e+04 + 1.27561828e-03 4.25438307e+04 + 1.27870701e-03 4.25393944e+04 + 1.28180322e-03 4.25349074e+04 + 1.28490693e-03 4.25303693e+04 + 1.28801815e-03 4.25257795e+04 + 1.29113691e-03 4.25211374e+04 + 1.29426322e-03 4.25164424e+04 + 1.29739710e-03 4.25116939e+04 + 1.30053856e-03 4.25068913e+04 + 1.30368764e-03 4.25020341e+04 + 1.30684434e-03 4.24971216e+04 + 1.31000868e-03 4.24921532e+04 + 1.31318068e-03 4.24871283e+04 + 1.31636037e-03 4.24820462e+04 + 1.31954775e-03 4.24769065e+04 + 1.32274285e-03 4.24717083e+04 + 1.32594569e-03 4.24664510e+04 + 1.32915628e-03 4.24611341e+04 + 1.33237465e-03 4.24557568e+04 + 1.33560081e-03 4.24503185e+04 + 1.33883478e-03 4.24448185e+04 + 1.34207658e-03 4.24392562e+04 + 1.34532623e-03 4.24336307e+04 + 1.34858375e-03 4.24279416e+04 + 1.35184916e-03 4.24221879e+04 + 1.35512248e-03 4.24163692e+04 + 1.35840372e-03 4.24104845e+04 + 1.36169290e-03 4.24045333e+04 + 1.36499005e-03 4.23985147e+04 + 1.36829519e-03 4.23924281e+04 + 1.37160832e-03 4.23862727e+04 + 1.37492948e-03 4.23800477e+04 + 1.37825868e-03 4.23737524e+04 + 1.38159594e-03 4.23673860e+04 + 1.38494129e-03 4.23609478e+04 + 1.38829473e-03 4.23544370e+04 + 1.39165629e-03 4.23478527e+04 + 1.39502599e-03 4.23411942e+04 + 1.39840385e-03 4.23344606e+04 + 1.40178989e-03 4.23276513e+04 + 1.40518413e-03 4.23207652e+04 + 1.40858659e-03 4.23138017e+04 + 1.41199729e-03 4.23067598e+04 + 1.41541624e-03 4.22996387e+04 + 1.41884348e-03 4.22924376e+04 + 1.42227901e-03 4.22851556e+04 + 1.42572286e-03 4.22777919e+04 + 1.42917505e-03 4.22703454e+04 + 1.43263560e-03 4.22628155e+04 + 1.43610452e-03 4.22552010e+04 + 1.43958185e-03 4.22475013e+04 + 1.44306760e-03 4.22397152e+04 + 1.44656179e-03 4.22318420e+04 + 1.45006443e-03 4.22238807e+04 + 1.45357556e-03 4.22158303e+04 + 1.45709519e-03 4.22076899e+04 + 1.46062335e-03 4.21994585e+04 + 1.46416004e-03 4.21911351e+04 + 1.46770530e-03 4.21827188e+04 + 1.47125915e-03 4.21742086e+04 + 1.47482160e-03 4.21656035e+04 + 1.47839267e-03 4.21569025e+04 + 1.48197239e-03 4.21481046e+04 + 1.48556078e-03 4.21392086e+04 + 1.48915786e-03 4.21302137e+04 + 1.49276365e-03 4.21211187e+04 + 1.49637817e-03 4.21119226e+04 + 1.50000144e-03 4.21026244e+04 + 1.50363349e-03 4.20932229e+04 + 1.50727433e-03 4.20837171e+04 + 1.51092398e-03 4.20741059e+04 + 1.51458247e-03 4.20643881e+04 + 1.51824982e-03 4.20545627e+04 + 1.52192606e-03 4.20446285e+04 + 1.52561119e-03 4.20345844e+04 + 1.52930524e-03 4.20244292e+04 + 1.53300824e-03 4.20141619e+04 + 1.53672021e-03 4.20037811e+04 + 1.54044116e-03 4.19932859e+04 + 1.54417113e-03 4.19826748e+04 + 1.54791012e-03 4.19719468e+04 + 1.55165817e-03 4.19611007e+04 + 1.55541530e-03 4.19501352e+04 + 1.55918152e-03 4.19390491e+04 + 1.56295686e-03 4.19278411e+04 + 1.56674134e-03 4.19165101e+04 + 1.57053499e-03 4.19050547e+04 + 1.57433782e-03 4.18934736e+04 + 1.57814986e-03 4.18817657e+04 + 1.58197113e-03 4.18699295e+04 + 1.58580165e-03 4.18579637e+04 + 1.58964145e-03 4.18458672e+04 + 1.59349055e-03 4.18336384e+04 + 1.59734896e-03 4.18212762e+04 + 1.60121672e-03 4.18087791e+04 + 1.60509384e-03 4.17961457e+04 + 1.60898035e-03 4.17833747e+04 + 1.61287628e-03 4.17704647e+04 + 1.61678163e-03 4.17574144e+04 + 1.62069644e-03 4.17442222e+04 + 1.62462073e-03 4.17308868e+04 + 1.62855453e-03 4.17174067e+04 + 1.63249785e-03 4.17037806e+04 + 1.63645071e-03 4.16900069e+04 + 1.64041315e-03 4.16760841e+04 + 1.64438518e-03 4.16620109e+04 + 1.64836683e-03 4.16477856e+04 + 1.65235812e-03 4.16334068e+04 + 1.65635908e-03 4.16188731e+04 + 1.66036972e-03 4.16041827e+04 + 1.66439008e-03 4.15893343e+04 + 1.66842016e-03 4.15743263e+04 + 1.67246001e-03 4.15591571e+04 + 1.67650964e-03 4.15438251e+04 + 1.68056908e-03 4.15283287e+04 + 1.68463834e-03 4.15126664e+04 + 1.68871746e-03 4.14968366e+04 + 1.69280645e-03 4.14808375e+04 + 1.69690535e-03 4.14646677e+04 + 1.70101417e-03 4.14483253e+04 + 1.70513294e-03 4.14318089e+04 + 1.70926168e-03 4.14151167e+04 + 1.71340042e-03 4.13982470e+04 + 1.71754918e-03 4.13811982e+04 + 1.72170798e-03 4.13639685e+04 + 1.72587686e-03 4.13465562e+04 + 1.73005583e-03 4.13289596e+04 + 1.73424492e-03 4.13111770e+04 + 1.73844415e-03 4.12932066e+04 + 1.74265355e-03 4.12750466e+04 + 1.74687315e-03 4.12566953e+04 + 1.75110296e-03 4.12381508e+04 + 1.75534301e-03 4.12194115e+04 + 1.75959333e-03 4.12004754e+04 + 1.76385394e-03 4.11813407e+04 + 1.76812487e-03 4.11620057e+04 + 1.77240613e-03 4.11424685e+04 + 1.77669777e-03 4.11227272e+04 + 1.78099980e-03 4.11027799e+04 + 1.78531224e-03 4.10826248e+04 + 1.78963512e-03 4.10622600e+04 + 1.79396848e-03 4.10416836e+04 + 1.79831232e-03 4.10208936e+04 + 1.80266668e-03 4.09998882e+04 + 1.80703159e-03 4.09786655e+04 + 1.81140707e-03 4.09572234e+04 + 1.81579314e-03 4.09355600e+04 + 1.82018983e-03 4.09136734e+04 + 1.82459716e-03 4.08915615e+04 + 1.82901517e-03 4.08692225e+04 + 1.83344388e-03 4.08466543e+04 + 1.83788331e-03 4.08238548e+04 + 1.84233349e-03 4.08008221e+04 + 1.84679444e-03 4.07775542e+04 + 1.85126620e-03 4.07540490e+04 + 1.85574878e-03 4.07303044e+04 + 1.86024222e-03 4.07063185e+04 + 1.86474653e-03 4.06820891e+04 + 1.86926176e-03 4.06576142e+04 + 1.87378792e-03 4.06328917e+04 + 1.87832503e-03 4.06079195e+04 + 1.88287313e-03 4.05826954e+04 + 1.88743225e-03 4.05572175e+04 + 1.89200240e-03 4.05314835e+04 + 1.89658362e-03 4.05054914e+04 + 1.90117594e-03 4.04792390e+04 + 1.90577937e-03 4.04527242e+04 + 1.91039395e-03 4.04259447e+04 + 1.91501970e-03 4.03988986e+04 + 1.91965666e-03 4.03715835e+04 + 1.92430484e-03 4.03439974e+04 + 1.92896428e-03 4.03161380e+04 + 1.93363499e-03 4.02880032e+04 + 1.93831702e-03 4.02595907e+04 + 1.94301039e-03 4.02308984e+04 + 1.94771512e-03 4.02019241e+04 + 1.95243124e-03 4.01726656e+04 + 1.95715878e-03 4.01431206e+04 + 1.96189777e-03 4.01132870e+04 + 1.96664823e-03 4.00831624e+04 + 1.97141019e-03 4.00527448e+04 + 1.97618369e-03 4.00220318e+04 + 1.98096874e-03 3.99910212e+04 + 1.98576538e-03 3.99597108e+04 + 1.99057364e-03 3.99280983e+04 + 1.99539353e-03 3.98961815e+04 + 2.00022510e-03 3.98639581e+04 + 2.00506837e-03 3.98314259e+04 + 2.00992336e-03 3.97985827e+04 + 2.01479011e-03 3.97654262e+04 + 2.01966865e-03 3.97319540e+04 + 2.02455899e-03 3.96981641e+04 + 2.02946118e-03 3.96640540e+04 + 2.03437524e-03 3.96296217e+04 + 2.03930120e-03 3.95948647e+04 + 2.04423908e-03 3.95597808e+04 + 2.04918892e-03 3.95243679e+04 + 2.05415075e-03 3.94886236e+04 + 2.05912459e-03 3.94525457e+04 + 2.06411047e-03 3.94161319e+04 + 2.06910843e-03 3.93793800e+04 + 2.07411848e-03 3.93422877e+04 + 2.07914067e-03 3.93048529e+04 + 2.08417502e-03 3.92670732e+04 + 2.08922156e-03 3.92289465e+04 + 2.09428032e-03 3.91904705e+04 + 2.09935133e-03 3.91516430e+04 + 2.10443462e-03 3.91124618e+04 + 2.10953021e-03 3.90729247e+04 + 2.11463815e-03 3.90330294e+04 + 2.11975845e-03 3.89927738e+04 + 2.12489115e-03 3.89521557e+04 + 2.13003628e-03 3.89111730e+04 + 2.13519386e-03 3.88698234e+04 + 2.14036394e-03 3.88281048e+04 + 2.14554653e-03 3.87860150e+04 + 2.15074167e-03 3.87435520e+04 + 2.15594940e-03 3.87007136e+04 + 2.16116973e-03 3.86574976e+04 + 2.16640270e-03 3.86139020e+04 + 2.17164834e-03 3.85699247e+04 + 2.17690669e-03 3.85255637e+04 + 2.18217776e-03 3.84808168e+04 + 2.18746160e-03 3.84356820e+04 + 2.19275824e-03 3.83901572e+04 + 2.19806770e-03 3.83442406e+04 + 2.20339001e-03 3.82979300e+04 + 2.20872521e-03 3.82512235e+04 + 2.21407333e-03 3.82041192e+04 + 2.21943440e-03 3.81566151e+04 + 2.22480846e-03 3.81087092e+04 + 2.23019552e-03 3.80603997e+04 + 2.23559563e-03 3.80116847e+04 + 2.24100881e-03 3.79625623e+04 + 2.24643510e-03 3.79130307e+04 + 2.25187453e-03 3.78630881e+04 + 2.25732713e-03 3.78127327e+04 + 2.26279294e-03 3.77619627e+04 + 2.26827198e-03 3.77107764e+04 + 2.27376428e-03 3.76591720e+04 + 2.27926988e-03 3.76071479e+04 + 2.28478882e-03 3.75547023e+04 + 2.29032112e-03 3.75018338e+04 + 2.29586681e-03 3.74485406e+04 + 2.30142593e-03 3.73948212e+04 + 2.30699852e-03 3.73406740e+04 + 2.31258459e-03 3.72860975e+04 + 2.31818419e-03 3.72310902e+04 + 2.32379735e-03 3.71756507e+04 + 2.32942411e-03 3.71197775e+04 + 2.33506448e-03 3.70634693e+04 + 2.34071852e-03 3.70067247e+04 + 2.34638624e-03 3.69495424e+04 + 2.35206769e-03 3.68919211e+04 + 2.35776289e-03 3.68338595e+04 + 2.36347189e-03 3.67753565e+04 + 2.36919471e-03 3.67164108e+04 + 2.37493138e-03 3.66570213e+04 + 2.38068195e-03 3.65971871e+04 + 2.38644644e-03 3.65369068e+04 + 2.39222488e-03 3.64761797e+04 + 2.39801732e-03 3.64150047e+04 + 2.40382379e-03 3.63533808e+04 + 2.40964431e-03 3.62913073e+04 + 2.41547893e-03 3.62287832e+04 + 2.42132768e-03 3.61658077e+04 + 2.42719059e-03 3.61023802e+04 + 2.43306769e-03 3.60384998e+04 + 2.43895903e-03 3.59741660e+04 + 2.44486463e-03 3.59093782e+04 + 2.45078453e-03 3.58441357e+04 + 2.45671876e-03 3.57784380e+04 + 2.46266736e-03 3.57122848e+04 + 2.46863037e-03 3.56456755e+04 + 2.47460781e-03 3.55786099e+04 + 2.48059973e-03 3.55110875e+04 + 2.48660616e-03 3.54431082e+04 + 2.49262713e-03 3.53746718e+04 + 2.49866268e-03 3.53057781e+04 + 2.50471284e-03 3.52364270e+04 + 2.51077766e-03 3.51666184e+04 + 2.51685716e-03 3.50963524e+04 + 2.52295138e-03 3.50256291e+04 + 2.52906035e-03 3.49544486e+04 + 2.53518412e-03 3.48828110e+04 + 2.54132271e-03 3.48107166e+04 + 2.54747617e-03 3.47381658e+04 + 2.55364453e-03 3.46651588e+04 + 2.55982783e-03 3.45916961e+04 + 2.56602609e-03 3.45177782e+04 + 2.57223937e-03 3.44434056e+04 + 2.57846769e-03 3.43685789e+04 + 2.58471109e-03 3.42932989e+04 + 2.59096961e-03 3.42175661e+04 + 2.59724328e-03 3.41413815e+04 + 2.60353214e-03 3.40647458e+04 + 2.60983623e-03 3.39876601e+04 + 2.61615559e-03 3.39101252e+04 + 2.62249025e-03 3.38321422e+04 + 2.62884024e-03 3.37537122e+04 + 2.63520561e-03 3.36748365e+04 + 2.64158640e-03 3.35955162e+04 + 2.64798263e-03 3.35157527e+04 + 2.65439435e-03 3.34355473e+04 + 2.66082160e-03 3.33549015e+04 + 2.66726441e-03 3.32738168e+04 + 2.67372282e-03 3.31922947e+04 + 2.68019686e-03 3.31103369e+04 + 2.68668659e-03 3.30279452e+04 + 2.69319203e-03 3.29451213e+04 + 2.69971322e-03 3.28618670e+04 + 2.70625020e-03 3.27781842e+04 + 2.71280300e-03 3.26940750e+04 + 2.71937168e-03 3.26095414e+04 + 2.72595626e-03 3.25245854e+04 + 2.73255678e-03 3.24392094e+04 + 2.73917329e-03 3.23534155e+04 + 2.74580582e-03 3.22672061e+04 + 2.75245440e-03 3.21805836e+04 + 2.75911909e-03 3.20935503e+04 + 2.76579991e-03 3.20061090e+04 + 2.77249691e-03 3.19182620e+04 + 2.77921013e-03 3.18300122e+04 + 2.78593960e-03 3.17413622e+04 + 2.79268536e-03 3.16523149e+04 + 2.79944746e-03 3.15628731e+04 + 2.80622593e-03 3.14730397e+04 + 2.81302082e-03 3.13828178e+04 + 2.81983216e-03 3.12922103e+04 + 2.82665999e-03 3.12012205e+04 + 2.83350435e-03 3.11098516e+04 + 2.84036529e-03 3.10181068e+04 + 2.84724284e-03 3.09259894e+04 + 2.85413704e-03 3.08335029e+04 + 2.86104794e-03 3.07406506e+04 + 2.86797557e-03 3.06474362e+04 + 2.87491997e-03 3.05538632e+04 + 2.88188119e-03 3.04599353e+04 + 2.88885926e-03 3.03656561e+04 + 2.89585423e-03 3.02710295e+04 + 2.90286614e-03 3.01760593e+04 + 2.90989503e-03 3.00807494e+04 + 2.91694093e-03 2.99851037e+04 + 2.92400390e-03 2.98891263e+04 + 2.93108397e-03 2.97928213e+04 + 2.93818118e-03 2.96961927e+04 + 2.94529558e-03 2.95992448e+04 + 2.95242720e-03 2.95019819e+04 + 2.95957609e-03 2.94044081e+04 + 2.96674229e-03 2.93065280e+04 + 2.97392585e-03 2.92083458e+04 + 2.98112680e-03 2.91098661e+04 + 2.98834518e-03 2.90110934e+04 + 2.99558104e-03 2.89120323e+04 + 3.00283442e-03 2.88126874e+04 + 3.01010537e-03 2.87130633e+04 + 3.01739392e-03 2.86131648e+04 + 3.02470012e-03 2.85129966e+04 + 3.03202401e-03 2.84125636e+04 + 3.03936563e-03 2.83118707e+04 + 3.04672504e-03 2.82109227e+04 + 3.05410226e-03 2.81097246e+04 + 3.06149734e-03 2.80082813e+04 + 3.06891033e-03 2.79065980e+04 + 3.07634127e-03 2.78046797e+04 + 3.08379020e-03 2.77025315e+04 + 3.09125717e-03 2.76001586e+04 + 3.09874222e-03 2.74975661e+04 + 3.10624539e-03 2.73947593e+04 + 3.11376673e-03 2.72917435e+04 + 3.12130629e-03 2.71885239e+04 + 3.12886410e-03 2.70851059e+04 + 3.13644020e-03 2.69814948e+04 + 3.14403466e-03 2.68776960e+04 + 3.15164750e-03 2.67737150e+04 + 3.15927878e-03 2.66695572e+04 + 3.16692853e-03 2.65652281e+04 + 3.17459681e-03 2.64607331e+04 + 3.18228365e-03 2.63560778e+04 + 3.18998911e-03 2.62512678e+04 + 3.19771322e-03 2.61463085e+04 + 3.20545604e-03 2.60412056e+04 + 3.21321761e-03 2.59359647e+04 + 3.22099797e-03 2.58305915e+04 + 3.22879716e-03 2.57250914e+04 + 3.23661525e-03 2.56194703e+04 + 3.24445226e-03 2.55137337e+04 + 3.25230825e-03 2.54078874e+04 + 3.26018326e-03 2.53019370e+04 + 3.26807734e-03 2.51958883e+04 + 3.27599054e-03 2.50897468e+04 + 3.28392289e-03 2.49835185e+04 + 3.29187445e-03 2.48772088e+04 + 3.29984527e-03 2.47708237e+04 + 3.30783539e-03 2.46643688e+04 + 3.31584485e-03 2.45578499e+04 + 3.32387371e-03 2.44512726e+04 + 3.33192200e-03 2.43446427e+04 + 3.33998979e-03 2.42379659e+04 + 3.34807711e-03 2.41312479e+04 + 3.35618401e-03 2.40244945e+04 + 3.36431055e-03 2.39177114e+04 + 3.37245676e-03 2.38109042e+04 + 3.38062269e-03 2.37040787e+04 + 3.38880840e-03 2.35972405e+04 + 3.39701393e-03 2.34903953e+04 + 3.40523932e-03 2.33835488e+04 + 3.41348464e-03 2.32767065e+04 + 3.42174991e-03 2.31698742e+04 + 3.43003520e-03 2.30630575e+04 + 3.43834056e-03 2.29562619e+04 + 3.44666602e-03 2.28494930e+04 + 3.45501164e-03 2.27427564e+04 + 3.46337747e-03 2.26360576e+04 + 3.47176356e-03 2.25294021e+04 + 3.48016995e-03 2.24227955e+04 + 3.48859670e-03 2.23162431e+04 + 3.49704385e-03 2.22097504e+04 + 3.50551146e-03 2.21033229e+04 + 3.51399956e-03 2.19969659e+04 + 3.52250822e-03 2.18906848e+04 + 3.53103749e-03 2.17844848e+04 + 3.53958740e-03 2.16783714e+04 + 3.54815802e-03 2.15723498e+04 + 3.55674939e-03 2.14664251e+04 + 3.56536157e-03 2.13606027e+04 + 3.57399459e-03 2.12548876e+04 + 3.58264852e-03 2.11492850e+04 + 3.59132341e-03 2.10438000e+04 + 3.60001930e-03 2.09384376e+04 + 3.60873625e-03 2.08332029e+04 + 3.61747430e-03 2.07281009e+04 + 3.62623351e-03 2.06231364e+04 + 3.63501393e-03 2.05183144e+04 + 3.64381561e-03 2.04136397e+04 + 3.65263860e-03 2.03091172e+04 + 3.66148296e-03 2.02047515e+04 + 3.67034873e-03 2.01005475e+04 + 3.67923597e-03 1.99965099e+04 + 3.68814473e-03 1.98926432e+04 + 3.69707505e-03 1.97889520e+04 + 3.70602701e-03 1.96854410e+04 + 3.71500064e-03 1.95821145e+04 + 3.72399599e-03 1.94789771e+04 + 3.73301313e-03 1.93760332e+04 + 3.74205210e-03 1.92732871e+04 + 3.75111296e-03 1.91707430e+04 + 3.76019576e-03 1.90684054e+04 + 3.76930055e-03 1.89662783e+04 + 3.77842739e-03 1.88643659e+04 + 3.78757632e-03 1.87626724e+04 + 3.79674741e-03 1.86612017e+04 + 3.80594071e-03 1.85599579e+04 + 3.81515626e-03 1.84589450e+04 + 3.82439413e-03 1.83581667e+04 + 3.83365437e-03 1.82576271e+04 + 3.84293703e-03 1.81573298e+04 + 3.85224217e-03 1.80572785e+04 + 3.86156984e-03 1.79574771e+04 + 3.87092009e-03 1.78579290e+04 + 3.88029299e-03 1.77586379e+04 + 3.88968858e-03 1.76596073e+04 + 3.89910692e-03 1.75608406e+04 + 3.90854806e-03 1.74623413e+04 + 3.91801207e-03 1.73641127e+04 + 3.92749899e-03 1.72661580e+04 + 3.93700888e-03 1.71684807e+04 + 3.94654180e-03 1.70710837e+04 + 3.95609780e-03 1.69739703e+04 + 3.96567694e-03 1.68771436e+04 + 3.97527928e-03 1.67806064e+04 + 3.98490486e-03 1.66843619e+04 + 3.99455375e-03 1.65884130e+04 + 4.00422601e-03 1.64927623e+04 + 4.01392169e-03 1.63974129e+04 + 4.02364084e-03 1.63023674e+04 + 4.03338353e-03 1.62076284e+04 + 4.04314980e-03 1.61131987e+04 + 4.05293973e-03 1.60190807e+04 + 4.06275336e-03 1.59252771e+04 + 4.07259075e-03 1.58317903e+04 + 4.08245196e-03 1.57386226e+04 + 4.09233705e-03 1.56457764e+04 + 4.10224607e-03 1.55532541e+04 + 4.11217909e-03 1.54610579e+04 + 4.12213616e-03 1.53691899e+04 + 4.13211734e-03 1.52776523e+04 + 4.14212269e-03 1.51864472e+04 + 4.15215226e-03 1.50955765e+04 + 4.16220612e-03 1.50050424e+04 + 4.17228432e-03 1.49148466e+04 + 4.18238693e-03 1.48249911e+04 + 4.19251400e-03 1.47354777e+04 + 4.20266559e-03 1.46463081e+04 + 4.21284176e-03 1.45574841e+04 + 4.22304257e-03 1.44690072e+04 + 4.23326808e-03 1.43808792e+04 + 4.24351835e-03 1.42931015e+04 + 4.25379344e-03 1.42056756e+04 + 4.26409340e-03 1.41186031e+04 + 4.27441831e-03 1.40318853e+04 + 4.28476822e-03 1.39455236e+04 + 4.29514319e-03 1.38595192e+04 + 4.30554328e-03 1.37738735e+04 + 4.31596856e-03 1.36885876e+04 + 4.32641907e-03 1.36036627e+04 + 4.33689490e-03 1.35190999e+04 + 4.34739608e-03 1.34349002e+04 + 4.35792270e-03 1.33510647e+04 + 4.36847480e-03 1.32675944e+04 + 4.37905246e-03 1.31844902e+04 + 4.38965572e-03 1.31017529e+04 + 4.40028466e-03 1.30193834e+04 + 4.41093934e-03 1.29373824e+04 + 4.42161982e-03 1.28557508e+04 + 4.43232615e-03 1.27744891e+04 + 4.44305841e-03 1.26935982e+04 + 4.45381666e-03 1.26130785e+04 + 4.46460096e-03 1.25329306e+04 + 4.47541137e-03 1.24531551e+04 + 4.48624795e-03 1.23737525e+04 + 4.49711078e-03 1.22947232e+04 + 4.50799991e-03 1.22160676e+04 + 4.51891540e-03 1.21377861e+04 + 4.52985733e-03 1.20598789e+04 + 4.54082575e-03 1.19823465e+04 + 4.55182072e-03 1.19051890e+04 + 4.56284232e-03 1.18284066e+04 + 4.57389061e-03 1.17519996e+04 + 4.58496565e-03 1.16759680e+04 + 4.59606751e-03 1.16003119e+04 + 4.60719625e-03 1.15250315e+04 + 4.61835193e-03 1.14501266e+04 + 4.62953463e-03 1.13755975e+04 + 4.64074440e-03 1.13014439e+04 + 4.65198132e-03 1.12276658e+04 + 4.66324544e-03 1.11542631e+04 + 4.67453684e-03 1.10812356e+04 + 4.68585558e-03 1.10085832e+04 + 4.69720173e-03 1.09363057e+04 + 4.70857535e-03 1.08644028e+04 + 4.71997651e-03 1.07928743e+04 + 4.73140528e-03 1.07217198e+04 + 4.74286172e-03 1.06509390e+04 + 4.75434590e-03 1.05805316e+04 + 4.76585788e-03 1.05104971e+04 + 4.77739775e-03 1.04408352e+04 + 4.78896555e-03 1.03715453e+04 + 4.80056136e-03 1.03026271e+04 + 4.81218525e-03 1.02340800e+04 + 4.82383729e-03 1.01659035e+04 + 4.83551754e-03 1.00980970e+04 + 4.84722608e-03 1.00306599e+04 + 4.85896296e-03 9.96359170e+03 + 4.87072826e-03 9.89689169e+03 + 4.88252205e-03 9.83055922e+03 + 4.89434440e-03 9.76459362e+03 + 4.90619537e-03 9.69899418e+03 + 4.91807504e-03 9.63376018e+03 + 4.92998348e-03 9.56889087e+03 + 4.94192075e-03 9.50438546e+03 + 4.95388692e-03 9.44024318e+03 + 4.96588207e-03 9.37646321e+03 + 4.97790626e-03 9.31304470e+03 + 4.98995957e-03 9.24998682e+03 + 5.00204206e-03 9.18728867e+03 + 5.01415381e-03 9.12494936e+03 + 5.02629488e-03 9.06296799e+03 + 5.03846536e-03 9.00134361e+03 + 5.05066530e-03 8.94007529e+03 + 5.06289478e-03 8.87916204e+03 + 5.07515388e-03 8.81860288e+03 + 5.08744266e-03 8.75839682e+03 + 5.09976119e-03 8.69854282e+03 + 5.11210956e-03 8.63903987e+03 + 5.12448782e-03 8.57988689e+03 + 5.13689605e-03 8.52108284e+03 + 5.14933433e-03 8.46262662e+03 + 5.16180273e-03 8.40451714e+03 + 5.17430131e-03 8.34675329e+03 + 5.18683016e-03 8.28933395e+03 + 5.19938935e-03 8.23225798e+03 + 5.21197895e-03 8.17552422e+03 + 5.22459903e-03 8.11913152e+03 + 5.23724967e-03 8.06307870e+03 + 5.24993094e-03 8.00736457e+03 + 5.26264292e-03 7.95198793e+03 + 5.27538568e-03 7.89694757e+03 + 5.28815929e-03 7.84224228e+03 + 5.30096383e-03 7.78787081e+03 + 5.31379938e-03 7.73383192e+03 + 5.32666600e-03 7.68012437e+03 + 5.33956378e-03 7.62674688e+03 + 5.35249279e-03 7.57369820e+03 + 5.36545311e-03 7.52097703e+03 + 5.37844481e-03 7.46858209e+03 + 5.39146796e-03 7.41651208e+03 + 5.40452265e-03 7.36476570e+03 + 5.41760895e-03 7.31334163e+03 + 5.43072694e-03 7.26223855e+03 + 5.44387669e-03 7.21145513e+03 + 5.45705828e-03 7.16099004e+03 + 5.47027179e-03 7.11084194e+03 + 5.48351729e-03 7.06100947e+03 + 5.49679486e-03 7.01149128e+03 + 5.51010459e-03 6.96228602e+03 + 5.52344654e-03 6.91339232e+03 + 5.53682080e-03 6.86480880e+03 + 5.55022744e-03 6.81653409e+03 + 5.56366654e-03 6.76856681e+03 + 5.57713818e-03 6.72090557e+03 + 5.59064245e-03 6.67354898e+03 + 5.60417941e-03 6.62649566e+03 + 5.61774915e-03 6.57974420e+03 + 5.63135175e-03 6.53329320e+03 + 5.64498728e-03 6.48714125e+03 + 5.65865584e-03 6.44128696e+03 + 5.67235748e-03 6.39572890e+03 + 5.68609231e-03 6.35046567e+03 + 5.69986039e-03 6.30549585e+03 + 5.71366181e-03 6.26081801e+03 + 5.72749664e-03 6.21643075e+03 + 5.74136498e-03 6.17233264e+03 + 5.75526690e-03 6.12852225e+03 + 5.76920248e-03 6.08499816e+03 + 5.78317180e-03 6.04175895e+03 + 5.79717494e-03 5.99880317e+03 + 5.81121199e-03 5.95612942e+03 + 5.82528304e-03 5.91373625e+03 + 5.83938815e-03 5.87162225e+03 + 5.85352741e-03 5.82978596e+03 + 5.86770092e-03 5.78822598e+03 + 5.88190874e-03 5.74694086e+03 + 5.89615096e-03 5.70592918e+03 + 5.91042767e-03 5.66518950e+03 + 5.92473895e-03 5.62472040e+03 + 5.93908488e-03 5.58452045e+03 + 5.95346555e-03 5.54458821e+03 + 5.96788103e-03 5.50492227e+03 + 5.98233143e-03 5.46552119e+03 + 5.99681681e-03 5.42638355e+03 + 6.01133727e-03 5.38750792e+03 + 6.02589289e-03 5.34889289e+03 + 6.04048375e-03 5.31053703e+03 + 6.05510994e-03 5.27243892e+03 + 6.06977154e-03 5.23459715e+03 + 6.08446865e-03 5.19701029e+03 + 6.09920135e-03 5.15967695e+03 + 6.11396971e-03 5.12259570e+03 + 6.12877384e-03 5.08576513e+03 + 6.14361381e-03 5.04918384e+03 + 6.15848972e-03 5.01285043e+03 + 6.17340164e-03 4.97676350e+03 + 6.18834968e-03 4.94092164e+03 + 6.20333390e-03 4.90532346e+03 + 6.21835441e-03 4.86996757e+03 + 6.23341129e-03 4.83485258e+03 + 6.24850463e-03 4.79997709e+03 + 6.26363452e-03 4.76533974e+03 + 6.27880104e-03 4.73093914e+03 + 6.29400428e-03 4.69677390e+03 + 6.30924434e-03 4.66284267e+03 + 6.32452129e-03 4.62914407e+03 + 6.33983524e-03 4.59567673e+03 + 6.35518627e-03 4.56243929e+03 + 6.37057447e-03 4.52943040e+03 + 6.38599993e-03 4.49664869e+03 + 6.40146274e-03 4.46409283e+03 + 6.41696299e-03 4.43176145e+03 + 6.43250077e-03 4.39965323e+03 + 6.44807618e-03 4.36776683e+03 + 6.46368930e-03 4.33610090e+03 + 6.47934022e-03 4.30465412e+03 + 6.49502904e-03 4.27342517e+03 + 6.51075585e-03 4.24241273e+03 + 6.52652074e-03 4.21161547e+03 + 6.54232380e-03 4.18103209e+03 + 6.55816513e-03 4.15066128e+03 + 6.57404481e-03 4.12050174e+03 + 6.58996295e-03 4.09055217e+03 + 6.60591963e-03 4.06081128e+03 + 6.62191494e-03 4.03127778e+03 + 6.63794899e-03 4.00195039e+03 + 6.65402186e-03 3.97282782e+03 + 6.67013365e-03 3.94390882e+03 + 6.68628445e-03 3.91519210e+03 + 6.70247435e-03 3.88667640e+03 + 6.71870346e-03 3.85836048e+03 + 6.73497187e-03 3.83024306e+03 + 6.75127966e-03 3.80232291e+03 + 6.76762695e-03 3.77459879e+03 + 6.78401382e-03 3.74706945e+03 + 6.80044036e-03 3.71973366e+03 + 6.81690668e-03 3.69259019e+03 + 6.83341287e-03 3.66563784e+03 + 6.84995903e-03 3.63887536e+03 + 6.86654525e-03 3.61230157e+03 + 6.88317164e-03 3.58591524e+03 + 6.89983828e-03 3.55971519e+03 + 6.91654528e-03 3.53370021e+03 + 6.93329273e-03 3.50786911e+03 + 6.95008073e-03 3.48222072e+03 + 6.96690939e-03 3.45675384e+03 + 6.98377879e-03 3.43146732e+03 + 7.00068904e-03 3.40635998e+03 + 7.01764023e-03 3.38143066e+03 + 7.03463247e-03 3.35667820e+03 + 7.05166585e-03 3.33210145e+03 + 7.06874048e-03 3.30769926e+03 + 7.08585645e-03 3.28347051e+03 + 7.10301387e-03 3.25941404e+03 + 7.12021283e-03 3.23552874e+03 + 7.13745343e-03 3.21181347e+03 + 7.15473578e-03 3.18826713e+03 + 7.17205998e-03 3.16488859e+03 + 7.18942613e-03 3.14167676e+03 + 7.20683432e-03 3.11863053e+03 + 7.22428467e-03 3.09574881e+03 + 7.24177727e-03 3.07303050e+03 + 7.25931222e-03 3.05047453e+03 + 7.27688964e-03 3.02807981e+03 + 7.29450961e-03 3.00584528e+03 + 7.31217225e-03 2.98376986e+03 + 7.32987766e-03 2.96185249e+03 + 7.34762594e-03 2.94009213e+03 + 7.36541719e-03 2.91848771e+03 + 7.38325153e-03 2.89703819e+03 + 7.40112904e-03 2.87574254e+03 + 7.41904985e-03 2.85459972e+03 + 7.43701404e-03 2.83360870e+03 + 7.45502174e-03 2.81276846e+03 + 7.47307304e-03 2.79207799e+03 + 7.49116804e-03 2.77153628e+03 + 7.50930686e-03 2.75114231e+03 + 7.52748960e-03 2.73089509e+03 + 7.54571637e-03 2.71079363e+03 + 7.56398728e-03 2.69083693e+03 + 7.58230242e-03 2.67102402e+03 + 7.60066191e-03 2.65135391e+03 + 7.61906585e-03 2.63182564e+03 + 7.63751436e-03 2.61243824e+03 + 7.65600754e-03 2.59319074e+03 + 7.67454550e-03 2.57408220e+03 + 7.69312834e-03 2.55511166e+03 + 7.71175618e-03 2.53627817e+03 + 7.73042913e-03 2.51758081e+03 + 7.74914728e-03 2.49901863e+03 + 7.76791077e-03 2.48059071e+03 + 7.78671968e-03 2.46229613e+03 + 7.80557414e-03 2.44413397e+03 + 7.82447425e-03 2.42610331e+03 + 7.84342013e-03 2.40820325e+03 + 7.86241188e-03 2.39043290e+03 + 7.88144961e-03 2.37279134e+03 + 7.90053345e-03 2.35527771e+03 + 7.91966349e-03 2.33789110e+03 + 7.93883985e-03 2.32063064e+03 + 7.95806265e-03 2.30349546e+03 + 7.97733199e-03 2.28648468e+03 + 7.99664799e-03 2.26959745e+03 + 8.01601076e-03 2.25283291e+03 + 8.03542041e-03 2.23619019e+03 + 8.05487707e-03 2.21966846e+03 + 8.07438083e-03 2.20326688e+03 + 8.09393182e-03 2.18698459e+03 + 8.11353015e-03 2.17082078e+03 + 8.13317593e-03 2.15477461e+03 + 8.15286929e-03 2.13884526e+03 + 8.17261033e-03 2.12303192e+03 + 8.19239916e-03 2.10733377e+03 + 8.21223592e-03 2.09175001e+03 + 8.23212071e-03 2.07627984e+03 + 8.25205364e-03 2.06092245e+03 + 8.27203484e-03 2.04567705e+03 + 8.29206442e-03 2.03054287e+03 + 8.31214250e-03 2.01551911e+03 + 8.33226920e-03 2.00060501e+03 + 8.35244463e-03 1.98579978e+03 + 8.37266891e-03 1.97110266e+03 + 8.39294216e-03 1.95651289e+03 + 8.41326450e-03 1.94202972e+03 + 8.43363605e-03 1.92765238e+03 + 8.45405693e-03 1.91338013e+03 + 8.47452725e-03 1.89921224e+03 + 8.49504714e-03 1.88514795e+03 + 8.51561672e-03 1.87118654e+03 + 8.53623610e-03 1.85732728e+03 + 8.55690540e-03 1.84356945e+03 + 8.57762476e-03 1.82991232e+03 + 8.59839428e-03 1.81635518e+03 + 8.61921410e-03 1.80289732e+03 + 8.64008433e-03 1.78953804e+03 + 8.66100509e-03 1.77627663e+03 + 8.68197651e-03 1.76311241e+03 + 8.70299871e-03 1.75004467e+03 + 8.72407181e-03 1.73707273e+03 + 8.74519593e-03 1.72419591e+03 + 8.76637121e-03 1.71141352e+03 + 8.78759776e-03 1.69872491e+03 + 8.80887570e-03 1.68612939e+03 + 8.83020517e-03 1.67362630e+03 + 8.85158628e-03 1.66121499e+03 + 8.87301917e-03 1.64889479e+03 + 8.89450395e-03 1.63666506e+03 + 8.91604075e-03 1.62452515e+03 + 8.93762970e-03 1.61247441e+03 + 8.95927093e-03 1.60051220e+03 + 8.98096456e-03 1.58863790e+03 + 9.00271071e-03 1.57685087e+03 + 9.02450952e-03 1.56515049e+03 + 9.04636112e-03 1.55353612e+03 + 9.06826562e-03 1.54200717e+03 + 9.09022317e-03 1.53056301e+03 + 9.11223388e-03 1.51920303e+03 + 9.13429788e-03 1.50792663e+03 + 9.15641531e-03 1.49673321e+03 + 9.17858630e-03 1.48562217e+03 + 9.20081097e-03 1.47459292e+03 + 9.22308945e-03 1.46364486e+03 + 9.24542188e-03 1.45277742e+03 + 9.26780838e-03 1.44199001e+03 + 9.29024909e-03 1.43128206e+03 + 9.31274414e-03 1.42065299e+03 + 9.33529365e-03 1.41010223e+03 + 9.35789777e-03 1.39962922e+03 + 9.38055661e-03 1.38923340e+03 + 9.40327032e-03 1.37891421e+03 + 9.42603904e-03 1.36867109e+03 + 9.44886288e-03 1.35850350e+03 + 9.47174198e-03 1.34841089e+03 + 9.49467649e-03 1.33839271e+03 + 9.51766653e-03 1.32844843e+03 + 9.54071223e-03 1.31857752e+03 + 9.56381374e-03 1.30877943e+03 + 9.58697118e-03 1.29905365e+03 + 9.61018470e-03 1.28939965e+03 + 9.63345443e-03 1.27981691e+03 + 9.65678049e-03 1.27030491e+03 + 9.68016304e-03 1.26086313e+03 + 9.70360221e-03 1.25149108e+03 + 9.72709814e-03 1.24218824e+03 + 9.75065095e-03 1.23295412e+03 + 9.77426079e-03 1.22378820e+03 + 9.79792781e-03 1.21469000e+03 + 9.82165213e-03 1.20565902e+03 + 9.84543389e-03 1.19669478e+03 + 9.86927324e-03 1.18779678e+03 + 9.89317031e-03 1.17896455e+03 + 9.91712524e-03 1.17019761e+03 + 9.94113818e-03 1.16149549e+03 + 9.96520927e-03 1.15285770e+03 + 9.98933863e-03 1.14428379e+03 + 1.00135264e-02 1.13577329e+03 + 1.00377728e-02 1.12732572e+03 + 1.00620779e-02 1.11894065e+03 + 1.00864418e-02 1.11061760e+03 + 1.01108647e-02 1.10235614e+03 + 1.01353467e-02 1.09415580e+03 + 1.01598881e-02 1.08601614e+03 + 1.01844888e-02 1.07793672e+03 + 1.02091492e-02 1.06991710e+03 + 1.02338692e-02 1.06195684e+03 + 1.02586491e-02 1.05405552e+03 + 1.02834890e-02 1.04621269e+03 + 1.03083890e-02 1.03842793e+03 + 1.03333493e-02 1.03070081e+03 + 1.03583701e-02 1.02303092e+03 + 1.03834515e-02 1.01541784e+03 + 1.04085935e-02 1.00786115e+03 + 1.04337965e-02 1.00036043e+03 + 1.04590605e-02 9.92915280e+02 + 1.04843856e-02 9.85525292e+02 + 1.05097721e-02 9.78190060e+02 + 1.05352201e-02 9.70909184e+02 + 1.05607296e-02 9.63682265e+02 + 1.05863010e-02 9.56508908e+02 + 1.06119342e-02 9.49388721e+02 + 1.06376296e-02 9.42321313e+02 + 1.06633871e-02 9.35306297e+02 + 1.06892070e-02 9.28343290e+02 + 1.07150894e-02 9.21431909e+02 + 1.07410345e-02 9.14571776e+02 + 1.07670425e-02 9.07762515e+02 + 1.07931134e-02 9.01003752e+02 + 1.08192474e-02 8.94295117e+02 + 1.08454447e-02 8.87636241e+02 + 1.08717054e-02 8.81026759e+02 + 1.08980297e-02 8.74466308e+02 + 1.09244178e-02 8.67954528e+02 + 1.09508698e-02 8.61491062e+02 + 1.09773858e-02 8.55075553e+02 + 1.10039660e-02 8.48707650e+02 + 1.10306105e-02 8.42387003e+02 + 1.10573196e-02 8.36113263e+02 + 1.10840934e-02 8.29886087e+02 + 1.11109320e-02 8.23705131e+02 + 1.11378356e-02 8.17570055e+02 + 1.11648043e-02 8.11480522e+02 + 1.11918383e-02 8.05436197e+02 + 1.12189378e-02 7.99436746e+02 + 1.12461029e-02 7.93481840e+02 + 1.12733337e-02 7.87571150e+02 + 1.13006306e-02 7.81704351e+02 + 1.13279935e-02 7.75881119e+02 + 1.13554226e-02 7.70101133e+02 + 1.13829182e-02 7.64364075e+02 + 1.14104803e-02 7.58669629e+02 + 1.14381092e-02 7.53017479e+02 + 1.14658050e-02 7.47407316e+02 + 1.14935679e-02 7.41838828e+02 + 1.15213980e-02 7.36311709e+02 + 1.15492954e-02 7.30825653e+02 + 1.15772604e-02 7.25380359e+02 + 1.16052932e-02 7.19975524e+02 + 1.16333938e-02 7.14610850e+02 + 1.16615624e-02 7.09286042e+02 + 1.16897993e-02 7.04000805e+02 + 1.17181045e-02 6.98754847e+02 + 1.17464782e-02 6.93547877e+02 + 1.17749207e-02 6.88379609e+02 + 1.18034320e-02 6.83249756e+02 + 1.18320124e-02 6.78158035e+02 + 1.18606620e-02 6.73104163e+02 + 1.18893809e-02 6.68087862e+02 + 1.19181694e-02 6.63108855e+02 + 1.19470276e-02 6.58166864e+02 + 1.19759556e-02 6.53261617e+02 + 1.20049538e-02 6.48392843e+02 + 1.20340221e-02 6.43560271e+02 + 1.20631608e-02 6.38763635e+02 + 1.20923701e-02 6.34002667e+02 + 1.21216500e-02 6.29277106e+02 + 1.21510009e-02 6.24586689e+02 + 1.21804229e-02 6.19931156e+02 + 1.22099161e-02 6.15310249e+02 + 1.22394807e-02 6.10723712e+02 + 1.22691169e-02 6.06171290e+02 + 1.22988249e-02 6.01652732e+02 + 1.23286048e-02 5.97167787e+02 + 1.23584568e-02 5.92716206e+02 + 1.23883810e-02 5.88297742e+02 + 1.24183778e-02 5.83912150e+02 + 1.24484472e-02 5.79559187e+02 + 1.24785893e-02 5.75238611e+02 + 1.25088045e-02 5.70950183e+02 + 1.25390928e-02 5.66693663e+02 + 1.25694545e-02 5.62468817e+02 + 1.25998897e-02 5.58275410e+02 + 1.26303986e-02 5.54113208e+02 + 1.26609813e-02 5.49981981e+02 + 1.26916381e-02 5.45881500e+02 + 1.27223692e-02 5.41811535e+02 + 1.27531746e-02 5.37771862e+02 + 1.27840546e-02 5.33762256e+02 + 1.28150095e-02 5.29782494e+02 + 1.28460392e-02 5.25832355e+02 + 1.28771441e-02 5.21911619e+02 + 1.29083243e-02 5.18020068e+02 + 1.29395800e-02 5.14157487e+02 + 1.29709114e-02 5.10323660e+02 + 1.30023187e-02 5.06518375e+02 + 1.30338020e-02 5.02741419e+02 + 1.30653615e-02 4.98992582e+02 + 1.30969975e-02 4.95271656e+02 + 1.31287100e-02 4.91578435e+02 + 1.31604994e-02 4.87912712e+02 + 1.31923657e-02 4.84274283e+02 + 1.32243092e-02 4.80662947e+02 + 1.32563300e-02 4.77078502e+02 + 1.32884284e-02 4.73520748e+02 + 1.33206044e-02 4.69989488e+02 + 1.33528584e-02 4.66484526e+02 + 1.33851905e-02 4.63005665e+02 + 1.34176009e-02 4.59552712e+02 + 1.34500898e-02 4.56125476e+02 + 1.34826573e-02 4.52723764e+02 + 1.35153037e-02 4.49347388e+02 + 1.35480291e-02 4.45996160e+02 + 1.35808337e-02 4.42669892e+02 + 1.36137178e-02 4.39368400e+02 + 1.36466816e-02 4.36091500e+02 + 1.36797251e-02 4.32839009e+02 + 1.37128487e-02 4.29610746e+02 + 1.37460524e-02 4.26406531e+02 + 1.37793366e-02 4.23226185e+02 + 1.38127013e-02 4.20069531e+02 + 1.38461469e-02 4.16936394e+02 + 1.38796734e-02 4.13826598e+02 + 1.39132811e-02 4.10739970e+02 + 1.39469701e-02 4.07676338e+02 + 1.39807408e-02 4.04635531e+02 + 1.40145932e-02 4.01617380e+02 + 1.40485276e-02 3.98621716e+02 + 1.40825441e-02 3.95648372e+02 + 1.41166431e-02 3.92697183e+02 + 1.41508246e-02 3.89767984e+02 + 1.41850888e-02 3.86860611e+02 + 1.42194360e-02 3.83974902e+02 + 1.42538664e-02 3.81110696e+02 + 1.42883802e-02 3.78267834e+02 + 1.43229775e-02 3.75446156e+02 + 1.43576586e-02 3.72645505e+02 + 1.43924237e-02 3.69865726e+02 + 1.44272729e-02 3.67106662e+02 + 1.44622065e-02 3.64368161e+02 + 1.44972248e-02 3.61650068e+02 + 1.45323278e-02 3.58952232e+02 + 1.45675158e-02 3.56274503e+02 + 1.46027890e-02 3.53616731e+02 + 1.46381476e-02 3.50978768e+02 + 1.46735919e-02 3.48360466e+02 + 1.47091219e-02 3.45761679e+02 + 1.47447380e-02 3.43182263e+02 + 1.47804403e-02 3.40622072e+02 + 1.48162291e-02 3.38080965e+02 + 1.48521046e-02 3.35558799e+02 + 1.48880669e-02 3.33055433e+02 + 1.49241162e-02 3.30570727e+02 + 1.49602529e-02 3.28104543e+02 + 1.49964771e-02 3.25656742e+02 + 1.50327890e-02 3.23227189e+02 + 1.50691888e-02 3.20815747e+02 + 1.51056767e-02 3.18422282e+02 + 1.51422530e-02 3.16046659e+02 + 1.51789179e-02 3.13688747e+02 + 1.52156715e-02 3.11348412e+02 + 1.52525141e-02 3.09025526e+02 + 1.52894460e-02 3.06719957e+02 + 1.53264673e-02 3.04431576e+02 + 1.53635782e-02 3.02160257e+02 + 1.54007789e-02 2.99905872e+02 + 1.54380698e-02 2.97668294e+02 + 1.54754509e-02 2.95447399e+02 + 1.55129226e-02 2.93243063e+02 + 1.55504849e-02 2.91055163e+02 + 1.55881383e-02 2.88883575e+02 + 1.56258828e-02 2.86728179e+02 + 1.56637187e-02 2.84588854e+02 + 1.57016462e-02 2.82465481e+02 + 1.57396656e-02 2.80357940e+02 + 1.57777770e-02 2.78266115e+02 + 1.58159807e-02 2.76189887e+02 + 1.58542768e-02 2.74129141e+02 + 1.58926658e-02 2.72083761e+02 + 1.59311477e-02 2.70053634e+02 + 1.59697227e-02 2.68038645e+02 + 1.60083912e-02 2.66038682e+02 + 1.60471533e-02 2.64053633e+02 + 1.60860092e-02 2.62083387e+02 + 1.61249592e-02 2.60127834e+02 + 1.61640036e-02 2.58186864e+02 + 1.62031425e-02 2.56260368e+02 + 1.62423761e-02 2.54348239e+02 + 1.62817048e-02 2.52450371e+02 + 1.63211287e-02 2.50566656e+02 + 1.63606480e-02 2.48696989e+02 + 1.64002630e-02 2.46841266e+02 + 1.64399740e-02 2.44999383e+02 + 1.64797811e-02 2.43171236e+02 + 1.65196846e-02 2.41356724e+02 + 1.65596847e-02 2.39555744e+02 + 1.65997817e-02 2.37768197e+02 + 1.66399758e-02 2.35993982e+02 + 1.66802671e-02 2.34232999e+02 + 1.67206561e-02 2.32485151e+02 + 1.67611428e-02 2.30750339e+02 + 1.68017276e-02 2.29028466e+02 + 1.68424106e-02 2.27319436e+02 + 1.68831922e-02 2.25623153e+02 + 1.69240725e-02 2.23939522e+02 + 1.69650518e-02 2.22268448e+02 + 1.70061303e-02 2.20609840e+02 + 1.70473083e-02 2.18963602e+02 + 1.70885860e-02 2.17329644e+02 + 1.71299636e-02 2.15707874e+02 + 1.71714414e-02 2.14098200e+02 + 1.72130197e-02 2.12500534e+02 + 1.72546986e-02 2.10914785e+02 + 1.72964785e-02 2.09340864e+02 + 1.73383595e-02 2.07778684e+02 + 1.73803419e-02 2.06228157e+02 + 1.74224260e-02 2.04689196e+02 + 1.74646120e-02 2.03161714e+02 + 1.75069001e-02 2.01645627e+02 + 1.75492906e-02 2.00140850e+02 + 1.75917838e-02 1.98647298e+02 + 1.76343798e-02 1.97164887e+02 + 1.76770790e-02 1.95693535e+02 + 1.77198816e-02 1.94233158e+02 + 1.77627878e-02 1.92783676e+02 + 1.78057980e-02 1.91345007e+02 + 1.78489122e-02 1.89917071e+02 + 1.78921309e-02 1.88499787e+02 + 1.79354542e-02 1.87093076e+02 + 1.79788824e-02 1.85696859e+02 + 1.80224158e-02 1.84311059e+02 + 1.80660545e-02 1.82935596e+02 + 1.81097990e-02 1.81570396e+02 + 1.81536493e-02 1.80215379e+02 + 1.81976059e-02 1.78870472e+02 + 1.82416688e-02 1.77535599e+02 + 1.82858385e-02 1.76210684e+02 + 1.83301151e-02 1.74895654e+02 + 1.83744989e-02 1.73590434e+02 + 1.84189902e-02 1.72294953e+02 + 1.84635892e-02 1.71009136e+02 + 1.85082963e-02 1.69732913e+02 + 1.85531115e-02 1.68466211e+02 + 1.85980353e-02 1.67208959e+02 + 1.86430679e-02 1.65961088e+02 + 1.86882094e-02 1.64722527e+02 + 1.87334603e-02 1.63493207e+02 + 1.87788208e-02 1.62273058e+02 + 1.88242911e-02 1.61062013e+02 + 1.88698715e-02 1.59860004e+02 + 1.89155623e-02 1.58666963e+02 + 1.89613637e-02 1.57482823e+02 + 1.90072760e-02 1.56307519e+02 + 1.90532995e-02 1.55140983e+02 + 1.90994344e-02 1.53983151e+02 + 1.91456810e-02 1.52833958e+02 + 1.91920396e-02 1.51693340e+02 + 1.92385105e-02 1.50561232e+02 + 1.92850938e-02 1.49437571e+02 + 1.93317900e-02 1.48322294e+02 + 1.93785992e-02 1.47215338e+02 + 1.94255218e-02 1.46116642e+02 + 1.94725580e-02 1.45026144e+02 + 1.95197081e-02 1.43943783e+02 + 1.95669724e-02 1.42869497e+02 + 1.96143511e-02 1.41803228e+02 + 1.96618445e-02 1.40744915e+02 + 1.97094529e-02 1.39694498e+02 + 1.97571766e-02 1.38651919e+02 + 1.98050159e-02 1.37617120e+02 + 1.98529710e-02 1.36590042e+02 + 1.99010422e-02 1.35570628e+02 + 1.99492298e-02 1.34558820e+02 + 1.99975340e-02 1.33554563e+02 + 2.00459553e-02 1.32557799e+02 + 2.00944938e-02 1.31568472e+02 + 2.01431498e-02 1.30586528e+02 + 2.01919236e-02 1.29611912e+02 + 2.02408156e-02 1.28644567e+02 + 2.02898259e-02 1.27684441e+02 + 2.03389549e-02 1.26731480e+02 + 2.03882028e-02 1.25785629e+02 + 2.04375700e-02 1.24846837e+02 + 2.04870568e-02 1.23915050e+02 + 2.05366633e-02 1.22990215e+02 + 2.05863900e-02 1.22072283e+02 + 2.06362371e-02 1.21161200e+02 + 2.06862048e-02 1.20256915e+02 + 2.07362936e-02 1.19359379e+02 + 2.07865037e-02 1.18468540e+02 + 2.08368353e-02 1.17584349e+02 + 2.08872888e-02 1.16706756e+02 + 2.09378644e-02 1.15835711e+02 + 2.09885626e-02 1.14971167e+02 + 2.10393835e-02 1.14113075e+02 + 2.10903274e-02 1.13261385e+02 + 2.11413947e-02 1.12416052e+02 + 2.11925856e-02 1.11577026e+02 + 2.12439005e-02 1.10744262e+02 + 2.12953397e-02 1.09917712e+02 + 2.13469034e-02 1.09097331e+02 + 2.13985919e-02 1.08283071e+02 + 2.14504056e-02 1.07474888e+02 + 2.15023448e-02 1.06672736e+02 + 2.15544098e-02 1.05876570e+02 + 2.16066008e-02 1.05086346e+02 + 2.16589181e-02 1.04302019e+02 + 2.17113622e-02 1.03523545e+02 + 2.17639332e-02 1.02750880e+02 + 2.18166316e-02 1.01983981e+02 + 2.18694575e-02 1.01222806e+02 + 2.19224114e-02 1.00467311e+02 + 2.19754934e-02 9.97174540e+01 + 2.20287040e-02 9.89731930e+01 + 2.20820435e-02 9.82344863e+01 + 2.21355121e-02 9.75012924e+01 + 2.21891101e-02 9.67735702e+01 + 2.22428380e-02 9.60512788e+01 + 2.22966959e-02 9.53343777e+01 + 2.23506843e-02 9.46228268e+01 + 2.24048033e-02 9.39165861e+01 + 2.24590534e-02 9.32156159e+01 + 2.25134349e-02 9.25198771e+01 + 2.25679481e-02 9.18293304e+01 + 2.26225932e-02 9.11439373e+01 + 2.26773707e-02 9.04636592e+01 + 2.27322808e-02 8.97884580e+01 + 2.27873238e-02 8.91182958e+01 + 2.28425002e-02 8.84531351e+01 + 2.28978101e-02 8.77929384e+01 + 2.29532539e-02 8.71376688e+01 + 2.30088321e-02 8.64872894e+01 + 2.30645447e-02 8.58417639e+01 + 2.31203923e-02 8.52010560e+01 + 2.31763751e-02 8.45651298e+01 + 2.32324935e-02 8.39339495e+01 + 2.32887478e-02 8.33074798e+01 + 2.33451382e-02 8.26856855e+01 + 2.34016652e-02 8.20685318e+01 + 2.34583291e-02 8.14559839e+01 + 2.35151302e-02 8.08480076e+01 + 2.35720688e-02 8.02445687e+01 + 2.36291453e-02 7.96456334e+01 + 2.36863600e-02 7.90511681e+01 + 2.37437132e-02 7.84611394e+01 + 2.38012053e-02 7.78755143e+01 + 2.38588366e-02 7.72942597e+01 + 2.39166075e-02 7.67173433e+01 + 2.39745182e-02 7.61447325e+01 + 2.40325691e-02 7.55763953e+01 + 2.40907607e-02 7.50122997e+01 + 2.41490931e-02 7.44524141e+01 + 2.42075668e-02 7.38967072e+01 + 2.42661820e-02 7.33451476e+01 + 2.43249392e-02 7.27977046e+01 + 2.43838387e-02 7.22543473e+01 + 2.44428807e-02 7.17150452e+01 + 2.45020658e-02 7.11797682e+01 + 2.45613941e-02 7.06484861e+01 + 2.46208661e-02 7.01211692e+01 + 2.46804821e-02 6.95977879e+01 + 2.47402425e-02 6.90783128e+01 + 2.48001475e-02 6.85627148e+01 + 2.48601976e-02 6.80509649e+01 + 2.49203931e-02 6.75430344e+01 + 2.49807344e-02 6.70388948e+01 + 2.50412218e-02 6.65385178e+01 + 2.51018556e-02 6.60418754e+01 + 2.51626362e-02 6.55489397e+01 + 2.52235641e-02 6.50596830e+01 + 2.52846394e-02 6.45740779e+01 + 2.53458627e-02 6.40920970e+01 + 2.54072341e-02 6.36137135e+01 + 2.54687542e-02 6.31389004e+01 + 2.55304233e-02 6.26676310e+01 + 2.55922416e-02 6.21998790e+01 + 2.56542097e-02 6.17356181e+01 + 2.57163278e-02 6.12748223e+01 + 2.57785963e-02 6.08174656e+01 + 2.58410156e-02 6.03635225e+01 + 2.59035860e-02 5.99129673e+01 + 2.59663079e-02 5.94657750e+01 + 2.60291817e-02 5.90219203e+01 + 2.60922078e-02 5.85813784e+01 + 2.61553864e-02 5.81441245e+01 + 2.62187180e-02 5.77101341e+01 + 2.62822030e-02 5.72793829e+01 + 2.63458417e-02 5.68518466e+01 + 2.64096345e-02 5.64275013e+01 + 2.64735818e-02 5.60063232e+01 + 2.65376839e-02 5.55882886e+01 + 2.66019412e-02 5.51733741e+01 + 2.66663541e-02 5.47615564e+01 + 2.67309229e-02 5.43528124e+01 + 2.67956481e-02 5.39471191e+01 + 2.68605301e-02 5.35444537e+01 + 2.69255691e-02 5.31447938e+01 + 2.69907656e-02 5.27481168e+01 + 2.70561200e-02 5.23544005e+01 + 2.71216326e-02 5.19636228e+01 + 2.71873039e-02 5.15757617e+01 + 2.72531342e-02 5.11907956e+01 + 2.73191239e-02 5.08087027e+01 + 2.73852733e-02 5.04294617e+01 + 2.74515829e-02 5.00530513e+01 + 2.75180531e-02 4.96794503e+01 + 2.75846843e-02 4.93086377e+01 + 2.76514767e-02 4.89405929e+01 + 2.77184309e-02 4.85752950e+01 + 2.77855473e-02 4.82127237e+01 + 2.78528261e-02 4.78528585e+01 + 2.79202678e-02 4.74956792e+01 + 2.79878729e-02 4.71411659e+01 + 2.80556416e-02 4.67892987e+01 + 2.81235745e-02 4.64400576e+01 + 2.81916718e-02 4.60934233e+01 + 2.82599340e-02 4.57493762e+01 + 2.83283615e-02 4.54078970e+01 + 2.83969547e-02 4.50689666e+01 + 2.84657139e-02 4.47325658e+01 + 2.85346397e-02 4.43986760e+01 + 2.86037324e-02 4.40672782e+01 + 2.86729923e-02 4.37383539e+01 + 2.87424200e-02 4.34118847e+01 + 2.88120158e-02 4.30878522e+01 + 2.88817801e-02 4.27662383e+01 + 2.89517133e-02 4.24470248e+01 + 2.90218158e-02 4.21301940e+01 + 2.90920881e-02 4.18157279e+01 + 2.91625305e-02 4.15036089e+01 + 2.92331435e-02 4.11938196e+01 + 2.93039275e-02 4.08863425e+01 + 2.93748829e-02 4.05811605e+01 + 2.94460101e-02 4.02782562e+01 + 2.95173095e-02 3.99776128e+01 + 2.95887816e-02 3.96792134e+01 + 2.96604267e-02 3.93830413e+01 + 2.97322453e-02 3.90890797e+01 + 2.98042378e-02 3.87973123e+01 + 2.98764046e-02 3.85077226e+01 + 2.99487462e-02 3.82202943e+01 + 3.00212629e-02 3.79350115e+01 + 3.00939552e-02 3.76518579e+01 + 3.01668235e-02 3.73708179e+01 + 3.02398683e-02 3.70918754e+01 + 3.03130899e-02 3.68150151e+01 + 3.03864888e-02 3.65402211e+01 + 3.04600655e-02 3.62674783e+01 + 3.05338203e-02 3.59967712e+01 + 3.06077537e-02 3.57280846e+01 + 3.06818661e-02 3.54614035e+01 + 3.07561580e-02 3.51967130e+01 + 3.08306298e-02 3.49339980e+01 + 3.09052818e-02 3.46732440e+01 + 3.09801147e-02 3.44144363e+01 + 3.10551287e-02 3.41575603e+01 + 3.11303244e-02 3.39026016e+01 + 3.12057021e-02 3.36495459e+01 + 3.12812624e-02 3.33983791e+01 + 3.13570056e-02 3.31490869e+01 + 3.14329322e-02 3.29016555e+01 + 3.15090427e-02 3.26560709e+01 + 3.15853375e-02 3.24123194e+01 + 3.16618170e-02 3.21703872e+01 + 3.17384817e-02 3.19302609e+01 + 3.18153320e-02 3.16919268e+01 + 3.18923684e-02 3.14553717e+01 + 3.19695913e-02 3.12205822e+01 + 3.20470012e-02 3.09875453e+01 + 3.21245986e-02 3.07562477e+01 + 3.22023838e-02 3.05266765e+01 + 3.22803574e-02 3.02988189e+01 + 3.23585198e-02 3.00726620e+01 + 3.24368715e-02 2.98481932e+01 + 3.25154128e-02 2.96253998e+01 + 3.25941444e-02 2.94042694e+01 + 3.26730666e-02 2.91847894e+01 + 3.27521799e-02 2.89669478e+01 + 3.28314847e-02 2.87507321e+01 + 3.29109816e-02 2.85361302e+01 + 3.29906709e-02 2.83231302e+01 + 3.30705533e-02 2.81117200e+01 + 3.31506290e-02 2.79018878e+01 + 3.32308986e-02 2.76936218e+01 + 3.33113626e-02 2.74869103e+01 + 3.33920215e-02 2.72817417e+01 + 3.34728756e-02 2.70781045e+01 + 3.35539255e-02 2.68759873e+01 + 3.36351717e-02 2.66753788e+01 + 3.37166146e-02 2.64762676e+01 + 3.37982546e-02 2.62786425e+01 + 3.38800924e-02 2.60824926e+01 + 3.39621283e-02 2.58878068e+01 + 3.40443629e-02 2.56945741e+01 + 3.41267966e-02 2.55027837e+01 + 3.42094299e-02 2.53124249e+01 + 3.42922633e-02 2.51234869e+01 + 3.43752972e-02 2.49359592e+01 + 3.44585322e-02 2.47498312e+01 + 3.45419687e-02 2.45650925e+01 + 3.46256073e-02 2.43817327e+01 + 3.47094484e-02 2.41997416e+01 + 3.47934925e-02 2.40191088e+01 + 3.48777401e-02 2.38398244e+01 + 3.49621917e-02 2.36618781e+01 + 3.50468478e-02 2.34852600e+01 + 3.51317088e-02 2.33099603e+01 + 3.52167754e-02 2.31359690e+01 + 3.53020479e-02 2.29632764e+01 + 3.53875269e-02 2.27918728e+01 + 3.54732129e-02 2.26217485e+01 + 3.55591063e-02 2.24528942e+01 + 3.56452078e-02 2.22853001e+01 + 3.57315177e-02 2.21189571e+01 + 3.58180366e-02 2.19538556e+01 + 3.59047650e-02 2.17899865e+01 + 3.59917033e-02 2.16273405e+01 + 3.60788523e-02 2.14659085e+01 + 3.61662122e-02 2.13056815e+01 + 3.62537836e-02 2.11466505e+01 + 3.63415671e-02 2.09888065e+01 + 3.64295632e-02 2.08321406e+01 + 3.65177723e-02 2.06766442e+01 + 3.66061950e-02 2.05223084e+01 + 3.66948318e-02 2.03691246e+01 + 3.67836832e-02 2.02170841e+01 + 3.68727498e-02 2.00661786e+01 + 3.69620320e-02 1.99163994e+01 + 3.70515304e-02 1.97677382e+01 + 3.71412456e-02 1.96201866e+01 + 3.72311779e-02 1.94737364e+01 + 3.73213280e-02 1.93283793e+01 + 3.74116964e-02 1.91841072e+01 + 3.75022837e-02 1.90409120e+01 + 3.75930902e-02 1.88987856e+01 + 3.76841167e-02 1.87577200e+01 + 3.77753635e-02 1.86177074e+01 + 3.78668313e-02 1.84787399e+01 + 3.79585206e-02 1.83408097e+01 + 3.80504318e-02 1.82039090e+01 + 3.81425657e-02 1.80680302e+01 + 3.82349226e-02 1.79331655e+01 + 3.83275031e-02 1.77993076e+01 + 3.84203078e-02 1.76664488e+01 + 3.85133373e-02 1.75345816e+01 + 3.86065919e-02 1.74036988e+01 + 3.87000724e-02 1.72737929e+01 + 3.87937793e-02 1.71448566e+01 + 3.88877130e-02 1.70168827e+01 + 3.89818742e-02 1.68898641e+01 + 3.90762634e-02 1.67637935e+01 + 3.91708811e-02 1.66386640e+01 + 3.92657280e-02 1.65144685e+01 + 3.93608045e-02 1.63912000e+01 + 3.94561112e-02 1.62688516e+01 + 3.95516486e-02 1.61474164e+01 + 3.96474175e-02 1.60268876e+01 + 3.97434182e-02 1.59072585e+01 + 3.98396513e-02 1.57885224e+01 + 3.99361175e-02 1.56706725e+01 + 4.00328172e-02 1.55537023e+01 + 4.01297511e-02 1.54376051e+01 + 4.02269197e-02 1.53223746e+01 + 4.03243236e-02 1.52080041e+01 + 4.04219634e-02 1.50944873e+01 + 4.05198395e-02 1.49818179e+01 + 4.06179527e-02 1.48699894e+01 + 4.07163034e-02 1.47589956e+01 + 4.08148923e-02 1.46488304e+01 + 4.09137199e-02 1.45394874e+01 + 4.10127867e-02 1.44309606e+01 + 4.11120935e-02 1.43232439e+01 + 4.12116407e-02 1.42163311e+01 + 4.13114290e-02 1.41102164e+01 + 4.14114588e-02 1.40048938e+01 + 4.15117309e-02 1.39003573e+01 + 4.16122458e-02 1.37966011e+01 + 4.17130041e-02 1.36936194e+01 + 4.18140063e-02 1.35914064e+01 + 4.19152531e-02 1.34899562e+01 + 4.20167450e-02 1.33892634e+01 + 4.21184827e-02 1.32893221e+01 + 4.22204668e-02 1.31901268e+01 + 4.23226978e-02 1.30916720e+01 + 4.24251763e-02 1.29939520e+01 + 4.25279030e-02 1.28969614e+01 + 4.26308784e-02 1.28006948e+01 + 4.27341031e-02 1.27051468e+01 + 4.28375778e-02 1.26103119e+01 + 4.29413030e-02 1.25161850e+01 + 4.30452794e-02 1.24227606e+01 + 4.31495076e-02 1.23300335e+01 + 4.32539881e-02 1.22379986e+01 + 4.33587216e-02 1.21466507e+01 + 4.34637087e-02 1.20559846e+01 + 4.35689500e-02 1.19659952e+01 + 4.36744462e-02 1.18766776e+01 + 4.37801978e-02 1.17880266e+01 + 4.38862054e-02 1.17000374e+01 + 4.39924698e-02 1.16127049e+01 + 4.40989914e-02 1.15260243e+01 + 4.42057710e-02 1.14399908e+01 + 4.43128091e-02 1.13545993e+01 + 4.44201064e-02 1.12698453e+01 + 4.45276635e-02 1.11857239e+01 + 4.46354811e-02 1.11022304e+01 + 4.47435597e-02 1.10193601e+01 + 4.48519000e-02 1.09371084e+01 + 4.49605026e-02 1.08554707e+01 + 4.50693682e-02 1.07744423e+01 + 4.51784974e-02 1.06940187e+01 + 4.52878909e-02 1.06141954e+01 + 4.53975492e-02 1.05349680e+01 + 4.55074730e-02 1.04563319e+01 + 4.56176630e-02 1.03782827e+01 + 4.57281199e-02 1.03008162e+01 + 4.58388442e-02 1.02239279e+01 + 4.59498365e-02 1.01476135e+01 + 4.60610977e-02 1.00718687e+01 + 4.61726282e-02 9.99668934e+00 + 4.62844288e-02 9.92207111e+00 + 4.63965001e-02 9.84800985e+00 + 4.65088428e-02 9.77450141e+00 + 4.66214575e-02 9.70154165e+00 + 4.67343448e-02 9.62912648e+00 + 4.68475056e-02 9.55725184e+00 + 4.69609403e-02 9.48591370e+00 + 4.70746496e-02 9.41510803e+00 + 4.71886344e-02 9.34483088e+00 + 4.73028951e-02 9.27507830e+00 + 4.74174325e-02 9.20584637e+00 + 4.75322472e-02 9.13713121e+00 + 4.76473399e-02 9.06892896e+00 + 4.77627113e-02 9.00123578e+00 + 4.78783621e-02 8.93404789e+00 + 4.79942928e-02 8.86736150e+00 + 4.81105043e-02 8.80117288e+00 + 4.82269972e-02 8.73547831e+00 + 4.83437722e-02 8.67027411e+00 + 4.84608299e-02 8.60555660e+00 + 4.85781711e-02 8.54132217e+00 + 4.86957964e-02 8.47756719e+00 + 4.88137065e-02 8.41428811e+00 + 4.89319020e-02 8.35148135e+00 + 4.90503838e-02 8.28914341e+00 + 4.91691525e-02 8.22727077e+00 + 4.92882088e-02 8.16585996e+00 + 4.94075533e-02 8.10490754e+00 + 4.95271868e-02 8.04441009e+00 + 4.96471100e-02 7.98436421e+00 + 4.97673236e-02 7.92476653e+00 + 4.98878282e-02 7.86561370e+00 + 5.00086247e-02 7.80690240e+00 + 5.01297136e-02 7.74862934e+00 + 5.02510957e-02 7.69079125e+00 + 5.03727718e-02 7.63338488e+00 + 5.04947424e-02 7.57640701e+00 + 5.06170084e-02 7.51985443e+00 + 5.07395705e-02 7.46372398e+00 + 5.08624293e-02 7.40801250e+00 + 5.09855856e-02 7.35271687e+00 + 5.11090401e-02 7.29783398e+00 + 5.12327935e-02 7.24336075e+00 + 5.13568466e-02 7.18929413e+00 + 5.14812000e-02 7.13563107e+00 + 5.16058546e-02 7.08236858e+00 + 5.17308110e-02 7.02950364e+00 + 5.18560699e-02 6.97703331e+00 + 5.19816322e-02 6.92495463e+00 + 5.21074985e-02 6.87326468e+00 + 5.22336696e-02 6.82196056e+00 + 5.23601461e-02 6.77103939e+00 + 5.24869289e-02 6.72049831e+00 + 5.26140187e-02 6.67033448e+00 + 5.27414162e-02 6.62054508e+00 + 5.28691222e-02 6.57112734e+00 + 5.29971375e-02 6.52207845e+00 + 5.31254627e-02 6.47339569e+00 + 5.32540986e-02 6.42507630e+00 + 5.33830460e-02 6.37711759e+00 + 5.35123056e-02 6.32951685e+00 + 5.36418782e-02 6.28227142e+00 + 5.37717645e-02 6.23537865e+00 + 5.39019654e-02 6.18883589e+00 + 5.40324815e-02 6.14264054e+00 + 5.41633136e-02 6.09679001e+00 + 5.42944625e-02 6.05128172e+00 + 5.44259290e-02 6.00611312e+00 + 5.45577138e-02 5.96128167e+00 + 5.46898178e-02 5.91678485e+00 + 5.48222415e-02 5.87262017e+00 + 5.49549860e-02 5.82878515e+00 + 5.50880518e-02 5.78527733e+00 + 5.52214399e-02 5.74209426e+00 + 5.53551509e-02 5.69923352e+00 + 5.54891857e-02 5.65669271e+00 + 5.56235450e-02 5.61446944e+00 + 5.57582297e-02 5.57256133e+00 + 5.58932405e-02 5.53096603e+00 + 5.60285782e-02 5.48968122e+00 + 5.61642436e-02 5.44870457e+00 + 5.63002375e-02 5.40803378e+00 + 5.64365607e-02 5.36766656e+00 + 5.65732140e-02 5.32760067e+00 + 5.67101982e-02 5.28783383e+00 + 5.68475140e-02 5.24836383e+00 + 5.69851624e-02 5.20918844e+00 + 5.71231440e-02 5.17030547e+00 + 5.72614597e-02 5.13171273e+00 + 5.74001104e-02 5.09340806e+00 + 5.75390968e-02 5.05538931e+00 + 5.76784197e-02 5.01765434e+00 + 5.78180800e-02 4.98020103e+00 + 5.79580784e-02 4.94302729e+00 + 5.80984158e-02 4.90613102e+00 + 5.82390930e-02 4.86951016e+00 + 5.83801109e-02 4.83316265e+00 + 5.85214702e-02 4.79708645e+00 + 5.86631718e-02 4.76127953e+00 + 5.88052165e-02 4.72573988e+00 + 5.89476052e-02 4.69046551e+00 + 5.90903386e-02 4.65545444e+00 + 5.92334176e-02 4.62070470e+00 + 5.93768431e-02 4.58621435e+00 + 5.95206159e-02 4.55198144e+00 + 5.96647368e-02 4.51800406e+00 + 5.98092066e-02 4.48428029e+00 + 5.99540263e-02 4.45080825e+00 + 6.00991966e-02 4.41758605e+00 + 6.02447185e-02 4.38461184e+00 + 6.03905927e-02 4.35188375e+00 + 6.05368201e-02 4.31939995e+00 + 6.06834016e-02 4.28715863e+00 + 6.08303380e-02 4.25515796e+00 + 6.09776302e-02 4.22339616e+00 + 6.11252790e-02 4.19187143e+00 + 6.12732854e-02 4.16058202e+00 + 6.14216501e-02 4.12952616e+00 + 6.15703741e-02 4.09870211e+00 + 6.17194582e-02 4.06810814e+00 + 6.18689033e-02 4.03774253e+00 + 6.20187102e-02 4.00760358e+00 + 6.21688799e-02 3.97768959e+00 + 6.23194132e-02 3.94799890e+00 + 6.24703110e-02 3.91852982e+00 + 6.26215741e-02 3.88928071e+00 + 6.27732036e-02 3.86024992e+00 + 6.29252001e-02 3.83143583e+00 + 6.30775648e-02 3.80283681e+00 + 6.32302983e-02 3.77445127e+00 + 6.33834017e-02 3.74627761e+00 + 6.35368758e-02 3.71831424e+00 + 6.36907215e-02 3.69055960e+00 + 6.38449397e-02 3.66301212e+00 + 6.39995313e-02 3.63567027e+00 + 6.41544973e-02 3.60853251e+00 + 6.43098385e-02 3.58159731e+00 + 6.44655558e-02 3.55486317e+00 + 6.46216502e-02 3.52832858e+00 + 6.47781225e-02 3.50199204e+00 + 6.49349737e-02 3.47585210e+00 + 6.50922047e-02 3.44990727e+00 + 6.52498164e-02 3.42415610e+00 + 6.54078098e-02 3.39859714e+00 + 6.55661857e-02 3.37322896e+00 + 6.57249451e-02 3.34805014e+00 + 6.58840889e-02 3.32305927e+00 + 6.60436180e-02 3.29825493e+00 + 6.62035335e-02 3.27363574e+00 + 6.63638361e-02 3.24920031e+00 + 6.65245269e-02 3.22494728e+00 + 6.66856068e-02 3.20087527e+00 + 6.68470767e-02 3.17698295e+00 + 6.70089376e-02 3.15326897e+00 + 6.71711904e-02 3.12973200e+00 + 6.73338361e-02 3.10637072e+00 + 6.74968756e-02 3.08318381e+00 + 6.76603099e-02 3.06016997e+00 + 6.78241399e-02 3.03732792e+00 + 6.79883667e-02 3.01465637e+00 + 6.81529910e-02 2.99215404e+00 + 6.83180140e-02 2.96981968e+00 + 6.84834366e-02 2.94765203e+00 + 6.86492597e-02 2.92564984e+00 + 6.88154843e-02 2.90381189e+00 + 6.89821114e-02 2.88213694e+00 + 6.91491420e-02 2.86062378e+00 + 6.93165771e-02 2.83927120e+00 + 6.94844175e-02 2.81807800e+00 + 6.96526643e-02 2.79704300e+00 + 6.98213186e-02 2.77616500e+00 + 6.99903812e-02 2.75544285e+00 + 7.01598532e-02 2.73487537e+00 + 7.03297355e-02 2.71446142e+00 + 7.05000291e-02 2.69419984e+00 + 7.06707352e-02 2.67408950e+00 + 7.08418545e-02 2.65412927e+00 + 7.10133882e-02 2.63431803e+00 + 7.11853372e-02 2.61465466e+00 + 7.13577026e-02 2.59513807e+00 + 7.15304854e-02 2.57576716e+00 + 7.17036865e-02 2.55654084e+00 + 7.18773070e-02 2.53745802e+00 + 7.20513479e-02 2.51851765e+00 + 7.22258102e-02 2.49971866e+00 + 7.24006950e-02 2.48105999e+00 + 7.25760032e-02 2.46254059e+00 + 7.27517359e-02 2.44415942e+00 + 7.29278941e-02 2.42591546e+00 + 7.31044788e-02 2.40780767e+00 + 7.32814911e-02 2.38983505e+00 + 7.34589321e-02 2.37199658e+00 + 7.36368026e-02 2.35429127e+00 + 7.38151039e-02 2.33671811e+00 + 7.39938369e-02 2.31927612e+00 + 7.41730027e-02 2.30196433e+00 + 7.43526023e-02 2.28478175e+00 + 7.45326368e-02 2.26772743e+00 + 7.47131072e-02 2.25080041e+00 + 7.48940146e-02 2.23399974e+00 + 7.50753600e-02 2.21732448e+00 + 7.52571446e-02 2.20077368e+00 + 7.54393693e-02 2.18434642e+00 + 7.56220352e-02 2.16804179e+00 + 7.58051434e-02 2.15185885e+00 + 7.59886950e-02 2.13579671e+00 + 7.61726911e-02 2.11985446e+00 + 7.63571327e-02 2.10403121e+00 + 7.65420208e-02 2.08832607e+00 + 7.67273567e-02 2.07273816e+00 + 7.69131413e-02 2.05726660e+00 + 7.70993758e-02 2.04191052e+00 + 7.72860612e-02 2.02666907e+00 + 7.74731986e-02 2.01154138e+00 + 7.76607892e-02 1.99652661e+00 + 7.78488340e-02 1.98162392e+00 + 7.80373341e-02 1.96683247e+00 + 7.82262907e-02 1.95215142e+00 + 7.84157047e-02 1.93757995e+00 + 7.86055774e-02 1.92311726e+00 + 7.87959099e-02 1.90876251e+00 + 7.89867032e-02 1.89451492e+00 + 7.91779586e-02 1.88037367e+00 + 7.93696770e-02 1.86633798e+00 + 7.95618596e-02 1.85240705e+00 + 7.97545076e-02 1.83858011e+00 + 7.99476220e-02 1.82485638e+00 + 8.01412041e-02 1.81123509e+00 + 8.03352548e-02 1.79771547e+00 + 8.05297755e-02 1.78429676e+00 + 8.07247671e-02 1.77097822e+00 + 8.09202309e-02 1.75775909e+00 + 8.11161680e-02 1.74463863e+00 + 8.13125795e-02 1.73161610e+00 + 8.15094666e-02 1.71869078e+00 + 8.17068304e-02 1.70586194e+00 + 8.19046721e-02 1.69312886e+00 + 8.21029929e-02 1.68049082e+00 + 8.23017939e-02 1.66794711e+00 + 8.25010762e-02 1.65549704e+00 + 8.27008411e-02 1.64313990e+00 + 8.29010897e-02 1.63087499e+00 + 8.31018231e-02 1.61870163e+00 + 8.33030426e-02 1.60661914e+00 + 8.35047494e-02 1.59462684e+00 + 8.37069445e-02 1.58272405e+00 + 8.39096292e-02 1.57091010e+00 + 8.41128047e-02 1.55918434e+00 + 8.43164722e-02 1.54754611e+00 + 8.45206328e-02 1.53599474e+00 + 8.47252877e-02 1.52452960e+00 + 8.49304382e-02 1.51315004e+00 + 8.51360854e-02 1.50185542e+00 + 8.53422306e-02 1.49064510e+00 + 8.55488750e-02 1.47951846e+00 + 8.57560197e-02 1.46847488e+00 + 8.59636659e-02 1.45751373e+00 + 8.61718150e-02 1.44663439e+00 + 8.63804680e-02 1.43583626e+00 + 8.65896263e-02 1.42511874e+00 + 8.67992911e-02 1.41448121e+00 + 8.70094635e-02 1.40392308e+00 + 8.72201448e-02 1.39344376e+00 + 8.74313362e-02 1.38304267e+00 + 8.76430390e-02 1.37271921e+00 + 8.78552544e-02 1.36247280e+00 + 8.80679837e-02 1.35230288e+00 + 8.82812281e-02 1.34220887e+00 + 8.84949888e-02 1.33219021e+00 + 8.87092671e-02 1.32224633e+00 + 8.89240642e-02 1.31237667e+00 + 8.91393815e-02 1.30258068e+00 + 8.93552201e-02 1.29285782e+00 + 8.95715813e-02 1.28320752e+00 + 8.97884665e-02 1.27362926e+00 + 9.00058767e-02 1.26412250e+00 + 9.02238134e-02 1.25468670e+00 + 9.04422778e-02 1.24532133e+00 + 9.06612712e-02 1.23602586e+00 + 9.08807949e-02 1.22679978e+00 + 9.11008501e-02 1.21764256e+00 + 9.13214381e-02 1.20855370e+00 + 9.15425603e-02 1.19953268e+00 + 9.17642178e-02 1.19057900e+00 + 9.19864121e-02 1.18169215e+00 + 9.22091444e-02 1.17287163e+00 + 9.24324160e-02 1.16411695e+00 + 9.26562283e-02 1.15542762e+00 + 9.28805824e-02 1.14680315e+00 + 9.31054798e-02 1.13824305e+00 + 9.33309218e-02 1.12974685e+00 + 9.35569097e-02 1.12131407e+00 + 9.37834447e-02 1.11294424e+00 + 9.40105282e-02 1.10463687e+00 + 9.42381617e-02 1.09639152e+00 + 9.44663463e-02 1.08820771e+00 + 9.46950834e-02 1.08008499e+00 + 9.49243743e-02 1.07202290e+00 + 9.51542205e-02 1.06402099e+00 + 9.53846232e-02 1.05607881e+00 + 9.56155838e-02 1.04819591e+00 + 9.58471036e-02 1.04037185e+00 + 9.60791841e-02 1.03260619e+00 + 9.63118264e-02 1.02489849e+00 + 9.65450321e-02 1.01724833e+00 + 9.67788025e-02 1.00965528e+00 + 9.70131389e-02 1.00211889e+00 + 9.72480427e-02 9.94638767e-01 + 9.74835153e-02 9.87214474e-01 + 9.77195581e-02 9.79845598e-01 + 9.79561724e-02 9.72531726e-01 + 9.81933596e-02 9.65272447e-01 + 9.84311212e-02 9.58067353e-01 + 9.86694584e-02 9.50916041e-01 + 9.89083728e-02 9.43818108e-01 + 9.91478657e-02 9.36773156e-01 + 9.93879384e-02 9.29780790e-01 + 9.96285925e-02 9.22840617e-01 + 9.98698293e-02 9.15952247e-01 + 1.00111650e-01 9.09115295e-01 + 1.00354057e-01 9.02329376e-01 + 1.00597050e-01 8.95594109e-01 + 1.00840632e-01 8.88909116e-01 + 1.01084803e-01 8.82274022e-01 + 1.01329566e-01 8.75688454e-01 + 1.01574922e-01 8.69152043e-01 + 1.01820871e-01 8.62664422e-01 + 1.02067416e-01 8.56225226e-01 + 1.02314558e-01 8.49834095e-01 + 1.02562299e-01 8.43490669e-01 + 1.02810639e-01 8.37194592e-01 + 1.03059581e-01 8.30945511e-01 + 1.03309125e-01 8.24743076e-01 + 1.03559274e-01 8.18586937e-01 + 1.03810028e-01 8.12476749e-01 + 1.04061390e-01 8.06412170e-01 + 1.04313360e-01 8.00392859e-01 + 1.04565940e-01 7.94418478e-01 + 1.04819132e-01 7.88488691e-01 + 1.05072937e-01 7.82603166e-01 + 1.05327356e-01 7.76761573e-01 + 1.05582392e-01 7.70963583e-01 + 1.05838045e-01 7.65208871e-01 + 1.06094317e-01 7.59497114e-01 + 1.06351210e-01 7.53827991e-01 + 1.06608724e-01 7.48201184e-01 + 1.06866863e-01 7.42616378e-01 + 1.07125626e-01 7.37073258e-01 + 1.07385016e-01 7.31571514e-01 + 1.07645033e-01 7.26110837e-01 + 1.07905681e-01 7.20690920e-01 + 1.08166960e-01 7.15311458e-01 + 1.08428871e-01 7.09972151e-01 + 1.08691416e-01 7.04672698e-01 + 1.08954597e-01 6.99412802e-01 + 1.09218416e-01 6.94192167e-01 + 1.09482873e-01 6.89010501e-01 + 1.09747970e-01 6.83867512e-01 + 1.10013710e-01 6.78762912e-01 + 1.10280093e-01 6.73696415e-01 + 1.10547121e-01 6.68667735e-01 + 1.10814795e-01 6.63676591e-01 + 1.11083118e-01 6.58722702e-01 + 1.11352090e-01 6.53805791e-01 + 1.11621714e-01 6.48925581e-01 + 1.11891990e-01 6.44081799e-01 + 1.12162921e-01 6.39274172e-01 + 1.12434508e-01 6.34502431e-01 + 1.12706752e-01 6.29766307e-01 + 1.12979656e-01 6.25065535e-01 + 1.13253221e-01 6.20399852e-01 + 1.13527448e-01 6.15768994e-01 + 1.13802339e-01 6.11172703e-01 + 1.14077895e-01 6.06610720e-01 + 1.14354119e-01 6.02082788e-01 + 1.14631011e-01 5.97588655e-01 + 1.14908574e-01 5.93128067e-01 + 1.15186810e-01 5.88700775e-01 + 1.15465718e-01 5.84306529e-01 + 1.15745303e-01 5.79945083e-01 + 1.16025564e-01 5.75616193e-01 + 1.16306503e-01 5.71319614e-01 + 1.16588123e-01 5.67055107e-01 + 1.16870425e-01 5.62822431e-01 + 1.17153411e-01 5.58621350e-01 + 1.17437082e-01 5.54451626e-01 + 1.17721439e-01 5.50313026e-01 + 1.18006485e-01 5.46205319e-01 + 1.18292221e-01 5.42128272e-01 + 1.18578650e-01 5.38081658e-01 + 1.18865771e-01 5.34065249e-01 + 1.19153588e-01 5.30078820e-01 + 1.19442102e-01 5.26122147e-01 + 1.19731314e-01 5.22195007e-01 + 1.20021227e-01 5.18297181e-01 + 1.20311842e-01 5.14428450e-01 + 1.20603160e-01 5.10588596e-01 + 1.20895184e-01 5.06777404e-01 + 1.21187915e-01 5.02994659e-01 + 1.21481355e-01 4.99240151e-01 + 1.21775505e-01 4.95513667e-01 + 1.22070367e-01 4.91814998e-01 + 1.22365944e-01 4.88143938e-01 + 1.22662236e-01 4.84500280e-01 + 1.22959245e-01 4.80883819e-01 + 1.23256974e-01 4.77294353e-01 + 1.23555424e-01 4.73731679e-01 + 1.23854596e-01 4.70195598e-01 + 1.24154493e-01 4.66685912e-01 + 1.24455115e-01 4.63202423e-01 + 1.24756466e-01 4.59744936e-01 + 1.25058547e-01 4.56313257e-01 + 1.25361358e-01 4.52907193e-01 + 1.25664903e-01 4.49526552e-01 + 1.25969184e-01 4.46171146e-01 + 1.26274200e-01 4.42840786e-01 + 1.26579956e-01 4.39535284e-01 + 1.26886452e-01 4.36254456e-01 + 1.27193689e-01 4.32998117e-01 + 1.27501671e-01 4.29766085e-01 + 1.27810399e-01 4.26558177e-01 + 1.28119874e-01 4.23374214e-01 + 1.28430098e-01 4.20214017e-01 + 1.28741074e-01 4.17077409e-01 + 1.29052803e-01 4.13964213e-01 + 1.29365286e-01 4.10874255e-01 + 1.29678526e-01 4.07807362e-01 + 1.29992525e-01 4.04763361e-01 + 1.30307283e-01 4.01742081e-01 + 1.30622804e-01 3.98743353e-01 + 1.30939089e-01 3.95767009e-01 + 1.31256140e-01 3.92812880e-01 + 1.31573959e-01 3.89880803e-01 + 1.31892547e-01 3.86970611e-01 + 1.32211906e-01 3.84082142e-01 + 1.32532039e-01 3.81215233e-01 + 1.32852947e-01 3.78369724e-01 + 1.33174632e-01 3.75545455e-01 + 1.33497095e-01 3.72742267e-01 + 1.33820340e-01 3.69960002e-01 + 1.34144367e-01 3.67198506e-01 + 1.34469179e-01 3.64457622e-01 + 1.34794778e-01 3.61737197e-01 + 1.35121164e-01 3.59037078e-01 + 1.35448342e-01 3.56357113e-01 + 1.35776311e-01 3.53697153e-01 + 1.36105074e-01 3.51057047e-01 + 1.36434634e-01 3.48436648e-01 + 1.36764991e-01 3.45835808e-01 + 1.37096149e-01 3.43254382e-01 + 1.37428108e-01 3.40692225e-01 + 1.37760871e-01 3.38149192e-01 + 1.38094440e-01 3.35625141e-01 + 1.38428816e-01 3.33119930e-01 + 1.38764002e-01 3.30633420e-01 + 1.39100000e-01 3.28165469e-01 diff --git a/example/test_problem/ELBDM/HaloMerger/Input__Flag_NParPatch b/example/test_problem/ELBDM/HaloMerger/Input__Flag_NParPatch new file mode 100644 index 0000000000..d134e380bf --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__Flag_NParPatch @@ -0,0 +1,4 @@ +# Level Number of Particles per Patch + 0 50 + 1 50 + 2 50 diff --git a/example/test_problem/ELBDM/HaloMerger/Input__Flag_Rho b/example/test_problem/ELBDM/HaloMerger/Input__Flag_Rho new file mode 100644 index 0000000000..abeae3e654 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__Flag_Rho @@ -0,0 +1,4 @@ +# Level Density + 0 1.0e-1 + 1 1.0e+1 + 2 1.0e+3 diff --git a/example/test_problem/ELBDM/HaloMerger/Input__Parameter b/example/test_problem/ELBDM/HaloMerger/Input__Parameter new file mode 100644 index 0000000000..2b5e8d3aeb --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__Parameter @@ -0,0 +1,233 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 0.25876844 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 640 # number of base-level cells along x +NX0_TOT_Y 640 # number of base-level cells along y +NX0_TOT_Z 640 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1012 # test problem ID [0] + # 0: none + # 1012: ELBDM halo merger (+GRAVITY) + + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L 4.4366320345075490e+24 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V 1.0000000000000000e+07 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D 2.5758579724476994e-30 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 2 # gravity boundary condition: (1=periodic, 2=isolated) +GFUNC_COEFF0 -1.0 # Green's function coefficient at the origin for the isolated BC (<0=auto) [-1.0] + + +# particle (PARTICLE only) +PAR_NPAR -1 # total number of particles; [deprecated in this test problem] set in Input__TestProb_ParCloud instead +PAR_INIT 1 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") +PAR_IC_FORMAT 1 # data format of PAR_IC: (1=[attribute][id], 2=[id][attribute]; row-major) [1] +PAR_IC_MASS -1.0 # mass of all particles for PAR_INIT==3 (<0=off) [-1.0] +PAR_INTERP 3 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] +PAR_INTEG 2 # particle integration scheme: (1=Euler, 2=KDK) [2] +PAR_IMPROVE_ACC 1 # improve force accuracy at patch boundaries [1] ##STORE_POT_GHOST and PAR_INTERP=2/3 ONLY## +PAR_PREDICT_POS 1 # predict particle position during mass assignment [1] +PAR_REMOVE_CELL -1.0 # remove particles X-root-cells from the boundaries (non-periodic BC only; <0=auto) [-1.0] + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 3 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 2 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0e-22 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST -1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +OPT__FREEZE_FLUID 0 # do not evolve fluid at all [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G -1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +MG_MAX_ITER -1 # maximum number of iterations in multigrid: (<0=auto) [-1] +MG_NPRE_SMOOTH -1 # number of pre-smoothing steps in multigrid: (<0=auto) [-1] +MG_NPOST_SMOOTH -1 # number of post-smoothing steps in multigrid: (<0=auto) [-1] +MG_TOLERATED_ERROR -1.0 # maximum tolerated error in multigrid (<0=auto) [-1.0] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 0 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NVAR -1 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] +OPT__FFTW_STARTUP -1 # initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY ##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY ## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 1 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 0.01 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.12938422 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.12938422 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.12938422 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 1 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated [0] ##HYDRO and ELBDM ONLY## +OPT__CK_NEGATIVE 0 # check the negative values: (0=off, 1=density, 2=pressure and entropy, 3=both) [0] ##HYDRO ONLY## +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/HaloMerger/Input__TestProb b/example/test_problem/ELBDM/HaloMerger/Input__TestProb new file mode 100644 index 0000000000..ac780fd866 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__TestProb @@ -0,0 +1,19 @@ +# problem-specific runtime parameters +HaloMerger_Halo_Num 2 # total number of halos [2] +HaloMerger_Halo_InitMode 1 # halo initialization mode (1=single-level HALO_IC of real and imaginary parts) [1] + # -> edit Input_TestProb_Halo to specify the parameters for the halos +HaloMerger_Soliton_Num 0 # total number of solitons [0] +HaloMerger_Soliton_InitMode 1 # soliton initialization mode (1=table of the density profile, 2=analytical function of the density profile) [1] + # -> edit Input_TestProb_Soliton to specify the parameters for the solitons +HaloMerger_ParCloud_Num 0 # total number of particle clouds [0] +HaloMerger_ParCloud_InitMode 1 # particle cloud initialization mode (1=table of the density profile) [1] + # -> edit Input_TestProb_ParCloud to specify the parameters for the particle clouds +# external potential +HaloMerger_ExtPot_UniDenSph_M 0.0 # mass of the uniform-density sphere for the external potential (must >= 0.0) [0.0] +HaloMerger_ExtPot_UniDenSph_R 1.0 # radius of the uniform-density sphere for the external potential (must > 0.0) [1.0] +HaloMerger_ExtPot_UniDenSph_CenCoordX -1.0 # x/y/z-coordinate of the center of the uniform-density sphere for the external potential (<0.0=auto -> box center) [-1.0] +HaloMerger_ExtPot_UniDenSph_CenCoordY -1.0 +HaloMerger_ExtPot_UniDenSph_CenCoordZ -1.0 +HaloMerger_ExtPot_UniDenSph_VelocityX 0.0 # x/y/z-component of the velocity of the uniform-density sphere for the external potential [0.0] +HaloMerger_ExtPot_UniDenSph_VelocityY 0.0 +HaloMerger_ExtPot_UniDenSph_VelocityZ 0.0 diff --git a/example/test_problem/ELBDM/HaloMerger/Input__TestProb_Halo b/example/test_problem/ELBDM/HaloMerger/Input__TestProb_Halo new file mode 100644 index 0000000000..408fea4b29 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__TestProb_Halo @@ -0,0 +1,31 @@ +# problem-specific runtime parameters (HaloMerger_Halo_Num > 0 only) +# 1st halo +HaloMerger_Halo_1_CenCoordX 0.06469211 # x/y/z-coordinate of the center of the 1st halo (<0.0=auto -> box center) [-1.0] +HaloMerger_Halo_1_CenCoordY 0.12938422 # (Note that CenCoordX/Y/Z denotes the HALO_IC box center, not the exact halo center, when HaloMerger_Halo_InitMode == 1) +HaloMerger_Halo_1_CenCoordZ 0.12938422 +HaloMerger_Halo_1_VelocityX 0.5 # x/y/z-component of the bulk velocity of the 1st halo [0.0] +HaloMerger_Halo_1_VelocityY 0.0 +HaloMerger_Halo_1_VelocityZ 0.0 +HaloMerger_Halo_1_HALO_IC_Filename HALO_IC_Halo1 # filename of HALO_IC (binary file in vzyx format; row-major and v=field) (single AMR level) for the 1st halo (HaloMerger_Halo_InitMode == 1 only) +HaloMerger_Halo_1_HALO_IC_BoxLenX 0.0646921095 # physical length in the x/y/z-direction of HALO_IC box for the 1st halo (must > 0.0) (HaloMerger_Halo_InitMode == 1 only) +HaloMerger_Halo_1_HALO_IC_BoxLenY 0.0646921095 +HaloMerger_Halo_1_HALO_IC_BoxLenZ 0.0646921095 +HaloMerger_Halo_1_HALO_IC_NCellsX 640 # number of cells in the x/y/z-direction of HALO_IC box for the 1st halo (must > 0) (HaloMerger_Halo_InitMode == 1 only) +HaloMerger_Halo_1_HALO_IC_NCellsY 640 +HaloMerger_Halo_1_HALO_IC_NCellsZ 640 +HaloMerger_Halo_1_HALO_IC_Float8 0 # data precision of HALO_IC for the 1st halo (0=float, 1=double) (HaloMerger_Halo_InitMode == 1 only) [0] +# 2nd halo +HaloMerger_Halo_2_CenCoordX 0.19407633 +HaloMerger_Halo_2_CenCoordY 0.12938422 +HaloMerger_Halo_2_CenCoordZ 0.12938422 +HaloMerger_Halo_2_VelocityX -0.5 +HaloMerger_Halo_2_VelocityY 0.0 +HaloMerger_Halo_2_VelocityZ 0.0 +HaloMerger_Halo_2_HALO_IC_Filename HALO_IC_Halo2 +HaloMerger_Halo_2_HALO_IC_BoxLenX 0.0646921095 +HaloMerger_Halo_2_HALO_IC_BoxLenY 0.0646921095 +HaloMerger_Halo_2_HALO_IC_BoxLenZ 0.0646921095 +HaloMerger_Halo_2_HALO_IC_NCellsX 640 +HaloMerger_Halo_2_HALO_IC_NCellsY 640 +HaloMerger_Halo_2_HALO_IC_NCellsZ 640 +HaloMerger_Halo_2_HALO_IC_Float8 0 diff --git a/example/test_problem/ELBDM/HaloMerger/Input__TestProb_ParCloud b/example/test_problem/ELBDM/HaloMerger/Input__TestProb_ParCloud new file mode 100644 index 0000000000..346635ff28 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__TestProb_ParCloud @@ -0,0 +1,23 @@ +# problem-specific runtime parameters (HaloMerger_ParCloud_Num > 0 only) +# 1st particle cloud +HaloMerger_ParCloud_1_CenCoordX 0.06469211 # x/y/z-coordinate of the center of the 1st particle cloud (<0.0=auto -> box center) [-1.0] +HaloMerger_ParCloud_1_CenCoordY 0.12938422 +HaloMerger_ParCloud_1_CenCoordZ 0.12938422 +HaloMerger_ParCloud_1_VelocityX 0.5 # x/y/z-component of the bulk velocity of the 1st particle cloud [0.0] +HaloMerger_ParCloud_1_VelocityY 0.0 +HaloMerger_ParCloud_1_VelocityZ 0.0 +HaloMerger_ParCloud_1_DensProf_Filename HaloDensityProfile # filename of the density profile table for the 1st particle cloud (HaloMerger_ParCloud_InitMode == 1 only) +HaloMerger_ParCloud_1_DensProf_MaxR 0.03234605475 # maximum radius for particles for the 1st particle cloud (must > 0.0) (HaloMerger_ParCloud_InitMode == 1 only) [0.5*amr->BoxSize[0]] +HaloMerger_ParCloud_1_RSeed 123 # random seed for setting particle position and velocity for the 1st particle cloud (must >= 0) (HaloMerger_ParCloud_InitMode == 1 only) [123] +HaloMerger_ParCloud_1_NPar 5000000 # number of particles for the 1st particle cloud (must >= 0) (HaloMerger_ParCloud_InitMode == 1 only) [0] +# 2nd particle cloud +HaloMerger_ParCloud_2_CenCoordX 0.19407633 +HaloMerger_ParCloud_2_CenCoordY 0.12938422 +HaloMerger_ParCloud_2_CenCoordZ 0.12938422 +HaloMerger_ParCloud_2_VelocityX -0.5 +HaloMerger_ParCloud_2_VelocityY 0.0 +HaloMerger_ParCloud_2_VelocityZ 0.0 +HaloMerger_ParCloud_2_DensProf_Filename HaloDensityProfile +HaloMerger_ParCloud_2_DensProf_MaxR 0.03234605475 +HaloMerger_ParCloud_2_RSeed 123 +HaloMerger_ParCloud_2_NPar 5000000 diff --git a/example/test_problem/ELBDM/HaloMerger/Input__TestProb_Soliton b/example/test_problem/ELBDM/HaloMerger/Input__TestProb_Soliton new file mode 100644 index 0000000000..869f4e0614 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Input__TestProb_Soliton @@ -0,0 +1,25 @@ +# problem-specific runtime parameters (HaloMerger_Soliton_Num > 0 only) +# 1st soliton +HaloMerger_Soliton_1_CoreRadius 0.001 # core radius of the 1st soliton (<=0.0=set by HaloMerger_Soliton_1_CoreRho) (will be overwritten if HaloMerger_Soliton_1_DensProf_Rescale == 0) [-1.0] +HaloMerger_Soliton_1_CoreRho -1.0 # peak density of the 1st soliton (will be overwritten if HaloMerger_Soliton_1_CoreRadius > 0.0) (will be overwritten if HaloMerger_Soliton_1_DensProf_Rescale == 0) [-1.0] +HaloMerger_Soliton_1_CenCoordX 0.12938422 # x/y/z-coordinate of the center of the 1st soliton (<0.0=auto -> box center) [-1.0] +HaloMerger_Soliton_1_CenCoordY 0.06469211 +HaloMerger_Soliton_1_CenCoordZ 0.12938422 +HaloMerger_Soliton_1_VelocityX 0.0 # x/y/z-component of the bulk velocity of the 1st soliton [0.0] +HaloMerger_Soliton_1_VelocityY 0.5 +HaloMerger_Soliton_1_VelocityZ 0.0 +HaloMerger_Soliton_1_DensProf_Filename SolitonDensityProfile_Lambda0.0 # filename of the density profile table for the 1st soliton (HaloMerger_Soliton_InitMode == 1 only) +HaloMerger_Soliton_1_DensProf_Rescale 1 # whether to scale the density profile table for the 1st soliton (HaloMerger_Soliton_InitMode == 1 only) [1] +HaloMerger_Soliton_1_OuterSlope -8.0 # outer slope of the analytical density profile of the 1st soliton (HaloMerger_Soliton_InitMode == 2 only) [-8.0] +# 2nd soliton +HaloMerger_Soliton_2_CoreRadius -1.0 +HaloMerger_Soliton_2_CoreRho -1.0 +HaloMerger_Soliton_2_CenCoordX 0.12938422 +HaloMerger_Soliton_2_CenCoordY 0.19407633 +HaloMerger_Soliton_2_CenCoordZ 0.12938422 +HaloMerger_Soliton_2_VelocityX 0.0 +HaloMerger_Soliton_2_VelocityY -0.5 +HaloMerger_Soliton_2_VelocityZ 0.0 +HaloMerger_Soliton_2_DensProf_Filename SolitonDensityProfile +HaloMerger_Soliton_2_DensProf_Rescale 0 +HaloMerger_Soliton_2_OuterSlope -8.0 diff --git a/example/test_problem/ELBDM/HaloMerger/Make_DensityProfile.py b/example/test_problem/ELBDM/HaloMerger/Make_DensityProfile.py new file mode 100644 index 0000000000..ea6bea71d3 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Make_DensityProfile.py @@ -0,0 +1,188 @@ +import numpy as np +import matplotlib.pyplot as plt + + +################################################################################################################### +# code units (in cgs) +UNIT_L = 4.4366320345075490e+24 +UNIT_D = 2.5758579724476994e-30 + +# length units +Const_cm = 1.0; +Const_pc = 3.08567758149e18; +Const_kpc = 1.0e3*Const_pc; + +# mass units +Const_g = 1.0; +Const_kg = 1.0e3*Const_g; +Const_Msun = 1.9885e33; +################################################################################################################### + + +################################################################################################################### +# density profile +def Halo_fitting_analytical_dens(r, rho_0, r_0, alpha, beta, gamma): + x = r / r_0 + return rho_0 * ( x**(-gamma) ) * ( ( 1.0+(x**alpha) )**( (gamma-beta)/alpha ) ) + +def Soliton_rho_c_from_r_c(m22, r_c): + return 1.945e7/( m22**2 * (r_c*UNIT_L/Const_kpc)**4 )*(Const_Msun/Const_kpc**3)/UNIT_D + +def Soliton_fitting_analytical_dens(r, m22, r_c): + rho_c = Soliton_rho_c_from_r_c(m22, r_c) + x = r / r_c + return rho_c*( 1.0+9.06e-2*(x**2) )**(-8) +################################################################################################################### + + +################################################################################################################### +# parameters for the halo +halo_fitting_rho_0 = 1633769.320 *(Const_Msun/Const_kpc**3)/UNIT_D # in code_density +halo_fitting_r_0 = 4.461 *(Const_kpc)/UNIT_L # in code_length +halo_fitting_alpha = 4.800 +halo_fitting_beta = 3.098 +halo_fitting_gamma = 0.000 + +# parameters for the soliton +soliton_fitting_m22 = 1.0 +soliton_fitting_r_c = 0.001 # in code_length +soliton_fitting_rho_c = Soliton_rho_c_from_r_c(soliton_fitting_m22, soliton_fitting_r_c) + + +# parameters for the density profile sampling +halo_r_min = 0.01 *(Const_kpc)/UNIT_L # in code_length +halo_r_max = 200.0 *(Const_kpc)/UNIT_L # in code_length +halo_nbins = 4096 + +soliton_r_min = 0.01 *(Const_kpc)/UNIT_L # in code_length +soliton_r_max = 30.0 *(Const_kpc)/UNIT_L # in code_length +soliton_nbins = 4096 +################################################################################################################### + + +################################################################################################################### +# output the information +print( 'Information' ) +print( 'UNIT_L = {: >16.8e} cm'.format( UNIT_L ) ) +print( 'UNIT_D = {: >16.8e} g/cm**3'.format( UNIT_D ) ) +print( 'halo_fitting_rho_0 = {: >16.8e} UNIT_D'.format( halo_fitting_rho_0 ) ) +print( 'halo_fitting_r_0 = {: >16.8e} UNIT_L'.format( halo_fitting_r_0 ) ) +print( 'halo_fitting_alpha = {: >16.8e}'.format( halo_fitting_alpha ) ) +print( 'halo_fitting_beta = {: >16.8e}'.format( halo_fitting_beta ) ) +print( 'halo_fitting_gamma = {: >16.8e}'.format( halo_fitting_gamma ) ) +print( '' ) +print( 'soliton_fitting_rho_c = {: >16.8e} UNIT_D'.format( soliton_fitting_rho_c ) ) +print( 'soliton_fitting_r_c = {: >16.8e} UNIT_L'.format( soliton_fitting_r_c ) ) +print( '' ) +print( 'halo_r_min = {: >16.8e} UNIT_L'.format( halo_r_min ) ) +print( 'halo_r_max = {: >16.8e} UNIT_L'.format( halo_r_max ) ) +print( 'halo_nbins = {: >16d}'.format( halo_nbins ) ) +print( '' ) +print( 'soliton_r_min = {: >16.8e} UNIT_L'.format( soliton_r_min ) ) +print( 'soliton_r_max = {: >16.8e} UNIT_L'.format( soliton_r_max ) ) +print( 'soliton_nbins = {: >16d}'.format( soliton_nbins ) ) +################################################################################################################### + + +################################################################################################################### +# create the density profile +halo_densprof_radius = np.logspace( np.log10(halo_r_min), np.log10(halo_r_max), num=halo_nbins ) +halo_densprof_density = Halo_fitting_analytical_dens( halo_densprof_radius, + halo_fitting_rho_0, halo_fitting_r_0, + halo_fitting_alpha, halo_fitting_beta, halo_fitting_gamma ) + +soliton_densprof_radius = np.logspace( np.log10(soliton_r_min), np.log10(soliton_r_max), num=soliton_nbins ) +soliton_densprof_density = Soliton_fitting_analytical_dens( soliton_densprof_radius, + soliton_fitting_m22, soliton_fitting_r_c ) +################################################################################################################### + + +################################################################################################################### +# save to file +np.savetxt( 'HaloDensityProfile', + np.column_stack( (halo_densprof_radius, halo_densprof_density) ), + fmt=' %9.8e', + header=' r density' ) + +np.savetxt( 'SolitonDensityProfile', + np.column_stack( (soliton_densprof_radius, soliton_densprof_density) ), + fmt=' %9.8e', + header=' r density' ) +################################################################################################################### + + +################################################################################################################### +# plot to images +fig = plt.figure() +ax = fig.add_subplot(111) + +# plot some important values for reference +ax.plot( [halo_fitting_r_0, halo_fitting_r_0 ], [0.3*np.min(halo_densprof_density), 3.0*np.max(halo_densprof_density)], '--', color='grey', label=r'$r_0$' ) +ax.plot( [0.3*np.min(halo_densprof_radius), 3.0*np.max(halo_densprof_radius)], [halo_fitting_rho_0, halo_fitting_rho_0 ], '--', color='grey', label=r'$\rho_0$' ) + +# plot the density profile +ax.plot( halo_densprof_radius, halo_densprof_density, '-', color='r', label=r'$\rho(r)$' ) + +# annotate the information +ax.annotate( r'$\rho_{0}$ = %.8e'%(halo_fitting_rho_0)+'\n'+ + r'$r_{0}$ = %.8e'%(halo_fitting_r_0)+'\n'+ + r'$\alpha$ = %.8e'%(halo_fitting_alpha)+'\n'+ + r'$\beta$ = %.8e'%(halo_fitting_beta)+'\n'+ + r'$\gamma$ = %.8e'%(halo_fitting_gamma)+'\n'+'\n'+ + r'$r_{\rm min}$ = %.8e'%(halo_r_min)+'\n'+ + r'$r_{\rm max}$ = %.8e'%(halo_r_max)+'\n'+ + r'nbins = %d'%(halo_nbins), + xy=(0.02,0.02), xycoords='axes fraction' ) + +# setting for the figure +ax.set_xscale('log') +ax.set_yscale('log') +ax.set_xlim( 0.5*np.min(halo_densprof_radius), 2.0*np.max(halo_densprof_radius) ) +ax.set_ylim( 0.5*np.min(halo_densprof_density), 2.0*np.max(halo_densprof_density) ) + +# set the labels +ax.set_xlabel( r'$r$'+' (code_length)' ) +ax.set_ylabel( r'$\rho$'+' (code_density)' ) +fig.suptitle( 'Density Profile of Halo' ) +ax.legend( loc='upper right' ) + +# save the figure +fig.subplots_adjust( top=0.93, bottom=0.1, left=0.1, right=0.97 ) +fig.savefig( 'fig_HaloDensityProfile.png' ) +plt.close() + +fig = plt.figure() +ax = fig.add_subplot(111) + +# plot some important values for reference +ax.plot( [soliton_fitting_r_c, soliton_fitting_r_c ], [0.3*np.min(soliton_densprof_density), 3.0*np.max(soliton_densprof_density)], '--', color='grey', label=r'$r_{\rm c}$' ) +ax.plot( [0.3*np.min(soliton_densprof_radius), 3.0*np.max(soliton_densprof_radius)], [soliton_fitting_rho_c, soliton_fitting_rho_c ], '--', color='grey', label=r'$\rho_{\rm c}$' ) + +# plot the density profile +ax.plot( soliton_densprof_radius, soliton_densprof_density, '-', color='r', label=r'$\rho(r)$' ) + +# annotate the information +ax.annotate( r'$\rho_{\rm c}$ = %.8e'%(soliton_fitting_rho_c)+'\n'+ + r'$r_{\rm c}$ = %.8e'%(soliton_fitting_r_c)+'\n'+ + r'$r_{\rm min}$ = %.8e'%(soliton_r_min)+'\n'+ + r'$r_{\rm max}$ = %.8e'%(soliton_r_max)+'\n'+ + r'nbins = %d'%(soliton_nbins), + xy=(0.02,0.02), xycoords='axes fraction' ) + +# setting for the figure +ax.set_xscale('log') +ax.set_yscale('log') +ax.set_xlim( 0.5*np.min(soliton_densprof_radius), 2.0*np.max(soliton_densprof_radius) ) +ax.set_ylim( 0.0001*np.max(soliton_densprof_density), 3.0*np.max(soliton_densprof_density) ) + +# set the labels +ax.set_xlabel( r'$r$'+' (code_length)' ) +ax.set_ylabel( r'$\rho$'+' (code_density)' ) +fig.suptitle( 'Density Profile of Soliton' ) +ax.legend( loc='upper right' ) + +# save the figure +fig.subplots_adjust( top=0.93, bottom=0.1, left=0.1, right=0.97 ) +fig.savefig( 'fig_SolitonDensityProfile.png' ) +plt.close() +################################################################################################################### diff --git a/example/test_problem/ELBDM/HaloMerger/Make_UM_IC_uniform.py b/example/test_problem/ELBDM/HaloMerger/Make_UM_IC_uniform.py new file mode 100644 index 0000000000..88b4f51821 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/Make_UM_IC_uniform.py @@ -0,0 +1,437 @@ +import argparse +import numpy as np +import scipy.interpolate + +# ============================================================================================================= +# Table of Contents +# ============================================================================================================= +# Step 01. Load the command-line parameters +# Step 02. Set input parameters +# Step 03. Load the input UM_IC from file +# Step 04. Load the Input__UM_IC_RefineRegion +# Step 05. Set the input UM_IC structure information +# Step 06. Print the input UM_IC information +# Step 07. Set the information of the output single-level UM_IC +# Step 08. Print the output UM_IC information +# Step 09. Define the functions for data construction +# Step 10. Construct the output UM_IC +# Step 11. Write the output UM_IC to the file +# ============================================================================================================= + +# ============================================================================================================= +# Step 01. Load the command-line parameters +parser = argparse.ArgumentParser( description='Make multi-AMR-level UM_IC uniform \n\ + Example usage: python3 Make_UM_IC_uniform.py -input UM_IC_input -output UM_IC_output -n0_in 256 -l0_x_in 1.0 -level_out 0') + +parser.add_argument( '-input', action='store', required=False, type=str, dest='input_file', + help='input file [%(default)s]', default='./UM_IC_input') +parser.add_argument( '-output', action='store', required=False, type=str, dest='output_file', + help='output file [%(default)s]', default='./UM_IC_output') +parser.add_argument( '-n0_in', action='store', required=True, type=int, dest='n0_in', + help='number of input UM_IC base level grids', nargs='+' ) +parser.add_argument( '-l0_x_in', action='store', required=False, type=float, dest='l0_x_in', + help='box size of input UM_IC', default=1.0 ) +parser.add_argument( '-level_out', action='store', required=False, type=int, dest='level_out', + help='target level to output [%(default)d]', default=0 ) + +args=parser.parse_args() + +# ============================================================================================================= + +# ============================================================================================================= +# Step 02. Set input parameters +Target_lv = args.level_out # target level in the input UM_IC to be made uniform to +Input_filename = args.input_file # filename of the input UM_IC to be load +Output_filename = args.output_file # filename of the output UM_IC to be saved +Input__UM_IC_RefineRegion_filename = 'Input__UM_IC_RefineRegion' # the file to specify the refinement region of the input multi-level UM_IC + +UM_IC_Input_BoxSize_x = args.l0_x_in # box size of the input UM_IC in the x direction + +if len(args.n0_in) == 1: # box is cubic + UM_IC_Input_N_x_base = args.n0_in[0] # number of base-level cells in the input UM_IC in the x direction + UM_IC_Input_N_y_base = args.n0_in[0] # ... y direction + UM_IC_Input_N_z_base = args.n0_in[0] # ... z direction +elif len(args.n0_in) == 3: # box is rectangular + UM_IC_Input_N_x_base = args.n0_in[0] # number of base-level cells in the input UM_IC in the x direction + UM_IC_Input_N_y_base = args.n0_in[1] # ... y direction + UM_IC_Input_N_z_base = args.n0_in[2] # ... z direction +else: + raise RuntimeError('n0_in only accepts 1 or 3 paramters !!') + +PatchSize = 8 # PATCH_SIZE in GAMER +Float8 = False # whether the UM_IC is in double precision + +# Data construction method +Method_Lv_LtoH = 2 # from the lower levels to the target level + # (1=repeat, 2=interpolate) +Method_Lv_Same = 1 # from the same level as the target level + # (1=paste, 2=interpolate) +Method_Lv_HtoL = 1 # from the higher levels to the target level + # (1=pass, 2=interpolate, 3=average) +# Set the data type for UM_IC +if Float8: + dtype_UM_IC = np.double +else: + dtype_UM_IC = np.single + +# ============================================================================================================= + +# ============================================================================================================= +# Step 03. Load the input UM_IC from file +print( '' ) +print( 'Loading input data %s ... '%Input_filename ) + +UM_IC_Input = np.fromfile( Input_filename, dtype=dtype_UM_IC ) + +print( 'done!' ) + +# ============================================================================================================= + +# ============================================================================================================= +# Step 04. Load the Input__UM_IC_RefineRegion +print( '' ) +print( 'Loading %s ... '%Input__UM_IC_RefineRegion_filename ) + +with open( Input__UM_IC_RefineRegion_filename, 'r' ) as f: + for line in f: + if line.startswith( '#' ): + header = line + elif line.startswith( '\n' ): + continue + else: + break #stop when there are no more # + + f.close() + +Input__UM_IC_RefineRegion_header = header[1:].strip().split() +Input__UM_IC_RefineRegion_table = np.genfromtxt( Input__UM_IC_RefineRegion_filename, delimiter=None, comments='#', + names=Input__UM_IC_RefineRegion_header, dtype=None, encoding=None ) + +print( 'done!' ) + +# ============================================================================================================= + +# ============================================================================================================= +# Step 05. Set the input UM_IC structure information +UM_IC_Input_dh_base = UM_IC_Input_BoxSize_x/UM_IC_Input_N_x_base # base-level cell size of the input UM_IC + +UM_IC_Input_BoxSize_y = UM_IC_Input_dh_base*UM_IC_Input_N_y_base # box size of the input UM_IC in the y direction +UM_IC_Input_BoxSize_z = UM_IC_Input_dh_base*UM_IC_Input_N_z_base # ... z direction + +UM_IC_Input_NLEVEL = 1+np.max(Input__UM_IC_RefineRegion_table['dLv']) # number of AMR levels of the input UM_IC + +# Initialize the arrays +UM_IC_Input_NP_Skip_xL = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # number of patches on the parent level to be skipped in the x direction from the left edge of the parent refinement region +UM_IC_Input_NP_Skip_xR = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... x ... right ... +UM_IC_Input_NP_Skip_yL = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... y ... left ... +UM_IC_Input_NP_Skip_yR = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... y ... right ... +UM_IC_Input_NP_Skip_zL = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... z ... left ... +UM_IC_Input_NP_Skip_zR = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... z ... right ... +UM_IC_Input_NP_x = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # number of patches on each level in the x direction +UM_IC_Input_NP_y = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... y direction +UM_IC_Input_NP_z = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... z direction +UM_IC_Input_N_x = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # number of cells on each level in the x direction +UM_IC_Input_N_y = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... y direction +UM_IC_Input_N_z = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # ... z direction +UM_IC_Input_index0 = np.zeros( UM_IC_Input_NLEVEL, dtype=np.uint32 ) # starting index of data in the input UM_IC for each level +UM_IC_Input_x0 = np.zeros( UM_IC_Input_NLEVEL ) # left edge of the refinement region for each level in the x direction +UM_IC_Input_y0 = np.zeros( UM_IC_Input_NLEVEL ) # left ... y direction +UM_IC_Input_z0 = np.zeros( UM_IC_Input_NLEVEL ) # left ... z direction +UM_IC_Input_x1 = np.zeros( UM_IC_Input_NLEVEL ) # right ... x direction +UM_IC_Input_y1 = np.zeros( UM_IC_Input_NLEVEL ) # right ... y direction +UM_IC_Input_z1 = np.zeros( UM_IC_Input_NLEVEL ) # right ... z direction +UM_IC_Input_dh = np.zeros( UM_IC_Input_NLEVEL ) # cell size of the input UM_IC for each level + +# Loop for each level to set the input UM_IC structure information +for lv in range( 0, UM_IC_Input_NLEVEL, 1 ): + + UM_IC_Input_NP_Skip_xL[lv] = 0 if lv == 0 else Input__UM_IC_RefineRegion_table['NP_Skip_xL'][(Input__UM_IC_RefineRegion_table['dLv'] == lv)] + UM_IC_Input_NP_Skip_xR[lv] = 0 if lv == 0 else Input__UM_IC_RefineRegion_table['NP_Skip_xR'][(Input__UM_IC_RefineRegion_table['dLv'] == lv)] + UM_IC_Input_NP_Skip_yL[lv] = 0 if lv == 0 else Input__UM_IC_RefineRegion_table['NP_Skip_yL'][(Input__UM_IC_RefineRegion_table['dLv'] == lv)] + UM_IC_Input_NP_Skip_yR[lv] = 0 if lv == 0 else Input__UM_IC_RefineRegion_table['NP_Skip_yR'][(Input__UM_IC_RefineRegion_table['dLv'] == lv)] + UM_IC_Input_NP_Skip_zL[lv] = 0 if lv == 0 else Input__UM_IC_RefineRegion_table['NP_Skip_zL'][(Input__UM_IC_RefineRegion_table['dLv'] == lv)] + UM_IC_Input_NP_Skip_zR[lv] = 0 if lv == 0 else Input__UM_IC_RefineRegion_table['NP_Skip_zR'][(Input__UM_IC_RefineRegion_table['dLv'] == lv)] + UM_IC_Input_NP_x [lv] = UM_IC_Input_N_x_base/PatchSize if lv == 0 else 2*(UM_IC_Input_NP_x[lv-1]-UM_IC_Input_NP_Skip_xL[lv]-UM_IC_Input_NP_Skip_xR[lv]) + UM_IC_Input_NP_y [lv] = UM_IC_Input_N_y_base/PatchSize if lv == 0 else 2*(UM_IC_Input_NP_y[lv-1]-UM_IC_Input_NP_Skip_yL[lv]-UM_IC_Input_NP_Skip_yR[lv]) + UM_IC_Input_NP_z [lv] = UM_IC_Input_N_z_base/PatchSize if lv == 0 else 2*(UM_IC_Input_NP_z[lv-1]-UM_IC_Input_NP_Skip_zL[lv]-UM_IC_Input_NP_Skip_zR[lv]) + UM_IC_Input_N_x [lv] = UM_IC_Input_N_x_base if lv == 0 else UM_IC_Input_NP_x[lv]*PatchSize + UM_IC_Input_N_y [lv] = UM_IC_Input_N_y_base if lv == 0 else UM_IC_Input_NP_y[lv]*PatchSize + UM_IC_Input_N_z [lv] = UM_IC_Input_N_z_base if lv == 0 else UM_IC_Input_NP_z[lv]*PatchSize + UM_IC_Input_index0 [lv] = 0 if lv == 0 else UM_IC_Input_index0[lv-1]+2*UM_IC_Input_N_z[lv-1]*UM_IC_Input_N_y[lv-1]*UM_IC_Input_N_x[lv-1] + UM_IC_Input_x0 [lv] = 0.0 if lv == 0 else UM_IC_Input_x0[lv-1]+UM_IC_Input_NP_Skip_xL[lv]*PatchSize*UM_IC_Input_dh[lv-1] + UM_IC_Input_y0 [lv] = 0.0 if lv == 0 else UM_IC_Input_y0[lv-1]+UM_IC_Input_NP_Skip_yL[lv]*PatchSize*UM_IC_Input_dh[lv-1] + UM_IC_Input_z0 [lv] = 0.0 if lv == 0 else UM_IC_Input_z0[lv-1]+UM_IC_Input_NP_Skip_zL[lv]*PatchSize*UM_IC_Input_dh[lv-1] + UM_IC_Input_x1 [lv] = UM_IC_Input_BoxSize_x if lv == 0 else UM_IC_Input_x1[lv-1]-UM_IC_Input_NP_Skip_xR[lv]*PatchSize*UM_IC_Input_dh[lv-1] + UM_IC_Input_y1 [lv] = UM_IC_Input_BoxSize_y if lv == 0 else UM_IC_Input_y1[lv-1]-UM_IC_Input_NP_Skip_yR[lv]*PatchSize*UM_IC_Input_dh[lv-1] + UM_IC_Input_z1 [lv] = UM_IC_Input_BoxSize_z if lv == 0 else UM_IC_Input_z1[lv-1]-UM_IC_Input_NP_Skip_zR[lv]*PatchSize*UM_IC_Input_dh[lv-1] + UM_IC_Input_dh [lv] = UM_IC_Input_dh_base if lv == 0 else UM_IC_Input_dh_base/(2**lv) + +# ============================================================================================================= +# Step 06. Print the input UM_IC information +print( '' ) +print( '------------------------------------------------------------------------------------------------' ) +print( 'Input UM_IC information' ) +print( '------------------------------------------------------------------------------------------------' ) +print( f'{PatchSize = }' ) +print( f'{Float8 = }' ) +print( '' ) +print( f'{UM_IC_Input_BoxSize_x = }' ) +print( f'{UM_IC_Input_BoxSize_y = }' ) +print( f'{UM_IC_Input_BoxSize_z = }' ) +print( '' ) +print( f'{UM_IC_Input_N_x_base = }' ) +print( f'{UM_IC_Input_N_y_base = }' ) +print( f'{UM_IC_Input_N_z_base = }' ) +print( '' ) +print( f'{UM_IC_Input_dh_base = }' ) +print( '' ) +print( f'{UM_IC_Input_NLEVEL = }' ) +print( '' ) +print( f'{UM_IC_Input_NP_Skip_xL = }' ) +print( f'{UM_IC_Input_NP_Skip_xR = }' ) +print( f'{UM_IC_Input_x0 = }' ) +print( f'{UM_IC_Input_x1 = }' ) +print( '' ) +print( f'{UM_IC_Input_NP_Skip_yL = }' ) +print( f'{UM_IC_Input_NP_Skip_yR = }' ) +print( f'{UM_IC_Input_y0 = }' ) +print( f'{UM_IC_Input_y1 = }' ) +print( '' ) +print( f'{UM_IC_Input_NP_Skip_zL = }' ) +print( f'{UM_IC_Input_NP_Skip_zR = }' ) +print( f'{UM_IC_Input_z0 = }' ) +print( f'{UM_IC_Input_z1 = }' ) +print( '' ) +print( f'{UM_IC_Input_NP_x = }' ) +print( f'{UM_IC_Input_NP_y = }' ) +print( f'{UM_IC_Input_NP_z = }' ) +print( '' ) +print( f'{UM_IC_Input_N_x = }' ) +print( f'{UM_IC_Input_N_y = }' ) +print( f'{UM_IC_Input_N_z = }' ) +print( '' ) +print( f'{UM_IC_Input_dh = }' ) +print( '' ) +print( f'{UM_IC_Input_index0 = }' ) +print( '------------------------------------------------------------------------------------------------' ) +print( '' ) + +# ============================================================================================================= + +# ============================================================================================================= +# Step 07. Set the information of the output single-level UM_IC +UM_IC_Output_BoxSize_x = UM_IC_Input_BoxSize_x # box size of the output UM_IC in the x direction +UM_IC_Output_BoxSize_y = UM_IC_Input_BoxSize_y # ... y direction +UM_IC_Output_BoxSize_z = UM_IC_Input_BoxSize_z # ... z direction +UM_IC_Output_N_x = UM_IC_Input_N_x_base*(2**Target_lv) # number of cells of the output UM_IC in the x direction +UM_IC_Output_N_y = UM_IC_Input_N_y_base*(2**Target_lv) # ... y direction +UM_IC_Output_N_z = UM_IC_Input_N_z_base*(2**Target_lv) # ... z direction +UM_IC_Output_dh = UM_IC_Output_BoxSize_x/UM_IC_Output_N_x # cell size of the output UM_IC + +# ============================================================================================================= + +# ============================================================================================================= +# Step 08. Print the output UM_IC information +print( '' ) +print( '------------------------------------------------------------------------------------------------' ) +print( 'Output UM_IC information' ) +print( '------------------------------------------------------------------------------------------------' ) +print( f'{Target_lv = }' ) +print( '' ) +print( f'{UM_IC_Output_N_x = }' ) +print( f'{UM_IC_Output_N_y = }' ) +print( f'{UM_IC_Output_N_z = }' ) +print( '' ) +print( f'{UM_IC_Output_BoxSize_x = }' ) +print( f'{UM_IC_Output_BoxSize_y = }' ) +print( f'{UM_IC_Output_BoxSize_z = }' ) +print( '' ) +print( f'{UM_IC_Output_dh = }' ) +print( '' ) +print( f'{Method_Lv_LtoH = }'+' (1=repeat, 2=interpolate )' ) +print( f'{Method_Lv_Same = }'+' (1=paste, 2=interpolate )' ) +print( f'{Method_Lv_HtoL = }'+' (1=pass, 2=interpolate, 3=average)' ) +print( '------------------------------------------------------------------------------------------------' ) +print( '' ) + +# ============================================================================================================= + +# ============================================================================================================= +# Step 09. Define the functions for data construction + +# Use the single level input data as the interpolation table and perform interpolation for the grid points on the output data +def Interpolated_Data( UM_IC_Input_SingleLevel, lv ): + + # difference of levels + delta_lv = lv - Target_lv + + if delta_lv > np.log2( 2*PatchSize ): + raise RuntimeError( 'Interpolated_Data() does not work when (lv - Target_lv) > log_2( 2*PatchSize ) !!' ) + + # Interpolation Table + InterpolationTable_Real = UM_IC_Input_SingleLevel[ 0, :, :, : ] + InterpolationTable_Imag = UM_IC_Input_SingleLevel[ 1, :, :, : ] + + # Interpolation coordinates + InterpolationTable_Z = np.array( [ UM_IC_Input_z0[lv] + (k+0.5)*UM_IC_Input_dh[lv] for k in range( 0, UM_IC_Input_N_z[lv], 1 ) ] ) + InterpolationTable_Y = np.array( [ UM_IC_Input_y0[lv] + (j+0.5)*UM_IC_Input_dh[lv] for j in range( 0, UM_IC_Input_N_y[lv], 1 ) ] ) + InterpolationTable_X = np.array( [ UM_IC_Input_x0[lv] + (i+0.5)*UM_IC_Input_dh[lv] for i in range( 0, UM_IC_Input_N_x[lv], 1 ) ] ) + + # Interpolator + Interpolator_Real = scipy.interpolate.RegularGridInterpolator( (InterpolationTable_Z, InterpolationTable_Y, InterpolationTable_X), + InterpolationTable_Real, bounds_error=False, fill_value=None ) + Interpolator_Imag = scipy.interpolate.RegularGridInterpolator( (InterpolationTable_Z, InterpolationTable_Y, InterpolationTable_X), + InterpolationTable_Imag, bounds_error=False, fill_value=None ) + + # Interpolated data size + Interpolated_Data_N_z = np.around( UM_IC_Input_N_z[lv]/(2**delta_lv) ).astype(int) + Interpolated_Data_N_y = np.around( UM_IC_Input_N_y[lv]/(2**delta_lv) ).astype(int) + Interpolated_Data_N_x = np.around( UM_IC_Input_N_x[lv]/(2**delta_lv) ).astype(int) + + # Interpolation points + Interpolation_Pts_Z = np.array( [ UM_IC_Input_z0[lv] + (k+0.5)*UM_IC_Output_dh for k in range( 0, Interpolated_Data_N_z, 1 ) ], dtype=np.single ) + Interpolation_Pts_Y = np.array( [ UM_IC_Input_y0[lv] + (j+0.5)*UM_IC_Output_dh for j in range( 0, Interpolated_Data_N_y, 1 ) ], dtype=np.single ) + Interpolation_Pts_X = np.array( [ UM_IC_Input_x0[lv] + (i+0.5)*UM_IC_Output_dh for i in range( 0, Interpolated_Data_N_x, 1 ) ], dtype=np.single ) + Interpolation_Grid_Z, Interpolation_Grid_Y, Interpolation_Grid_X = np.meshgrid( Interpolation_Pts_Z, Interpolation_Pts_Y, Interpolation_Pts_X, indexing='ij' ) + Interpolation_Points = np.array( [Interpolation_Grid_Z.ravel(), Interpolation_Grid_Y.ravel(), Interpolation_Grid_X.ravel()], dtype=np.single ).T + + # Interpolation + Interpolated_Real = Interpolator_Real( Interpolation_Points ).reshape( (Interpolated_Data_N_z, Interpolated_Data_N_y, Interpolated_Data_N_x) ) + Interpolated_Imag = Interpolator_Imag( Interpolation_Points ).reshape( (Interpolated_Data_N_z, Interpolated_Data_N_y, Interpolated_Data_N_x) ) + Interpolated_Data = np.array( [Interpolated_Real, Interpolated_Imag], dtype=dtype_UM_IC ) + + return Interpolated_Data + +# Repeat the lower level input data to fill the grids of the higher level output data (e.g. 2x2x2 cube -> 4x4x4 cube) +def Repeated_Data( UM_IC_Input_LowerLevel, lv ): + + # difference of levels + delta_lv = lv - Target_lv + + if delta_lv > 0: + raise RuntimeError( 'lv must <= Target_lv for repeating !!' ) + + # Repeating + Repeated_Data = np.repeat( np.repeat( np.repeat( UM_IC_Input_LowerLevel, 2**(-delta_lv), axis=3 ), 2**(-delta_lv), axis=2 ), 2**(-delta_lv), axis=1 ) + + return Repeated_Data + +# Average the higher level input data to fill the grids of the lower level output data (e.g. 2x2x2 cube -> 1x1x1 cube) +def Averaged_Data( UM_IC_Input_HigherLevel, lv ): + + # difference of levels + delta_lv = lv - Target_lv + + if delta_lv < 0: + raise RuntimeError( 'lv must >= Target_lv for averaging !!' ) + + if delta_lv > np.log2( 2*PatchSize ): + raise RuntimeError( 'Averaged_Data() does not work when (lv - Target_lv) > log_2( 2*PatchSize ) !!' ) + + # Averaged data size + Averaged_Data_N_z = np.around( UM_IC_Input_N_z[lv]/(2**delta_lv) ).astype(int) + Averaged_Data_N_y = np.around( UM_IC_Input_N_y[lv]/(2**delta_lv) ).astype(int) + Averaged_Data_N_x = np.around( UM_IC_Input_N_x[lv]/(2**delta_lv) ).astype(int) + + # Averaging + Averaged_Data = ( 1.0/(2**delta_lv)**3 )*UM_IC_Input_HigherLevel.reshape( 2, Averaged_Data_N_z, 2**delta_lv, + Averaged_Data_N_y, 2**delta_lv, + Averaged_Data_N_x, 2**delta_lv ).sum(axis=2).sum(axis=3).sum(axis=4) + + return Averaged_Data + +# ============================================================================================================= + +# ============================================================================================================= +# Step 10. Construct the output UM_IC +print( '' ) +print( 'Constructing the output UM_IC ...' ) + +UM_IC_Output = np.zeros( ( 2, UM_IC_Output_N_z, UM_IC_Output_N_y, UM_IC_Output_N_x ), dtype=dtype_UM_IC ) + +for lv in range( 0, UM_IC_Input_NLEVEL, 1 ): + + print( ' lv %d ...'%lv ) + + # information for this level + index0 = UM_IC_Input_index0[lv] # starting index of data in the UM_IC_Input for this level + N_z = UM_IC_Input_N_z[lv] # number of cells in the z direction for this level + N_y = UM_IC_Input_N_y[lv] # number of cells in the y direction for this level + N_x = UM_IC_Input_N_x[lv] # number of cells in the x direction for this level + index1 = index0 + 2*N_z*N_y*N_x # ending index of data in the UM_IC_Input for this level + + # Input UM_IC data for this level + UM_IC_Input_thislevel = UM_IC_Input[index0:index1].reshape( ( 2, N_z, N_y, N_x ) ) + + # Construct the data according to the level and the methods + if lv < Target_lv: # Lower levels + + if Method_Lv_LtoH == 1: # Repeat + OutputRegion_Data = Repeated_Data( UM_IC_Input_thislevel, lv ) + + elif Method_Lv_LtoH == 2: # Interpolate + OutputRegion_Data = Interpolated_Data( UM_IC_Input_thislevel, lv ) + + else: + raise RuntimeError( 'Unsported Method_Lv_LtoH !!' ) + + elif lv == Target_lv: # Target level + + if Method_Lv_Same == 1: # Paste + OutputRegion_Data = UM_IC_Input_thislevel + + elif Method_Lv_Same == 2: # Interpolate + OutputRegion_Data = Interpolated_Data( UM_IC_Input_thislevel, lv ) + + else: + raise RuntimeError( 'Unsported Method_Lv_Same !!' ) + + elif lv > Target_lv and lv <= Target_lv + np.log2( 2*PatchSize ): # Higher levels + + if Method_Lv_HtoL == 1: # Pass + continue + + elif Method_Lv_HtoL == 2: # Interpolate + OutputRegion_Data = Interpolated_Data( UM_IC_Input_thislevel, lv ) + + elif Method_Lv_HtoL == 3: # Average + OutputRegion_Data = Averaged_Data( UM_IC_Input_thislevel, lv ) + + else: + raise RuntimeError( 'Unsported Method_Lv_HtoL !!' ) + + elif lv > Target_lv + np.log2( 2*PatchSize ): # level is too high that no method can be applied yet + print( 'levels higher than Target_lv+log_2( 2*PATCH_SIZE ) cannot be handled and will be ignored' ) + break + + else: + raise RuntimeError('Unknown lv !!') + + # Find the indices of where to put the constructed data + OutputRegion_index_k0 = np.around( UM_IC_Input_z0[lv]/UM_IC_Output_dh ).astype(int) + OutputRegion_index_j0 = np.around( UM_IC_Input_y0[lv]/UM_IC_Output_dh ).astype(int) + OutputRegion_index_i0 = np.around( UM_IC_Input_x0[lv]/UM_IC_Output_dh ).astype(int) + + OutputRegion_index_k1 = OutputRegion_index_k0+OutputRegion_Data.shape[1] + OutputRegion_index_j1 = OutputRegion_index_j0+OutputRegion_Data.shape[2] + OutputRegion_index_i1 = OutputRegion_index_i0+OutputRegion_Data.shape[3] + + # Put the constructed data into the output data + UM_IC_Output[ 0, OutputRegion_index_k0:OutputRegion_index_k1, OutputRegion_index_j0:OutputRegion_index_j1, OutputRegion_index_i0:OutputRegion_index_i1 ] = OutputRegion_Data[ 0, :, :, : ] + UM_IC_Output[ 1, OutputRegion_index_k0:OutputRegion_index_k1, OutputRegion_index_j0:OutputRegion_index_j1, OutputRegion_index_i0:OutputRegion_index_i1 ] = OutputRegion_Data[ 1, :, :, : ] + +print( 'done!' ) + +# ============================================================================================================= + +# ============================================================================================================= +# Step 11. Write the output UM_IC to the file +print( '' ) +print( 'Writing output file %s ...'%Output_filename ) +with open( Output_filename, 'wb' ) as f: + UM_IC_Output.tofile( f ) + f.close() + +print( 'done!' ) + +# ============================================================================================================= diff --git a/example/test_problem/ELBDM/HaloMerger/README b/example/test_problem/ELBDM/HaloMerger/README new file mode 100644 index 0000000000..68661238f7 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/README @@ -0,0 +1,84 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY (, PARTICLE, SUPPORT_GSL) +Disable: COMOVING + + +Default setup: +======================================== +1. Code units + (1) UNIT_L = Mpc/h, where h=0.6955 is the present dimensionless Hubble parameter + = 1437.814521231748 kpc + (2) UNIT_V = 100 km/s + (3) UNIT_D = rho_bg (background matter density at z=0) + = 38.06 Msun/kpc^3 + --> Mass density and wavefunction are normalized to rho_bg + (4) UNIT_T = 14068.4678922741 Myr + (5) UNIT_M = 1.131e+11 Msun + +2. ELBDM_MASS 1.0e-22 + ELBDM_REMOVE_MOTION_CM 0 + ELBDM_TAYLOR3_AUTO 0 + +3. OPT__BC_FLU_* 1 (periodic) + OPT__BC_POT 2 (isolated) + +4. MAX_LEVEL 3 + OPT__FLAG_RHO 1 + +5. END_T 0.25 + +Note: +======================================== +1. Simulate the merger of halos and solitons in an external potential + +2. Edit Input_TestProb_Halo to specify the parameters for the halos + a. Add new parameters with increasing indexes if the number of halos is more than 2 + b. For HaloMerger_Halo_InitMode == 1 + - The initial condition of halos is constructed by reading the HALO_IC file as a table and performing linear interpolation + - Note that this HALO_IC has nothing to do with the built-in option OPT__INIT = 3 + - The HALO_IC must be single AMR level + - If there is a halo UM_IC (for OPT__INIT = 3) that has multiple AMR levels (and there is Input__UM_IC_RefineRegion), + the Python script Make_UM_IC_uniform.py is provided to convert it to + a single-level UM_IC with the specified level, which can be used as the HALO_IC + (However, those levels higher than Target_lv+log_2( 2*PatchSize ) cannot be handled and will be ignored) + - If converting the halo UM_IC to be single-level is not feasible, + switching to the initialization option OPT__INIT = 3 to load a multi-level UM_IC is also an alternative + (However, only one UM_IC can be loaded and all the parameters in Input_TestProb_Halo will not be used) + - Note that HaloMerger_Halo_*_CenCoord* in Input__TestProb_Halo is the HALO_IC box center rather than the exact halo center + +3. Edit Input_TestProb_Soliton to specify the parameters for the solitons + a. Add new parameters with increasing indexes if the number of solitons is more than 2 + b. For HaloMerger_Soliton_InitMode == 1 + - The initial condition of solitons is constructed by reading the table of soliton density profile + (the density profile will be rescaled to the given core radius or core density if HaloMerger_Soliton_*_DensProf_Rescale == 1) + c. For HaloMerger_Soliton_InitMode == 2 + - The initial condition of solitons is constructed by using the analytical formula of soliton density profile + +4. Edit Input_TestProb_ParCloud to specify the parameters for the particle clouds + a. Add new parameters with increasing indexes if the number of particle clouds is more than 2 + b. For HaloMerger_ParCloud_InitMode == 1 + - The initial condition of particle clouds is constructed by reading the table of density profile and using Par_EquilibriumIC() + - The default particle clouds use the HaloDensityProfile (see Note 7. below) to represent the CDM halos + - Enable compilation options: PARTICLE, SUPPORT_GSL + - Set the parameter OPT__FREEZE_FLUID to 1 in Input__Parameter for particle-only simulations + +5. Turn on OPT__EXT_POT == 1 to add external potential + a. The external potential of a uniform-density sphere, which is proportional to r^2 inside and proportional to 1/r outside + +6. Download the default HALO_IC file: sh download_ic.sh + a. Halo mass = 4.0960e+09 Msun + b. Without soliton + c. N = 640, L = 0.0646921095 Mpc/h, single-precision + +7. Generate the default HaloDensityProfile and SolitonDensityProfile: python Make_DensityProfile.py + a. The parameters for the halo density profile are used to fit the ELBDM halo + +8. Some examples of yt visualization scripts are put in "plot_script" + +9. The corresponding wavelength is 0.00083778702 Mpc/h when ELBDM_MASS = 1.0e-22 and velocity = 1.0*100 km/s + -> Make sure the resolution is high enough to resolve the wavelength + +10. The input halos and solitons may overlap with each other initially + -> Their wavefunctions, instead of densities, are added directly + -> Note that the interference will cause the density distribution to be different from the sum of individual density diff --git a/example/test_problem/ELBDM/HaloMerger/SolitonDensityProfile b/example/test_problem/ELBDM/HaloMerger/SolitonDensityProfile new file mode 100644 index 0000000000..5dc53df8db --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/SolitonDensityProfile @@ -0,0 +1,4097 @@ +# r density + 6.95500000e-06 1.19576259e+05 + 6.96861142e-06 1.19576243e+05 + 6.98224948e-06 1.19576227e+05 + 6.99591423e-06 1.19576210e+05 + 7.00960572e-06 1.19576193e+05 + 7.02332400e-06 1.19576177e+05 + 7.03706913e-06 1.19576160e+05 + 7.05084117e-06 1.19576143e+05 + 7.06464015e-06 1.19576126e+05 + 7.07846615e-06 1.19576109e+05 + 7.09231920e-06 1.19576092e+05 + 7.10619936e-06 1.19576075e+05 + 7.12010668e-06 1.19576058e+05 + 7.13404123e-06 1.19576041e+05 + 7.14800304e-06 1.19576024e+05 + 7.16199218e-06 1.19576006e+05 + 7.17600870e-06 1.19575989e+05 + 7.19005264e-06 1.19575971e+05 + 7.20412408e-06 1.19575954e+05 + 7.21822305e-06 1.19575936e+05 + 7.23234961e-06 1.19575918e+05 + 7.24650382e-06 1.19575901e+05 + 7.26068573e-06 1.19575883e+05 + 7.27489540e-06 1.19575865e+05 + 7.28913288e-06 1.19575847e+05 + 7.30339821e-06 1.19575829e+05 + 7.31769147e-06 1.19575811e+05 + 7.33201270e-06 1.19575793e+05 + 7.34636196e-06 1.19575774e+05 + 7.36073930e-06 1.19575756e+05 + 7.37514478e-06 1.19575738e+05 + 7.38957845e-06 1.19575719e+05 + 7.40404037e-06 1.19575701e+05 + 7.41853059e-06 1.19575682e+05 + 7.43304917e-06 1.19575663e+05 + 7.44759616e-06 1.19575645e+05 + 7.46217163e-06 1.19575626e+05 + 7.47677562e-06 1.19575607e+05 + 7.49140819e-06 1.19575588e+05 + 7.50606939e-06 1.19575569e+05 + 7.52075929e-06 1.19575550e+05 + 7.53547794e-06 1.19575530e+05 + 7.55022539e-06 1.19575511e+05 + 7.56500171e-06 1.19575492e+05 + 7.57980694e-06 1.19575472e+05 + 7.59464115e-06 1.19575453e+05 + 7.60950439e-06 1.19575433e+05 + 7.62439672e-06 1.19575414e+05 + 7.63931820e-06 1.19575394e+05 + 7.65426887e-06 1.19575374e+05 + 7.66924881e-06 1.19575354e+05 + 7.68425806e-06 1.19575334e+05 + 7.69929669e-06 1.19575314e+05 + 7.71436475e-06 1.19575294e+05 + 7.72946229e-06 1.19575274e+05 + 7.74458939e-06 1.19575254e+05 + 7.75974609e-06 1.19575233e+05 + 7.77493245e-06 1.19575213e+05 + 7.79014853e-06 1.19575192e+05 + 7.80539440e-06 1.19575172e+05 + 7.82067009e-06 1.19575151e+05 + 7.83597569e-06 1.19575130e+05 + 7.85131124e-06 1.19575109e+05 + 7.86667680e-06 1.19575088e+05 + 7.88207243e-06 1.19575067e+05 + 7.89749820e-06 1.19575046e+05 + 7.91295415e-06 1.19575025e+05 + 7.92844035e-06 1.19575004e+05 + 7.94395686e-06 1.19574982e+05 + 7.95950373e-06 1.19574961e+05 + 7.97508104e-06 1.19574940e+05 + 7.99068882e-06 1.19574918e+05 + 8.00632716e-06 1.19574896e+05 + 8.02199610e-06 1.19574874e+05 + 8.03769570e-06 1.19574853e+05 + 8.05342603e-06 1.19574831e+05 + 8.06918714e-06 1.19574809e+05 + 8.08497910e-06 1.19574787e+05 + 8.10080197e-06 1.19574764e+05 + 8.11665580e-06 1.19574742e+05 + 8.13254066e-06 1.19574720e+05 + 8.14845661e-06 1.19574697e+05 + 8.16440370e-06 1.19574675e+05 + 8.18038201e-06 1.19574652e+05 + 8.19639158e-06 1.19574629e+05 + 8.21243249e-06 1.19574607e+05 + 8.22850479e-06 1.19574584e+05 + 8.24460855e-06 1.19574561e+05 + 8.26074382e-06 1.19574538e+05 + 8.27691067e-06 1.19574514e+05 + 8.29310916e-06 1.19574491e+05 + 8.30933935e-06 1.19574468e+05 + 8.32560130e-06 1.19574444e+05 + 8.34189508e-06 1.19574421e+05 + 8.35822075e-06 1.19574397e+05 + 8.37457837e-06 1.19574373e+05 + 8.39096800e-06 1.19574350e+05 + 8.40738971e-06 1.19574326e+05 + 8.42384356e-06 1.19574302e+05 + 8.44032960e-06 1.19574278e+05 + 8.45684792e-06 1.19574253e+05 + 8.47339855e-06 1.19574229e+05 + 8.48998158e-06 1.19574205e+05 + 8.50659707e-06 1.19574180e+05 + 8.52324507e-06 1.19574156e+05 + 8.53992565e-06 1.19574131e+05 + 8.55663888e-06 1.19574106e+05 + 8.57338482e-06 1.19574081e+05 + 8.59016353e-06 1.19574056e+05 + 8.60697507e-06 1.19574031e+05 + 8.62381952e-06 1.19574006e+05 + 8.64069694e-06 1.19573981e+05 + 8.65760738e-06 1.19573956e+05 + 8.67455092e-06 1.19573930e+05 + 8.69152762e-06 1.19573905e+05 + 8.70853754e-06 1.19573879e+05 + 8.72558075e-06 1.19573853e+05 + 8.74265732e-06 1.19573827e+05 + 8.75976731e-06 1.19573801e+05 + 8.77691078e-06 1.19573775e+05 + 8.79408781e-06 1.19573749e+05 + 8.81129845e-06 1.19573723e+05 + 8.82854277e-06 1.19573697e+05 + 8.84582084e-06 1.19573670e+05 + 8.86313273e-06 1.19573644e+05 + 8.88047850e-06 1.19573617e+05 + 8.89785821e-06 1.19573590e+05 + 8.91527194e-06 1.19573563e+05 + 8.93271974e-06 1.19573536e+05 + 8.95020170e-06 1.19573509e+05 + 8.96771786e-06 1.19573482e+05 + 8.98526831e-06 1.19573455e+05 + 9.00285310e-06 1.19573427e+05 + 9.02047231e-06 1.19573400e+05 + 9.03812600e-06 1.19573372e+05 + 9.05581424e-06 1.19573344e+05 + 9.07353710e-06 1.19573317e+05 + 9.09129464e-06 1.19573289e+05 + 9.10908694e-06 1.19573260e+05 + 9.12691406e-06 1.19573232e+05 + 9.14477606e-06 1.19573204e+05 + 9.16267302e-06 1.19573176e+05 + 9.18060501e-06 1.19573147e+05 + 9.19857209e-06 1.19573118e+05 + 9.21657434e-06 1.19573090e+05 + 9.23461181e-06 1.19573061e+05 + 9.25268459e-06 1.19573032e+05 + 9.27079274e-06 1.19573003e+05 + 9.28893632e-06 1.19572974e+05 + 9.30711542e-06 1.19572944e+05 + 9.32533009e-06 1.19572915e+05 + 9.34358041e-06 1.19572885e+05 + 9.36186644e-06 1.19572856e+05 + 9.38018827e-06 1.19572826e+05 + 9.39854595e-06 1.19572796e+05 + 9.41693955e-06 1.19572766e+05 + 9.43536916e-06 1.19572736e+05 + 9.45383483e-06 1.19572706e+05 + 9.47233664e-06 1.19572676e+05 + 9.49087466e-06 1.19572645e+05 + 9.50944897e-06 1.19572614e+05 + 9.52805962e-06 1.19572584e+05 + 9.54670669e-06 1.19572553e+05 + 9.56539026e-06 1.19572522e+05 + 9.58411039e-06 1.19572491e+05 + 9.60286716e-06 1.19572460e+05 + 9.62166064e-06 1.19572428e+05 + 9.64049090e-06 1.19572397e+05 + 9.65935801e-06 1.19572365e+05 + 9.67826205e-06 1.19572334e+05 + 9.69720308e-06 1.19572302e+05 + 9.71618118e-06 1.19572270e+05 + 9.73519642e-06 1.19572238e+05 + 9.75424888e-06 1.19572206e+05 + 9.77333862e-06 1.19572173e+05 + 9.79246572e-06 1.19572141e+05 + 9.81163026e-06 1.19572108e+05 + 9.83083230e-06 1.19572076e+05 + 9.85007192e-06 1.19572043e+05 + 9.86934920e-06 1.19572010e+05 + 9.88866420e-06 1.19571977e+05 + 9.90801700e-06 1.19571944e+05 + 9.92740768e-06 1.19571910e+05 + 9.94683631e-06 1.19571877e+05 + 9.96630295e-06 1.19571843e+05 + 9.98580770e-06 1.19571810e+05 + 1.00053506e-05 1.19571776e+05 + 1.00249318e-05 1.19571742e+05 + 1.00445513e-05 1.19571708e+05 + 1.00642092e-05 1.19571673e+05 + 1.00839055e-05 1.19571639e+05 + 1.01036404e-05 1.19571604e+05 + 1.01234139e-05 1.19571570e+05 + 1.01432262e-05 1.19571535e+05 + 1.01630772e-05 1.19571500e+05 + 1.01829670e-05 1.19571465e+05 + 1.02028958e-05 1.19571430e+05 + 1.02228636e-05 1.19571394e+05 + 1.02428704e-05 1.19571359e+05 + 1.02629164e-05 1.19571323e+05 + 1.02830017e-05 1.19571288e+05 + 1.03031262e-05 1.19571252e+05 + 1.03232902e-05 1.19571216e+05 + 1.03434936e-05 1.19571179e+05 + 1.03637365e-05 1.19571143e+05 + 1.03840190e-05 1.19571107e+05 + 1.04043413e-05 1.19571070e+05 + 1.04247033e-05 1.19571033e+05 + 1.04451052e-05 1.19570996e+05 + 1.04655470e-05 1.19570959e+05 + 1.04860288e-05 1.19570922e+05 + 1.05065507e-05 1.19570885e+05 + 1.05271127e-05 1.19570847e+05 + 1.05477150e-05 1.19570810e+05 + 1.05683576e-05 1.19570772e+05 + 1.05890406e-05 1.19570734e+05 + 1.06097641e-05 1.19570696e+05 + 1.06305282e-05 1.19570658e+05 + 1.06513328e-05 1.19570619e+05 + 1.06721782e-05 1.19570581e+05 + 1.06930644e-05 1.19570542e+05 + 1.07139915e-05 1.19570503e+05 + 1.07349595e-05 1.19570464e+05 + 1.07559686e-05 1.19570425e+05 + 1.07770188e-05 1.19570386e+05 + 1.07981101e-05 1.19570346e+05 + 1.08192428e-05 1.19570307e+05 + 1.08404168e-05 1.19570267e+05 + 1.08616323e-05 1.19570227e+05 + 1.08828892e-05 1.19570187e+05 + 1.09041878e-05 1.19570147e+05 + 1.09255280e-05 1.19570107e+05 + 1.09469101e-05 1.19570066e+05 + 1.09683339e-05 1.19570025e+05 + 1.09897997e-05 1.19569985e+05 + 1.10113075e-05 1.19569944e+05 + 1.10328574e-05 1.19569902e+05 + 1.10544495e-05 1.19569861e+05 + 1.10760838e-05 1.19569820e+05 + 1.10977605e-05 1.19569778e+05 + 1.11194796e-05 1.19569736e+05 + 1.11412412e-05 1.19569694e+05 + 1.11630453e-05 1.19569652e+05 + 1.11848922e-05 1.19569610e+05 + 1.12067818e-05 1.19569567e+05 + 1.12287143e-05 1.19569524e+05 + 1.12506896e-05 1.19569482e+05 + 1.12727080e-05 1.19569439e+05 + 1.12947695e-05 1.19569396e+05 + 1.13168741e-05 1.19569352e+05 + 1.13390220e-05 1.19569309e+05 + 1.13612133e-05 1.19569265e+05 + 1.13834480e-05 1.19569221e+05 + 1.14057262e-05 1.19569177e+05 + 1.14280480e-05 1.19569133e+05 + 1.14504135e-05 1.19569089e+05 + 1.14728227e-05 1.19569044e+05 + 1.14952758e-05 1.19569000e+05 + 1.15177729e-05 1.19568955e+05 + 1.15403140e-05 1.19568910e+05 + 1.15628992e-05 1.19568864e+05 + 1.15855286e-05 1.19568819e+05 + 1.16082022e-05 1.19568773e+05 + 1.16309203e-05 1.19568728e+05 + 1.16536828e-05 1.19568682e+05 + 1.16764899e-05 1.19568636e+05 + 1.16993416e-05 1.19568589e+05 + 1.17222380e-05 1.19568543e+05 + 1.17451792e-05 1.19568496e+05 + 1.17681654e-05 1.19568449e+05 + 1.17911965e-05 1.19568402e+05 + 1.18142727e-05 1.19568355e+05 + 1.18373940e-05 1.19568308e+05 + 1.18605606e-05 1.19568260e+05 + 1.18837726e-05 1.19568212e+05 + 1.19070299e-05 1.19568164e+05 + 1.19303328e-05 1.19568116e+05 + 1.19536813e-05 1.19568068e+05 + 1.19770755e-05 1.19568019e+05 + 1.20005155e-05 1.19567971e+05 + 1.20240013e-05 1.19567922e+05 + 1.20475331e-05 1.19567873e+05 + 1.20711110e-05 1.19567824e+05 + 1.20947350e-05 1.19567774e+05 + 1.21184052e-05 1.19567724e+05 + 1.21421218e-05 1.19567675e+05 + 1.21658848e-05 1.19567624e+05 + 1.21896942e-05 1.19567574e+05 + 1.22135503e-05 1.19567524e+05 + 1.22374531e-05 1.19567473e+05 + 1.22614026e-05 1.19567422e+05 + 1.22853991e-05 1.19567371e+05 + 1.23094424e-05 1.19567320e+05 + 1.23335329e-05 1.19567269e+05 + 1.23576704e-05 1.19567217e+05 + 1.23818553e-05 1.19567165e+05 + 1.24060874e-05 1.19567113e+05 + 1.24303670e-05 1.19567061e+05 + 1.24546941e-05 1.19567008e+05 + 1.24790688e-05 1.19566956e+05 + 1.25034912e-05 1.19566903e+05 + 1.25279614e-05 1.19566850e+05 + 1.25524795e-05 1.19566796e+05 + 1.25770456e-05 1.19566743e+05 + 1.26016597e-05 1.19566689e+05 + 1.26263220e-05 1.19566635e+05 + 1.26510326e-05 1.19566581e+05 + 1.26757916e-05 1.19566527e+05 + 1.27005990e-05 1.19566472e+05 + 1.27254549e-05 1.19566417e+05 + 1.27503595e-05 1.19566362e+05 + 1.27753129e-05 1.19566307e+05 + 1.28003150e-05 1.19566252e+05 + 1.28253661e-05 1.19566196e+05 + 1.28504663e-05 1.19566140e+05 + 1.28756155e-05 1.19566084e+05 + 1.29008140e-05 1.19566028e+05 + 1.29260618e-05 1.19565971e+05 + 1.29513590e-05 1.19565915e+05 + 1.29767057e-05 1.19565858e+05 + 1.30021020e-05 1.19565801e+05 + 1.30275480e-05 1.19565743e+05 + 1.30530439e-05 1.19565686e+05 + 1.30785896e-05 1.19565628e+05 + 1.31041853e-05 1.19565570e+05 + 1.31298311e-05 1.19565511e+05 + 1.31555271e-05 1.19565453e+05 + 1.31812734e-05 1.19565394e+05 + 1.32070700e-05 1.19565335e+05 + 1.32329172e-05 1.19565276e+05 + 1.32588149e-05 1.19565216e+05 + 1.32847633e-05 1.19565157e+05 + 1.33107625e-05 1.19565097e+05 + 1.33368126e-05 1.19565037e+05 + 1.33629137e-05 1.19564976e+05 + 1.33890658e-05 1.19564916e+05 + 1.34152692e-05 1.19564855e+05 + 1.34415238e-05 1.19564794e+05 + 1.34678298e-05 1.19564732e+05 + 1.34941873e-05 1.19564671e+05 + 1.35205963e-05 1.19564609e+05 + 1.35470571e-05 1.19564547e+05 + 1.35735696e-05 1.19564484e+05 + 1.36001340e-05 1.19564422e+05 + 1.36267504e-05 1.19564359e+05 + 1.36534189e-05 1.19564296e+05 + 1.36801396e-05 1.19564233e+05 + 1.37069126e-05 1.19564169e+05 + 1.37337380e-05 1.19564105e+05 + 1.37606159e-05 1.19564041e+05 + 1.37875463e-05 1.19563977e+05 + 1.38145295e-05 1.19563913e+05 + 1.38415655e-05 1.19563848e+05 + 1.38686544e-05 1.19563783e+05 + 1.38957964e-05 1.19563717e+05 + 1.39229914e-05 1.19563652e+05 + 1.39502397e-05 1.19563586e+05 + 1.39775412e-05 1.19563520e+05 + 1.40048963e-05 1.19563454e+05 + 1.40323048e-05 1.19563387e+05 + 1.40597670e-05 1.19563320e+05 + 1.40872830e-05 1.19563253e+05 + 1.41148527e-05 1.19563186e+05 + 1.41424765e-05 1.19563118e+05 + 1.41701543e-05 1.19563050e+05 + 1.41978863e-05 1.19562982e+05 + 1.42256725e-05 1.19562914e+05 + 1.42535132e-05 1.19562845e+05 + 1.42814083e-05 1.19562776e+05 + 1.43093580e-05 1.19562707e+05 + 1.43373624e-05 1.19562637e+05 + 1.43654216e-05 1.19562567e+05 + 1.43935357e-05 1.19562497e+05 + 1.44217049e-05 1.19562427e+05 + 1.44499292e-05 1.19562356e+05 + 1.44782087e-05 1.19562285e+05 + 1.45065435e-05 1.19562214e+05 + 1.45349338e-05 1.19562143e+05 + 1.45633797e-05 1.19562071e+05 + 1.45918813e-05 1.19561999e+05 + 1.46204386e-05 1.19561927e+05 + 1.46490518e-05 1.19561854e+05 + 1.46777210e-05 1.19561781e+05 + 1.47064463e-05 1.19561708e+05 + 1.47352279e-05 1.19561635e+05 + 1.47640657e-05 1.19561561e+05 + 1.47929600e-05 1.19561487e+05 + 1.48219109e-05 1.19561413e+05 + 1.48509184e-05 1.19561338e+05 + 1.48799827e-05 1.19561263e+05 + 1.49091038e-05 1.19561188e+05 + 1.49382820e-05 1.19561113e+05 + 1.49675173e-05 1.19561037e+05 + 1.49968097e-05 1.19560961e+05 + 1.50261595e-05 1.19560884e+05 + 1.50555668e-05 1.19560808e+05 + 1.50850316e-05 1.19560731e+05 + 1.51145540e-05 1.19560654e+05 + 1.51441342e-05 1.19560576e+05 + 1.51737724e-05 1.19560498e+05 + 1.52034685e-05 1.19560420e+05 + 1.52332227e-05 1.19560341e+05 + 1.52630352e-05 1.19560263e+05 + 1.52929060e-05 1.19560184e+05 + 1.53228353e-05 1.19560104e+05 + 1.53528232e-05 1.19560024e+05 + 1.53828697e-05 1.19559944e+05 + 1.54129750e-05 1.19559864e+05 + 1.54431393e-05 1.19559783e+05 + 1.54733626e-05 1.19559702e+05 + 1.55036451e-05 1.19559621e+05 + 1.55339868e-05 1.19559540e+05 + 1.55643879e-05 1.19559458e+05 + 1.55948484e-05 1.19559375e+05 + 1.56253686e-05 1.19559293e+05 + 1.56559486e-05 1.19559210e+05 + 1.56865884e-05 1.19559127e+05 + 1.57172881e-05 1.19559043e+05 + 1.57480479e-05 1.19558959e+05 + 1.57788680e-05 1.19558875e+05 + 1.58097483e-05 1.19558791e+05 + 1.58406891e-05 1.19558706e+05 + 1.58716904e-05 1.19558621e+05 + 1.59027524e-05 1.19558535e+05 + 1.59338752e-05 1.19558449e+05 + 1.59650589e-05 1.19558363e+05 + 1.59963036e-05 1.19558276e+05 + 1.60276095e-05 1.19558190e+05 + 1.60589766e-05 1.19558102e+05 + 1.60904052e-05 1.19558015e+05 + 1.61218952e-05 1.19557927e+05 + 1.61534469e-05 1.19557839e+05 + 1.61850603e-05 1.19557750e+05 + 1.62167356e-05 1.19557661e+05 + 1.62484729e-05 1.19557572e+05 + 1.62802723e-05 1.19557482e+05 + 1.63121339e-05 1.19557392e+05 + 1.63440579e-05 1.19557302e+05 + 1.63760443e-05 1.19557211e+05 + 1.64080934e-05 1.19557120e+05 + 1.64402052e-05 1.19557029e+05 + 1.64723798e-05 1.19556937e+05 + 1.65046174e-05 1.19556845e+05 + 1.65369181e-05 1.19556752e+05 + 1.65692820e-05 1.19556660e+05 + 1.66017092e-05 1.19556566e+05 + 1.66341999e-05 1.19556473e+05 + 1.66667542e-05 1.19556379e+05 + 1.66993722e-05 1.19556285e+05 + 1.67320540e-05 1.19556190e+05 + 1.67647998e-05 1.19556095e+05 + 1.67976097e-05 1.19555999e+05 + 1.68304838e-05 1.19555904e+05 + 1.68634222e-05 1.19555807e+05 + 1.68964251e-05 1.19555711e+05 + 1.69294925e-05 1.19555614e+05 + 1.69626247e-05 1.19555517e+05 + 1.69958218e-05 1.19555419e+05 + 1.70290838e-05 1.19555321e+05 + 1.70624109e-05 1.19555222e+05 + 1.70958032e-05 1.19555124e+05 + 1.71292609e-05 1.19555024e+05 + 1.71627840e-05 1.19554925e+05 + 1.71963728e-05 1.19554825e+05 + 1.72300273e-05 1.19554724e+05 + 1.72637477e-05 1.19554624e+05 + 1.72975340e-05 1.19554522e+05 + 1.73313865e-05 1.19554421e+05 + 1.73653052e-05 1.19554319e+05 + 1.73992903e-05 1.19554216e+05 + 1.74333419e-05 1.19554114e+05 + 1.74674602e-05 1.19554011e+05 + 1.75016452e-05 1.19553907e+05 + 1.75358972e-05 1.19553803e+05 + 1.75702161e-05 1.19553699e+05 + 1.76046023e-05 1.19553594e+05 + 1.76390557e-05 1.19553489e+05 + 1.76735766e-05 1.19553383e+05 + 1.77081650e-05 1.19553277e+05 + 1.77428211e-05 1.19553170e+05 + 1.77775450e-05 1.19553064e+05 + 1.78123369e-05 1.19552956e+05 + 1.78471969e-05 1.19552849e+05 + 1.78821251e-05 1.19552740e+05 + 1.79171217e-05 1.19552632e+05 + 1.79521867e-05 1.19552523e+05 + 1.79873204e-05 1.19552413e+05 + 1.80225228e-05 1.19552304e+05 + 1.80577942e-05 1.19552193e+05 + 1.80931345e-05 1.19552083e+05 + 1.81285440e-05 1.19551971e+05 + 1.81640228e-05 1.19551860e+05 + 1.81995711e-05 1.19551748e+05 + 1.82351889e-05 1.19551635e+05 + 1.82708765e-05 1.19551523e+05 + 1.83066338e-05 1.19551409e+05 + 1.83424612e-05 1.19551295e+05 + 1.83783587e-05 1.19551181e+05 + 1.84143264e-05 1.19551067e+05 + 1.84503645e-05 1.19550951e+05 + 1.84864731e-05 1.19550836e+05 + 1.85226525e-05 1.19550720e+05 + 1.85589026e-05 1.19550603e+05 + 1.85952236e-05 1.19550486e+05 + 1.86316158e-05 1.19550369e+05 + 1.86680792e-05 1.19550251e+05 + 1.87046139e-05 1.19550133e+05 + 1.87412201e-05 1.19550014e+05 + 1.87778980e-05 1.19549895e+05 + 1.88146476e-05 1.19549775e+05 + 1.88514692e-05 1.19549655e+05 + 1.88883628e-05 1.19549534e+05 + 1.89253287e-05 1.19549413e+05 + 1.89623669e-05 1.19549292e+05 + 1.89994775e-05 1.19549170e+05 + 1.90366608e-05 1.19549047e+05 + 1.90739169e-05 1.19548924e+05 + 1.91112459e-05 1.19548801e+05 + 1.91486479e-05 1.19548677e+05 + 1.91861231e-05 1.19548552e+05 + 1.92236717e-05 1.19548427e+05 + 1.92612938e-05 1.19548302e+05 + 1.92989895e-05 1.19548176e+05 + 1.93367589e-05 1.19548049e+05 + 1.93746023e-05 1.19547922e+05 + 1.94125198e-05 1.19547795e+05 + 1.94505114e-05 1.19547667e+05 + 1.94885774e-05 1.19547539e+05 + 1.95267179e-05 1.19547410e+05 + 1.95649331e-05 1.19547280e+05 + 1.96032230e-05 1.19547150e+05 + 1.96415879e-05 1.19547020e+05 + 1.96800278e-05 1.19546889e+05 + 1.97185430e-05 1.19546757e+05 + 1.97571336e-05 1.19546625e+05 + 1.97957996e-05 1.19546493e+05 + 1.98345414e-05 1.19546360e+05 + 1.98733590e-05 1.19546226e+05 + 1.99122525e-05 1.19546092e+05 + 1.99512222e-05 1.19545958e+05 + 1.99902681e-05 1.19545822e+05 + 2.00293904e-05 1.19545687e+05 + 2.00685894e-05 1.19545551e+05 + 2.01078650e-05 1.19545414e+05 + 2.01472175e-05 1.19545277e+05 + 2.01866470e-05 1.19545139e+05 + 2.02261536e-05 1.19545001e+05 + 2.02657376e-05 1.19544862e+05 + 2.03053991e-05 1.19544722e+05 + 2.03451382e-05 1.19544582e+05 + 2.03849550e-05 1.19544442e+05 + 2.04248498e-05 1.19544301e+05 + 2.04648226e-05 1.19544159e+05 + 2.05048737e-05 1.19544017e+05 + 2.05450032e-05 1.19543874e+05 + 2.05852112e-05 1.19543731e+05 + 2.06254979e-05 1.19543587e+05 + 2.06658634e-05 1.19543443e+05 + 2.07063079e-05 1.19543298e+05 + 2.07468316e-05 1.19543152e+05 + 2.07874346e-05 1.19543006e+05 + 2.08281171e-05 1.19542859e+05 + 2.08688791e-05 1.19542712e+05 + 2.09097210e-05 1.19542564e+05 + 2.09506427e-05 1.19542416e+05 + 2.09916446e-05 1.19542267e+05 + 2.10327267e-05 1.19542117e+05 + 2.10738892e-05 1.19541967e+05 + 2.11151323e-05 1.19541816e+05 + 2.11564561e-05 1.19541665e+05 + 2.11978607e-05 1.19541513e+05 + 2.12393464e-05 1.19541361e+05 + 2.12809133e-05 1.19541207e+05 + 2.13225615e-05 1.19541054e+05 + 2.13642913e-05 1.19540899e+05 + 2.14061027e-05 1.19540744e+05 + 2.14479959e-05 1.19540589e+05 + 2.14899711e-05 1.19540433e+05 + 2.15320285e-05 1.19540276e+05 + 2.15741681e-05 1.19540119e+05 + 2.16163903e-05 1.19539961e+05 + 2.16586951e-05 1.19539802e+05 + 2.17010826e-05 1.19539643e+05 + 2.17435532e-05 1.19539483e+05 + 2.17861068e-05 1.19539322e+05 + 2.18287437e-05 1.19539161e+05 + 2.18714641e-05 1.19539000e+05 + 2.19142681e-05 1.19538837e+05 + 2.19571558e-05 1.19538674e+05 + 2.20001275e-05 1.19538510e+05 + 2.20431833e-05 1.19538346e+05 + 2.20863233e-05 1.19538181e+05 + 2.21295478e-05 1.19538016e+05 + 2.21728569e-05 1.19537849e+05 + 2.22162507e-05 1.19537683e+05 + 2.22597294e-05 1.19537515e+05 + 2.23032933e-05 1.19537347e+05 + 2.23469424e-05 1.19537178e+05 + 2.23906769e-05 1.19537008e+05 + 2.24344970e-05 1.19536838e+05 + 2.24784029e-05 1.19536667e+05 + 2.25223946e-05 1.19536496e+05 + 2.25664725e-05 1.19536324e+05 + 2.26106367e-05 1.19536151e+05 + 2.26548873e-05 1.19535977e+05 + 2.26992245e-05 1.19535803e+05 + 2.27436484e-05 1.19535628e+05 + 2.27881593e-05 1.19535453e+05 + 2.28327573e-05 1.19535276e+05 + 2.28774426e-05 1.19535099e+05 + 2.29222154e-05 1.19534922e+05 + 2.29670757e-05 1.19534743e+05 + 2.30120239e-05 1.19534564e+05 + 2.30570600e-05 1.19534385e+05 + 2.31021843e-05 1.19534204e+05 + 2.31473969e-05 1.19534023e+05 + 2.31926980e-05 1.19533841e+05 + 2.32380877e-05 1.19533659e+05 + 2.32835662e-05 1.19533475e+05 + 2.33291338e-05 1.19533291e+05 + 2.33747905e-05 1.19533107e+05 + 2.34205366e-05 1.19532921e+05 + 2.34663722e-05 1.19532735e+05 + 2.35122975e-05 1.19532548e+05 + 2.35583127e-05 1.19532360e+05 + 2.36044180e-05 1.19532172e+05 + 2.36506135e-05 1.19531983e+05 + 2.36968994e-05 1.19531793e+05 + 2.37432759e-05 1.19531602e+05 + 2.37897431e-05 1.19531411e+05 + 2.38363013e-05 1.19531219e+05 + 2.38829506e-05 1.19531026e+05 + 2.39296912e-05 1.19530833e+05 + 2.39765232e-05 1.19530638e+05 + 2.40234470e-05 1.19530443e+05 + 2.40704625e-05 1.19530247e+05 + 2.41175701e-05 1.19530050e+05 + 2.41647698e-05 1.19529853e+05 + 2.42120620e-05 1.19529655e+05 + 2.42594467e-05 1.19529456e+05 + 2.43069241e-05 1.19529256e+05 + 2.43544944e-05 1.19529056e+05 + 2.44021579e-05 1.19528854e+05 + 2.44499146e-05 1.19528652e+05 + 2.44977648e-05 1.19528449e+05 + 2.45457086e-05 1.19528246e+05 + 2.45937462e-05 1.19528041e+05 + 2.46418779e-05 1.19527836e+05 + 2.46901038e-05 1.19527630e+05 + 2.47384240e-05 1.19527423e+05 + 2.47868388e-05 1.19527215e+05 + 2.48353484e-05 1.19527007e+05 + 2.48839529e-05 1.19526797e+05 + 2.49326525e-05 1.19526587e+05 + 2.49814475e-05 1.19526376e+05 + 2.50303379e-05 1.19526164e+05 + 2.50793240e-05 1.19525952e+05 + 2.51284060e-05 1.19525738e+05 + 2.51775840e-05 1.19525524e+05 + 2.52268583e-05 1.19525309e+05 + 2.52762290e-05 1.19525093e+05 + 2.53256964e-05 1.19524876e+05 + 2.53752605e-05 1.19524658e+05 + 2.54249217e-05 1.19524440e+05 + 2.54746800e-05 1.19524220e+05 + 2.55245357e-05 1.19524000e+05 + 2.55744890e-05 1.19523779e+05 + 2.56245401e-05 1.19523557e+05 + 2.56746891e-05 1.19523334e+05 + 2.57249362e-05 1.19523110e+05 + 2.57752817e-05 1.19522886e+05 + 2.58257257e-05 1.19522660e+05 + 2.58762685e-05 1.19522434e+05 + 2.59269101e-05 1.19522207e+05 + 2.59776509e-05 1.19521978e+05 + 2.60284909e-05 1.19521749e+05 + 2.60794305e-05 1.19521519e+05 + 2.61304698e-05 1.19521289e+05 + 2.61816089e-05 1.19521057e+05 + 2.62328481e-05 1.19520824e+05 + 2.62841876e-05 1.19520591e+05 + 2.63356276e-05 1.19520356e+05 + 2.63871683e-05 1.19520121e+05 + 2.64388098e-05 1.19519885e+05 + 2.64905524e-05 1.19519647e+05 + 2.65423962e-05 1.19519409e+05 + 2.65943416e-05 1.19519170e+05 + 2.66463885e-05 1.19518930e+05 + 2.66985374e-05 1.19518689e+05 + 2.67507883e-05 1.19518447e+05 + 2.68031414e-05 1.19518204e+05 + 2.68555970e-05 1.19517960e+05 + 2.69081553e-05 1.19517716e+05 + 2.69608164e-05 1.19517470e+05 + 2.70135806e-05 1.19517223e+05 + 2.70664481e-05 1.19516976e+05 + 2.71194190e-05 1.19516727e+05 + 2.71724936e-05 1.19516477e+05 + 2.72256720e-05 1.19516227e+05 + 2.72789546e-05 1.19515975e+05 + 2.73323414e-05 1.19515723e+05 + 2.73858327e-05 1.19515469e+05 + 2.74394286e-05 1.19515215e+05 + 2.74931295e-05 1.19514959e+05 + 2.75469355e-05 1.19514703e+05 + 2.76008467e-05 1.19514445e+05 + 2.76548635e-05 1.19514187e+05 + 2.77089860e-05 1.19513927e+05 + 2.77632144e-05 1.19513666e+05 + 2.78175489e-05 1.19513405e+05 + 2.78719898e-05 1.19513142e+05 + 2.79265372e-05 1.19512879e+05 + 2.79811914e-05 1.19512614e+05 + 2.80359526e-05 1.19512348e+05 + 2.80908209e-05 1.19512082e+05 + 2.81457966e-05 1.19511814e+05 + 2.82008798e-05 1.19511545e+05 + 2.82560709e-05 1.19511275e+05 + 2.83113700e-05 1.19511004e+05 + 2.83667773e-05 1.19510732e+05 + 2.84222931e-05 1.19510459e+05 + 2.84779175e-05 1.19510185e+05 + 2.85336507e-05 1.19509910e+05 + 2.85894931e-05 1.19509633e+05 + 2.86454447e-05 1.19509356e+05 + 2.87015058e-05 1.19509078e+05 + 2.87576767e-05 1.19508798e+05 + 2.88139574e-05 1.19508517e+05 + 2.88703484e-05 1.19508236e+05 + 2.89268496e-05 1.19507953e+05 + 2.89834615e-05 1.19507669e+05 + 2.90401841e-05 1.19507384e+05 + 2.90970178e-05 1.19507098e+05 + 2.91539627e-05 1.19506810e+05 + 2.92110190e-05 1.19506522e+05 + 2.92681870e-05 1.19506232e+05 + 2.93254669e-05 1.19505942e+05 + 2.93828589e-05 1.19505650e+05 + 2.94403632e-05 1.19505357e+05 + 2.94979800e-05 1.19505063e+05 + 2.95557096e-05 1.19504767e+05 + 2.96135522e-05 1.19504471e+05 + 2.96715079e-05 1.19504173e+05 + 2.97295771e-05 1.19503875e+05 + 2.97877600e-05 1.19503575e+05 + 2.98460567e-05 1.19503274e+05 + 2.99044675e-05 1.19502971e+05 + 2.99629926e-05 1.19502668e+05 + 3.00216323e-05 1.19502363e+05 + 3.00803867e-05 1.19502057e+05 + 3.01392561e-05 1.19501750e+05 + 3.01982407e-05 1.19501442e+05 + 3.02573408e-05 1.19501133e+05 + 3.03165565e-05 1.19500822e+05 + 3.03758881e-05 1.19500510e+05 + 3.04353358e-05 1.19500197e+05 + 3.04948999e-05 1.19499883e+05 + 3.05545806e-05 1.19499567e+05 + 3.06143780e-05 1.19499251e+05 + 3.06742925e-05 1.19498932e+05 + 3.07343242e-05 1.19498613e+05 + 3.07944734e-05 1.19498293e+05 + 3.08547403e-05 1.19497971e+05 + 3.09151252e-05 1.19497648e+05 + 3.09756282e-05 1.19497324e+05 + 3.10362497e-05 1.19496998e+05 + 3.10969898e-05 1.19496671e+05 + 3.11578488e-05 1.19496343e+05 + 3.12188268e-05 1.19496014e+05 + 3.12799242e-05 1.19495683e+05 + 3.13411412e-05 1.19495351e+05 + 3.14024780e-05 1.19495018e+05 + 3.14639348e-05 1.19494683e+05 + 3.15255120e-05 1.19494347e+05 + 3.15872096e-05 1.19494010e+05 + 3.16490279e-05 1.19493671e+05 + 3.17109673e-05 1.19493332e+05 + 3.17730278e-05 1.19492990e+05 + 3.18352099e-05 1.19492648e+05 + 3.18975136e-05 1.19492304e+05 + 3.19599392e-05 1.19491959e+05 + 3.20224871e-05 1.19491612e+05 + 3.20851573e-05 1.19491264e+05 + 3.21479502e-05 1.19490915e+05 + 3.22108659e-05 1.19490564e+05 + 3.22739048e-05 1.19490212e+05 + 3.23370671e-05 1.19489859e+05 + 3.24003530e-05 1.19489504e+05 + 3.24637628e-05 1.19489148e+05 + 3.25272966e-05 1.19488790e+05 + 3.25909548e-05 1.19488431e+05 + 3.26547375e-05 1.19488071e+05 + 3.27186451e-05 1.19487709e+05 + 3.27826778e-05 1.19487346e+05 + 3.28468358e-05 1.19486981e+05 + 3.29111193e-05 1.19486615e+05 + 3.29755287e-05 1.19486248e+05 + 3.30400641e-05 1.19485879e+05 + 3.31047258e-05 1.19485509e+05 + 3.31695140e-05 1.19485137e+05 + 3.32344290e-05 1.19484763e+05 + 3.32994711e-05 1.19484389e+05 + 3.33646405e-05 1.19484013e+05 + 3.34299374e-05 1.19483635e+05 + 3.34953621e-05 1.19483256e+05 + 3.35609149e-05 1.19482875e+05 + 3.36265959e-05 1.19482493e+05 + 3.36924055e-05 1.19482109e+05 + 3.37583439e-05 1.19481724e+05 + 3.38244113e-05 1.19481338e+05 + 3.38906080e-05 1.19480949e+05 + 3.39569343e-05 1.19480560e+05 + 3.40233904e-05 1.19480169e+05 + 3.40899765e-05 1.19479776e+05 + 3.41566930e-05 1.19479382e+05 + 3.42235400e-05 1.19478986e+05 + 3.42905179e-05 1.19478588e+05 + 3.43576268e-05 1.19478190e+05 + 3.44248670e-05 1.19477789e+05 + 3.44922389e-05 1.19477387e+05 + 3.45597426e-05 1.19476983e+05 + 3.46273784e-05 1.19476578e+05 + 3.46951466e-05 1.19476171e+05 + 3.47630474e-05 1.19475763e+05 + 3.48310811e-05 1.19475353e+05 + 3.48992480e-05 1.19474942e+05 + 3.49675482e-05 1.19474528e+05 + 3.50359821e-05 1.19474114e+05 + 3.51045500e-05 1.19473697e+05 + 3.51732520e-05 1.19473279e+05 + 3.52420885e-05 1.19472859e+05 + 3.53110598e-05 1.19472438e+05 + 3.53801660e-05 1.19472015e+05 + 3.54494074e-05 1.19471590e+05 + 3.55187843e-05 1.19471164e+05 + 3.55882971e-05 1.19470736e+05 + 3.56579458e-05 1.19470307e+05 + 3.57277309e-05 1.19469875e+05 + 3.57976526e-05 1.19469442e+05 + 3.58677111e-05 1.19469008e+05 + 3.59379067e-05 1.19468571e+05 + 3.60082397e-05 1.19468133e+05 + 3.60787103e-05 1.19467693e+05 + 3.61493188e-05 1.19467252e+05 + 3.62200656e-05 1.19466808e+05 + 3.62909507e-05 1.19466363e+05 + 3.63619746e-05 1.19465917e+05 + 3.64331376e-05 1.19465468e+05 + 3.65044397e-05 1.19465018e+05 + 3.65758815e-05 1.19464566e+05 + 3.66474630e-05 1.19464112e+05 + 3.67191846e-05 1.19463656e+05 + 3.67910466e-05 1.19463199e+05 + 3.68630493e-05 1.19462740e+05 + 3.69351928e-05 1.19462279e+05 + 3.70074776e-05 1.19461816e+05 + 3.70799038e-05 1.19461352e+05 + 3.71524717e-05 1.19460885e+05 + 3.72251817e-05 1.19460417e+05 + 3.72980339e-05 1.19459947e+05 + 3.73710288e-05 1.19459475e+05 + 3.74441665e-05 1.19459002e+05 + 3.75174473e-05 1.19458526e+05 + 3.75908716e-05 1.19458049e+05 + 3.76644395e-05 1.19457569e+05 + 3.77381514e-05 1.19457088e+05 + 3.78120076e-05 1.19456605e+05 + 3.78860084e-05 1.19456120e+05 + 3.79601539e-05 1.19455633e+05 + 3.80344446e-05 1.19455145e+05 + 3.81088806e-05 1.19454654e+05 + 3.81834623e-05 1.19454161e+05 + 3.82581900e-05 1.19453667e+05 + 3.83330640e-05 1.19453170e+05 + 3.84080844e-05 1.19452672e+05 + 3.84832517e-05 1.19452172e+05 + 3.85585661e-05 1.19451669e+05 + 3.86340279e-05 1.19451165e+05 + 3.87096374e-05 1.19450659e+05 + 3.87853948e-05 1.19450151e+05 + 3.88613006e-05 1.19449640e+05 + 3.89373548e-05 1.19449128e+05 + 3.90135579e-05 1.19448614e+05 + 3.90899102e-05 1.19448098e+05 + 3.91664118e-05 1.19447580e+05 + 3.92430632e-05 1.19447059e+05 + 3.93198646e-05 1.19446537e+05 + 3.93968163e-05 1.19446013e+05 + 3.94739187e-05 1.19445486e+05 + 3.95511719e-05 1.19444958e+05 + 3.96285762e-05 1.19444427e+05 + 3.97061321e-05 1.19443895e+05 + 3.97838398e-05 1.19443360e+05 + 3.98616995e-05 1.19442823e+05 + 3.99397116e-05 1.19442284e+05 + 4.00178764e-05 1.19441743e+05 + 4.00961942e-05 1.19441200e+05 + 4.01746652e-05 1.19440655e+05 + 4.02532898e-05 1.19440108e+05 + 4.03320683e-05 1.19439558e+05 + 4.04110010e-05 1.19439007e+05 + 4.04900881e-05 1.19438453e+05 + 4.05693300e-05 1.19437897e+05 + 4.06487270e-05 1.19437339e+05 + 4.07282794e-05 1.19436778e+05 + 4.08079875e-05 1.19436216e+05 + 4.08878516e-05 1.19435651e+05 + 4.09678719e-05 1.19435084e+05 + 4.10480489e-05 1.19434515e+05 + 4.11283828e-05 1.19433944e+05 + 4.12088739e-05 1.19433370e+05 + 4.12895225e-05 1.19432794e+05 + 4.13703290e-05 1.19432216e+05 + 4.14512936e-05 1.19431636e+05 + 4.15324166e-05 1.19431053e+05 + 4.16136985e-05 1.19430468e+05 + 4.16951394e-05 1.19429881e+05 + 4.17767397e-05 1.19429291e+05 + 4.18584996e-05 1.19428700e+05 + 4.19404196e-05 1.19428105e+05 + 4.20224999e-05 1.19427509e+05 + 4.21047409e-05 1.19426910e+05 + 4.21871428e-05 1.19426309e+05 + 4.22697060e-05 1.19425705e+05 + 4.23524307e-05 1.19425100e+05 + 4.24353174e-05 1.19424491e+05 + 4.25183662e-05 1.19423881e+05 + 4.26015776e-05 1.19423268e+05 + 4.26849519e-05 1.19422652e+05 + 4.27684893e-05 1.19422035e+05 + 4.28521902e-05 1.19421414e+05 + 4.29360549e-05 1.19420792e+05 + 4.30200838e-05 1.19420167e+05 + 4.31042771e-05 1.19419539e+05 + 4.31886351e-05 1.19418909e+05 + 4.32731583e-05 1.19418277e+05 + 4.33578469e-05 1.19417642e+05 + 4.34427012e-05 1.19417005e+05 + 4.35277216e-05 1.19416365e+05 + 4.36129083e-05 1.19415722e+05 + 4.36982618e-05 1.19415077e+05 + 4.37837824e-05 1.19414430e+05 + 4.38694703e-05 1.19413780e+05 + 4.39553259e-05 1.19413127e+05 + 4.40413495e-05 1.19412472e+05 + 4.41275415e-05 1.19411815e+05 + 4.42139021e-05 1.19411155e+05 + 4.43004318e-05 1.19410492e+05 + 4.43871308e-05 1.19409826e+05 + 4.44739995e-05 1.19409158e+05 + 4.45610382e-05 1.19408488e+05 + 4.46482473e-05 1.19407815e+05 + 4.47356270e-05 1.19407139e+05 + 4.48231777e-05 1.19406460e+05 + 4.49108998e-05 1.19405779e+05 + 4.49987936e-05 1.19405095e+05 + 4.50868593e-05 1.19404409e+05 + 4.51750975e-05 1.19403720e+05 + 4.52635083e-05 1.19403028e+05 + 4.53520921e-05 1.19402333e+05 + 4.54408493e-05 1.19401636e+05 + 4.55297802e-05 1.19400936e+05 + 4.56188851e-05 1.19400233e+05 + 4.57081645e-05 1.19399528e+05 + 4.57976185e-05 1.19398820e+05 + 4.58872476e-05 1.19398109e+05 + 4.59770522e-05 1.19397395e+05 + 4.60670324e-05 1.19396678e+05 + 4.61571888e-05 1.19395959e+05 + 4.62475217e-05 1.19395237e+05 + 4.63380313e-05 1.19394512e+05 + 4.64287180e-05 1.19393784e+05 + 4.65195822e-05 1.19393053e+05 + 4.66106243e-05 1.19392319e+05 + 4.67018445e-05 1.19391583e+05 + 4.67932433e-05 1.19390844e+05 + 4.68848209e-05 1.19390101e+05 + 4.69765778e-05 1.19389356e+05 + 4.70685142e-05 1.19388608e+05 + 4.71606305e-05 1.19387857e+05 + 4.72529272e-05 1.19387103e+05 + 4.73454044e-05 1.19386347e+05 + 4.74380627e-05 1.19385587e+05 + 4.75309023e-05 1.19384824e+05 + 4.76239235e-05 1.19384058e+05 + 4.77171269e-05 1.19383290e+05 + 4.78105126e-05 1.19382518e+05 + 4.79040811e-05 1.19381743e+05 + 4.79978327e-05 1.19380965e+05 + 4.80917678e-05 1.19380184e+05 + 4.81858867e-05 1.19379400e+05 + 4.82801899e-05 1.19378614e+05 + 4.83746776e-05 1.19377823e+05 + 4.84693502e-05 1.19377030e+05 + 4.85642080e-05 1.19376234e+05 + 4.86592516e-05 1.19375435e+05 + 4.87544811e-05 1.19374632e+05 + 4.88498970e-05 1.19373827e+05 + 4.89454997e-05 1.19373018e+05 + 4.90412894e-05 1.19372206e+05 + 4.91372666e-05 1.19371391e+05 + 4.92334317e-05 1.19370573e+05 + 4.93297849e-05 1.19369751e+05 + 4.94263267e-05 1.19368926e+05 + 4.95230575e-05 1.19368099e+05 + 4.96199775e-05 1.19367267e+05 + 4.97170873e-05 1.19366433e+05 + 4.98143871e-05 1.19365595e+05 + 4.99118773e-05 1.19364754e+05 + 5.00095583e-05 1.19363910e+05 + 5.01074305e-05 1.19363063e+05 + 5.02054942e-05 1.19362212e+05 + 5.03037498e-05 1.19361358e+05 + 5.04021978e-05 1.19360500e+05 + 5.05008384e-05 1.19359639e+05 + 5.05996720e-05 1.19358775e+05 + 5.06986991e-05 1.19357907e+05 + 5.07979200e-05 1.19357036e+05 + 5.08973350e-05 1.19356162e+05 + 5.09969447e-05 1.19355284e+05 + 5.10967492e-05 1.19354403e+05 + 5.11967491e-05 1.19353518e+05 + 5.12969447e-05 1.19352630e+05 + 5.13973364e-05 1.19351738e+05 + 5.14979246e-05 1.19350843e+05 + 5.15987096e-05 1.19349945e+05 + 5.16996918e-05 1.19349042e+05 + 5.18008717e-05 1.19348137e+05 + 5.19022496e-05 1.19347228e+05 + 5.20038259e-05 1.19346315e+05 + 5.21056010e-05 1.19345398e+05 + 5.22075753e-05 1.19344479e+05 + 5.23097492e-05 1.19343555e+05 + 5.24121230e-05 1.19342628e+05 + 5.25146972e-05 1.19341697e+05 + 5.26174721e-05 1.19340763e+05 + 5.27204481e-05 1.19339825e+05 + 5.28236257e-05 1.19338883e+05 + 5.29270052e-05 1.19337938e+05 + 5.30305870e-05 1.19336989e+05 + 5.31343716e-05 1.19336036e+05 + 5.32383592e-05 1.19335079e+05 + 5.33425504e-05 1.19334119e+05 + 5.34469455e-05 1.19333155e+05 + 5.35515449e-05 1.19332187e+05 + 5.36563489e-05 1.19331216e+05 + 5.37613582e-05 1.19330240e+05 + 5.38665729e-05 1.19329261e+05 + 5.39719935e-05 1.19328278e+05 + 5.40776204e-05 1.19327291e+05 + 5.41834541e-05 1.19326301e+05 + 5.42894949e-05 1.19325306e+05 + 5.43957432e-05 1.19324308e+05 + 5.45021994e-05 1.19323305e+05 + 5.46088640e-05 1.19322299e+05 + 5.47157374e-05 1.19321289e+05 + 5.48228199e-05 1.19320275e+05 + 5.49301119e-05 1.19319257e+05 + 5.50376140e-05 1.19318235e+05 + 5.51453264e-05 1.19317208e+05 + 5.52532497e-05 1.19316178e+05 + 5.53613841e-05 1.19315144e+05 + 5.54697302e-05 1.19314106e+05 + 5.55782883e-05 1.19313064e+05 + 5.56870589e-05 1.19312018e+05 + 5.57960423e-05 1.19310967e+05 + 5.59052390e-05 1.19309913e+05 + 5.60146495e-05 1.19308854e+05 + 5.61242740e-05 1.19307791e+05 + 5.62341131e-05 1.19306724e+05 + 5.63441672e-05 1.19305653e+05 + 5.64544367e-05 1.19304578e+05 + 5.65649219e-05 1.19303499e+05 + 5.66756234e-05 1.19302415e+05 + 5.67865415e-05 1.19301327e+05 + 5.68976767e-05 1.19300235e+05 + 5.70090294e-05 1.19299138e+05 + 5.71206001e-05 1.19298038e+05 + 5.72323891e-05 1.19296933e+05 + 5.73443968e-05 1.19295823e+05 + 5.74566238e-05 1.19294710e+05 + 5.75690704e-05 1.19293592e+05 + 5.76817371e-05 1.19292469e+05 + 5.77946242e-05 1.19291343e+05 + 5.79077323e-05 1.19290211e+05 + 5.80210618e-05 1.19289076e+05 + 5.81346130e-05 1.19287936e+05 + 5.82483865e-05 1.19286791e+05 + 5.83623826e-05 1.19285642e+05 + 5.84766019e-05 1.19284489e+05 + 5.85910447e-05 1.19283331e+05 + 5.87057114e-05 1.19282168e+05 + 5.88206026e-05 1.19281001e+05 + 5.89357186e-05 1.19279830e+05 + 5.90510599e-05 1.19278654e+05 + 5.91666269e-05 1.19277473e+05 + 5.92824201e-05 1.19276288e+05 + 5.93984399e-05 1.19275098e+05 + 5.95146868e-05 1.19273903e+05 + 5.96311612e-05 1.19272704e+05 + 5.97478635e-05 1.19271500e+05 + 5.98647942e-05 1.19270291e+05 + 5.99819538e-05 1.19269078e+05 + 6.00993426e-05 1.19267859e+05 + 6.02169612e-05 1.19266636e+05 + 6.03348100e-05 1.19265409e+05 + 6.04528894e-05 1.19264176e+05 + 6.05711999e-05 1.19262939e+05 + 6.06897419e-05 1.19261697e+05 + 6.08085160e-05 1.19260450e+05 + 6.09275225e-05 1.19259198e+05 + 6.10467619e-05 1.19257941e+05 + 6.11662346e-05 1.19256680e+05 + 6.12859412e-05 1.19255413e+05 + 6.14058820e-05 1.19254141e+05 + 6.15260576e-05 1.19252865e+05 + 6.16464684e-05 1.19251583e+05 + 6.17671148e-05 1.19250297e+05 + 6.18879974e-05 1.19249005e+05 + 6.20091165e-05 1.19247709e+05 + 6.21304726e-05 1.19246407e+05 + 6.22520663e-05 1.19245101e+05 + 6.23738979e-05 1.19243789e+05 + 6.24959679e-05 1.19242472e+05 + 6.26182769e-05 1.19241150e+05 + 6.27408252e-05 1.19239822e+05 + 6.28636134e-05 1.19238490e+05 + 6.29866418e-05 1.19237152e+05 + 6.31099111e-05 1.19235810e+05 + 6.32334215e-05 1.19234461e+05 + 6.33571737e-05 1.19233108e+05 + 6.34811681e-05 1.19231749e+05 + 6.36054052e-05 1.19230386e+05 + 6.37298854e-05 1.19229016e+05 + 6.38546092e-05 1.19227642e+05 + 6.39795771e-05 1.19226262e+05 + 6.41047896e-05 1.19224876e+05 + 6.42302471e-05 1.19223485e+05 + 6.43559502e-05 1.19222089e+05 + 6.44818992e-05 1.19220688e+05 + 6.46080948e-05 1.19219280e+05 + 6.47345373e-05 1.19217868e+05 + 6.48612273e-05 1.19216450e+05 + 6.49881652e-05 1.19215026e+05 + 6.51153516e-05 1.19213597e+05 + 6.52427869e-05 1.19212162e+05 + 6.53704715e-05 1.19210721e+05 + 6.54984061e-05 1.19209275e+05 + 6.56265910e-05 1.19207824e+05 + 6.57550268e-05 1.19206366e+05 + 6.58837140e-05 1.19204903e+05 + 6.60126530e-05 1.19203434e+05 + 6.61418443e-05 1.19201960e+05 + 6.62712885e-05 1.19200480e+05 + 6.64009860e-05 1.19198994e+05 + 6.65309374e-05 1.19197502e+05 + 6.66611430e-05 1.19196004e+05 + 6.67916035e-05 1.19194501e+05 + 6.69223193e-05 1.19192991e+05 + 6.70532909e-05 1.19191476e+05 + 6.71845189e-05 1.19189955e+05 + 6.73160037e-05 1.19188428e+05 + 6.74477458e-05 1.19186894e+05 + 6.75797457e-05 1.19185355e+05 + 6.77120039e-05 1.19183810e+05 + 6.78445210e-05 1.19182259e+05 + 6.79772975e-05 1.19180702e+05 + 6.81103338e-05 1.19179139e+05 + 6.82436304e-05 1.19177569e+05 + 6.83771880e-05 1.19175994e+05 + 6.85110069e-05 1.19174412e+05 + 6.86450877e-05 1.19172825e+05 + 6.87794309e-05 1.19171231e+05 + 6.89140370e-05 1.19169630e+05 + 6.90489066e-05 1.19168024e+05 + 6.91840401e-05 1.19166411e+05 + 6.93194380e-05 1.19164792e+05 + 6.94551010e-05 1.19163167e+05 + 6.95910295e-05 1.19161535e+05 + 6.97272239e-05 1.19159897e+05 + 6.98636850e-05 1.19158253e+05 + 7.00004130e-05 1.19156602e+05 + 7.01374087e-05 1.19154944e+05 + 7.02746725e-05 1.19153281e+05 + 7.04122049e-05 1.19151610e+05 + 7.05500065e-05 1.19149934e+05 + 7.06880778e-05 1.19148250e+05 + 7.08264192e-05 1.19146560e+05 + 7.09650315e-05 1.19144864e+05 + 7.11039150e-05 1.19143161e+05 + 7.12430703e-05 1.19141451e+05 + 7.13824979e-05 1.19139735e+05 + 7.15221984e-05 1.19138011e+05 + 7.16621723e-05 1.19136282e+05 + 7.18024202e-05 1.19134545e+05 + 7.19429425e-05 1.19132802e+05 + 7.20837398e-05 1.19131051e+05 + 7.22248127e-05 1.19129294e+05 + 7.23661617e-05 1.19127531e+05 + 7.25077873e-05 1.19125760e+05 + 7.26496901e-05 1.19123982e+05 + 7.27918706e-05 1.19122198e+05 + 7.29343293e-05 1.19120406e+05 + 7.30770669e-05 1.19118608e+05 + 7.32200838e-05 1.19116802e+05 + 7.33633806e-05 1.19114990e+05 + 7.35069578e-05 1.19113170e+05 + 7.36508160e-05 1.19111343e+05 + 7.37949558e-05 1.19109509e+05 + 7.39393776e-05 1.19107668e+05 + 7.40840821e-05 1.19105820e+05 + 7.42290698e-05 1.19103965e+05 + 7.43743413e-05 1.19102102e+05 + 7.45198970e-05 1.19100232e+05 + 7.46657376e-05 1.19098355e+05 + 7.48118637e-05 1.19096470e+05 + 7.49582757e-05 1.19094578e+05 + 7.51049743e-05 1.19092679e+05 + 7.52519599e-05 1.19090772e+05 + 7.53992332e-05 1.19088858e+05 + 7.55467948e-05 1.19086937e+05 + 7.56946451e-05 1.19085008e+05 + 7.58427848e-05 1.19083071e+05 + 7.59912144e-05 1.19081127e+05 + 7.61399344e-05 1.19079175e+05 + 7.62889456e-05 1.19077216e+05 + 7.64382484e-05 1.19075249e+05 + 7.65878433e-05 1.19073274e+05 + 7.67377311e-05 1.19071292e+05 + 7.68879121e-05 1.19069302e+05 + 7.70383871e-05 1.19067304e+05 + 7.71891566e-05 1.19065298e+05 + 7.73402211e-05 1.19063285e+05 + 7.74915813e-05 1.19061264e+05 + 7.76432377e-05 1.19059235e+05 + 7.77951909e-05 1.19057197e+05 + 7.79474415e-05 1.19055152e+05 + 7.80999901e-05 1.19053099e+05 + 7.82528372e-05 1.19051038e+05 + 7.84059834e-05 1.19048969e+05 + 7.85594294e-05 1.19046892e+05 + 7.87131757e-05 1.19044807e+05 + 7.88672228e-05 1.19042714e+05 + 7.90215714e-05 1.19040612e+05 + 7.91762221e-05 1.19038503e+05 + 7.93311755e-05 1.19036385e+05 + 7.94864321e-05 1.19034259e+05 + 7.96419926e-05 1.19032124e+05 + 7.97978575e-05 1.19029981e+05 + 7.99540275e-05 1.19027830e+05 + 8.01105031e-05 1.19025671e+05 + 8.02672849e-05 1.19023503e+05 + 8.04243735e-05 1.19021326e+05 + 8.05817696e-05 1.19019142e+05 + 8.07394737e-05 1.19016948e+05 + 8.08974865e-05 1.19014746e+05 + 8.10558085e-05 1.19012536e+05 + 8.12144404e-05 1.19010317e+05 + 8.13733827e-05 1.19008089e+05 + 8.15326360e-05 1.19005853e+05 + 8.16922011e-05 1.19003607e+05 + 8.18520784e-05 1.19001354e+05 + 8.20122686e-05 1.18999091e+05 + 8.21727723e-05 1.18996819e+05 + 8.23335901e-05 1.18994539e+05 + 8.24947227e-05 1.18992250e+05 + 8.26561706e-05 1.18989952e+05 + 8.28179344e-05 1.18987645e+05 + 8.29800149e-05 1.18985328e+05 + 8.31424125e-05 1.18983003e+05 + 8.33051280e-05 1.18980669e+05 + 8.34681619e-05 1.18978326e+05 + 8.36315149e-05 1.18975974e+05 + 8.37951876e-05 1.18973612e+05 + 8.39591806e-05 1.18971241e+05 + 8.41234946e-05 1.18968861e+05 + 8.42881301e-05 1.18966472e+05 + 8.44530878e-05 1.18964073e+05 + 8.46183684e-05 1.18961665e+05 + 8.47839724e-05 1.18959248e+05 + 8.49499005e-05 1.18956821e+05 + 8.51161534e-05 1.18954385e+05 + 8.52827316e-05 1.18951940e+05 + 8.54496359e-05 1.18949485e+05 + 8.56168667e-05 1.18947020e+05 + 8.57844249e-05 1.18944545e+05 + 8.59523110e-05 1.18942061e+05 + 8.61205256e-05 1.18939568e+05 + 8.62890695e-05 1.18937064e+05 + 8.64579432e-05 1.18934551e+05 + 8.66271474e-05 1.18932029e+05 + 8.67966827e-05 1.18929496e+05 + 8.69665499e-05 1.18926953e+05 + 8.71367494e-05 1.18924401e+05 + 8.73072821e-05 1.18921838e+05 + 8.74781485e-05 1.18919266e+05 + 8.76493493e-05 1.18916684e+05 + 8.78208852e-05 1.18914091e+05 + 8.79927568e-05 1.18911489e+05 + 8.81649647e-05 1.18908876e+05 + 8.83375097e-05 1.18906253e+05 + 8.85103923e-05 1.18903620e+05 + 8.86836133e-05 1.18900977e+05 + 8.88571733e-05 1.18898323e+05 + 8.90310730e-05 1.18895659e+05 + 8.92053130e-05 1.18892985e+05 + 8.93798940e-05 1.18890300e+05 + 8.95548166e-05 1.18887605e+05 + 8.97300816e-05 1.18884899e+05 + 8.99056896e-05 1.18882183e+05 + 9.00816413e-05 1.18879456e+05 + 9.02579373e-05 1.18876719e+05 + 9.04345784e-05 1.18873971e+05 + 9.06115651e-05 1.18871212e+05 + 9.07888983e-05 1.18868443e+05 + 9.09665785e-05 1.18865662e+05 + 9.11446064e-05 1.18862871e+05 + 9.13229827e-05 1.18860069e+05 + 9.15017081e-05 1.18857257e+05 + 9.16807833e-05 1.18854433e+05 + 9.18602090e-05 1.18851598e+05 + 9.20399858e-05 1.18848752e+05 + 9.22201144e-05 1.18845896e+05 + 9.24005956e-05 1.18843028e+05 + 9.25814300e-05 1.18840148e+05 + 9.27626183e-05 1.18837258e+05 + 9.29441612e-05 1.18834357e+05 + 9.31260594e-05 1.18831444e+05 + 9.33083135e-05 1.18828519e+05 + 9.34909244e-05 1.18825584e+05 + 9.36738926e-05 1.18822637e+05 + 9.38572189e-05 1.18819678e+05 + 9.40409040e-05 1.18816709e+05 + 9.42249486e-05 1.18813727e+05 + 9.44093534e-05 1.18810734e+05 + 9.45941190e-05 1.18807729e+05 + 9.47792463e-05 1.18804713e+05 + 9.49647359e-05 1.18801685e+05 + 9.51505885e-05 1.18798645e+05 + 9.53368048e-05 1.18795593e+05 + 9.55233855e-05 1.18792529e+05 + 9.57103314e-05 1.18789454e+05 + 9.58976432e-05 1.18786366e+05 + 9.60853216e-05 1.18783267e+05 + 9.62733672e-05 1.18780155e+05 + 9.64617809e-05 1.18777031e+05 + 9.66505633e-05 1.18773896e+05 + 9.68397151e-05 1.18770748e+05 + 9.70292372e-05 1.18767587e+05 + 9.72191302e-05 1.18764415e+05 + 9.74093948e-05 1.18761230e+05 + 9.76000317e-05 1.18758033e+05 + 9.77910417e-05 1.18754823e+05 + 9.79824256e-05 1.18751601e+05 + 9.81741840e-05 1.18748366e+05 + 9.83663177e-05 1.18745119e+05 + 9.85588274e-05 1.18741859e+05 + 9.87517139e-05 1.18738587e+05 + 9.89449779e-05 1.18735301e+05 + 9.91386201e-05 1.18732003e+05 + 9.93326412e-05 1.18728692e+05 + 9.95270421e-05 1.18725369e+05 + 9.97218235e-05 1.18722032e+05 + 9.99169860e-05 1.18718682e+05 + 1.00112530e-04 1.18715320e+05 + 1.00308458e-04 1.18711944e+05 + 1.00504768e-04 1.18708555e+05 + 1.00701463e-04 1.18705153e+05 + 1.00898543e-04 1.18701738e+05 + 1.01096008e-04 1.18698310e+05 + 1.01293860e-04 1.18694868e+05 + 1.01492099e-04 1.18691413e+05 + 1.01690726e-04 1.18687944e+05 + 1.01889742e-04 1.18684462e+05 + 1.02089148e-04 1.18680967e+05 + 1.02288943e-04 1.18677457e+05 + 1.02489130e-04 1.18673935e+05 + 1.02689708e-04 1.18670398e+05 + 1.02890679e-04 1.18666848e+05 + 1.03092043e-04 1.18663284e+05 + 1.03293801e-04 1.18659706e+05 + 1.03495955e-04 1.18656114e+05 + 1.03698503e-04 1.18652509e+05 + 1.03901449e-04 1.18648889e+05 + 1.04104791e-04 1.18645255e+05 + 1.04308531e-04 1.18641608e+05 + 1.04512670e-04 1.18637945e+05 + 1.04717209e-04 1.18634269e+05 + 1.04922148e-04 1.18630579e+05 + 1.05127488e-04 1.18626874e+05 + 1.05333229e-04 1.18623155e+05 + 1.05539374e-04 1.18619421e+05 + 1.05745922e-04 1.18615673e+05 + 1.05952874e-04 1.18611910e+05 + 1.06160231e-04 1.18608133e+05 + 1.06367994e-04 1.18604341e+05 + 1.06576163e-04 1.18600534e+05 + 1.06784740e-04 1.18596713e+05 + 1.06993726e-04 1.18592876e+05 + 1.07203120e-04 1.18589025e+05 + 1.07412924e-04 1.18585159e+05 + 1.07623138e-04 1.18581278e+05 + 1.07833764e-04 1.18577382e+05 + 1.08044802e-04 1.18573470e+05 + 1.08256254e-04 1.18569544e+05 + 1.08468119e-04 1.18565602e+05 + 1.08680398e-04 1.18561645e+05 + 1.08893093e-04 1.18557673e+05 + 1.09106205e-04 1.18553685e+05 + 1.09319733e-04 1.18549681e+05 + 1.09533679e-04 1.18545663e+05 + 1.09748044e-04 1.18541628e+05 + 1.09962829e-04 1.18537578e+05 + 1.10178034e-04 1.18533512e+05 + 1.10393660e-04 1.18529431e+05 + 1.10609708e-04 1.18525333e+05 + 1.10826179e-04 1.18521220e+05 + 1.11043073e-04 1.18517091e+05 + 1.11260392e-04 1.18512946e+05 + 1.11478137e-04 1.18508784e+05 + 1.11696307e-04 1.18504607e+05 + 1.11914905e-04 1.18500413e+05 + 1.12133930e-04 1.18496203e+05 + 1.12353384e-04 1.18491977e+05 + 1.12573267e-04 1.18487735e+05 + 1.12793581e-04 1.18483475e+05 + 1.13014326e-04 1.18479200e+05 + 1.13235503e-04 1.18474908e+05 + 1.13457112e-04 1.18470599e+05 + 1.13679156e-04 1.18466273e+05 + 1.13901634e-04 1.18461931e+05 + 1.14124547e-04 1.18457572e+05 + 1.14347897e-04 1.18453196e+05 + 1.14571684e-04 1.18448803e+05 + 1.14795908e-04 1.18444393e+05 + 1.15020572e-04 1.18439966e+05 + 1.15245675e-04 1.18435522e+05 + 1.15471219e-04 1.18431060e+05 + 1.15697204e-04 1.18426581e+05 + 1.15923632e-04 1.18422085e+05 + 1.16150502e-04 1.18417572e+05 + 1.16377817e-04 1.18413041e+05 + 1.16605576e-04 1.18408492e+05 + 1.16833782e-04 1.18403926e+05 + 1.17062433e-04 1.18399342e+05 + 1.17291533e-04 1.18394740e+05 + 1.17521080e-04 1.18390121e+05 + 1.17751077e-04 1.18385483e+05 + 1.17981524e-04 1.18380828e+05 + 1.18212422e-04 1.18376155e+05 + 1.18443772e-04 1.18371463e+05 + 1.18675575e-04 1.18366753e+05 + 1.18907831e-04 1.18362026e+05 + 1.19140542e-04 1.18357279e+05 + 1.19373709e-04 1.18352515e+05 + 1.19607331e-04 1.18347732e+05 + 1.19841411e-04 1.18342930e+05 + 1.20075949e-04 1.18338110e+05 + 1.20310946e-04 1.18333271e+05 + 1.20546403e-04 1.18328414e+05 + 1.20782321e-04 1.18323537e+05 + 1.21018700e-04 1.18318642e+05 + 1.21255542e-04 1.18313728e+05 + 1.21492848e-04 1.18308795e+05 + 1.21730617e-04 1.18303842e+05 + 1.21968853e-04 1.18298871e+05 + 1.22207554e-04 1.18293880e+05 + 1.22446723e-04 1.18288870e+05 + 1.22686360e-04 1.18283841e+05 + 1.22926465e-04 1.18278792e+05 + 1.23167041e-04 1.18273723e+05 + 1.23408087e-04 1.18268635e+05 + 1.23649606e-04 1.18263528e+05 + 1.23891597e-04 1.18258400e+05 + 1.24134061e-04 1.18253253e+05 + 1.24377000e-04 1.18248086e+05 + 1.24620414e-04 1.18242898e+05 + 1.24864305e-04 1.18237691e+05 + 1.25108673e-04 1.18232464e+05 + 1.25353520e-04 1.18227216e+05 + 1.25598845e-04 1.18221948e+05 + 1.25844651e-04 1.18216660e+05 + 1.26090938e-04 1.18211351e+05 + 1.26337706e-04 1.18206022e+05 + 1.26584958e-04 1.18200672e+05 + 1.26832694e-04 1.18195301e+05 + 1.27080914e-04 1.18189910e+05 + 1.27329620e-04 1.18184498e+05 + 1.27578813e-04 1.18179065e+05 + 1.27828494e-04 1.18173610e+05 + 1.28078663e-04 1.18168135e+05 + 1.28329322e-04 1.18162639e+05 + 1.28580471e-04 1.18157121e+05 + 1.28832112e-04 1.18151582e+05 + 1.29084246e-04 1.18146022e+05 + 1.29336872e-04 1.18140440e+05 + 1.29589994e-04 1.18134837e+05 + 1.29843610e-04 1.18129212e+05 + 1.30097723e-04 1.18123565e+05 + 1.30352333e-04 1.18117896e+05 + 1.30607442e-04 1.18112206e+05 + 1.30863050e-04 1.18106493e+05 + 1.31119158e-04 1.18100759e+05 + 1.31375767e-04 1.18095002e+05 + 1.31632879e-04 1.18089223e+05 + 1.31890493e-04 1.18083422e+05 + 1.32148612e-04 1.18077598e+05 + 1.32407236e-04 1.18071752e+05 + 1.32666366e-04 1.18065883e+05 + 1.32926004e-04 1.18059991e+05 + 1.33186149e-04 1.18054077e+05 + 1.33446804e-04 1.18048140e+05 + 1.33707968e-04 1.18042180e+05 + 1.33969644e-04 1.18036197e+05 + 1.34231832e-04 1.18030191e+05 + 1.34494533e-04 1.18024162e+05 + 1.34757748e-04 1.18018110e+05 + 1.35021479e-04 1.18012034e+05 + 1.35285725e-04 1.18005934e+05 + 1.35550489e-04 1.17999811e+05 + 1.35815770e-04 1.17993665e+05 + 1.36081571e-04 1.17987495e+05 + 1.36347892e-04 1.17981301e+05 + 1.36614735e-04 1.17975083e+05 + 1.36882099e-04 1.17968841e+05 + 1.37149987e-04 1.17962575e+05 + 1.37418399e-04 1.17956285e+05 + 1.37687336e-04 1.17949970e+05 + 1.37956800e-04 1.17943631e+05 + 1.38226791e-04 1.17937268e+05 + 1.38497310e-04 1.17930880e+05 + 1.38768359e-04 1.17924468e+05 + 1.39039939e-04 1.17918031e+05 + 1.39312049e-04 1.17911569e+05 + 1.39584693e-04 1.17905082e+05 + 1.39857870e-04 1.17898570e+05 + 1.40131581e-04 1.17892033e+05 + 1.40405829e-04 1.17885471e+05 + 1.40680612e-04 1.17878883e+05 + 1.40955934e-04 1.17872270e+05 + 1.41231795e-04 1.17865632e+05 + 1.41508195e-04 1.17858968e+05 + 1.41785137e-04 1.17852278e+05 + 1.42062620e-04 1.17845563e+05 + 1.42340646e-04 1.17838822e+05 + 1.42619217e-04 1.17832054e+05 + 1.42898333e-04 1.17825261e+05 + 1.43177995e-04 1.17818442e+05 + 1.43458204e-04 1.17811596e+05 + 1.43738962e-04 1.17804724e+05 + 1.44020269e-04 1.17797825e+05 + 1.44302126e-04 1.17790900e+05 + 1.44584536e-04 1.17783948e+05 + 1.44867498e-04 1.17776969e+05 + 1.45151013e-04 1.17769964e+05 + 1.45435084e-04 1.17762931e+05 + 1.45719711e-04 1.17755871e+05 + 1.46004894e-04 1.17748785e+05 + 1.46290636e-04 1.17741671e+05 + 1.46576937e-04 1.17734529e+05 + 1.46863798e-04 1.17727360e+05 + 1.47151221e-04 1.17720164e+05 + 1.47439206e-04 1.17712939e+05 + 1.47727755e-04 1.17705687e+05 + 1.48016868e-04 1.17698407e+05 + 1.48306547e-04 1.17691099e+05 + 1.48596794e-04 1.17683763e+05 + 1.48887608e-04 1.17676399e+05 + 1.49178991e-04 1.17669006e+05 + 1.49470945e-04 1.17661585e+05 + 1.49763470e-04 1.17654136e+05 + 1.50056567e-04 1.17646658e+05 + 1.50350239e-04 1.17639150e+05 + 1.50644484e-04 1.17631615e+05 + 1.50939306e-04 1.17624050e+05 + 1.51234705e-04 1.17616456e+05 + 1.51530682e-04 1.17608833e+05 + 1.51827238e-04 1.17601180e+05 + 1.52124374e-04 1.17593498e+05 + 1.52422092e-04 1.17585787e+05 + 1.52720393e-04 1.17578046e+05 + 1.53019277e-04 1.17570275e+05 + 1.53318747e-04 1.17562474e+05 + 1.53618802e-04 1.17554644e+05 + 1.53919445e-04 1.17546783e+05 + 1.54220676e-04 1.17538892e+05 + 1.54522496e-04 1.17530971e+05 + 1.54824908e-04 1.17523019e+05 + 1.55127911e-04 1.17515037e+05 + 1.55431507e-04 1.17507024e+05 + 1.55735697e-04 1.17498980e+05 + 1.56040483e-04 1.17490906e+05 + 1.56345865e-04 1.17482800e+05 + 1.56651844e-04 1.17474663e+05 + 1.56958423e-04 1.17466495e+05 + 1.57265602e-04 1.17458296e+05 + 1.57573381e-04 1.17450065e+05 + 1.57881763e-04 1.17441803e+05 + 1.58190749e-04 1.17433509e+05 + 1.58500339e-04 1.17425183e+05 + 1.58810535e-04 1.17416825e+05 + 1.59121339e-04 1.17408435e+05 + 1.59432750e-04 1.17400013e+05 + 1.59744771e-04 1.17391558e+05 + 1.60057403e-04 1.17383071e+05 + 1.60370646e-04 1.17374552e+05 + 1.60684503e-04 1.17366000e+05 + 1.60998973e-04 1.17357415e+05 + 1.61314060e-04 1.17348797e+05 + 1.61629762e-04 1.17340146e+05 + 1.61946083e-04 1.17331462e+05 + 1.62263023e-04 1.17322745e+05 + 1.62580583e-04 1.17313994e+05 + 1.62898764e-04 1.17305210e+05 + 1.63217569e-04 1.17296392e+05 + 1.63536997e-04 1.17287540e+05 + 1.63857050e-04 1.17278654e+05 + 1.64177730e-04 1.17269734e+05 + 1.64499037e-04 1.17260780e+05 + 1.64820973e-04 1.17251792e+05 + 1.65143539e-04 1.17242769e+05 + 1.65466736e-04 1.17233712e+05 + 1.65790566e-04 1.17224620e+05 + 1.66115030e-04 1.17215493e+05 + 1.66440128e-04 1.17206331e+05 + 1.66765863e-04 1.17197135e+05 + 1.67092236e-04 1.17187903e+05 + 1.67419247e-04 1.17178635e+05 + 1.67746898e-04 1.17169332e+05 + 1.68075190e-04 1.17159994e+05 + 1.68404125e-04 1.17150620e+05 + 1.68733704e-04 1.17141209e+05 + 1.69063927e-04 1.17131763e+05 + 1.69394797e-04 1.17122281e+05 + 1.69726315e-04 1.17112762e+05 + 1.70058481e-04 1.17103207e+05 + 1.70391297e-04 1.17093616e+05 + 1.70724765e-04 1.17083988e+05 + 1.71058885e-04 1.17074323e+05 + 1.71393659e-04 1.17064621e+05 + 1.71729088e-04 1.17054882e+05 + 1.72065174e-04 1.17045105e+05 + 1.72401918e-04 1.17035291e+05 + 1.72739320e-04 1.17025440e+05 + 1.73077383e-04 1.17015551e+05 + 1.73416107e-04 1.17005625e+05 + 1.73755495e-04 1.16995660e+05 + 1.74095546e-04 1.16985657e+05 + 1.74436263e-04 1.16975616e+05 + 1.74777647e-04 1.16965537e+05 + 1.75119699e-04 1.16955419e+05 + 1.75462421e-04 1.16945263e+05 + 1.75805813e-04 1.16935067e+05 + 1.76149877e-04 1.16924833e+05 + 1.76494615e-04 1.16914560e+05 + 1.76840027e-04 1.16904247e+05 + 1.77186115e-04 1.16893895e+05 + 1.77532881e-04 1.16883504e+05 + 1.77880325e-04 1.16873073e+05 + 1.78228449e-04 1.16862602e+05 + 1.78577254e-04 1.16852091e+05 + 1.78926742e-04 1.16841540e+05 + 1.79276915e-04 1.16830949e+05 + 1.79627772e-04 1.16820317e+05 + 1.79979316e-04 1.16809645e+05 + 1.80331548e-04 1.16798932e+05 + 1.80684469e-04 1.16788178e+05 + 1.81038081e-04 1.16777383e+05 + 1.81392385e-04 1.16766547e+05 + 1.81747383e-04 1.16755670e+05 + 1.82103075e-04 1.16744751e+05 + 1.82459464e-04 1.16733791e+05 + 1.82816549e-04 1.16722789e+05 + 1.83174334e-04 1.16711745e+05 + 1.83532819e-04 1.16700659e+05 + 1.83892006e-04 1.16689530e+05 + 1.84251895e-04 1.16678359e+05 + 1.84612489e-04 1.16667146e+05 + 1.84973788e-04 1.16655890e+05 + 1.85335795e-04 1.16644591e+05 + 1.85698510e-04 1.16633249e+05 + 1.86061935e-04 1.16621864e+05 + 1.86426071e-04 1.16610435e+05 + 1.86790920e-04 1.16598963e+05 + 1.87156482e-04 1.16587448e+05 + 1.87522761e-04 1.16575888e+05 + 1.87889756e-04 1.16564284e+05 + 1.88257469e-04 1.16552637e+05 + 1.88625902e-04 1.16540945e+05 + 1.88995056e-04 1.16529208e+05 + 1.89364932e-04 1.16517427e+05 + 1.89735533e-04 1.16505601e+05 + 1.90106858e-04 1.16493730e+05 + 1.90478911e-04 1.16481814e+05 + 1.90851691e-04 1.16469853e+05 + 1.91225201e-04 1.16457846e+05 + 1.91599442e-04 1.16445794e+05 + 1.91974416e-04 1.16433695e+05 + 1.92350123e-04 1.16421551e+05 + 1.92726565e-04 1.16409361e+05 + 1.93103745e-04 1.16397124e+05 + 1.93481662e-04 1.16384841e+05 + 1.93860319e-04 1.16372511e+05 + 1.94239717e-04 1.16360134e+05 + 1.94619858e-04 1.16347710e+05 + 1.95000742e-04 1.16335239e+05 + 1.95382372e-04 1.16322721e+05 + 1.95764749e-04 1.16310155e+05 + 1.96147875e-04 1.16297542e+05 + 1.96531750e-04 1.16284881e+05 + 1.96916376e-04 1.16272171e+05 + 1.97301755e-04 1.16259414e+05 + 1.97687888e-04 1.16246608e+05 + 1.98074777e-04 1.16233753e+05 + 1.98462423e-04 1.16220850e+05 + 1.98850828e-04 1.16207898e+05 + 1.99239993e-04 1.16194896e+05 + 1.99629919e-04 1.16181846e+05 + 2.00020609e-04 1.16168745e+05 + 2.00412063e-04 1.16155596e+05 + 2.00804284e-04 1.16142396e+05 + 2.01197271e-04 1.16129146e+05 + 2.01591029e-04 1.16115846e+05 + 2.01985556e-04 1.16102496e+05 + 2.02380856e-04 1.16089095e+05 + 2.02776929e-04 1.16075644e+05 + 2.03173778e-04 1.16062141e+05 + 2.03571403e-04 1.16048588e+05 + 2.03969806e-04 1.16034983e+05 + 2.04368990e-04 1.16021326e+05 + 2.04768954e-04 1.16007618e+05 + 2.05169701e-04 1.15993858e+05 + 2.05571232e-04 1.15980046e+05 + 2.05973549e-04 1.15966182e+05 + 2.06376654e-04 1.15952265e+05 + 2.06780547e-04 1.15938296e+05 + 2.07185231e-04 1.15924274e+05 + 2.07590707e-04 1.15910198e+05 + 2.07996977e-04 1.15896070e+05 + 2.08404041e-04 1.15881888e+05 + 2.08811902e-04 1.15867653e+05 + 2.09220562e-04 1.15853363e+05 + 2.09630021e-04 1.15839020e+05 + 2.10040282e-04 1.15824623e+05 + 2.10451345e-04 1.15810171e+05 + 2.10863213e-04 1.15795664e+05 + 2.11275887e-04 1.15781103e+05 + 2.11689368e-04 1.15766487e+05 + 2.12103659e-04 1.15751816e+05 + 2.12518761e-04 1.15737089e+05 + 2.12934675e-04 1.15722307e+05 + 2.13351403e-04 1.15707469e+05 + 2.13768946e-04 1.15692575e+05 + 2.14187307e-04 1.15677624e+05 + 2.14606486e-04 1.15662618e+05 + 2.15026486e-04 1.15647555e+05 + 2.15447308e-04 1.15632435e+05 + 2.15868953e-04 1.15617258e+05 + 2.16291424e-04 1.15602023e+05 + 2.16714721e-04 1.15586732e+05 + 2.17138847e-04 1.15571382e+05 + 2.17563803e-04 1.15555975e+05 + 2.17989590e-04 1.15540510e+05 + 2.18416211e-04 1.15524987e+05 + 2.18843667e-04 1.15509405e+05 + 2.19271959e-04 1.15493764e+05 + 2.19701089e-04 1.15478065e+05 + 2.20131060e-04 1.15462307e+05 + 2.20561871e-04 1.15446489e+05 + 2.20993526e-04 1.15430611e+05 + 2.21426026e-04 1.15414674e+05 + 2.21859372e-04 1.15398677e+05 + 2.22293566e-04 1.15382620e+05 + 2.22728610e-04 1.15366503e+05 + 2.23164506e-04 1.15350324e+05 + 2.23601254e-04 1.15334085e+05 + 2.24038857e-04 1.15317785e+05 + 2.24477317e-04 1.15301424e+05 + 2.24916635e-04 1.15285001e+05 + 2.25356812e-04 1.15268517e+05 + 2.25797851e-04 1.15251971e+05 + 2.26239753e-04 1.15235362e+05 + 2.26682520e-04 1.15218691e+05 + 2.27126154e-04 1.15201958e+05 + 2.27570655e-04 1.15185162e+05 + 2.28016027e-04 1.15168302e+05 + 2.28462270e-04 1.15151380e+05 + 2.28909387e-04 1.15134394e+05 + 2.29357378e-04 1.15117344e+05 + 2.29806246e-04 1.15100230e+05 + 2.30255993e-04 1.15083052e+05 + 2.30706620e-04 1.15065810e+05 + 2.31158129e-04 1.15048503e+05 + 2.31610522e-04 1.15031131e+05 + 2.32063799e-04 1.15013694e+05 + 2.32517964e-04 1.14996192e+05 + 2.32973018e-04 1.14978624e+05 + 2.33428963e-04 1.14960991e+05 + 2.33885799e-04 1.14943291e+05 + 2.34343530e-04 1.14925526e+05 + 2.34802157e-04 1.14907693e+05 + 2.35261681e-04 1.14889794e+05 + 2.35722104e-04 1.14871828e+05 + 2.36183429e-04 1.14853795e+05 + 2.36645656e-04 1.14835694e+05 + 2.37108788e-04 1.14817526e+05 + 2.37572827e-04 1.14799289e+05 + 2.38037773e-04 1.14780985e+05 + 2.38503630e-04 1.14762612e+05 + 2.38970398e-04 1.14744170e+05 + 2.39438079e-04 1.14725660e+05 + 2.39906676e-04 1.14707080e+05 + 2.40376190e-04 1.14688431e+05 + 2.40846623e-04 1.14669713e+05 + 2.41317977e-04 1.14650924e+05 + 2.41790253e-04 1.14632066e+05 + 2.42263453e-04 1.14613136e+05 + 2.42737580e-04 1.14594137e+05 + 2.43212634e-04 1.14575066e+05 + 2.43688618e-04 1.14555925e+05 + 2.44165534e-04 1.14536712e+05 + 2.44643382e-04 1.14517427e+05 + 2.45122167e-04 1.14498070e+05 + 2.45601888e-04 1.14478642e+05 + 2.46082548e-04 1.14459141e+05 + 2.46564148e-04 1.14439567e+05 + 2.47046691e-04 1.14419920e+05 + 2.47530179e-04 1.14400201e+05 + 2.48014613e-04 1.14380407e+05 + 2.48499995e-04 1.14360540e+05 + 2.48986326e-04 1.14340600e+05 + 2.49473610e-04 1.14320585e+05 + 2.49961847e-04 1.14300495e+05 + 2.50451040e-04 1.14280331e+05 + 2.50941190e-04 1.14260092e+05 + 2.51432299e-04 1.14239778e+05 + 2.51924370e-04 1.14219388e+05 + 2.52417403e-04 1.14198922e+05 + 2.52911402e-04 1.14178380e+05 + 2.53406367e-04 1.14157762e+05 + 2.53902301e-04 1.14137068e+05 + 2.54399205e-04 1.14116296e+05 + 2.54897082e-04 1.14095448e+05 + 2.55395933e-04 1.14074522e+05 + 2.55895761e-04 1.14053519e+05 + 2.56396567e-04 1.14032437e+05 + 2.56898353e-04 1.14011278e+05 + 2.57401120e-04 1.13990039e+05 + 2.57904872e-04 1.13968723e+05 + 2.58409610e-04 1.13947327e+05 + 2.58915336e-04 1.13925852e+05 + 2.59422051e-04 1.13904297e+05 + 2.59929758e-04 1.13882663e+05 + 2.60438459e-04 1.13860948e+05 + 2.60948155e-04 1.13839153e+05 + 2.61458848e-04 1.13817277e+05 + 2.61970542e-04 1.13795321e+05 + 2.62483236e-04 1.13773283e+05 + 2.62996934e-04 1.13751163e+05 + 2.63511637e-04 1.13728962e+05 + 2.64027348e-04 1.13706679e+05 + 2.64544068e-04 1.13684313e+05 + 2.65061799e-04 1.13661865e+05 + 2.65580543e-04 1.13639334e+05 + 2.66100303e-04 1.13616720e+05 + 2.66621080e-04 1.13594022e+05 + 2.67142876e-04 1.13571240e+05 + 2.67665693e-04 1.13548374e+05 + 2.68189533e-04 1.13525424e+05 + 2.68714399e-04 1.13502389e+05 + 2.69240291e-04 1.13479269e+05 + 2.69767213e-04 1.13456064e+05 + 2.70295166e-04 1.13432774e+05 + 2.70824153e-04 1.13409397e+05 + 2.71354175e-04 1.13385935e+05 + 2.71885234e-04 1.13362386e+05 + 2.72417332e-04 1.13338750e+05 + 2.72950471e-04 1.13315027e+05 + 2.73484655e-04 1.13291217e+05 + 2.74019883e-04 1.13267319e+05 + 2.74556159e-04 1.13243333e+05 + 2.75093484e-04 1.13219260e+05 + 2.75631861e-04 1.13195097e+05 + 2.76171292e-04 1.13170846e+05 + 2.76711779e-04 1.13146505e+05 + 2.77253323e-04 1.13122076e+05 + 2.77795927e-04 1.13097556e+05 + 2.78339593e-04 1.13072946e+05 + 2.78884323e-04 1.13048246e+05 + 2.79430119e-04 1.13023456e+05 + 2.79976983e-04 1.12998574e+05 + 2.80524917e-04 1.12973601e+05 + 2.81073924e-04 1.12948537e+05 + 2.81624005e-04 1.12923380e+05 + 2.82175163e-04 1.12898132e+05 + 2.82727399e-04 1.12872790e+05 + 2.83280716e-04 1.12847356e+05 + 2.83835117e-04 1.12821829e+05 + 2.84390602e-04 1.12796209e+05 + 2.84947174e-04 1.12770494e+05 + 2.85504835e-04 1.12744685e+05 + 2.86063588e-04 1.12718782e+05 + 2.86623434e-04 1.12692785e+05 + 2.87184376e-04 1.12666692e+05 + 2.87746416e-04 1.12640504e+05 + 2.88309556e-04 1.12614220e+05 + 2.88873798e-04 1.12587840e+05 + 2.89439144e-04 1.12561363e+05 + 2.90005596e-04 1.12534790e+05 + 2.90573157e-04 1.12508120e+05 + 2.91141829e-04 1.12481353e+05 + 2.91711614e-04 1.12454488e+05 + 2.92282514e-04 1.12427524e+05 + 2.92854531e-04 1.12400463e+05 + 2.93427668e-04 1.12373303e+05 + 2.94001926e-04 1.12346044e+05 + 2.94577308e-04 1.12318686e+05 + 2.95153816e-04 1.12291228e+05 + 2.95731453e-04 1.12263670e+05 + 2.96310220e-04 1.12236011e+05 + 2.96890120e-04 1.12208252e+05 + 2.97471154e-04 1.12180392e+05 + 2.98053326e-04 1.12152431e+05 + 2.98636637e-04 1.12124368e+05 + 2.99221090e-04 1.12096203e+05 + 2.99806686e-04 1.12067936e+05 + 3.00393429e-04 1.12039566e+05 + 3.00981320e-04 1.12011093e+05 + 3.01570361e-04 1.11982517e+05 + 3.02160555e-04 1.11953836e+05 + 3.02751904e-04 1.11925052e+05 + 3.03344411e-04 1.11896164e+05 + 3.03938077e-04 1.11867171e+05 + 3.04532905e-04 1.11838072e+05 + 3.05128897e-04 1.11808868e+05 + 3.05726055e-04 1.11779559e+05 + 3.06324382e-04 1.11750143e+05 + 3.06923880e-04 1.11720621e+05 + 3.07524552e-04 1.11690992e+05 + 3.08126399e-04 1.11661255e+05 + 3.08729424e-04 1.11631412e+05 + 3.09333628e-04 1.11601460e+05 + 3.09939016e-04 1.11571400e+05 + 3.10545588e-04 1.11541231e+05 + 3.11153347e-04 1.11510954e+05 + 3.11762296e-04 1.11480567e+05 + 3.12372437e-04 1.11450070e+05 + 3.12983771e-04 1.11419464e+05 + 3.13596302e-04 1.11388747e+05 + 3.14210032e-04 1.11357919e+05 + 3.14824963e-04 1.11326980e+05 + 3.15441097e-04 1.11295929e+05 + 3.16058437e-04 1.11264767e+05 + 3.16676986e-04 1.11233493e+05 + 3.17296744e-04 1.11202106e+05 + 3.17917716e-04 1.11170606e+05 + 3.18539903e-04 1.11138992e+05 + 3.19163308e-04 1.11107265e+05 + 3.19787933e-04 1.11075424e+05 + 3.20413780e-04 1.11043469e+05 + 3.21040852e-04 1.11011398e+05 + 3.21669151e-04 1.10979213e+05 + 3.22298680e-04 1.10946912e+05 + 3.22929441e-04 1.10914495e+05 + 3.23561436e-04 1.10881962e+05 + 3.24194669e-04 1.10849312e+05 + 3.24829140e-04 1.10816545e+05 + 3.25464853e-04 1.10783660e+05 + 3.26101811e-04 1.10750658e+05 + 3.26740014e-04 1.10717538e+05 + 3.27379467e-04 1.10684299e+05 + 3.28020172e-04 1.10650941e+05 + 3.28662130e-04 1.10617464e+05 + 3.29305345e-04 1.10583867e+05 + 3.29949818e-04 1.10550150e+05 + 3.30595553e-04 1.10516313e+05 + 3.31242551e-04 1.10482355e+05 + 3.31890816e-04 1.10448275e+05 + 3.32540349e-04 1.10414074e+05 + 3.33191154e-04 1.10379751e+05 + 3.33843232e-04 1.10345305e+05 + 3.34496587e-04 1.10310737e+05 + 3.35151220e-04 1.10276046e+05 + 3.35807134e-04 1.10241231e+05 + 3.36464332e-04 1.10206292e+05 + 3.37122816e-04 1.10171228e+05 + 3.37782589e-04 1.10136040e+05 + 3.38443653e-04 1.10100727e+05 + 3.39106010e-04 1.10065288e+05 + 3.39769664e-04 1.10029723e+05 + 3.40434617e-04 1.09994032e+05 + 3.41100871e-04 1.09958214e+05 + 3.41768429e-04 1.09922269e+05 + 3.42437294e-04 1.09886196e+05 + 3.43107468e-04 1.09849996e+05 + 3.43778953e-04 1.09813667e+05 + 3.44451752e-04 1.09777210e+05 + 3.45125868e-04 1.09740623e+05 + 3.45801303e-04 1.09703907e+05 + 3.46478061e-04 1.09667060e+05 + 3.47156142e-04 1.09630084e+05 + 3.47835551e-04 1.09592977e+05 + 3.48516289e-04 1.09555738e+05 + 3.49198360e-04 1.09518368e+05 + 3.49881765e-04 1.09480866e+05 + 3.50566508e-04 1.09443231e+05 + 3.51252591e-04 1.09405464e+05 + 3.51940017e-04 1.09367564e+05 + 3.52628788e-04 1.09329529e+05 + 3.53318907e-04 1.09291361e+05 + 3.54010377e-04 1.09253059e+05 + 3.54703200e-04 1.09214621e+05 + 3.55397378e-04 1.09176048e+05 + 3.56092916e-04 1.09137340e+05 + 3.56789814e-04 1.09098495e+05 + 3.57488077e-04 1.09059514e+05 + 3.58187706e-04 1.09020396e+05 + 3.58888704e-04 1.08981140e+05 + 3.59591074e-04 1.08941747e+05 + 3.60294819e-04 1.08902215e+05 + 3.60999941e-04 1.08862545e+05 + 3.61706443e-04 1.08822736e+05 + 3.62414327e-04 1.08782787e+05 + 3.63123597e-04 1.08742698e+05 + 3.63834256e-04 1.08702469e+05 + 3.64546305e-04 1.08662099e+05 + 3.65259747e-04 1.08621588e+05 + 3.65974586e-04 1.08580935e+05 + 3.66690823e-04 1.08540140e+05 + 3.67408463e-04 1.08499203e+05 + 3.68127507e-04 1.08458123e+05 + 3.68847958e-04 1.08416899e+05 + 3.69569819e-04 1.08375532e+05 + 3.70293093e-04 1.08334021e+05 + 3.71017782e-04 1.08292364e+05 + 3.71743890e-04 1.08250563e+05 + 3.72471418e-04 1.08208616e+05 + 3.73200371e-04 1.08166524e+05 + 3.73930750e-04 1.08124285e+05 + 3.74662558e-04 1.08081899e+05 + 3.75395799e-04 1.08039365e+05 + 3.76130474e-04 1.07996684e+05 + 3.76866588e-04 1.07953855e+05 + 3.77604142e-04 1.07910878e+05 + 3.78343140e-04 1.07867751e+05 + 3.79083583e-04 1.07824475e+05 + 3.79825476e-04 1.07781049e+05 + 3.80568821e-04 1.07737473e+05 + 3.81313621e-04 1.07693745e+05 + 3.82059878e-04 1.07649867e+05 + 3.82807596e-04 1.07605837e+05 + 3.83556777e-04 1.07561655e+05 + 3.84307424e-04 1.07517320e+05 + 3.85059540e-04 1.07472832e+05 + 3.85813129e-04 1.07428191e+05 + 3.86568192e-04 1.07383395e+05 + 3.87324733e-04 1.07338446e+05 + 3.88082754e-04 1.07293341e+05 + 3.88842259e-04 1.07248082e+05 + 3.89603250e-04 1.07202666e+05 + 3.90365731e-04 1.07157095e+05 + 3.91129704e-04 1.07111366e+05 + 3.91895172e-04 1.07065481e+05 + 3.92662138e-04 1.07019438e+05 + 3.93430605e-04 1.06973237e+05 + 3.94200576e-04 1.06926878e+05 + 3.94972054e-04 1.06880360e+05 + 3.95745042e-04 1.06833682e+05 + 3.96519542e-04 1.06786845e+05 + 3.97295558e-04 1.06739847e+05 + 3.98073093e-04 1.06692689e+05 + 3.98852150e-04 1.06645370e+05 + 3.99632732e-04 1.06597888e+05 + 4.00414841e-04 1.06550245e+05 + 4.01198480e-04 1.06502439e+05 + 4.01983653e-04 1.06454470e+05 + 4.02770363e-04 1.06406338e+05 + 4.03558613e-04 1.06358042e+05 + 4.04348405e-04 1.06309581e+05 + 4.05139743e-04 1.06260955e+05 + 4.05932630e-04 1.06212164e+05 + 4.06727068e-04 1.06163207e+05 + 4.07523061e-04 1.06114084e+05 + 4.08320612e-04 1.06064795e+05 + 4.09119724e-04 1.06015338e+05 + 4.09920400e-04 1.05965713e+05 + 4.10722642e-04 1.05915920e+05 + 4.11526455e-04 1.05865959e+05 + 4.12331841e-04 1.05815828e+05 + 4.13138803e-04 1.05765528e+05 + 4.13947345e-04 1.05715058e+05 + 4.14757468e-04 1.05664417e+05 + 4.15569177e-04 1.05613606e+05 + 4.16382475e-04 1.05562623e+05 + 4.17197365e-04 1.05511468e+05 + 4.18013849e-04 1.05460141e+05 + 4.18831931e-04 1.05408640e+05 + 4.19651614e-04 1.05356967e+05 + 4.20472902e-04 1.05305120e+05 + 4.21295796e-04 1.05253098e+05 + 4.22120301e-04 1.05200902e+05 + 4.22946420e-04 1.05148531e+05 + 4.23774156e-04 1.05095984e+05 + 4.24603511e-04 1.05043260e+05 + 4.25434490e-04 1.04990360e+05 + 4.26267095e-04 1.04937283e+05 + 4.27101329e-04 1.04884029e+05 + 4.27937196e-04 1.04830596e+05 + 4.28774699e-04 1.04776985e+05 + 4.29613841e-04 1.04723195e+05 + 4.30454625e-04 1.04669225e+05 + 4.31297054e-04 1.04615075e+05 + 4.32141133e-04 1.04560745e+05 + 4.32986863e-04 1.04506234e+05 + 4.33834248e-04 1.04451541e+05 + 4.34683292e-04 1.04396667e+05 + 4.35533997e-04 1.04341610e+05 + 4.36386368e-04 1.04286370e+05 + 4.37240406e-04 1.04230947e+05 + 4.38096116e-04 1.04175340e+05 + 4.38953500e-04 1.04119549e+05 + 4.39812563e-04 1.04063573e+05 + 4.40673307e-04 1.04007412e+05 + 4.41535735e-04 1.03951065e+05 + 4.42399851e-04 1.03894532e+05 + 4.43265658e-04 1.03837812e+05 + 4.44133160e-04 1.03780905e+05 + 4.45002360e-04 1.03723811e+05 + 4.45873260e-04 1.03666528e+05 + 4.46745865e-04 1.03609056e+05 + 4.47620178e-04 1.03551396e+05 + 4.48496201e-04 1.03493545e+05 + 4.49373940e-04 1.03435505e+05 + 4.50253396e-04 1.03377274e+05 + 4.51134573e-04 1.03318852e+05 + 4.52017475e-04 1.03260239e+05 + 4.52902104e-04 1.03201433e+05 + 4.53788465e-04 1.03142435e+05 + 4.54676561e-04 1.03083244e+05 + 4.55566394e-04 1.03023860e+05 + 4.56457969e-04 1.02964282e+05 + 4.57351289e-04 1.02904509e+05 + 4.58246358e-04 1.02844541e+05 + 4.59143178e-04 1.02784378e+05 + 4.60041753e-04 1.02724019e+05 + 4.60942086e-04 1.02663463e+05 + 4.61844182e-04 1.02602711e+05 + 4.62748043e-04 1.02541761e+05 + 4.63653673e-04 1.02480614e+05 + 4.64561076e-04 1.02419268e+05 + 4.65470254e-04 1.02357724e+05 + 4.66381212e-04 1.02295980e+05 + 4.67293952e-04 1.02234036e+05 + 4.68208479e-04 1.02171892e+05 + 4.69124795e-04 1.02109548e+05 + 4.70042905e-04 1.02047002e+05 + 4.70962812e-04 1.01984254e+05 + 4.71884519e-04 1.01921305e+05 + 4.72808029e-04 1.01858152e+05 + 4.73733348e-04 1.01794797e+05 + 4.74660477e-04 1.01731237e+05 + 4.75589420e-04 1.01667474e+05 + 4.76520182e-04 1.01603506e+05 + 4.77452765e-04 1.01539333e+05 + 4.78387173e-04 1.01474955e+05 + 4.79323410e-04 1.01410370e+05 + 4.80261479e-04 1.01345579e+05 + 4.81201384e-04 1.01280581e+05 + 4.82143129e-04 1.01215375e+05 + 4.83086717e-04 1.01149962e+05 + 4.84032151e-04 1.01084340e+05 + 4.84979435e-04 1.01018509e+05 + 4.85928574e-04 1.00952468e+05 + 4.86879570e-04 1.00886218e+05 + 4.87832427e-04 1.00819757e+05 + 4.88787149e-04 1.00753086e+05 + 4.89743739e-04 1.00686203e+05 + 4.90702202e-04 1.00619108e+05 + 4.91662540e-04 1.00551801e+05 + 4.92624758e-04 1.00484282e+05 + 4.93588859e-04 1.00416549e+05 + 4.94554846e-04 1.00348602e+05 + 4.95522725e-04 1.00280441e+05 + 4.96492497e-04 1.00212066e+05 + 4.97464167e-04 1.00143475e+05 + 4.98437739e-04 1.00074669e+05 + 4.99413217e-04 1.00005647e+05 + 5.00390603e-04 9.99364077e+04 + 5.01369902e-04 9.98669518e+04 + 5.02351118e-04 9.97972783e+04 + 5.03334254e-04 9.97273869e+04 + 5.04319314e-04 9.96572771e+04 + 5.05306302e-04 9.95869483e+04 + 5.06295221e-04 9.95164001e+04 + 5.07286076e-04 9.94456321e+04 + 5.08278871e-04 9.93746438e+04 + 5.09273608e-04 9.93034346e+04 + 5.10270291e-04 9.92320043e+04 + 5.11268926e-04 9.91603521e+04 + 5.12269515e-04 9.90884778e+04 + 5.13272062e-04 9.90163809e+04 + 5.14276571e-04 9.89440608e+04 + 5.15283046e-04 9.88715171e+04 + 5.16291490e-04 9.87987495e+04 + 5.17301909e-04 9.87257573e+04 + 5.18314305e-04 9.86525401e+04 + 5.19328682e-04 9.85790975e+04 + 5.20345044e-04 9.85054290e+04 + 5.21363395e-04 9.84315342e+04 + 5.22383740e-04 9.83574127e+04 + 5.23406081e-04 9.82830638e+04 + 5.24430423e-04 9.82084873e+04 + 5.25456770e-04 9.81336825e+04 + 5.26485125e-04 9.80586492e+04 + 5.27515493e-04 9.79833868e+04 + 5.28547878e-04 9.79078949e+04 + 5.29582283e-04 9.78321731e+04 + 5.30618712e-04 9.77562208e+04 + 5.31657170e-04 9.76800377e+04 + 5.32697660e-04 9.76036233e+04 + 5.33740186e-04 9.75269771e+04 + 5.34784753e-04 9.74500987e+04 + 5.35831364e-04 9.73729877e+04 + 5.36880023e-04 9.72956436e+04 + 5.37930734e-04 9.72180660e+04 + 5.38983502e-04 9.71402544e+04 + 5.40038330e-04 9.70622085e+04 + 5.41095223e-04 9.69839277e+04 + 5.42154184e-04 9.69054116e+04 + 5.43215217e-04 9.68266599e+04 + 5.44278327e-04 9.67476720e+04 + 5.45343518e-04 9.66684476e+04 + 5.46410793e-04 9.65889861e+04 + 5.47480157e-04 9.65092872e+04 + 5.48551613e-04 9.64293505e+04 + 5.49625167e-04 9.63491756e+04 + 5.50700822e-04 9.62687619e+04 + 5.51778581e-04 9.61881091e+04 + 5.52858450e-04 9.61072167e+04 + 5.53940433e-04 9.60260844e+04 + 5.55024533e-04 9.59447118e+04 + 5.56110754e-04 9.58630983e+04 + 5.57199102e-04 9.57812436e+04 + 5.58289579e-04 9.56991473e+04 + 5.59382191e-04 9.56168090e+04 + 5.60476940e-04 9.55342283e+04 + 5.61573833e-04 9.54514046e+04 + 5.62672872e-04 9.53683378e+04 + 5.63774062e-04 9.52850272e+04 + 5.64877407e-04 9.52014727e+04 + 5.65982911e-04 9.51176736e+04 + 5.67090579e-04 9.50336297e+04 + 5.68200414e-04 9.49493405e+04 + 5.69312422e-04 9.48648057e+04 + 5.70426606e-04 9.47800249e+04 + 5.71542971e-04 9.46949976e+04 + 5.72661520e-04 9.46097234e+04 + 5.73782258e-04 9.45242021e+04 + 5.74905190e-04 9.44384331e+04 + 5.76030319e-04 9.43524162e+04 + 5.77157651e-04 9.42661509e+04 + 5.78287188e-04 9.41796369e+04 + 5.79418937e-04 9.40928738e+04 + 5.80552900e-04 9.40058611e+04 + 5.81689082e-04 9.39185986e+04 + 5.82827488e-04 9.38310859e+04 + 5.83968122e-04 9.37433225e+04 + 5.85110988e-04 9.36553082e+04 + 5.86256091e-04 9.35670425e+04 + 5.87403435e-04 9.34785251e+04 + 5.88553024e-04 9.33897557e+04 + 5.89704863e-04 9.33007339e+04 + 5.90858957e-04 9.32114593e+04 + 5.92015309e-04 9.31219316e+04 + 5.93173924e-04 9.30321504e+04 + 5.94334807e-04 9.29421153e+04 + 5.95497961e-04 9.28518262e+04 + 5.96663392e-04 9.27612825e+04 + 5.97831104e-04 9.26704840e+04 + 5.99001101e-04 9.25794302e+04 + 6.00173387e-04 9.24881210e+04 + 6.01347968e-04 9.23965559e+04 + 6.02524848e-04 9.23047347e+04 + 6.03704031e-04 9.22126569e+04 + 6.04885522e-04 9.21203223e+04 + 6.06069325e-04 9.20277306e+04 + 6.07255445e-04 9.19348813e+04 + 6.08443886e-04 9.18417743e+04 + 6.09634653e-04 9.17484092e+04 + 6.10827750e-04 9.16547857e+04 + 6.12023182e-04 9.15609035e+04 + 6.13220954e-04 9.14667623e+04 + 6.14421070e-04 9.13723617e+04 + 6.15623535e-04 9.12777015e+04 + 6.16828353e-04 9.11827814e+04 + 6.18035529e-04 9.10876011e+04 + 6.19245068e-04 9.09921603e+04 + 6.20456973e-04 9.08964587e+04 + 6.21671251e-04 9.08004960e+04 + 6.22887904e-04 9.07042720e+04 + 6.24106939e-04 9.06077863e+04 + 6.25328360e-04 9.05110388e+04 + 6.26552171e-04 9.04140291e+04 + 6.27778377e-04 9.03167569e+04 + 6.29006983e-04 9.02192221e+04 + 6.30237993e-04 9.01214243e+04 + 6.31471413e-04 9.00233632e+04 + 6.32707246e-04 8.99250387e+04 + 6.33945498e-04 8.98264505e+04 + 6.35186174e-04 8.97275983e+04 + 6.36429277e-04 8.96284819e+04 + 6.37674814e-04 8.95291010e+04 + 6.38922788e-04 8.94294555e+04 + 6.40173204e-04 8.93295450e+04 + 6.41426067e-04 8.92293694e+04 + 6.42681383e-04 8.91289284e+04 + 6.43939155e-04 8.90282218e+04 + 6.45199388e-04 8.89272493e+04 + 6.46462088e-04 8.88260109e+04 + 6.47727260e-04 8.87245062e+04 + 6.48994907e-04 8.86227350e+04 + 6.50265035e-04 8.85206972e+04 + 6.51537649e-04 8.84183926e+04 + 6.52812753e-04 8.83158208e+04 + 6.54090353e-04 8.82129819e+04 + 6.55370454e-04 8.81098755e+04 + 6.56653059e-04 8.80065015e+04 + 6.57938175e-04 8.79028597e+04 + 6.59225805e-04 8.77989500e+04 + 6.60515956e-04 8.76947721e+04 + 6.61808632e-04 8.75903259e+04 + 6.63103837e-04 8.74856113e+04 + 6.64401577e-04 8.73806280e+04 + 6.65701858e-04 8.72753759e+04 + 6.67004682e-04 8.71698549e+04 + 6.68310057e-04 8.70640648e+04 + 6.69617986e-04 8.69580055e+04 + 6.70928475e-04 8.68516769e+04 + 6.72241529e-04 8.67450788e+04 + 6.73557152e-04 8.66382110e+04 + 6.74875350e-04 8.65310735e+04 + 6.76196128e-04 8.64236662e+04 + 6.77519491e-04 8.63159888e+04 + 6.78845444e-04 8.62080414e+04 + 6.80173991e-04 8.60998238e+04 + 6.81505139e-04 8.59913359e+04 + 6.82838892e-04 8.58825776e+04 + 6.84175255e-04 8.57735489e+04 + 6.85514234e-04 8.56642496e+04 + 6.86855833e-04 8.55546796e+04 + 6.88200057e-04 8.54448389e+04 + 6.89546913e-04 8.53347274e+04 + 6.90896404e-04 8.52243450e+04 + 6.92248536e-04 8.51136918e+04 + 6.93603315e-04 8.50027675e+04 + 6.94960744e-04 8.48915722e+04 + 6.96320831e-04 8.47801058e+04 + 6.97683579e-04 8.46683683e+04 + 6.99048994e-04 8.45563596e+04 + 7.00417082e-04 8.44440798e+04 + 7.01787847e-04 8.43315287e+04 + 7.03161294e-04 8.42187063e+04 + 7.04537430e-04 8.41056128e+04 + 7.05916258e-04 8.39922479e+04 + 7.07297786e-04 8.38786118e+04 + 7.08682017e-04 8.37647044e+04 + 7.10068957e-04 8.36505257e+04 + 7.11458611e-04 8.35360758e+04 + 7.12850985e-04 8.34213546e+04 + 7.14246084e-04 8.33063622e+04 + 7.15643913e-04 8.31910986e+04 + 7.17044478e-04 8.30755638e+04 + 7.18447784e-04 8.29597580e+04 + 7.19853836e-04 8.28436810e+04 + 7.21262640e-04 8.27273330e+04 + 7.22674201e-04 8.26107141e+04 + 7.24088524e-04 8.24938242e+04 + 7.25505616e-04 8.23766635e+04 + 7.26925481e-04 8.22592321e+04 + 7.28348125e-04 8.21415299e+04 + 7.29773553e-04 8.20235572e+04 + 7.31201770e-04 8.19053139e+04 + 7.32632783e-04 8.17868002e+04 + 7.34066596e-04 8.16680162e+04 + 7.35503215e-04 8.15489620e+04 + 7.36942646e-04 8.14296377e+04 + 7.38384894e-04 8.13100434e+04 + 7.39829965e-04 8.11901793e+04 + 7.41277863e-04 8.10700455e+04 + 7.42728596e-04 8.09496421e+04 + 7.44182167e-04 8.08289693e+04 + 7.45638583e-04 8.07080273e+04 + 7.47097850e-04 8.05868161e+04 + 7.48559972e-04 8.04653360e+04 + 7.50024956e-04 8.03435872e+04 + 7.51492807e-04 8.02215697e+04 + 7.52963531e-04 8.00992838e+04 + 7.54437133e-04 7.99767298e+04 + 7.55913619e-04 7.98539077e+04 + 7.57392994e-04 7.97308178e+04 + 7.58875265e-04 7.96074603e+04 + 7.60360436e-04 7.94838354e+04 + 7.61848515e-04 7.93599434e+04 + 7.63339505e-04 7.92357845e+04 + 7.64833413e-04 7.91113589e+04 + 7.66330246e-04 7.89866668e+04 + 7.67830007e-04 7.88617086e+04 + 7.69332704e-04 7.87364844e+04 + 7.70838341e-04 7.86109946e+04 + 7.72346926e-04 7.84852394e+04 + 7.73858462e-04 7.83592191e+04 + 7.75372957e-04 7.82329340e+04 + 7.76890416e-04 7.81063844e+04 + 7.78410844e-04 7.79795706e+04 + 7.79934248e-04 7.78524928e+04 + 7.81460634e-04 7.77251515e+04 + 7.82990007e-04 7.75975469e+04 + 7.84522372e-04 7.74696794e+04 + 7.86057737e-04 7.73415493e+04 + 7.87596107e-04 7.72131569e+04 + 7.89137487e-04 7.70845026e+04 + 7.90681884e-04 7.69555868e+04 + 7.92229303e-04 7.68264099e+04 + 7.93779751e-04 7.66969721e+04 + 7.95333233e-04 7.65672740e+04 + 7.96889756e-04 7.64373158e+04 + 7.98449324e-04 7.63070980e+04 + 8.00011945e-04 7.61766211e+04 + 8.01577624e-04 7.60458853e+04 + 8.03146367e-04 7.59148911e+04 + 8.04718180e-04 7.57836390e+04 + 8.06293070e-04 7.56521294e+04 + 8.07871041e-04 7.55203628e+04 + 8.09452101e-04 7.53883395e+04 + 8.11036255e-04 7.52560601e+04 + 8.12623509e-04 7.51235251e+04 + 8.14213870e-04 7.49907348e+04 + 8.15807343e-04 7.48576898e+04 + 8.17403935e-04 7.47243906e+04 + 8.19003651e-04 7.45908377e+04 + 8.20606498e-04 7.44570316e+04 + 8.22212482e-04 7.43229728e+04 + 8.23821609e-04 7.41886618e+04 + 8.25433885e-04 7.40540993e+04 + 8.27049317e-04 7.39192856e+04 + 8.28667910e-04 7.37842214e+04 + 8.30289670e-04 7.36489072e+04 + 8.31914605e-04 7.35133436e+04 + 8.33542720e-04 7.33775312e+04 + 8.35174021e-04 7.32414706e+04 + 8.36808514e-04 7.31051623e+04 + 8.38446207e-04 7.29686069e+04 + 8.40087104e-04 7.28318052e+04 + 8.41731213e-04 7.26947576e+04 + 8.43378539e-04 7.25574648e+04 + 8.45029090e-04 7.24199274e+04 + 8.46682870e-04 7.22821461e+04 + 8.48339888e-04 7.21441216e+04 + 8.50000148e-04 7.20058545e+04 + 8.51663657e-04 7.18673454e+04 + 8.53330422e-04 7.17285951e+04 + 8.55000449e-04 7.15896043e+04 + 8.56673744e-04 7.14503736e+04 + 8.58350314e-04 7.13109037e+04 + 8.60030166e-04 7.11711954e+04 + 8.61713304e-04 7.10312493e+04 + 8.63399737e-04 7.08910663e+04 + 8.65089470e-04 7.07506471e+04 + 8.66782511e-04 7.06099924e+04 + 8.68478864e-04 7.04691029e+04 + 8.70178538e-04 7.03279795e+04 + 8.71881538e-04 7.01866229e+04 + 8.73587870e-04 7.00450338e+04 + 8.75297542e-04 6.99032132e+04 + 8.77010561e-04 6.97611618e+04 + 8.78726931e-04 6.96188805e+04 + 8.80446661e-04 6.94763699e+04 + 8.82169756e-04 6.93336311e+04 + 8.83896224e-04 6.91906648e+04 + 8.85626070e-04 6.90474718e+04 + 8.87359302e-04 6.89040531e+04 + 8.89095926e-04 6.87604095e+04 + 8.90835948e-04 6.86165419e+04 + 8.92579376e-04 6.84724511e+04 + 8.94326216e-04 6.83281381e+04 + 8.96076474e-04 6.81836038e+04 + 8.97830158e-04 6.80388491e+04 + 8.99587274e-04 6.78938750e+04 + 9.01347829e-04 6.77486823e+04 + 9.03111829e-04 6.76032720e+04 + 9.04879282e-04 6.74576450e+04 + 9.06650194e-04 6.73118024e+04 + 9.08424571e-04 6.71657452e+04 + 9.10202421e-04 6.70194742e+04 + 9.11983750e-04 6.68729904e+04 + 9.13768566e-04 6.67262950e+04 + 9.15556874e-04 6.65793889e+04 + 9.17348683e-04 6.64322731e+04 + 9.19143998e-04 6.62849487e+04 + 9.20942827e-04 6.61374166e+04 + 9.22745176e-04 6.59896781e+04 + 9.24551052e-04 6.58417340e+04 + 9.26360463e-04 6.56935855e+04 + 9.28173415e-04 6.55452337e+04 + 9.29989914e-04 6.53966797e+04 + 9.31809969e-04 6.52479245e+04 + 9.33633586e-04 6.50989693e+04 + 9.35460772e-04 6.49498152e+04 + 9.37291534e-04 6.48004633e+04 + 9.39125878e-04 6.46509148e+04 + 9.40963813e-04 6.45011708e+04 + 9.42805345e-04 6.43512325e+04 + 9.44650480e-04 6.42011011e+04 + 9.46499227e-04 6.40507776e+04 + 9.48351592e-04 6.39002634e+04 + 9.50207581e-04 6.37495596e+04 + 9.52067204e-04 6.35986675e+04 + 9.53930465e-04 6.34475882e+04 + 9.55797374e-04 6.32963229e+04 + 9.57667935e-04 6.31448730e+04 + 9.59542158e-04 6.29932397e+04 + 9.61420049e-04 6.28414242e+04 + 9.63301615e-04 6.26894278e+04 + 9.65186863e-04 6.25372518e+04 + 9.67075801e-04 6.23848974e+04 + 9.68968435e-04 6.22323660e+04 + 9.70864774e-04 6.20796590e+04 + 9.72764824e-04 6.19267775e+04 + 9.74668592e-04 6.17737229e+04 + 9.76576086e-04 6.16204966e+04 + 9.78487313e-04 6.14671000e+04 + 9.80402281e-04 6.13135343e+04 + 9.82320996e-04 6.11598010e+04 + 9.84243467e-04 6.10059014e+04 + 9.86169700e-04 6.08518369e+04 + 9.88099702e-04 6.06976090e+04 + 9.90033482e-04 6.05432190e+04 + 9.91971046e-04 6.03886683e+04 + 9.93912403e-04 6.02339585e+04 + 9.95857558e-04 6.00790908e+04 + 9.97806521e-04 5.99240669e+04 + 9.99759297e-04 5.97688880e+04 + 1.00171590e-03 5.96135558e+04 + 1.00367632e-03 5.94580717e+04 + 1.00564059e-03 5.93024371e+04 + 1.00760870e-03 5.91466536e+04 + 1.00958066e-03 5.89907227e+04 + 1.01155648e-03 5.88346460e+04 + 1.01353616e-03 5.86784248e+04 + 1.01551972e-03 5.85220608e+04 + 1.01750717e-03 5.83655556e+04 + 1.01949850e-03 5.82089106e+04 + 1.02149373e-03 5.80521275e+04 + 1.02349286e-03 5.78952079e+04 + 1.02549591e-03 5.77381532e+04 + 1.02750287e-03 5.75809652e+04 + 1.02951377e-03 5.74236454e+04 + 1.03152860e-03 5.72661955e+04 + 1.03354737e-03 5.71086170e+04 + 1.03557010e-03 5.69509117e+04 + 1.03759678e-03 5.67930811e+04 + 1.03962743e-03 5.66351270e+04 + 1.04166205e-03 5.64770509e+04 + 1.04370066e-03 5.63188546e+04 + 1.04574325e-03 5.61605398e+04 + 1.04778984e-03 5.60021082e+04 + 1.04984044e-03 5.58435613e+04 + 1.05189505e-03 5.56849011e+04 + 1.05395368e-03 5.55261292e+04 + 1.05601634e-03 5.53672473e+04 + 1.05808304e-03 5.52082571e+04 + 1.06015378e-03 5.50491606e+04 + 1.06222858e-03 5.48899593e+04 + 1.06430743e-03 5.47306551e+04 + 1.06639036e-03 5.45712497e+04 + 1.06847736e-03 5.44117450e+04 + 1.07056844e-03 5.42521427e+04 + 1.07266362e-03 5.40924447e+04 + 1.07476289e-03 5.39326527e+04 + 1.07686628e-03 5.37727687e+04 + 1.07897378e-03 5.36127944e+04 + 1.08108541e-03 5.34527317e+04 + 1.08320117e-03 5.32925824e+04 + 1.08532107e-03 5.31323484e+04 + 1.08744512e-03 5.29720316e+04 + 1.08957332e-03 5.28116339e+04 + 1.09170569e-03 5.26511572e+04 + 1.09384224e-03 5.24906033e+04 + 1.09598296e-03 5.23299742e+04 + 1.09812788e-03 5.21692718e+04 + 1.10027699e-03 5.20084980e+04 + 1.10243031e-03 5.18476547e+04 + 1.10458784e-03 5.16867440e+04 + 1.10674960e-03 5.15257677e+04 + 1.10891558e-03 5.13647278e+04 + 1.11108581e-03 5.12036264e+04 + 1.11326028e-03 5.10424652e+04 + 1.11543901e-03 5.08812465e+04 + 1.11762200e-03 5.07199721e+04 + 1.11980926e-03 5.05586441e+04 + 1.12200081e-03 5.03972644e+04 + 1.12419664e-03 5.02358351e+04 + 1.12639677e-03 5.00743583e+04 + 1.12860121e-03 4.99128359e+04 + 1.13080996e-03 4.97512701e+04 + 1.13302303e-03 4.95896628e+04 + 1.13524044e-03 4.94280161e+04 + 1.13746218e-03 4.92663321e+04 + 1.13968827e-03 4.91046129e+04 + 1.14191872e-03 4.89428606e+04 + 1.14415354e-03 4.87810772e+04 + 1.14639273e-03 4.86192649e+04 + 1.14863630e-03 4.84574257e+04 + 1.15088426e-03 4.82955618e+04 + 1.15313662e-03 4.81336754e+04 + 1.15539339e-03 4.79717684e+04 + 1.15765457e-03 4.78098432e+04 + 1.15992018e-03 4.76479017e+04 + 1.16219023e-03 4.74859463e+04 + 1.16446471e-03 4.73239790e+04 + 1.16674365e-03 4.71620020e+04 + 1.16902705e-03 4.70000174e+04 + 1.17131492e-03 4.68380276e+04 + 1.17360726e-03 4.66760346e+04 + 1.17590409e-03 4.65140406e+04 + 1.17820542e-03 4.63520479e+04 + 1.18051125e-03 4.61900586e+04 + 1.18282159e-03 4.60280750e+04 + 1.18513646e-03 4.58660993e+04 + 1.18745585e-03 4.57041338e+04 + 1.18977978e-03 4.55421805e+04 + 1.19210826e-03 4.53802419e+04 + 1.19444130e-03 4.52183202e+04 + 1.19677891e-03 4.50564175e+04 + 1.19912109e-03 4.48945362e+04 + 1.20146785e-03 4.47326785e+04 + 1.20381921e-03 4.45708467e+04 + 1.20617516e-03 4.44090431e+04 + 1.20853573e-03 4.42472699e+04 + 1.21090092e-03 4.40855295e+04 + 1.21327074e-03 4.39238241e+04 + 1.21564519e-03 4.37621561e+04 + 1.21802430e-03 4.36005276e+04 + 1.22040805e-03 4.34389412e+04 + 1.22279648e-03 4.32773990e+04 + 1.22518958e-03 4.31159033e+04 + 1.22758736e-03 4.29544566e+04 + 1.22998983e-03 4.27930611e+04 + 1.23239701e-03 4.26317192e+04 + 1.23480889e-03 4.24704332e+04 + 1.23722550e-03 4.23092055e+04 + 1.23964684e-03 4.21480383e+04 + 1.24207291e-03 4.19869341e+04 + 1.24450373e-03 4.18258952e+04 + 1.24693931e-03 4.16649240e+04 + 1.24937966e-03 4.15040228e+04 + 1.25182478e-03 4.13431940e+04 + 1.25427469e-03 4.11824400e+04 + 1.25672939e-03 4.10217631e+04 + 1.25918890e-03 4.08611658e+04 + 1.26165322e-03 4.07006504e+04 + 1.26412236e-03 4.05402193e+04 + 1.26659634e-03 4.03798748e+04 + 1.26907516e-03 4.02196195e+04 + 1.27155882e-03 4.00594556e+04 + 1.27404735e-03 3.98993856e+04 + 1.27654075e-03 3.97394119e+04 + 1.27903903e-03 3.95795368e+04 + 1.28154220e-03 3.94197629e+04 + 1.28405027e-03 3.92600924e+04 + 1.28656324e-03 3.91005279e+04 + 1.28908114e-03 3.89410717e+04 + 1.29160396e-03 3.87817263e+04 + 1.29413172e-03 3.86224940e+04 + 1.29666442e-03 3.84633773e+04 + 1.29920208e-03 3.83043786e+04 + 1.30174471e-03 3.81455003e+04 + 1.30429232e-03 3.79867449e+04 + 1.30684491e-03 3.78281148e+04 + 1.30940250e-03 3.76696124e+04 + 1.31196509e-03 3.75112401e+04 + 1.31453269e-03 3.73530004e+04 + 1.31710533e-03 3.71948957e+04 + 1.31968299e-03 3.70369285e+04 + 1.32226570e-03 3.68791011e+04 + 1.32485347e-03 3.67214160e+04 + 1.32744630e-03 3.65638757e+04 + 1.33004420e-03 3.64064826e+04 + 1.33264719e-03 3.62492390e+04 + 1.33525528e-03 3.60921475e+04 + 1.33786846e-03 3.59352105e+04 + 1.34048677e-03 3.57784304e+04 + 1.34311019e-03 3.56218097e+04 + 1.34573875e-03 3.54653507e+04 + 1.34837246e-03 3.53090560e+04 + 1.35101131e-03 3.51529279e+04 + 1.35365534e-03 3.49969689e+04 + 1.35630453e-03 3.48411814e+04 + 1.35895892e-03 3.46855679e+04 + 1.36161849e-03 3.45301307e+04 + 1.36428328e-03 3.43748723e+04 + 1.36695327e-03 3.42197952e+04 + 1.36962850e-03 3.40649017e+04 + 1.37230895e-03 3.39101943e+04 + 1.37499466e-03 3.37556753e+04 + 1.37768562e-03 3.36013473e+04 + 1.38038184e-03 3.34472126e+04 + 1.38308335e-03 3.32932737e+04 + 1.38579014e-03 3.31395329e+04 + 1.38850222e-03 3.29859926e+04 + 1.39121962e-03 3.28326554e+04 + 1.39394233e-03 3.26795235e+04 + 1.39667038e-03 3.25265994e+04 + 1.39940376e-03 3.23738854e+04 + 1.40214249e-03 3.22213840e+04 + 1.40488658e-03 3.20690975e+04 + 1.40763604e-03 3.19170284e+04 + 1.41039088e-03 3.17651790e+04 + 1.41315111e-03 3.16135517e+04 + 1.41591675e-03 3.14621489e+04 + 1.41868779e-03 3.13109729e+04 + 1.42146427e-03 3.11600262e+04 + 1.42424617e-03 3.10093110e+04 + 1.42703352e-03 3.08588297e+04 + 1.42982632e-03 3.07085847e+04 + 1.43262459e-03 3.05585783e+04 + 1.43542834e-03 3.04088129e+04 + 1.43823757e-03 3.02592908e+04 + 1.44105230e-03 3.01100144e+04 + 1.44387254e-03 2.99609859e+04 + 1.44669830e-03 2.98122077e+04 + 1.44952959e-03 2.96636820e+04 + 1.45236642e-03 2.95154113e+04 + 1.45520880e-03 2.93673978e+04 + 1.45805675e-03 2.92196439e+04 + 1.46091026e-03 2.90721517e+04 + 1.46376937e-03 2.89249236e+04 + 1.46663407e-03 2.87779618e+04 + 1.46950437e-03 2.86312687e+04 + 1.47238029e-03 2.84848464e+04 + 1.47526184e-03 2.83386973e+04 + 1.47814903e-03 2.81928236e+04 + 1.48104187e-03 2.80472276e+04 + 1.48394037e-03 2.79019114e+04 + 1.48684455e-03 2.77568773e+04 + 1.48975441e-03 2.76121275e+04 + 1.49266996e-03 2.74676643e+04 + 1.49559122e-03 2.73234897e+04 + 1.49851819e-03 2.71796061e+04 + 1.50145090e-03 2.70360156e+04 + 1.50438934e-03 2.68927204e+04 + 1.50733354e-03 2.67497226e+04 + 1.51028349e-03 2.66070244e+04 + 1.51323922e-03 2.64646280e+04 + 1.51620074e-03 2.63225355e+04 + 1.51916805e-03 2.61807490e+04 + 1.52214117e-03 2.60392706e+04 + 1.52512010e-03 2.58981026e+04 + 1.52810487e-03 2.57572469e+04 + 1.53109547e-03 2.56167056e+04 + 1.53409194e-03 2.54764809e+04 + 1.53709426e-03 2.53365748e+04 + 1.54010246e-03 2.51969894e+04 + 1.54311655e-03 2.50577267e+04 + 1.54613653e-03 2.49187888e+04 + 1.54916243e-03 2.47801777e+04 + 1.55219425e-03 2.46418954e+04 + 1.55523200e-03 2.45039440e+04 + 1.55827570e-03 2.43663253e+04 + 1.56132535e-03 2.42290415e+04 + 1.56438097e-03 2.40920945e+04 + 1.56744258e-03 2.39554862e+04 + 1.57051017e-03 2.38192186e+04 + 1.57358377e-03 2.36832937e+04 + 1.57666338e-03 2.35477133e+04 + 1.57974902e-03 2.34124794e+04 + 1.58284070e-03 2.32775939e+04 + 1.58593843e-03 2.31430587e+04 + 1.58904222e-03 2.30088756e+04 + 1.59215209e-03 2.28750465e+04 + 1.59526804e-03 2.27415733e+04 + 1.59839009e-03 2.26084579e+04 + 1.60151825e-03 2.24757019e+04 + 1.60465253e-03 2.23433073e+04 + 1.60779295e-03 2.22112759e+04 + 1.61093951e-03 2.20796094e+04 + 1.61409223e-03 2.19483096e+04 + 1.61725112e-03 2.18173783e+04 + 1.62041619e-03 2.16868172e+04 + 1.62358746e-03 2.15566280e+04 + 1.62676493e-03 2.14268125e+04 + 1.62994863e-03 2.12973724e+04 + 1.63313855e-03 2.11683093e+04 + 1.63633472e-03 2.10396250e+04 + 1.63953714e-03 2.09113210e+04 + 1.64274582e-03 2.07833991e+04 + 1.64596079e-03 2.06558608e+04 + 1.64918205e-03 2.05287078e+04 + 1.65240962e-03 2.04019417e+04 + 1.65564350e-03 2.02755641e+04 + 1.65888371e-03 2.01495764e+04 + 1.66213026e-03 2.00239804e+04 + 1.66538316e-03 1.98987775e+04 + 1.66864243e-03 1.97739692e+04 + 1.67190808e-03 1.96495571e+04 + 1.67518012e-03 1.95255426e+04 + 1.67845856e-03 1.94019273e+04 + 1.68174342e-03 1.92787125e+04 + 1.68503471e-03 1.91558998e+04 + 1.68833244e-03 1.90334905e+04 + 1.69163663e-03 1.89114860e+04 + 1.69494728e-03 1.87898879e+04 + 1.69826441e-03 1.86686973e+04 + 1.70158803e-03 1.85479157e+04 + 1.70491815e-03 1.84275445e+04 + 1.70825480e-03 1.83075849e+04 + 1.71159797e-03 1.81880383e+04 + 1.71494769e-03 1.80689060e+04 + 1.71830396e-03 1.79501892e+04 + 1.72166680e-03 1.78318892e+04 + 1.72503622e-03 1.77140072e+04 + 1.72841224e-03 1.75965445e+04 + 1.73179486e-03 1.74795022e+04 + 1.73518410e-03 1.73628817e+04 + 1.73857998e-03 1.72466839e+04 + 1.74198250e-03 1.71309101e+04 + 1.74539168e-03 1.70155615e+04 + 1.74880753e-03 1.69006390e+04 + 1.75223007e-03 1.67861439e+04 + 1.75565931e-03 1.66720772e+04 + 1.75909525e-03 1.65584400e+04 + 1.76253793e-03 1.64452333e+04 + 1.76598734e-03 1.63324581e+04 + 1.76944350e-03 1.62201155e+04 + 1.77290642e-03 1.61082064e+04 + 1.77637612e-03 1.59967319e+04 + 1.77985261e-03 1.58856928e+04 + 1.78333591e-03 1.57750901e+04 + 1.78682602e-03 1.56649247e+04 + 1.79032296e-03 1.55551975e+04 + 1.79382675e-03 1.54459094e+04 + 1.79733739e-03 1.53370612e+04 + 1.80085491e-03 1.52286538e+04 + 1.80437930e-03 1.51206881e+04 + 1.80791060e-03 1.50131647e+04 + 1.81144881e-03 1.49060845e+04 + 1.81499394e-03 1.47994483e+04 + 1.81854601e-03 1.46932567e+04 + 1.82210503e-03 1.45875106e+04 + 1.82567101e-03 1.44822105e+04 + 1.82924398e-03 1.43773573e+04 + 1.83282394e-03 1.42729516e+04 + 1.83641090e-03 1.41689940e+04 + 1.84000488e-03 1.40654851e+04 + 1.84360590e-03 1.39624256e+04 + 1.84721397e-03 1.38598160e+04 + 1.85082909e-03 1.37576570e+04 + 1.85445129e-03 1.36559490e+04 + 1.85808058e-03 1.35546926e+04 + 1.86171698e-03 1.34538883e+04 + 1.86536049e-03 1.33535365e+04 + 1.86901113e-03 1.32536379e+04 + 1.87266891e-03 1.31541927e+04 + 1.87633385e-03 1.30552016e+04 + 1.88000597e-03 1.29566647e+04 + 1.88368527e-03 1.28585826e+04 + 1.88737177e-03 1.27609557e+04 + 1.89106549e-03 1.26637842e+04 + 1.89476644e-03 1.25670685e+04 + 1.89847463e-03 1.24708089e+04 + 1.90219008e-03 1.23750057e+04 + 1.90591279e-03 1.22796593e+04 + 1.90964280e-03 1.21847697e+04 + 1.91338010e-03 1.20903374e+04 + 1.91712472e-03 1.19963624e+04 + 1.92087666e-03 1.19028450e+04 + 1.92463595e-03 1.18097853e+04 + 1.92840260e-03 1.17171836e+04 + 1.93217662e-03 1.16250399e+04 + 1.93595802e-03 1.15333543e+04 + 1.93974683e-03 1.14421271e+04 + 1.94354305e-03 1.13513581e+04 + 1.94734669e-03 1.12610475e+04 + 1.95115779e-03 1.11711954e+04 + 1.95497634e-03 1.10818017e+04 + 1.95880236e-03 1.09928664e+04 + 1.96263588e-03 1.09043895e+04 + 1.96647689e-03 1.08163710e+04 + 1.97032542e-03 1.07288108e+04 + 1.97418149e-03 1.06417089e+04 + 1.97804510e-03 1.05550650e+04 + 1.98191627e-03 1.04688792e+04 + 1.98579502e-03 1.03831512e+04 + 1.98968135e-03 1.02978810e+04 + 1.99357530e-03 1.02130683e+04 + 1.99747686e-03 1.01287129e+04 + 2.00138607e-03 1.00448146e+04 + 2.00530292e-03 9.96137321e+03 + 2.00922743e-03 9.87838844e+03 + 2.01315963e-03 9.79586003e+03 + 2.01709953e-03 9.71378768e+03 + 2.02104713e-03 9.63217107e+03 + 2.02500246e-03 9.55100988e+03 + 2.02896553e-03 9.47030376e+03 + 2.03293636e-03 9.39005233e+03 + 2.03691495e-03 9.31025522e+03 + 2.04090134e-03 9.23091201e+03 + 2.04489552e-03 9.15202229e+03 + 2.04889753e-03 9.07358560e+03 + 2.05290736e-03 8.99560149e+03 + 2.05692504e-03 8.91806948e+03 + 2.06095059e-03 8.84098907e+03 + 2.06498401e-03 8.76435974e+03 + 2.06902533e-03 8.68818096e+03 + 2.07307456e-03 8.61245218e+03 + 2.07713171e-03 8.53717283e+03 + 2.08119680e-03 8.46234231e+03 + 2.08526984e-03 8.38796003e+03 + 2.08935086e-03 8.31402535e+03 + 2.09343987e-03 8.24053765e+03 + 2.09753687e-03 8.16749625e+03 + 2.10164190e-03 8.09490048e+03 + 2.10575496e-03 8.02274965e+03 + 2.10987607e-03 7.95104305e+03 + 2.11400524e-03 7.87977994e+03 + 2.11814250e-03 7.80895959e+03 + 2.12228785e-03 7.73858123e+03 + 2.12644131e-03 7.66864408e+03 + 2.13060291e-03 7.59914735e+03 + 2.13477264e-03 7.53009022e+03 + 2.13895054e-03 7.46147187e+03 + 2.14313662e-03 7.39329144e+03 + 2.14733089e-03 7.32554808e+03 + 2.15153336e-03 7.25824091e+03 + 2.15574406e-03 7.19136903e+03 + 2.15996300e-03 7.12493154e+03 + 2.16419020e-03 7.05892750e+03 + 2.16842567e-03 6.99335598e+03 + 2.17266943e-03 6.92821601e+03 + 2.17692150e-03 6.86350663e+03 + 2.18118188e-03 6.79922684e+03 + 2.18545061e-03 6.73537565e+03 + 2.18972768e-03 6.67195203e+03 + 2.19401313e-03 6.60895494e+03 + 2.19830697e-03 6.54638335e+03 + 2.20260921e-03 6.48423618e+03 + 2.20691987e-03 6.42251235e+03 + 2.21123896e-03 6.36121078e+03 + 2.21556651e-03 6.30033036e+03 + 2.21990253e-03 6.23986996e+03 + 2.22424703e-03 6.17982845e+03 + 2.22860004e-03 6.12020468e+03 + 2.23296157e-03 6.06099748e+03 + 2.23733163e-03 6.00220567e+03 + 2.24171024e-03 5.94382808e+03 + 2.24609742e-03 5.88586348e+03 + 2.25049319e-03 5.82831067e+03 + 2.25489756e-03 5.77116840e+03 + 2.25931055e-03 5.71443545e+03 + 2.26373218e-03 5.65811055e+03 + 2.26816246e-03 5.60219243e+03 + 2.27260141e-03 5.54667980e+03 + 2.27704905e-03 5.49157138e+03 + 2.28150540e-03 5.43686586e+03 + 2.28597046e-03 5.38256191e+03 + 2.29044426e-03 5.32865821e+03 + 2.29492682e-03 5.27515341e+03 + 2.29941815e-03 5.22204617e+03 + 2.30391827e-03 5.16933510e+03 + 2.30842720e-03 5.11701883e+03 + 2.31294496e-03 5.06509598e+03 + 2.31747155e-03 5.01356515e+03 + 2.32200700e-03 4.96242491e+03 + 2.32655133e-03 4.91167386e+03 + 2.33110455e-03 4.86131056e+03 + 2.33566669e-03 4.81133356e+03 + 2.34023775e-03 4.76174141e+03 + 2.34481776e-03 4.71253265e+03 + 2.34940673e-03 4.66370581e+03 + 2.35400468e-03 4.61525940e+03 + 2.35861163e-03 4.56719193e+03 + 2.36322760e-03 4.51950189e+03 + 2.36785260e-03 4.47218778e+03 + 2.37248665e-03 4.42524807e+03 + 2.37712977e-03 4.37868123e+03 + 2.38178198e-03 4.33248573e+03 + 2.38644329e-03 4.28666001e+03 + 2.39111373e-03 4.24120252e+03 + 2.39579330e-03 4.19611169e+03 + 2.40048204e-03 4.15138595e+03 + 2.40517995e-03 4.10702373e+03 + 2.40988705e-03 4.06302342e+03 + 2.41460337e-03 4.01938344e+03 + 2.41932892e-03 3.97610218e+03 + 2.42406371e-03 3.93317803e+03 + 2.42880777e-03 3.89060936e+03 + 2.43356112e-03 3.84839456e+03 + 2.43832376e-03 3.80653199e+03 + 2.44309573e-03 3.76502001e+03 + 2.44787704e-03 3.72385697e+03 + 2.45266771e-03 3.68304121e+03 + 2.45746775e-03 3.64257110e+03 + 2.46227718e-03 3.60244494e+03 + 2.46709603e-03 3.56266108e+03 + 2.47192431e-03 3.52321784e+03 + 2.47676204e-03 3.48411353e+03 + 2.48160923e-03 3.44534647e+03 + 2.48646591e-03 3.40691496e+03 + 2.49133210e-03 3.36881731e+03 + 2.49620781e-03 3.33105180e+03 + 2.50109306e-03 3.29361674e+03 + 2.50598788e-03 3.25651041e+03 + 2.51089227e-03 3.21973109e+03 + 2.51580626e-03 3.18327706e+03 + 2.52072987e-03 3.14714660e+03 + 2.52566311e-03 3.11133797e+03 + 2.53060601e-03 3.07584944e+03 + 2.53555858e-03 3.04067927e+03 + 2.54052084e-03 3.00582573e+03 + 2.54549282e-03 2.97128707e+03 + 2.55047453e-03 2.93706153e+03 + 2.55546598e-03 2.90314738e+03 + 2.56046721e-03 2.86954285e+03 + 2.56547822e-03 2.83624619e+03 + 2.57049904e-03 2.80325564e+03 + 2.57552968e-03 2.77056945e+03 + 2.58057017e-03 2.73818584e+03 + 2.58562053e-03 2.70610306e+03 + 2.59068077e-03 2.67431933e+03 + 2.59575091e-03 2.64283288e+03 + 2.60083098e-03 2.61164195e+03 + 2.60592098e-03 2.58074476e+03 + 2.61102095e-03 2.55013954e+03 + 2.61613090e-03 2.51982452e+03 + 2.62125085e-03 2.48979791e+03 + 2.62638082e-03 2.46005794e+03 + 2.63152083e-03 2.43060284e+03 + 2.63667090e-03 2.40143083e+03 + 2.64183105e-03 2.37254012e+03 + 2.64700129e-03 2.34392894e+03 + 2.65218166e-03 2.31559551e+03 + 2.65737216e-03 2.28753806e+03 + 2.66257283e-03 2.25975479e+03 + 2.66778367e-03 2.23224394e+03 + 2.67300470e-03 2.20500373e+03 + 2.67823596e-03 2.17803238e+03 + 2.68347745e-03 2.15132811e+03 + 2.68872920e-03 2.12488914e+03 + 2.69399123e-03 2.09871371e+03 + 2.69926356e-03 2.07280004e+03 + 2.70454621e-03 2.04714635e+03 + 2.70983919e-03 2.02175088e+03 + 2.71514254e-03 1.99661185e+03 + 2.72045626e-03 1.97172750e+03 + 2.72578038e-03 1.94709606e+03 + 2.73111492e-03 1.92271577e+03 + 2.73645991e-03 1.89858487e+03 + 2.74181535e-03 1.87470159e+03 + 2.74718127e-03 1.85106418e+03 + 2.75255770e-03 1.82767089e+03 + 2.75794464e-03 1.80451996e+03 + 2.76334213e-03 1.78160964e+03 + 2.76875018e-03 1.75893818e+03 + 2.77416882e-03 1.73650384e+03 + 2.77959806e-03 1.71430489e+03 + 2.78503793e-03 1.69233958e+03 + 2.79048844e-03 1.67060617e+03 + 2.79594962e-03 1.64910294e+03 + 2.80142149e-03 1.62782817e+03 + 2.80690406e-03 1.60678011e+03 + 2.81239737e-03 1.58595707e+03 + 2.81790143e-03 1.56535731e+03 + 2.82341626e-03 1.54497913e+03 + 2.82894188e-03 1.52482082e+03 + 2.83447831e-03 1.50488068e+03 + 2.84002559e-03 1.48515700e+03 + 2.84558371e-03 1.46564809e+03 + 2.85115272e-03 1.44635227e+03 + 2.85673262e-03 1.42726783e+03 + 2.86232345e-03 1.40839311e+03 + 2.86792521e-03 1.38972643e+03 + 2.87353794e-03 1.37126611e+03 + 2.87916165e-03 1.35301049e+03 + 2.88479637e-03 1.33495790e+03 + 2.89044212e-03 1.31710670e+03 + 2.89609892e-03 1.29945522e+03 + 2.90176678e-03 1.28200183e+03 + 2.90744574e-03 1.26474488e+03 + 2.91313582e-03 1.24768275e+03 + 2.91883703e-03 1.23081379e+03 + 2.92454939e-03 1.21413639e+03 + 2.93027294e-03 1.19764893e+03 + 2.93600769e-03 1.18134980e+03 + 2.94175366e-03 1.16523739e+03 + 2.94751087e-03 1.14931011e+03 + 2.95327936e-03 1.13356636e+03 + 2.95905913e-03 1.11800455e+03 + 2.96485021e-03 1.10262311e+03 + 2.97065263e-03 1.08742045e+03 + 2.97646641e-03 1.07239502e+03 + 2.98229156e-03 1.05754525e+03 + 2.98812811e-03 1.04286958e+03 + 2.99397608e-03 1.02836647e+03 + 2.99983550e-03 1.01403437e+03 + 3.00570639e-03 9.99871760e+02 + 3.01158877e-03 9.85877102e+02 + 3.01748265e-03 9.72048877e+02 + 3.02338808e-03 9.58385573e+02 + 3.02930506e-03 9.44885681e+02 + 3.03523362e-03 9.31547703e+02 + 3.04117378e-03 9.18370147e+02 + 3.04712557e-03 9.05351527e+02 + 3.05308901e-03 8.92490365e+02 + 3.05906411e-03 8.79785191e+02 + 3.06505091e-03 8.67234542e+02 + 3.07104943e-03 8.54836962e+02 + 3.07705969e-03 8.42591003e+02 + 3.08308171e-03 8.30495224e+02 + 3.08911551e-03 8.18548193e+02 + 3.09516113e-03 8.06748483e+02 + 3.10121857e-03 7.95094677e+02 + 3.10728787e-03 7.83585366e+02 + 3.11336905e-03 7.72219145e+02 + 3.11946213e-03 7.60994622e+02 + 3.12556713e-03 7.49910409e+02 + 3.13168409e-03 7.38965128e+02 + 3.13781301e-03 7.28157407e+02 + 3.14395393e-03 7.17485885e+02 + 3.15010686e-03 7.06949204e+02 + 3.15627184e-03 6.96546020e+02 + 3.16244889e-03 6.86274993e+02 + 3.16863802e-03 6.76134791e+02 + 3.17483926e-03 6.66124093e+02 + 3.18105264e-03 6.56241583e+02 + 3.18727818e-03 6.46485955e+02 + 3.19351591e-03 6.36855911e+02 + 3.19976584e-03 6.27350161e+02 + 3.20602801e-03 6.17967422e+02 + 3.21230243e-03 6.08706421e+02 + 3.21858913e-03 5.99565893e+02 + 3.22488813e-03 5.90544580e+02 + 3.23119946e-03 5.81641234e+02 + 3.23752314e-03 5.72854613e+02 + 3.24385920e-03 5.64183487e+02 + 3.25020766e-03 5.55626631e+02 + 3.25656854e-03 5.47182829e+02 + 3.26294187e-03 5.38850874e+02 + 3.26932767e-03 5.30629568e+02 + 3.27572597e-03 5.22517720e+02 + 3.28213680e-03 5.14514148e+02 + 3.28856017e-03 5.06617678e+02 + 3.29499611e-03 4.98827146e+02 + 3.30144464e-03 4.91141394e+02 + 3.30790580e-03 4.83559274e+02 + 3.31437960e-03 4.76079646e+02 + 3.32086607e-03 4.68701378e+02 + 3.32736524e-03 4.61423347e+02 + 3.33387712e-03 4.54244439e+02 + 3.34040175e-03 4.47163546e+02 + 3.34693915e-03 4.40179572e+02 + 3.35348934e-03 4.33291426e+02 + 3.36005236e-03 4.26498027e+02 + 3.36662821e-03 4.19798303e+02 + 3.37321694e-03 4.13191189e+02 + 3.37981856e-03 4.06675628e+02 + 3.38643310e-03 4.00250575e+02 + 3.39306058e-03 3.93914988e+02 + 3.39970104e-03 3.87667837e+02 + 3.40635449e-03 3.81508100e+02 + 3.41302096e-03 3.75434762e+02 + 3.41970048e-03 3.69446817e+02 + 3.42639307e-03 3.63543268e+02 + 3.43309876e-03 3.57723125e+02 + 3.43981757e-03 3.51985406e+02 + 3.44654953e-03 3.46329140e+02 + 3.45329467e-03 3.40753361e+02 + 3.46005301e-03 3.35257112e+02 + 3.46682457e-03 3.29839446e+02 + 3.47360939e-03 3.24499422e+02 + 3.48040748e-03 3.19236109e+02 + 3.48721888e-03 3.14048582e+02 + 3.49404361e-03 3.08935926e+02 + 3.50088170e-03 3.03897233e+02 + 3.50773317e-03 2.98931603e+02 + 3.51459805e-03 2.94038146e+02 + 3.52147636e-03 2.89215976e+02 + 3.52836813e-03 2.84464219e+02 + 3.53527339e-03 2.79782008e+02 + 3.54219217e-03 2.75168482e+02 + 3.54912449e-03 2.70622789e+02 + 3.55607037e-03 2.66144086e+02 + 3.56302985e-03 2.61731537e+02 + 3.57000294e-03 2.57384313e+02 + 3.57698969e-03 2.53101593e+02 + 3.58399010e-03 2.48882566e+02 + 3.59100422e-03 2.44726426e+02 + 3.59803207e-03 2.40632375e+02 + 3.60507367e-03 2.36599624e+02 + 3.61212904e-03 2.32627392e+02 + 3.61919823e-03 2.28714902e+02 + 3.62628125e-03 2.24861389e+02 + 3.63337814e-03 2.21066094e+02 + 3.64048891e-03 2.17328263e+02 + 3.64761360e-03 2.13647153e+02 + 3.65475224e-03 2.10022027e+02 + 3.66190484e-03 2.06452155e+02 + 3.66907144e-03 2.02936814e+02 + 3.67625207e-03 1.99475290e+02 + 3.68344675e-03 1.96066874e+02 + 3.69065551e-03 1.92710867e+02 + 3.69787838e-03 1.89406575e+02 + 3.70511539e-03 1.86153311e+02 + 3.71236655e-03 1.82950397e+02 + 3.71963191e-03 1.79797160e+02 + 3.72691149e-03 1.76692935e+02 + 3.73420532e-03 1.73637065e+02 + 3.74151342e-03 1.70628898e+02 + 3.74883582e-03 1.67667790e+02 + 3.75617255e-03 1.64753104e+02 + 3.76352364e-03 1.61884209e+02 + 3.77088912e-03 1.59060481e+02 + 3.77826901e-03 1.56281304e+02 + 3.78566334e-03 1.53546067e+02 + 3.79307215e-03 1.50854167e+02 + 3.80049546e-03 1.48205006e+02 + 3.80793329e-03 1.45597994e+02 + 3.81538568e-03 1.43032548e+02 + 3.82285265e-03 1.40508089e+02 + 3.83033424e-03 1.38024046e+02 + 3.83783047e-03 1.35579856e+02 + 3.84534137e-03 1.33174959e+02 + 3.85286697e-03 1.30808804e+02 + 3.86040730e-03 1.28480845e+02 + 3.86796239e-03 1.26190543e+02 + 3.87553226e-03 1.23937363e+02 + 3.88311695e-03 1.21720780e+02 + 3.89071647e-03 1.19540271e+02 + 3.89833088e-03 1.17395322e+02 + 3.90596018e-03 1.15285423e+02 + 3.91360442e-03 1.13210072e+02 + 3.92126361e-03 1.11168771e+02 + 3.92893780e-03 1.09161028e+02 + 3.93662700e-03 1.07186359e+02 + 3.94433125e-03 1.05244282e+02 + 3.95205059e-03 1.03334325e+02 + 3.95978502e-03 1.01456018e+02 + 3.96753460e-03 9.96088994e+01 + 3.97529934e-03 9.77925109e+01 + 3.98307928e-03 9.60064011e+01 + 3.99087444e-03 9.42501239e+01 + 3.99868486e-03 9.25232383e+01 + 4.00651056e-03 9.08253090e+01 + 4.01435158e-03 8.91559060e+01 + 4.02220795e-03 8.75146045e+01 + 4.03007969e-03 8.59009850e+01 + 4.03796683e-03 8.43146333e+01 + 4.04586941e-03 8.27551402e+01 + 4.05378746e-03 8.12221018e+01 + 4.06172100e-03 7.97151191e+01 + 4.06967007e-03 7.82337983e+01 + 4.07763470e-03 7.67777506e+01 + 4.08561492e-03 7.53465919e+01 + 4.09361075e-03 7.39399432e+01 + 4.10162223e-03 7.25574304e+01 + 4.10964939e-03 7.11986840e+01 + 4.11769226e-03 6.98633395e+01 + 4.12575087e-03 6.85510369e+01 + 4.13382525e-03 6.72614210e+01 + 4.14191543e-03 6.59941412e+01 + 4.15002145e-03 6.47488515e+01 + 4.15814333e-03 6.35252104e+01 + 4.16628110e-03 6.23228809e+01 + 4.17443481e-03 6.11415305e+01 + 4.18260446e-03 5.99808311e+01 + 4.19079011e-03 5.88404589e+01 + 4.19899178e-03 5.77200945e+01 + 4.20720950e-03 5.66194227e+01 + 4.21544330e-03 5.55381327e+01 + 4.22369322e-03 5.44759176e+01 + 4.23195928e-03 5.34324749e+01 + 4.24024151e-03 5.24075061e+01 + 4.24853996e-03 5.14007169e+01 + 4.25685465e-03 5.04118168e+01 + 4.26518561e-03 4.94405195e+01 + 4.27353287e-03 4.84865424e+01 + 4.28189648e-03 4.75496071e+01 + 4.29027644e-03 4.66294387e+01 + 4.29867281e-03 4.57257664e+01 + 4.30708561e-03 4.48383231e+01 + 4.31551488e-03 4.39668454e+01 + 4.32396064e-03 4.31110736e+01 + 4.33242293e-03 4.22707516e+01 + 4.34090179e-03 4.14456270e+01 + 4.34939723e-03 4.06354509e+01 + 4.35790931e-03 3.98399780e+01 + 4.36643804e-03 3.90589665e+01 + 4.37498346e-03 3.82921780e+01 + 4.38354561e-03 3.75393775e+01 + 4.39212451e-03 3.68003334e+01 + 4.40072020e-03 3.60748174e+01 + 4.40933272e-03 3.53626047e+01 + 4.41796209e-03 3.46634735e+01 + 4.42660835e-03 3.39772053e+01 + 4.43527153e-03 3.33035849e+01 + 4.44395166e-03 3.26424001e+01 + 4.45264878e-03 3.19934419e+01 + 4.46136293e-03 3.13565044e+01 + 4.47009412e-03 3.07313846e+01 + 4.47884241e-03 3.01178827e+01 + 4.48760782e-03 2.95158017e+01 + 4.49639038e-03 2.89249475e+01 + 4.50519012e-03 2.83451292e+01 + 4.51400709e-03 2.77761584e+01 + 4.52284132e-03 2.72178498e+01 + 4.53169283e-03 2.66700206e+01 + 4.54056167e-03 2.61324911e+01 + 4.54944787e-03 2.56050841e+01 + 4.55835145e-03 2.50876250e+01 + 4.56727246e-03 2.45799422e+01 + 4.57621093e-03 2.40818665e+01 + 4.58516690e-03 2.35932312e+01 + 4.59414039e-03 2.31138723e+01 + 4.60313144e-03 2.26436283e+01 + 4.61214009e-03 2.21823402e+01 + 4.62116636e-03 2.17298515e+01 + 4.63021031e-03 2.12860079e+01 + 4.63927195e-03 2.08506579e+01 + 4.64835133e-03 2.04236520e+01 + 4.65744847e-03 2.00048433e+01 + 4.66656343e-03 1.95940869e+01 + 4.67569621e-03 1.91912405e+01 + 4.68484688e-03 1.87961639e+01 + 4.69401545e-03 1.84087190e+01 + 4.70320196e-03 1.80287702e+01 + 4.71240645e-03 1.76561837e+01 + 4.72162896e-03 1.72908281e+01 + 4.73086952e-03 1.69325739e+01 + 4.74012816e-03 1.65812939e+01 + 4.74940492e-03 1.62368627e+01 + 4.75869983e-03 1.58991570e+01 + 4.76801294e-03 1.55680557e+01 + 4.77734427e-03 1.52434393e+01 + 4.78669387e-03 1.49251905e+01 + 4.79606176e-03 1.46131938e+01 + 4.80544799e-03 1.43073356e+01 + 4.81485258e-03 1.40075042e+01 + 4.82427558e-03 1.37135896e+01 + 4.83371702e-03 1.34254838e+01 + 4.84317694e-03 1.31430804e+01 + 4.85265538e-03 1.28662749e+01 + 4.86215236e-03 1.25949643e+01 + 4.87166793e-03 1.23290477e+01 + 4.88120212e-03 1.20684254e+01 + 4.89075498e-03 1.18129998e+01 + 4.90032652e-03 1.15626746e+01 + 4.90991680e-03 1.13173553e+01 + 4.91952585e-03 1.10769489e+01 + 4.92915371e-03 1.08413640e+01 + 4.93880040e-03 1.06105108e+01 + 4.94846598e-03 1.03843008e+01 + 4.95815047e-03 1.01626472e+01 + 4.96785391e-03 9.94546472e+00 + 4.97757635e-03 9.73266932e+00 + 4.98731781e-03 9.52417855e+00 + 4.99707834e-03 9.31991130e+00 + 5.00685797e-03 9.11978788e+00 + 5.01665674e-03 8.92372996e+00 + 5.02647468e-03 8.73166055e+00 + 5.03631184e-03 8.54350399e+00 + 5.04616826e-03 8.35918594e+00 + 5.05604396e-03 8.17863333e+00 + 5.06593899e-03 8.00177437e+00 + 5.07585338e-03 7.82853851e+00 + 5.08578718e-03 7.65885644e+00 + 5.09574042e-03 7.49266005e+00 + 5.10571314e-03 7.32988243e+00 + 5.11570537e-03 7.17045785e+00 + 5.12571716e-03 7.01432172e+00 + 5.13574855e-03 6.86141059e+00 + 5.14579956e-03 6.71166215e+00 + 5.15587025e-03 6.56501517e+00 + 5.16596065e-03 6.42140953e+00 + 5.17607079e-03 6.28078614e+00 + 5.18620072e-03 6.14308701e+00 + 5.19635048e-03 6.00825514e+00 + 5.20652010e-03 5.87623459e+00 + 5.21670962e-03 5.74697040e+00 + 5.22691908e-03 5.62040859e+00 + 5.23714852e-03 5.49649616e+00 + 5.24739799e-03 5.37518109e+00 + 5.25766751e-03 5.25641226e+00 + 5.26795713e-03 5.14013949e+00 + 5.27826689e-03 5.02631353e+00 + 5.28859682e-03 4.91488600e+00 + 5.29894698e-03 4.80580941e+00 + 5.30931738e-03 4.69903714e+00 + 5.31970809e-03 4.59452342e+00 + 5.33011912e-03 4.49222331e+00 + 5.34055054e-03 4.39209273e+00 + 5.35100237e-03 4.29408836e+00 + 5.36147465e-03 4.19816771e+00 + 5.37196743e-03 4.10428908e+00 + 5.38248074e-03 4.01241152e+00 + 5.39301463e-03 3.92249485e+00 + 5.40356913e-03 3.83449964e+00 + 5.41414430e-03 3.74838720e+00 + 5.42474015e-03 3.66411953e+00 + 5.43535675e-03 3.58165939e+00 + 5.44599412e-03 3.50097019e+00 + 5.45665230e-03 3.42201605e+00 + 5.46733135e-03 3.34476176e+00 + 5.47803130e-03 3.26917278e+00 + 5.48875219e-03 3.19521521e+00 + 5.49949406e-03 3.12285580e+00 + 5.51025695e-03 3.05206192e+00 + 5.52104090e-03 2.98280156e+00 + 5.53184597e-03 2.91504334e+00 + 5.54267217e-03 2.84875644e+00 + 5.55351957e-03 2.78391066e+00 + 5.56438819e-03 2.72047636e+00 + 5.57527808e-03 2.65842448e+00 + 5.58618929e-03 2.59772650e+00 + 5.59712185e-03 2.53835447e+00 + 5.60807581e-03 2.48028095e+00 + 5.61905120e-03 2.42347906e+00 + 5.63004808e-03 2.36792241e+00 + 5.64106647e-03 2.31358515e+00 + 5.65210643e-03 2.26044191e+00 + 5.66316800e-03 2.20846781e+00 + 5.67425121e-03 2.15763847e+00 + 5.68535611e-03 2.10792998e+00 + 5.69648275e-03 2.05931889e+00 + 5.70763116e-03 2.01178222e+00 + 5.71880139e-03 1.96529743e+00 + 5.72999348e-03 1.91984242e+00 + 5.74120748e-03 1.87539553e+00 + 5.75244342e-03 1.83193554e+00 + 5.76370135e-03 1.78944162e+00 + 5.77498132e-03 1.74789338e+00 + 5.78628336e-03 1.70727080e+00 + 5.79760752e-03 1.66755430e+00 + 5.80895384e-03 1.62872465e+00 + 5.82032236e-03 1.59076302e+00 + 5.83171314e-03 1.55365096e+00 + 5.84312621e-03 1.51737037e+00 + 5.85456161e-03 1.48190354e+00 + 5.86601939e-03 1.44723309e+00 + 5.87749960e-03 1.41334199e+00 + 5.88900228e-03 1.38021357e+00 + 5.90052746e-03 1.34783147e+00 + 5.91207520e-03 1.31617968e+00 + 5.92364555e-03 1.28524252e+00 + 5.93523853e-03 1.25500459e+00 + 5.94685421e-03 1.22545084e+00 + 5.95849261e-03 1.19656651e+00 + 5.97015380e-03 1.16833714e+00 + 5.98183780e-03 1.14074856e+00 + 5.99354468e-03 1.11378690e+00 + 6.00527446e-03 1.08743857e+00 + 6.01702720e-03 1.06169024e+00 + 6.02880294e-03 1.03652887e+00 + 6.04060172e-03 1.01194170e+00 + 6.05242360e-03 9.87916202e-01 + 6.06426862e-03 9.64440127e-01 + 6.07613681e-03 9.41501469e-01 + 6.08802823e-03 9.19088474e-01 + 6.09994293e-03 8.97189628e-01 + 6.11188094e-03 8.75793658e-01 + 6.12384231e-03 8.54889522e-01 + 6.13582710e-03 8.34466410e-01 + 6.14783534e-03 8.14513733e-01 + 6.15986708e-03 7.95021126e-01 + 6.17192237e-03 7.75978438e-01 + 6.18400125e-03 7.57375731e-01 + 6.19610377e-03 7.39203274e-01 + 6.20822997e-03 7.21451541e-01 + 6.22037991e-03 7.04111203e-01 + 6.23255363e-03 6.87173131e-01 + 6.24475117e-03 6.70628386e-01 + 6.25697258e-03 6.54468215e-01 + 6.26921791e-03 6.38684054e-01 + 6.28148721e-03 6.23267516e-01 + 6.29378051e-03 6.08210394e-01 + 6.30609788e-03 5.93504654e-01 + 6.31843935e-03 5.79142433e-01 + 6.33080497e-03 5.65116033e-01 + 6.34319480e-03 5.51417922e-01 + 6.35560887e-03 5.38040728e-01 + 6.36804724e-03 5.24977236e-01 + 6.38050995e-03 5.12220385e-01 + 6.39299705e-03 4.99763264e-01 + 6.40550859e-03 4.87599113e-01 + 6.41804462e-03 4.75721314e-01 + 6.43060518e-03 4.64123393e-01 + 6.44319032e-03 4.52799015e-01 + 6.45580009e-03 4.41741980e-01 + 6.46843454e-03 4.30946224e-01 + 6.48109371e-03 4.20405811e-01 + 6.49377767e-03 4.10114938e-01 + 6.50648644e-03 4.00067922e-01 + 6.51922009e-03 3.90259208e-01 + 6.53197865e-03 3.80683359e-01 + 6.54476219e-03 3.71335057e-01 + 6.55757074e-03 3.62209100e-01 + 6.57040436e-03 3.53300399e-01 + 6.58326310e-03 3.44603976e-01 + 6.59614701e-03 3.36114962e-01 + 6.60905612e-03 3.27828595e-01 + 6.62199051e-03 3.19740216e-01 + 6.63495020e-03 3.11845271e-01 + 6.64793526e-03 3.04139302e-01 + 6.66094573e-03 2.96617953e-01 + 6.67398166e-03 2.89276961e-01 + 6.68704311e-03 2.82112159e-01 + 6.70013012e-03 2.75119471e-01 + 6.71324274e-03 2.68294912e-01 + 6.72638102e-03 2.61634583e-01 + 6.73954502e-03 2.55134675e-01 + 6.75273477e-03 2.48791460e-01 + 6.76595034e-03 2.42601296e-01 + 6.77919178e-03 2.36560619e-01 + 6.79245913e-03 2.30665947e-01 + 6.80575244e-03 2.24913873e-01 + 6.81907177e-03 2.19301069e-01 + 6.83241717e-03 2.13824279e-01 + 6.84578869e-03 2.08480321e-01 + 6.85918637e-03 2.03266085e-01 + 6.87261027e-03 1.98178530e-01 + 6.88606045e-03 1.93214682e-01 + 6.89953695e-03 1.88371636e-01 + 6.91303982e-03 1.83646551e-01 + 6.92656912e-03 1.79036652e-01 + 6.94012490e-03 1.74539224e-01 + 6.95370721e-03 1.70151615e-01 + 6.96731609e-03 1.65871232e-01 + 6.98095162e-03 1.61695543e-01 + 6.99461382e-03 1.57622071e-01 + 7.00830277e-03 1.53648396e-01 + 7.02201850e-03 1.49772153e-01 + 7.03576108e-03 1.45991031e-01 + 7.04953055e-03 1.42302771e-01 + 7.06332698e-03 1.38705167e-01 + 7.07715040e-03 1.35196062e-01 + 7.09100087e-03 1.31773349e-01 + 7.10487845e-03 1.28434968e-01 + 7.11878319e-03 1.25178909e-01 + 7.13271515e-03 1.22003205e-01 + 7.14667437e-03 1.18905935e-01 + 7.16066091e-03 1.15885224e-01 + 7.17467482e-03 1.12939237e-01 + 7.18871615e-03 1.10066185e-01 + 7.20278497e-03 1.07264318e-01 + 7.21688132e-03 1.04531926e-01 + 7.23100526e-03 1.01867339e-01 + 7.24515684e-03 9.92689264e-02 + 7.25933611e-03 9.67350951e-02 + 7.27354314e-03 9.42642887e-02 + 7.28777797e-03 9.18549867e-02 + 7.30204066e-03 8.95057044e-02 + 7.31633126e-03 8.72149914e-02 + 7.33064983e-03 8.49814312e-02 + 7.34499642e-03 8.28036402e-02 + 7.35937109e-03 8.06802672e-02 + 7.37377389e-03 7.86099926e-02 + 7.38820487e-03 7.65915275e-02 + 7.40266410e-03 7.46236133e-02 + 7.41715163e-03 7.27050209e-02 + 7.43166751e-03 7.08345500e-02 + 7.44621180e-03 6.90110286e-02 + 7.46078456e-03 6.72333120e-02 + 7.47538583e-03 6.55002828e-02 + 7.49001568e-03 6.38108497e-02 + 7.50467416e-03 6.21639471e-02 + 7.51936133e-03 6.05585346e-02 + 7.53407724e-03 5.89935965e-02 + 7.54882195e-03 5.74681410e-02 + 7.56359552e-03 5.59811998e-02 + 7.57839801e-03 5.45318277e-02 + 7.59322946e-03 5.31191017e-02 + 7.60808994e-03 5.17421208e-02 + 7.62297950e-03 5.04000055e-02 + 7.63789820e-03 4.90918972e-02 + 7.65284609e-03 4.78169576e-02 + 7.66782325e-03 4.65743687e-02 + 7.68282971e-03 4.53633317e-02 + 7.69786554e-03 4.41830670e-02 + 7.71293080e-03 4.30328137e-02 + 7.72802554e-03 4.19118291e-02 + 7.74314982e-03 4.08193882e-02 + 7.75830370e-03 3.97547836e-02 + 7.77348724e-03 3.87173245e-02 + 7.78870050e-03 3.77063371e-02 + 7.80394353e-03 3.67211636e-02 + 7.81921639e-03 3.57611621e-02 + 7.83451914e-03 3.48257060e-02 + 7.84985183e-03 3.39141841e-02 + 7.86521454e-03 3.30259997e-02 + 7.88060731e-03 3.21605707e-02 + 7.89603021e-03 3.13173289e-02 + 7.91148329e-03 3.04957200e-02 + 7.92696661e-03 2.96952030e-02 + 7.94248023e-03 2.89152503e-02 + 7.95802422e-03 2.81553467e-02 + 7.97359863e-03 2.74149898e-02 + 7.98920351e-03 2.66936894e-02 + 8.00483894e-03 2.59909670e-02 + 8.02050496e-03 2.53063561e-02 + 8.03620165e-03 2.46394012e-02 + 8.05192905e-03 2.39896584e-02 + 8.06768724e-03 2.33566941e-02 + 8.08347626e-03 2.27400856e-02 + 8.09929619e-03 2.21394206e-02 + 8.11514707e-03 2.15542967e-02 + 8.13102898e-03 2.09843216e-02 + 8.14694197e-03 2.04291123e-02 + 8.16288610e-03 1.98882954e-02 + 8.17886144e-03 1.93615068e-02 + 8.19486804e-03 1.88483911e-02 + 8.21090596e-03 1.83486019e-02 + 8.22697528e-03 1.78618010e-02 + 8.24307604e-03 1.73876589e-02 + 8.25920831e-03 1.69258540e-02 + 8.27537215e-03 1.64760728e-02 + 8.29156763e-03 1.60380094e-02 + 8.30779481e-03 1.56113655e-02 + 8.32405374e-03 1.51958502e-02 + 8.34034449e-03 1.47911799e-02 + 8.35666712e-03 1.43970780e-02 + 8.37302170e-03 1.40132747e-02 + 8.38940829e-03 1.36395069e-02 + 8.40582694e-03 1.32755180e-02 + 8.42227773e-03 1.29210580e-02 + 8.43876071e-03 1.25758830e-02 + 8.45527595e-03 1.22397550e-02 + 8.47182352e-03 1.19124422e-02 + 8.48840346e-03 1.15937186e-02 + 8.50501586e-03 1.12833635e-02 + 8.52166077e-03 1.09811622e-02 + 8.53833825e-03 1.06869049e-02 + 8.55504837e-03 1.04003874e-02 + 8.57179119e-03 1.01214106e-02 + 8.58856678e-03 9.84978006e-03 + 8.60537521e-03 9.58530663e-03 + 8.62221652e-03 9.32780567e-03 + 8.63909080e-03 9.07709727e-03 + 8.65599810e-03 8.83300603e-03 + 8.67293849e-03 8.59536094e-03 + 8.68991203e-03 8.36399535e-03 + 8.70691880e-03 8.13874677e-03 + 8.72395884e-03 7.91945682e-03 + 8.74103223e-03 7.70597114e-03 + 8.75813904e-03 7.49813926e-03 + 8.77527933e-03 7.29581451e-03 + 8.79245316e-03 7.09885394e-03 + 8.80966060e-03 6.90711822e-03 + 8.82690172e-03 6.72047155e-03 + 8.84417658e-03 6.53878158e-03 + 8.86148525e-03 6.36191932e-03 + 8.87882779e-03 6.18975905e-03 + 8.89620427e-03 6.02217826e-03 + 8.91361476e-03 5.85905755e-03 + 8.93105933e-03 5.70028055e-03 + 8.94853803e-03 5.54573388e-03 + 8.96605094e-03 5.39530703e-03 + 8.98359812e-03 5.24889233e-03 + 9.00117965e-03 5.10638483e-03 + 9.01879558e-03 4.96768228e-03 + 9.03644599e-03 4.83268507e-03 + 9.05413095e-03 4.70129608e-03 + 9.07185051e-03 4.57342074e-03 + 9.08960475e-03 4.44896687e-03 + 9.10739374e-03 4.32784464e-03 + 9.12521754e-03 4.20996657e-03 + 9.14307623e-03 4.09524739e-03 + 9.16096986e-03 3.98360404e-03 + 9.17889852e-03 3.87495558e-03 + 9.19686226e-03 3.76922317e-03 + 9.21486116e-03 3.66632999e-03 + 9.23289528e-03 3.56620120e-03 + 9.25096470e-03 3.46876390e-03 + 9.26906948e-03 3.37394707e-03 + 9.28720969e-03 3.28168150e-03 + 9.30538541e-03 3.19189980e-03 + 9.32359669e-03 3.10453631e-03 + 9.34184362e-03 3.01952706e-03 + 9.36012626e-03 2.93680976e-03 + 9.37844467e-03 2.85632370e-03 + 9.39679894e-03 2.77800977e-03 + 9.41518913e-03 2.70181040e-03 + 9.43361531e-03 2.62766948e-03 + 9.45207755e-03 2.55553239e-03 + 9.47057592e-03 2.48534592e-03 + 9.48911050e-03 2.41705823e-03 + 9.50768135e-03 2.35061886e-03 + 9.52628854e-03 2.28597864e-03 + 9.54493215e-03 2.22308968e-03 + 9.56361224e-03 2.16190536e-03 + 9.58232890e-03 2.10238025e-03 + 9.60108218e-03 2.04447013e-03 + 9.61987216e-03 1.98813192e-03 + 9.63869892e-03 1.93332367e-03 + 9.65756253e-03 1.88000453e-03 + 9.67646305e-03 1.82813472e-03 + 9.69540056e-03 1.77767550e-03 + 9.71437513e-03 1.72858914e-03 + 9.73338684e-03 1.68083892e-03 + 9.75243575e-03 1.63438905e-03 + 9.77152195e-03 1.58920471e-03 + 9.79064549e-03 1.54525198e-03 + 9.80980647e-03 1.50249783e-03 + 9.82900494e-03 1.46091011e-03 + 9.84824099e-03 1.42045751e-03 + 9.86751468e-03 1.38110955e-03 + 9.88682609e-03 1.34283654e-03 + 9.90617529e-03 1.30560958e-03 + 9.92556237e-03 1.26940054e-03 + 9.94498738e-03 1.23418202e-03 + 9.96445041e-03 1.19992735e-03 + 9.98395154e-03 1.16661058e-03 + 1.00034908e-02 1.13420641e-03 + 1.00230683e-02 1.10269024e-03 + 1.00426842e-02 1.07203812e-03 + 1.00623384e-02 1.04222672e-03 + 1.00820311e-02 1.01323333e-03 + 1.01017624e-02 9.85035849e-04 + 1.01215322e-02 9.57612767e-04 + 1.01413407e-02 9.30943136e-04 + 1.01611881e-02 9.05006567e-04 + 1.01810742e-02 8.79783216e-04 + 1.02009993e-02 8.55253763e-04 + 1.02209633e-02 8.31399404e-04 + 1.02409665e-02 8.08201836e-04 + 1.02610088e-02 7.85643243e-04 + 1.02810903e-02 7.63706284e-04 + 1.03012111e-02 7.42374081e-04 + 1.03213713e-02 7.21630206e-04 + 1.03415709e-02 7.01458669e-04 + 1.03618101e-02 6.81843910e-04 + 1.03820889e-02 6.62770781e-04 + 1.04024073e-02 6.44224542e-04 + 1.04227656e-02 6.26190847e-04 + 1.04431636e-02 6.08655733e-04 + 1.04636016e-02 5.91605612e-04 + 1.04840796e-02 5.75027261e-04 + 1.05045977e-02 5.58907808e-04 + 1.05251559e-02 5.43234732e-04 + 1.05457544e-02 5.27995843e-04 + 1.05663932e-02 5.13179281e-04 + 1.05870723e-02 4.98773505e-04 + 1.06077920e-02 4.84767283e-04 + 1.06285521e-02 4.71149685e-04 + 1.06493530e-02 4.57910078e-04 + 1.06701945e-02 4.45038112e-04 + 1.06910768e-02 4.32523718e-04 + 1.07120000e-02 4.20357097e-04 + 1.07329641e-02 4.08528714e-04 + 1.07539693e-02 3.97029294e-04 + 1.07750155e-02 3.85849811e-04 + 1.07961030e-02 3.74981480e-04 + 1.08172317e-02 3.64415758e-04 + 1.08384018e-02 3.54144331e-04 + 1.08596133e-02 3.44159109e-04 + 1.08808663e-02 3.34452222e-04 + 1.09021609e-02 3.25016013e-04 + 1.09234972e-02 3.15843032e-04 + 1.09448752e-02 3.06926032e-04 + 1.09662951e-02 2.98257962e-04 + 1.09877569e-02 2.89831962e-04 + 1.10092607e-02 2.81641359e-04 + 1.10308066e-02 2.73679659e-04 + 1.10523947e-02 2.65940548e-04 + 1.10740250e-02 2.58417880e-04 + 1.10956976e-02 2.51105680e-04 + 1.11174127e-02 2.43998132e-04 + 1.11391702e-02 2.37089581e-04 + 1.11609703e-02 2.30374524e-04 + 1.11828131e-02 2.23847610e-04 + 1.12046987e-02 2.17503631e-04 + 1.12266271e-02 2.11337525e-04 + 1.12485983e-02 2.05344364e-04 + 1.12706126e-02 1.99519358e-04 + 1.12926700e-02 1.93857846e-04 + 1.13147705e-02 1.88355294e-04 + 1.13369143e-02 1.83007293e-04 + 1.13591015e-02 1.77809555e-04 + 1.13813320e-02 1.72757908e-04 + 1.14036061e-02 1.67848295e-04 + 1.14259237e-02 1.63076769e-04 + 1.14482851e-02 1.58439494e-04 + 1.14706901e-02 1.53932736e-04 + 1.14931391e-02 1.49552865e-04 + 1.15156319e-02 1.45296350e-04 + 1.15381688e-02 1.41159758e-04 + 1.15607498e-02 1.37139748e-04 + 1.15833750e-02 1.33233074e-04 + 1.16060445e-02 1.29436576e-04 + 1.16287583e-02 1.25747184e-04 + 1.16515166e-02 1.22161909e-04 + 1.16743195e-02 1.18677848e-04 + 1.16971669e-02 1.15292174e-04 + 1.17200591e-02 1.12002142e-04 + 1.17429960e-02 1.08805079e-04 + 1.17659779e-02 1.05698388e-04 + 1.17890047e-02 1.02679543e-04 + 1.18120766e-02 9.97460868e-05 + 1.18351937e-02 9.68956318e-05 + 1.18583560e-02 9.41258550e-05 + 1.18815636e-02 9.14344979e-05 + 1.19048167e-02 8.88193646e-05 + 1.19281152e-02 8.62783196e-05 + 1.19514594e-02 8.38092868e-05 + 1.19748492e-02 8.14102474e-05 + 1.19982848e-02 7.90792385e-05 + 1.20217663e-02 7.68143517e-05 + 1.20452937e-02 7.46137311e-05 + 1.20688672e-02 7.24755727e-05 + 1.20924868e-02 7.03981224e-05 + 1.21161526e-02 6.83796745e-05 + 1.21398648e-02 6.64185709e-05 + 1.21636234e-02 6.45131995e-05 + 1.21874284e-02 6.26619929e-05 + 1.22112801e-02 6.08634273e-05 + 1.22351784e-02 5.91160214e-05 + 1.22591235e-02 5.74183347e-05 + 1.22831154e-02 5.57689672e-05 + 1.23071543e-02 5.41665577e-05 + 1.23312403e-02 5.26097827e-05 + 1.23553734e-02 5.10973559e-05 + 1.23795537e-02 4.96280266e-05 + 1.24037814e-02 4.82005791e-05 + 1.24280564e-02 4.68138315e-05 + 1.24523790e-02 4.54666349e-05 + 1.24767492e-02 4.41578725e-05 + 1.25011670e-02 4.28864586e-05 + 1.25256327e-02 4.16513380e-05 + 1.25501462e-02 4.04514847e-05 + 1.25747077e-02 3.92859015e-05 + 1.25993173e-02 3.81536192e-05 + 1.26239750e-02 3.70536956e-05 + 1.26486810e-02 3.59852148e-05 + 1.26734354e-02 3.49472867e-05 + 1.26982382e-02 3.39390459e-05 + 1.27230895e-02 3.29596515e-05 + 1.27479895e-02 3.20082859e-05 + 1.27729382e-02 3.10841546e-05 + 1.27979357e-02 3.01864853e-05 + 1.28229822e-02 2.93145274e-05 + 1.28480776e-02 2.84675514e-05 + 1.28732222e-02 2.76448481e-05 + 1.28984160e-02 2.68457285e-05 + 1.29236591e-02 2.60695226e-05 + 1.29489516e-02 2.53155796e-05 + 1.29742936e-02 2.45832667e-05 + 1.29996852e-02 2.38719691e-05 + 1.30251265e-02 2.31810891e-05 + 1.30506176e-02 2.25100459e-05 + 1.30761585e-02 2.18582753e-05 + 1.31017495e-02 2.12252285e-05 + 1.31273905e-02 2.06103725e-05 + 1.31530817e-02 2.00131893e-05 + 1.31788232e-02 1.94331754e-05 + 1.32046151e-02 1.88698416e-05 + 1.32304574e-02 1.83227123e-05 + 1.32563504e-02 1.77913255e-05 + 1.32822940e-02 1.72752323e-05 + 1.33082883e-02 1.67739963e-05 + 1.33343336e-02 1.62871934e-05 + 1.33604298e-02 1.58144118e-05 + 1.33865771e-02 1.53552510e-05 + 1.34127755e-02 1.49093219e-05 + 1.34390253e-02 1.44762465e-05 + 1.34653264e-02 1.40556574e-05 + 1.34916790e-02 1.36471978e-05 + 1.35180831e-02 1.32505207e-05 + 1.35445389e-02 1.28652890e-05 + 1.35710465e-02 1.24911754e-05 + 1.35976060e-02 1.21278617e-05 + 1.36242175e-02 1.17750385e-05 + 1.36508810e-02 1.14324056e-05 + 1.36775968e-02 1.10996711e-05 + 1.37043648e-02 1.07765512e-05 + 1.37311852e-02 1.04627706e-05 + 1.37580580e-02 1.01580613e-05 + 1.37849835e-02 9.86216337e-06 + 1.38119617e-02 9.57482397e-06 + 1.38389927e-02 9.29579757e-06 + 1.38660765e-02 9.02484559e-06 + 1.38932134e-02 8.76173623e-06 + 1.39204034e-02 8.50624430e-06 + 1.39476466e-02 8.25815100e-06 + 1.39749431e-02 8.01724376e-06 + 1.40022930e-02 7.78331608e-06 + 1.40296965e-02 7.55616732e-06 + 1.40571536e-02 7.33560256e-06 + 1.40846644e-02 7.12143245e-06 + 1.41122291e-02 6.91347303e-06 + 1.41398477e-02 6.71154557e-06 + 1.41675203e-02 6.51547645e-06 + 1.41952472e-02 6.32509701e-06 + 1.42230283e-02 6.14024340e-06 + 1.42508637e-02 5.96075644e-06 + 1.42787536e-02 5.78648150e-06 + 1.43066982e-02 5.61726837e-06 + 1.43346974e-02 5.45297112e-06 + 1.43627514e-02 5.29344802e-06 + 1.43908603e-02 5.13856136e-06 + 1.44190242e-02 4.98817738e-06 + 1.44472432e-02 4.84216615e-06 + 1.44755175e-02 4.70040145e-06 + 1.45038471e-02 4.56276068e-06 + 1.45322321e-02 4.42912476e-06 + 1.45606727e-02 4.29937799e-06 + 1.45891689e-02 4.17340801e-06 + 1.46177209e-02 4.05110567e-06 + 1.46463288e-02 3.93236495e-06 + 1.46749927e-02 3.81708287e-06 + 1.47037127e-02 3.70515941e-06 + 1.47324889e-02 3.59649741e-06 + 1.47613214e-02 3.49100250e-06 + 1.47902103e-02 3.38858301e-06 + 1.48191558e-02 3.28914992e-06 + 1.48481579e-02 3.19261676e-06 + 1.48772168e-02 3.09889954e-06 + 1.49063325e-02 3.00791667e-06 + 1.49355053e-02 2.91958894e-06 + 1.49647351e-02 2.83383939e-06 + 1.49940221e-02 2.75059327e-06 + 1.50233665e-02 2.66977801e-06 + 1.50527682e-02 2.59132309e-06 + 1.50822275e-02 2.51516004e-06 + 1.51117445e-02 2.44122236e-06 + 1.51413192e-02 2.36944547e-06 + 1.51709519e-02 2.29976664e-06 + 1.52006425e-02 2.23212495e-06 + 1.52303912e-02 2.16646123e-06 + 1.52601981e-02 2.10271802e-06 + 1.52900634e-02 2.04083953e-06 + 1.53199871e-02 1.98077156e-06 + 1.53499694e-02 1.92246148e-06 + 1.53800103e-02 1.86585818e-06 + 1.54101101e-02 1.81091202e-06 + 1.54402687e-02 1.75757480e-06 + 1.54704864e-02 1.70579972e-06 + 1.55007632e-02 1.65554130e-06 + 1.55310993e-02 1.60675540e-06 + 1.55614947e-02 1.55939916e-06 + 1.55919497e-02 1.51343094e-06 + 1.56224642e-02 1.46881032e-06 + 1.56530384e-02 1.42549803e-06 + 1.56836725e-02 1.38345595e-06 + 1.57143666e-02 1.34264707e-06 + 1.57451207e-02 1.30303543e-06 + 1.57759350e-02 1.26458612e-06 + 1.58068096e-02 1.22726526e-06 + 1.58377446e-02 1.19103991e-06 + 1.58687402e-02 1.15587813e-06 + 1.58997964e-02 1.12174887e-06 + 1.59309134e-02 1.08862199e-06 + 1.59620913e-02 1.05646824e-06 + 1.59933302e-02 1.02525920e-06 + 1.60246303e-02 9.94967271e-07 + 1.60559916e-02 9.65565672e-07 + 1.60874143e-02 9.37028387e-07 + 1.61188985e-02 9.09330157e-07 + 1.61504443e-02 8.82446458e-07 + 1.61820518e-02 8.56353476e-07 + 1.62137212e-02 8.31028090e-07 + 1.62454526e-02 8.06447850e-07 + 1.62772461e-02 7.82590958e-07 + 1.63091018e-02 7.59436251e-07 + 1.63410198e-02 7.36963178e-07 + 1.63730003e-02 7.15151790e-07 + 1.64050434e-02 6.93982713e-07 + 1.64371492e-02 6.73437141e-07 + 1.64693179e-02 6.53496813e-07 + 1.65015495e-02 6.34143998e-07 + 1.65338442e-02 6.15361485e-07 + 1.65662020e-02 5.97132560e-07 + 1.65986233e-02 5.79440999e-07 + 1.66311079e-02 5.62271047e-07 + 1.66636561e-02 5.45607411e-07 + 1.66962681e-02 5.29435243e-07 + 1.67289438e-02 5.13740126e-07 + 1.67616835e-02 4.98508065e-07 + 1.67944873e-02 4.83725473e-07 + 1.68273553e-02 4.69379158e-07 + 1.68602876e-02 4.55456313e-07 + 1.68932844e-02 4.41944507e-07 + 1.69263457e-02 4.28831668e-07 + 1.69594717e-02 4.16106080e-07 + 1.69926626e-02 4.03756365e-07 + 1.70259184e-02 3.91771482e-07 + 1.70592393e-02 3.80140708e-07 + 1.70926254e-02 3.68853636e-07 + 1.71260769e-02 3.57900162e-07 + 1.71595938e-02 3.47270477e-07 + 1.71931763e-02 3.36955060e-07 + 1.72268246e-02 3.26944668e-07 + 1.72605387e-02 3.17230326e-07 + 1.72943187e-02 3.07803325e-07 + 1.73281649e-02 2.98655208e-07 + 1.73620773e-02 2.89777767e-07 + 1.73960561e-02 2.81163033e-07 + 1.74301014e-02 2.72803272e-07 + 1.74642133e-02 2.64690974e-07 + 1.74983920e-02 2.56818851e-07 + 1.75326376e-02 2.49179828e-07 + 1.75669502e-02 2.41767037e-07 + 1.76013299e-02 2.34573810e-07 + 1.76357769e-02 2.27593677e-07 + 1.76702914e-02 2.20820355e-07 + 1.77048734e-02 2.14247746e-07 + 1.77395230e-02 2.07869933e-07 + 1.77742405e-02 2.01681170e-07 + 1.78090259e-02 1.95675879e-07 + 1.78438794e-02 1.89848648e-07 + 1.78788012e-02 1.84194222e-07 + 1.79137912e-02 1.78707502e-07 + 1.79488497e-02 1.73383537e-07 + 1.79839769e-02 1.68217522e-07 + 1.80191728e-02 1.63204792e-07 + 1.80544376e-02 1.58340822e-07 + 1.80897713e-02 1.53621216e-07 + 1.81251743e-02 1.49041711e-07 + 1.81606465e-02 1.44598166e-07 + 1.81961882e-02 1.40286563e-07 + 1.82317994e-02 1.36103004e-07 + 1.82674803e-02 1.32043702e-07 + 1.83032310e-02 1.28104984e-07 + 1.83390517e-02 1.24283284e-07 + 1.83749425e-02 1.20575141e-07 + 1.84109035e-02 1.16977197e-07 + 1.84469349e-02 1.13486191e-07 + 1.84830369e-02 1.10098959e-07 + 1.85192095e-02 1.06812430e-07 + 1.85554528e-02 1.03623623e-07 + 1.85917672e-02 1.00529645e-07 + 1.86281525e-02 9.75276893e-08 + 1.86646091e-02 9.46150303e-08 + 1.87011371e-02 9.17890234e-08 + 1.87377365e-02 8.90471020e-08 + 1.87744075e-02 8.63867750e-08 + 1.88111504e-02 8.38056248e-08 + 1.88479651e-02 8.13013050e-08 + 1.88848519e-02 7.88715386e-08 + 1.89218108e-02 7.65141154e-08 + 1.89588421e-02 7.42268909e-08 + 1.89959459e-02 7.20077834e-08 + 1.90331223e-02 6.98547728e-08 + 1.90703714e-02 6.77658987e-08 + 1.91076935e-02 6.57392586e-08 + 1.91450886e-02 6.37730059e-08 + 1.91825568e-02 6.18653489e-08 + 1.92200984e-02 6.00145484e-08 + 1.92577135e-02 5.82189170e-08 + 1.92954022e-02 5.64768169e-08 + 1.93331646e-02 5.47866587e-08 + 1.93710010e-02 5.31469001e-08 + 1.94089114e-02 5.15560441e-08 + 1.94468959e-02 5.00126384e-08 + 1.94849549e-02 4.85152733e-08 + 1.95230883e-02 4.70625808e-08 + 1.95612963e-02 4.56532335e-08 + 1.95995791e-02 4.42859433e-08 + 1.96379369e-02 4.29594600e-08 + 1.96763697e-02 4.16725706e-08 + 1.97148777e-02 4.04240978e-08 + 1.97534611e-02 3.92128994e-08 + 1.97921200e-02 3.80378668e-08 + 1.98308545e-02 3.68979242e-08 + 1.98696649e-02 3.57920279e-08 + 1.99085512e-02 3.47191649e-08 + 1.99475136e-02 3.36783524e-08 + 1.99865523e-02 3.26686363e-08 + 2.00256674e-02 3.16890913e-08 + 2.00648590e-02 3.07388193e-08 + 2.01041273e-02 2.98169486e-08 + 2.01434725e-02 2.89226337e-08 + 2.01828947e-02 2.80550540e-08 + 2.02223940e-02 2.72134131e-08 + 2.02619706e-02 2.63969386e-08 + 2.03016247e-02 2.56048806e-08 + 2.03413564e-02 2.48365116e-08 + 2.03811658e-02 2.40911259e-08 + 2.04210532e-02 2.33680383e-08 + 2.04610186e-02 2.26665843e-08 + 2.05010623e-02 2.19861191e-08 + 2.05411843e-02 2.13260168e-08 + 2.05813848e-02 2.06856702e-08 + 2.06216640e-02 2.00644904e-08 + 2.06620220e-02 1.94619055e-08 + 2.07024590e-02 1.88773609e-08 + 2.07429752e-02 1.83103186e-08 + 2.07835706e-02 1.77602562e-08 + 2.08242455e-02 1.72266670e-08 + 2.08650000e-02 1.67090596e-08 diff --git a/example/test_problem/ELBDM/HaloMerger/SolitonDensityProfile_Lambda0.0 b/example/test_problem/ELBDM/HaloMerger/SolitonDensityProfile_Lambda0.0 new file mode 100644 index 0000000000..349523dd50 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/SolitonDensityProfile_Lambda0.0 @@ -0,0 +1,10001 @@ +# r Dens + 1.000000000000000E-003 2.36390677531253 + 2.000000000000000E-003 2.36390656518805 + 3.000000000000000E-003 2.36390435387697 + 4.000000000000000E-003 2.36389968987204 + 5.000000000000000E-003 2.36389234772053 + 6.000000000000000E-003 2.36388219747012 + 7.000000000000000E-003 2.36386915697057 + 8.000000000000000E-003 2.36385317081308 + 9.000000000000001E-003 2.36383419978296 + 1.000000000000000E-002 2.36381221507562 + 1.100000000000000E-002 2.36378719489874 + 1.200000000000000E-002 2.36375912236474 + 1.300000000000000E-002 2.36372798412517 + 1.400000000000000E-002 2.36369376945284 + 1.500000000000000E-002 2.36365646960599 + 1.600000000000000E-002 2.36361607737598 + 1.700000000000000E-002 2.36357258675832 + 1.800000000000000E-002 2.36352599270853 + 1.900000000000000E-002 2.36347629095790 + 2.000000000000000E-002 2.36342347787217 + 2.100000000000000E-002 2.36336755034170 + 2.200000000000000E-002 2.36330850569505 + 2.300000000000000E-002 2.36324634163012 + 2.400000000000000E-002 2.36318105615885 + 2.500000000000000E-002 2.36311264756229 + 2.600000000000000E-002 2.36304111435386 + 2.700000000000000E-002 2.36296645524894 + 2.800000000000000E-002 2.36288866913971 + 2.900000000000000E-002 2.36280775507403 + 3.000000000000000E-002 2.36272371223766 + 3.100000000000000E-002 2.36263653993921 + 3.200000000000000E-002 2.36254623759732 + 3.300000000000000E-002 2.36245280472968 + 3.400000000000000E-002 2.36235624094362 + 3.500000000000000E-002 2.36225654592793 + 3.600000000000000E-002 2.36215371944577 + 3.700000000000000E-002 2.36204776132856 + 3.800000000000000E-002 2.36193867147053 + 3.900000000000000E-002 2.36182644982404 + 4.000000000000000E-002 2.36171109639537 + 4.100000000000000E-002 2.36159261124107 + 4.200000000000000E-002 2.36147099446472 + 4.300000000000000E-002 2.36134624621396 + 4.400000000000000E-002 2.36121836667798 + 4.500000000000000E-002 2.36108735608519 + 4.600000000000000E-002 2.36095321470112 + 4.700000000000000E-002 2.36081594282661 + 4.800000000000000E-002 2.36067554079611 + 4.900000000000000E-002 2.36053200897618 + 5.000000000000000E-002 2.36038534776414 + 5.100000000000000E-002 2.36023555758680 + 5.200000000000000E-002 2.36008263889936 + 5.300000000000000E-002 2.35992659218440 + 5.400000000000000E-002 2.35976741795093 + 5.500000000000000E-002 2.35960511673355 + 5.600000000000000E-002 2.35943968909166 + 5.700000000000000E-002 2.35927113560879 + 5.800000000000000E-002 2.35909945689189 + 5.900000000000000E-002 2.35892465357076 + 6.000000000000000E-002 2.35874672629751 + 6.100000000000000E-002 2.35856567574601 + 6.200000000000000E-002 2.35838150261146 + 6.300000000000000E-002 2.35819420760995 + 6.400000000000000E-002 2.35800379147802 + 6.500000000000000E-002 2.35781025497234 + 6.600000000000000E-002 2.35761359886932 + 6.700000000000000E-002 2.35741382396481 + 6.800000000000000E-002 2.35721093107380 + 6.900000000000001E-002 2.35700492103012 + 7.000000000000001E-002 2.35679579468621 + 7.100000000000001E-002 2.35658355291285 + 7.200000000000001E-002 2.35636819659894 + 7.300000000000000E-002 2.35614972665132 + 7.400000000000000E-002 2.35592814399448 + 7.500000000000000E-002 2.35570344957049 + 7.600000000000000E-002 2.35547564433873 + 7.700000000000000E-002 2.35524472927577 + 7.800000000000000E-002 2.35501070537519 + 7.900000000000000E-002 2.35477357364746 + 8.000000000000000E-002 2.35453333511977 + 8.100000000000000E-002 2.35428999083593 + 8.200000000000000E-002 2.35404354185621 + 8.300000000000000E-002 2.35379398925725 + 8.400000000000001E-002 2.35354133413193 + 8.500000000000001E-002 2.35328557758930 + 8.600000000000001E-002 2.35302672075441 + 8.700000000000001E-002 2.35276476476830 + 8.799999999999999E-002 2.35249971078784 + 8.900000000000000E-002 2.35223155998566 + 9.000000000000000E-002 2.35196031355010 + 9.100000000000000E-002 2.35168597268509 + 9.200000000000000E-002 2.35140853861010 + 9.300000000000000E-002 2.35112801256005 + 9.400000000000000E-002 2.35084439578525 + 9.500000000000000E-002 2.35055768955135 + 9.600000000000000E-002 2.35026789513923 + 9.700000000000000E-002 2.34997501384500 + 9.800000000000000E-002 2.34967904697987 + 9.900000000000000E-002 2.34937999587016 + 0.100000000000000 2.34907786185722 + 0.101000000000000 2.34877264629736 + 0.102000000000000 2.34846435056183 + 0.103000000000000 2.34815297603673 + 0.104000000000000 2.34783852412301 + 0.105000000000000 2.34752099623639 + 0.106000000000000 2.34720039380734 + 0.107000000000000 2.34687671828102 + 0.108000000000000 2.34654997111722 + 0.109000000000000 2.34622015379036 + 0.110000000000000 2.34588726778944 + 0.111000000000000 2.34555131461798 + 0.112000000000000 2.34521229579398 + 0.113000000000000 2.34487021284994 + 0.114000000000000 2.34452506733274 + 0.115000000000000 2.34417686080367 + 0.116000000000000 2.34382559483837 + 0.117000000000000 2.34347127102680 + 0.118000000000000 2.34311389097320 + 0.119000000000000 2.34275345629608 + 0.120000000000000 2.34238996862816 + 0.121000000000000 2.34202342961634 + 0.122000000000000 2.34165384092173 + 0.123000000000000 2.34128120421951 + 0.124000000000000 2.34090552119902 + 0.125000000000000 2.34052679356364 + 0.126000000000000 2.34014502303079 + 0.127000000000000 2.33976021133194 + 0.128000000000000 2.33937236021253 + 0.129000000000000 2.33898147143195 + 0.130000000000000 2.33858754676355 + 0.131000000000000 2.33819058799457 + 0.132000000000000 2.33779059692615 + 0.133000000000000 2.33738757537326 + 0.134000000000000 2.33698152516474 + 0.135000000000000 2.33657244814320 + 0.136000000000000 2.33616034616503 + 0.137000000000000 2.33574522110040 + 0.138000000000000 2.33532707483319 + 0.139000000000000 2.33490590926100 + 0.140000000000000 2.33448172629508 + 0.141000000000000 2.33405452786036 + 0.142000000000000 2.33362431589541 + 0.143000000000000 2.33319109235238 + 0.144000000000000 2.33275485919702 + 0.145000000000000 2.33231561840864 + 0.146000000000000 2.33187337198008 + 0.147000000000000 2.33142812191769 + 0.148000000000000 2.33097987024132 + 0.149000000000000 2.33052861898427 + 0.150000000000000 2.33007437019329 + 0.151000000000000 2.32961712592856 + 0.152000000000000 2.32915688826363 + 0.153000000000000 2.32869365928544 + 0.154000000000000 2.32822744109427 + 0.155000000000000 2.32775823580373 + 0.156000000000000 2.32728604554074 + 0.157000000000000 2.32681087244549 + 0.158000000000000 2.32633271867142 + 0.159000000000000 2.32585158638523 + 0.160000000000000 2.32536747776680 + 0.161000000000000 2.32488039500922 + 0.162000000000000 2.32439034031873 + 0.163000000000000 2.32389731591473 + 0.164000000000000 2.32340132402972 + 0.165000000000000 2.32290236690932 + 0.166000000000000 2.32240044681221 + 0.167000000000000 2.32189556601010 + 0.168000000000000 2.32138772678778 + 0.169000000000000 2.32087693144299 + 0.170000000000000 2.32036318228650 + 0.171000000000000 2.31984648164200 + 0.172000000000000 2.31932683184614 + 0.173000000000000 2.31880423524848 + 0.174000000000000 2.31827869421147 + 0.175000000000000 2.31775021111042 + 0.176000000000000 2.31721878833349 + 0.177000000000000 2.31668442828167 + 0.178000000000000 2.31614713336874 + 0.179000000000000 2.31560690602124 + 0.180000000000000 2.31506374867850 + 0.181000000000000 2.31451766379254 + 0.182000000000000 2.31396865382811 + 0.183000000000000 2.31341672126264 + 0.184000000000000 2.31286186858621 + 0.185000000000000 2.31230409830153 + 0.186000000000000 2.31174341292394 + 0.187000000000000 2.31117981498137 + 0.188000000000000 2.31061330701429 + 0.189000000000000 2.31004389157574 + 0.190000000000000 2.30947157123125 + 0.191000000000000 2.30889634855888 + 0.192000000000000 2.30831822614912 + 0.193000000000000 2.30773720660494 + 0.194000000000000 2.30715329254171 + 0.195000000000000 2.30656648658722 + 0.196000000000000 2.30597679138161 + 0.197000000000000 2.30538420957739 + 0.198000000000000 2.30478874383939 + 0.199000000000000 2.30419039684474 + 0.200000000000000 2.30358917128286 + 0.201000000000000 2.30298506985541 + 0.202000000000000 2.30237809527629 + 0.203000000000000 2.30176825027159 + 0.204000000000000 2.30115553757960 + 0.205000000000000 2.30053995995076 + 0.206000000000000 2.29992152014763 + 0.207000000000000 2.29930022094489 + 0.208000000000000 2.29867606512930 + 0.209000000000000 2.29804905549968 + 0.210000000000000 2.29741919486686 + 0.211000000000000 2.29678648605372 + 0.212000000000000 2.29615093189508 + 0.213000000000000 2.29551253523774 + 0.214000000000000 2.29487129894043 + 0.215000000000000 2.29422722587378 + 0.216000000000000 2.29358031892031 + 0.217000000000000 2.29293058097439 + 0.218000000000000 2.29227801494223 + 0.219000000000000 2.29162262374183 + 0.220000000000000 2.29096441030298 + 0.221000000000000 2.29030337756723 + 0.222000000000000 2.28963952848784 + 0.223000000000000 2.28897286602980 + 0.224000000000000 2.28830339316974 + 0.225000000000000 2.28763111289597 + 0.226000000000000 2.28695602820843 + 0.227000000000000 2.28627814211862 + 0.228000000000000 2.28559745764966 + 0.229000000000000 2.28491397783618 + 0.230000000000000 2.28422770572434 + 0.231000000000000 2.28353864437181 + 0.232000000000000 2.28284679684771 + 0.233000000000000 2.28215216623260 + 0.234000000000000 2.28145475561847 + 0.235000000000000 2.28075456810867 + 0.236000000000000 2.28005160681794 + 0.237000000000000 2.27934587487234 + 0.238000000000000 2.27863737540923 + 0.239000000000000 2.27792611157727 + 0.240000000000000 2.27721208653636 + 0.241000000000000 2.27649530345762 + 0.242000000000000 2.27577576552338 + 0.243000000000000 2.27505347592714 + 0.244000000000000 2.27432843787354 + 0.245000000000000 2.27360065457833 + 0.246000000000000 2.27287012926838 + 0.247000000000000 2.27213686518158 + 0.248000000000000 2.27140086556688 + 0.249000000000000 2.27066213368424 + 0.250000000000000 2.26992067280459 + 0.251000000000000 2.26917648620979 + 0.252000000000000 2.26842957719267 + 0.253000000000000 2.26767994905692 + 0.254000000000000 2.26692760511711 + 0.255000000000000 2.26617254869864 + 0.256000000000000 2.26541478313773 + 0.257000000000000 2.26465431178138 + 0.258000000000000 2.26389113798735 + 0.259000000000000 2.26312526512412 + 0.260000000000000 2.26235669657086 + 0.261000000000000 2.26158543571743 + 0.262000000000000 2.26081148596431 + 0.263000000000000 2.26003485072261 + 0.264000000000000 2.25925553341400 + 0.265000000000000 2.25847353747074 + 0.266000000000000 2.25768886633557 + 0.267000000000000 2.25690152346177 + 0.268000000000000 2.25611151231305 + 0.269000000000000 2.25531883636360 + 0.270000000000000 2.25452349909798 + 0.271000000000000 2.25372550401116 + 0.272000000000000 2.25292485460844 + 0.273000000000000 2.25212155440546 + 0.274000000000000 2.25131560692814 + 0.275000000000000 2.25050701571266 + 0.276000000000000 2.24969578430544 + 0.277000000000000 2.24888191626312 + 0.278000000000000 2.24806541515249 + 0.279000000000000 2.24724628455048 + 0.280000000000000 2.24642452804417 + 0.281000000000000 2.24560014923070 + 0.282000000000000 2.24477315171726 + 0.283000000000000 2.24394353912107 + 0.284000000000000 2.24311131506936 + 0.285000000000000 2.24227648319932 + 0.286000000000000 2.24143904715805 + 0.287000000000000 2.24059901060259 + 0.288000000000000 2.23975637719984 + 0.289000000000000 2.23891115062653 + 0.290000000000000 2.23806333456922 + 0.291000000000000 2.23721293272426 + 0.292000000000000 2.23635994879774 + 0.293000000000000 2.23550438650547 + 0.294000000000000 2.23464624957296 + 0.295000000000000 2.23378554173538 + 0.296000000000000 2.23292226673752 + 0.297000000000000 2.23205642833379 + 0.298000000000000 2.23118803028815 + 0.299000000000000 2.23031707637410 + 0.300000000000000 2.22944357037466 + 0.301000000000000 2.22856751608230 + 0.302000000000000 2.22768891729897 + 0.303000000000000 2.22680777783600 + 0.304000000000000 2.22592410151413 + 0.305000000000000 2.22503789216342 + 0.306000000000000 2.22414915362327 + 0.307000000000000 2.22325788974238 + 0.308000000000000 2.22236410437867 + 0.309000000000000 2.22146780139932 + 0.310000000000000 2.22056898468069 + 0.311000000000000 2.21966765810829 + 0.312000000000000 2.21876382557679 + 0.313000000000000 2.21785749098992 + 0.314000000000000 2.21694865826052 + 0.315000000000000 2.21603733131043 + 0.316000000000000 2.21512351407051 + 0.317000000000000 2.21420721048059 + 0.318000000000000 2.21328842448944 + 0.319000000000000 2.21236716005472 + 0.320000000000000 2.21144342114299 + 0.321000000000000 2.21051721172965 + 0.322000000000000 2.20958853579890 + 0.323000000000000 2.20865739734371 + 0.324000000000000 2.20772380036583 + 0.325000000000000 2.20678774887569 + 0.326000000000000 2.20584924689241 + 0.327000000000000 2.20490829844378 + 0.328000000000000 2.20396490756619 + 0.329000000000000 2.20301907830460 + 0.330000000000000 2.20207081471256 + 0.331000000000000 2.20112012085210 + 0.332000000000000 2.20016700079376 + 0.333000000000000 2.19921145861653 + 0.334000000000000 2.19825349840782 + 0.335000000000000 2.19729312426342 + 0.336000000000000 2.19633034028748 + 0.337000000000000 2.19536515059249 + 0.338000000000000 2.19439755929920 + 0.339000000000000 2.19342757053664 + 0.340000000000000 2.19245518844206 + 0.341000000000000 2.19148041716088 + 0.342000000000000 2.19050326084670 + 0.343000000000000 2.18952372366125 + 0.344000000000000 2.18854180977433 + 0.345000000000000 2.18755752336380 + 0.346000000000000 2.18657086861557 + 0.347000000000000 2.18558184972350 + 0.348000000000000 2.18459047088945 + 0.349000000000000 2.18359673632318 + 0.350000000000000 2.18260065024235 + 0.351000000000000 2.18160221687247 + 0.352000000000000 2.18060144044688 + 0.353000000000000 2.17959832520671 + 0.354000000000000 2.17859287540085 + 0.355000000000000 2.17758509528592 + 0.356000000000000 2.17657498912620 + 0.357000000000000 2.17556256119366 + 0.358000000000000 2.17454781576788 + 0.359000000000000 2.17353075713602 + 0.360000000000000 2.17251138959281 + 0.361000000000000 2.17148971744050 + 0.362000000000000 2.17046574498880 + 0.363000000000000 2.16943947655492 + 0.364000000000000 2.16841091646344 + 0.365000000000000 2.16738006904637 + 0.366000000000000 2.16634693864303 + 0.367000000000000 2.16531152960009 + 0.368000000000000 2.16427384627150 + 0.369000000000000 2.16323389301842 + 0.370000000000000 2.16219167420929 + 0.371000000000000 2.16114719421967 + 0.372000000000000 2.16010045743230 + 0.373000000000000 2.15905146823703 + 0.374000000000000 2.15800023103078 + 0.375000000000000 2.15694675021751 + 0.376000000000000 2.15589103020820 + 0.377000000000000 2.15483307542080 + 0.378000000000000 2.15377289028021 + 0.379000000000000 2.15271047921821 + 0.380000000000000 2.15164584667349 + 0.381000000000000 2.15057899709154 + 0.382000000000000 2.14950993492469 + 0.383000000000000 2.14843866463199 + 0.384000000000000 2.14736519067928 + 0.385000000000000 2.14628951753906 + 0.386000000000000 2.14521164969051 + 0.387000000000000 2.14413159161943 + 0.388000000000000 2.14304934781823 + 0.389000000000000 2.14196492278586 + 0.390000000000000 2.14087832102783 + 0.391000000000000 2.13978954705610 + 0.392000000000000 2.13869860538911 + 0.393000000000000 2.13760550055173 + 0.394000000000000 2.13651023707520 + 0.395000000000000 2.13541281949711 + 0.396000000000000 2.13431325236138 + 0.397000000000000 2.13321154021822 + 0.398000000000000 2.13210768762406 + 0.399000000000000 2.13100169914156 + 0.400000000000000 2.12989357933957 + 0.401000000000000 2.12878333279305 + 0.402000000000000 2.12767096408310 + 0.403000000000000 2.12655647779688 + 0.404000000000000 2.12543987852758 + 0.405000000000000 2.12432117087441 + 0.406000000000000 2.12320035944254 + 0.407000000000000 2.12207744884306 + 0.408000000000000 2.12095244369298 + 0.409000000000000 2.11982534861517 + 0.410000000000000 2.11869616823831 + 0.411000000000000 2.11756490719689 + 0.412000000000000 2.11643157013115 + 0.413000000000000 2.11529616168705 + 0.414000000000000 2.11415868651625 + 0.415000000000000 2.11301914927604 + 0.416000000000000 2.11187755462935 + 0.417000000000000 2.11073390724468 + 0.418000000000000 2.10958821179608 + 0.419000000000000 2.10844047296310 + 0.420000000000000 2.10729069543079 + 0.421000000000000 2.10613888388962 + 0.422000000000000 2.10498504303547 + 0.423000000000000 2.10382917756960 + 0.424000000000000 2.10267129219859 + 0.425000000000000 2.10151139163434 + 0.426000000000000 2.10034948059398 + 0.427000000000000 2.09918556379992 + 0.428000000000000 2.09801964597971 + 0.429000000000000 2.09685173186610 + 0.430000000000000 2.09568182619694 + 0.431000000000000 2.09450993371518 + 0.432000000000000 2.09333605916881 + 0.433000000000000 2.09216020731086 + 0.434000000000000 2.09098238289932 + 0.435000000000000 2.08980259069712 + 0.436000000000000 2.08862083547214 + 0.437000000000000 2.08743712199709 + 0.438000000000000 2.08625145504956 + 0.439000000000000 2.08506383941191 + 0.440000000000000 2.08387427987129 + 0.441000000000000 2.08268278121958 + 0.442000000000000 2.08148934825337 + 0.443000000000000 2.08029398577389 + 0.444000000000000 2.07909669858702 + 0.445000000000000 2.07789749150322 + 0.446000000000000 2.07669636933752 + 0.447000000000000 2.07549333690945 + 0.448000000000000 2.07428839904304 + 0.449000000000000 2.07308156056678 + 0.450000000000000 2.07187282631356 + 0.451000000000000 2.07066220112067 + 0.452000000000000 2.06944968982971 + 0.453000000000000 2.06823529728663 + 0.454000000000000 2.06701902834164 + 0.455000000000000 2.06580088784916 + 0.456000000000000 2.06458088066786 + 0.457000000000000 2.06335901166055 + 0.458000000000000 2.06213528569418 + 0.459000000000000 2.06090970763980 + 0.460000000000000 2.05968228237250 + 0.461000000000000 2.05845301477143 + 0.462000000000000 2.05722190971972 + 0.463000000000000 2.05598897210443 + 0.464000000000000 2.05475420681658 + 0.465000000000000 2.05351761875106 + 0.466000000000000 2.05227921280659 + 0.467000000000000 2.05103899388572 + 0.468000000000000 2.04979696689480 + 0.469000000000000 2.04855313674388 + 0.470000000000000 2.04730750834676 + 0.471000000000000 2.04606008662088 + 0.472000000000000 2.04481087648735 + 0.473000000000000 2.04355988287084 + 0.474000000000000 2.04230711069963 + 0.475000000000000 2.04105256490551 + 0.476000000000000 2.03979625042377 + 0.477000000000000 2.03853817219316 + 0.478000000000000 2.03727833515586 + 0.479000000000000 2.03601674425743 + 0.480000000000000 2.03475340444680 + 0.481000000000000 2.03348832067622 + 0.482000000000000 2.03222149790121 + 0.483000000000000 2.03095294108055 + 0.484000000000000 2.02968265517624 + 0.485000000000000 2.02841064515346 + 0.486000000000000 2.02713691598051 + 0.487000000000000 2.02586147262883 + 0.488000000000000 2.02458432007292 + 0.489000000000000 2.02330546329031 + 0.490000000000000 2.02202490726157 + 0.491000000000000 2.02074265697019 + 0.492000000000000 2.01945871740263 + 0.493000000000000 2.01817309354823 + 0.494000000000000 2.01688579039921 + 0.495000000000000 2.01559681295060 + 0.496000000000000 2.01430616620023 + 0.497000000000000 2.01301385514871 + 0.498000000000000 2.01171988479934 + 0.499000000000000 2.01042426015812 + 0.500000000000000 2.00912698623372 + 0.501000000000000 2.00782806803741 + 0.502000000000000 2.00652751058306 + 0.503000000000000 2.00522531888708 + 0.504000000000000 2.00392149796838 + 0.505000000000000 2.00261605284838 + 0.506000000000000 2.00130898855093 + 0.507000000000000 2.00000031010228 + 0.508000000000000 1.99869002253107 + 0.509000000000000 1.99737813086828 + 0.510000000000000 1.99606464014718 + 0.511000000000000 1.99474955540333 + 0.512000000000000 1.99343288167452 + 0.513000000000000 1.99211462400074 + 0.514000000000000 1.99079478742414 + 0.515000000000000 1.98947337698902 + 0.516000000000000 1.98815039774176 + 0.517000000000000 1.98682585473081 + 0.518000000000000 1.98549975300666 + 0.519000000000000 1.98417209762177 + 0.520000000000000 1.98284289363059 + 0.521000000000000 1.98151214608947 + 0.522000000000000 1.98017986005666 + 0.523000000000000 1.97884604059227 + 0.524000000000000 1.97751069275823 + 0.525000000000000 1.97617382161825 + 0.526000000000000 1.97483543223781 + 0.527000000000000 1.97349552968409 + 0.528000000000000 1.97215411902598 + 0.529000000000000 1.97081120533398 + 0.530000000000000 1.96946679368026 + 0.531000000000000 1.96812088913852 + 0.532000000000000 1.96677349678404 + 0.533000000000000 1.96542462169362 + 0.534000000000000 1.96407426894550 + 0.535000000000000 1.96272244361941 + 0.536000000000000 1.96136915079647 + 0.537000000000000 1.96001439555918 + 0.538000000000000 1.95865818299138 + 0.539000000000000 1.95730051817823 + 0.540000000000000 1.95594140620617 + 0.541000000000000 1.95458085216285 + 0.542000000000000 1.95321886113717 + 0.543000000000000 1.95185543821919 + 0.544000000000000 1.95049058850009 + 0.545000000000000 1.94912431707218 + 0.546000000000000 1.94775662902884 + 0.547000000000000 1.94638752946449 + 0.548000000000000 1.94501702347454 + 0.549000000000000 1.94364511615539 + 0.550000000000000 1.94227181260438 + 0.551000000000000 1.94089711791974 + 0.552000000000000 1.93952103720059 + 0.553000000000000 1.93814357554686 + 0.554000000000000 1.93676473805933 + 0.555000000000000 1.93538452983950 + 0.556000000000000 1.93400295598966 + 0.557000000000000 1.93262002161275 + 0.558000000000000 1.93123573181243 + 0.559000000000000 1.92985009169296 + 0.560000000000000 1.92846310635924 + 0.561000000000000 1.92707478091672 + 0.562000000000000 1.92568512047139 + 0.563000000000000 1.92429413012975 + 0.564000000000000 1.92290181499878 + 0.565000000000000 1.92150818018588 + 0.566000000000000 1.92011323079888 + 0.567000000000000 1.91871697194597 + 0.568000000000000 1.91731940873568 + 0.569000000000000 1.91592054627685 + 0.570000000000000 1.91452038967860 + 0.571000000000000 1.91311894405029 + 0.572000000000000 1.91171621450150 + 0.573000000000000 1.91031220614196 + 0.574000000000000 1.90890692408156 + 0.575000000000000 1.90750037343032 + 0.576000000000000 1.90609255929831 + 0.577000000000000 1.90468348679566 + 0.578000000000000 1.90327316103253 + 0.579000000000000 1.90186158711902 + 0.580000000000000 1.90044877016523 + 0.581000000000000 1.89903471528113 + 0.582000000000000 1.89761942757662 + 0.583000000000000 1.89620291216142 + 0.584000000000000 1.89478517414509 + 0.585000000000000 1.89336621863695 + 0.586000000000000 1.89194605074612 + 0.587000000000000 1.89052467558142 + 0.588000000000000 1.88910209825135 + 0.589000000000000 1.88767832386409 + 0.590000000000000 1.88625335752744 + 0.591000000000000 1.88482720434881 + 0.592000000000000 1.88339986943515 + 0.593000000000000 1.88197135789297 + 0.594000000000000 1.88054167482825 + 0.595000000000000 1.87911082534648 + 0.596000000000000 1.87767881455256 + 0.597000000000000 1.87624564755079 + 0.598000000000000 1.87481132944488 + 0.599000000000000 1.87337586533784 + 0.600000000000000 1.87193926033202 + 0.601000000000000 1.87050151952905 + 0.602000000000000 1.86906264802980 + 0.603000000000000 1.86762265093436 + 0.604000000000000 1.86618153334201 + 0.605000000000000 1.86473930035119 + 0.606000000000000 1.86329595705944 + 0.607000000000000 1.86185150856343 + 0.608000000000000 1.86040595995887 + 0.609000000000000 1.85895931634051 + 0.610000000000000 1.85751158280209 + 0.611000000000000 1.85606276443633 + 0.612000000000000 1.85461286633489 + 0.613000000000000 1.85316189358832 + 0.614000000000000 1.85170985128607 + 0.615000000000000 1.85025674451644 + 0.616000000000000 1.84880257836651 + 0.617000000000000 1.84734735792219 + 0.618000000000000 1.84589108826812 + 0.619000000000000 1.84443377448767 + 0.620000000000000 1.84297542166290 + 0.621000000000000 1.84151603487454 + 0.622000000000000 1.84005561920196 + 0.623000000000000 1.83859417972312 + 0.624000000000000 1.83713172151456 + 0.625000000000000 1.83566824965136 + 0.626000000000000 1.83420376920713 + 0.627000000000000 1.83273828525393 + 0.628000000000000 1.83127180286231 + 0.629000000000000 1.82980432710122 + 0.630000000000000 1.82833586303801 + 0.631000000000000 1.82686641573839 + 0.632000000000000 1.82539599026642 + 0.633000000000000 1.82392459168444 + 0.634000000000000 1.82245222505309 + 0.635000000000000 1.82097889543123 + 0.636000000000000 1.81950460787597 + 0.637000000000000 1.81802936744257 + 0.638000000000000 1.81655317918447 + 0.639000000000000 1.81507604815323 + 0.640000000000000 1.81359797939851 + 0.641000000000000 1.81211897796804 + 0.642000000000000 1.81063904890759 + 0.643000000000000 1.80915819726095 + 0.644000000000000 1.80767642806987 + 0.645000000000000 1.80619374637408 + 0.646000000000000 1.80471015721122 + 0.647000000000000 1.80322566561682 + 0.648000000000000 1.80174027662429 + 0.649000000000000 1.80025399526488 + 0.650000000000000 1.79876682656764 + 0.651000000000000 1.79727877555939 + 0.652000000000000 1.79578984726474 + 0.653000000000000 1.79430004670599 + 0.654000000000000 1.79280937890315 + 0.655000000000000 1.79131784887389 + 0.656000000000000 1.78982546163352 + 0.657000000000000 1.78833222219498 + 0.658000000000000 1.78683813556877 + 0.659000000000000 1.78534320676295 + 0.660000000000000 1.78384744078311 + 0.661000000000000 1.78235084263234 + 0.662000000000000 1.78085341731120 + 0.663000000000000 1.77935516981769 + 0.664000000000000 1.77785610514723 + 0.665000000000000 1.77635622829263 + 0.666000000000000 1.77485554424405 + 0.667000000000000 1.77335405798899 + 0.668000000000000 1.77185177451226 + 0.669000000000000 1.77034869879594 + 0.670000000000000 1.76884483581935 + 0.671000000000000 1.76734019055906 + 0.672000000000000 1.76583476798881 + 0.673000000000000 1.76432857307953 + 0.674000000000000 1.76282161079927 + 0.675000000000000 1.76131388611322 + 0.676000000000000 1.75980540398363 + 0.677000000000000 1.75829616936983 + 0.678000000000000 1.75678618722817 + 0.679000000000000 1.75527546251202 + 0.680000000000000 1.75376400017173 + 0.681000000000000 1.75225180515460 + 0.682000000000000 1.75073888240485 + 0.683000000000000 1.74922523686360 + 0.684000000000000 1.74771087346886 + 0.685000000000000 1.74619579715548 + 0.686000000000000 1.74468001285513 + 0.687000000000000 1.74316352549628 + 0.688000000000000 1.74164634000415 + 0.689000000000000 1.74012846130073 + 0.690000000000000 1.73860989430471 + 0.691000000000000 1.73709064393149 + 0.692000000000000 1.73557071509310 + 0.693000000000000 1.73405011269825 + 0.694000000000000 1.73252884165224 + 0.695000000000000 1.73100690685695 + 0.696000000000000 1.72948431321086 + 0.697000000000000 1.72796106560894 + 0.698000000000000 1.72643716894271 + 0.699000000000000 1.72491262810015 + 0.700000000000000 1.72338744796572 + 0.701000000000000 1.72186163342030 + 0.702000000000000 1.72033518934118 + 0.703000000000000 1.71880812060206 + 0.704000000000000 1.71728043207297 + 0.705000000000000 1.71575212862029 + 0.706000000000000 1.71422321510670 + 0.707000000000000 1.71269369639119 + 0.708000000000000 1.71116357732897 + 0.709000000000000 1.70963286277154 + 0.710000000000000 1.70810155756655 + 0.711000000000000 1.70656966655789 + 0.712000000000000 1.70503719458558 + 0.713000000000000 1.70350414648580 + 0.714000000000000 1.70197052709081 + 0.715000000000000 1.70043634122900 + 0.716000000000000 1.69890159372481 + 0.717000000000000 1.69736628939870 + 0.718000000000000 1.69583043306718 + 0.719000000000000 1.69429402954273 + 0.720000000000000 1.69275708363381 + 0.721000000000000 1.69121960014482 + 0.722000000000000 1.68968158387608 + 0.723000000000000 1.68814303962383 + 0.724000000000000 1.68660397218015 + 0.725000000000000 1.68506438633300 + 0.726000000000000 1.68352428686614 + 0.727000000000000 1.68198367855916 + 0.728000000000000 1.68044256618742 + 0.729000000000000 1.67890095452203 + 0.730000000000000 1.67735884832985 + 0.731000000000000 1.67581625237343 + 0.732000000000000 1.67427317141103 + 0.733000000000000 1.67272961019657 + 0.734000000000000 1.67118557347960 + 0.735000000000000 1.66964106600531 + 0.736000000000000 1.66809609251446 + 0.737000000000000 1.66655065774341 + 0.738000000000000 1.66500476642405 + 0.739000000000000 1.66345842328383 + 0.740000000000000 1.66191163304567 + 0.741000000000000 1.66036440042800 + 0.742000000000000 1.65881673014470 + 0.743000000000000 1.65726862690510 + 0.744000000000000 1.65572009541394 + 0.745000000000000 1.65417114037136 + 0.746000000000000 1.65262176647286 + 0.747000000000000 1.65107197840932 + 0.748000000000000 1.64952178086692 + 0.749000000000000 1.64797117852717 + 0.750000000000000 1.64642017606687 + 0.751000000000000 1.64486877815806 + 0.752000000000000 1.64331698946804 + 0.753000000000000 1.64176481465933 + 0.754000000000000 1.64021225838966 + 0.755000000000000 1.63865932531193 + 0.756000000000000 1.63710602007420 + 0.757000000000000 1.63555234731966 + 0.758000000000000 1.63399831168664 + 0.759000000000000 1.63244391780853 + 0.760000000000000 1.63088917031383 + 0.761000000000000 1.62933407382606 + 0.762000000000000 1.62777863296381 + 0.763000000000000 1.62622285234065 + 0.764000000000000 1.62466673656515 + 0.765000000000000 1.62311029024087 + 0.766000000000000 1.62155351796630 + 0.767000000000000 1.61999642433486 + 0.768000000000000 1.61843901393489 + 0.769000000000000 1.61688129134962 + 0.770000000000000 1.61532326115715 + 0.771000000000000 1.61376492793041 + 0.772000000000000 1.61220629623719 + 0.773000000000000 1.61064737064007 + 0.774000000000000 1.60908815569643 + 0.775000000000000 1.60752865595840 + 0.776000000000000 1.60596887597290 + 0.777000000000000 1.60440882028154 + 0.778000000000000 1.60284849342066 + 0.779000000000000 1.60128789992130 + 0.780000000000000 1.59972704430916 + 0.781000000000000 1.59816593110459 + 0.782000000000000 1.59660456482260 + 0.783000000000000 1.59504294997277 + 0.784000000000000 1.59348109105932 + 0.785000000000000 1.59191899258103 + 0.786000000000000 1.59035665903124 + 0.787000000000000 1.58879409489782 + 0.788000000000000 1.58723130466317 + 0.789000000000000 1.58566829280420 + 0.790000000000000 1.58410506379228 + 0.791000000000000 1.58254162209328 + 0.792000000000000 1.58097797216747 + 0.793000000000000 1.57941411846960 + 0.794000000000000 1.57785006544878 + 0.795000000000000 1.57628581754856 + 0.796000000000000 1.57472137920683 + 0.797000000000000 1.57315675485585 + 0.798000000000000 1.57159194892220 + 0.799000000000000 1.57002696582681 + 0.800000000000000 1.56846180998490 + 0.801000000000000 1.56689648580596 + 0.802000000000000 1.56533099769375 + 0.803000000000000 1.56376535004631 + 0.804000000000000 1.56219954725588 + 0.805000000000000 1.56063359370891 + 0.806000000000000 1.55906749378608 + 0.807000000000000 1.55750125186222 + 0.808000000000000 1.55593487230634 + 0.809000000000000 1.55436835948159 + 0.810000000000000 1.55280171774524 + 0.811000000000000 1.55123495144869 + 0.812000000000000 1.54966806493742 + 0.813000000000000 1.54810106255099 + 0.814000000000000 1.54653394862303 + 0.815000000000000 1.54496672748122 + 0.816000000000000 1.54339940344724 + 0.817000000000000 1.54183198083681 + 0.818000000000000 1.54026446395963 + 0.819000000000000 1.53869685711940 + 0.820000000000000 1.53712916461376 + 0.821000000000000 1.53556139073430 + 0.822000000000000 1.53399353976655 + 0.823000000000000 1.53242561598997 + 0.824000000000000 1.53085762367787 + 0.825000000000000 1.52928956709750 + 0.826000000000000 1.52772145050995 + 0.827000000000000 1.52615327817015 + 0.828000000000000 1.52458505432689 + 0.829000000000000 1.52301678322277 + 0.830000000000000 1.52144846909420 + 0.831000000000000 1.51988011617137 + 0.832000000000000 1.51831172867827 + 0.833000000000000 1.51674331083261 + 0.834000000000000 1.51517486684588 + 0.835000000000000 1.51360640092328 + 0.836000000000000 1.51203791726373 + 0.837000000000000 1.51046942005987 + 0.838000000000000 1.50890091349798 + 0.839000000000000 1.50733240175805 + 0.840000000000000 1.50576388901372 + 0.841000000000000 1.50419537943224 + 0.842000000000000 1.50262687717454 + 0.843000000000000 1.50105838639511 + 0.844000000000000 1.49948991124207 + 0.845000000000000 1.49792145585711 + 0.846000000000000 1.49635302437550 + 0.847000000000000 1.49478462092605 + 0.848000000000000 1.49321624963114 + 0.849000000000000 1.49164791460665 + 0.850000000000000 1.49007961996197 + 0.851000000000000 1.48851136980003 + 0.852000000000000 1.48694316821720 + 0.853000000000000 1.48537501930334 + 0.854000000000000 1.48380692714179 + 0.855000000000000 1.48223889580931 + 0.856000000000000 1.48067092937610 + 0.857000000000000 1.47910303190577 + 0.858000000000000 1.47753520745537 + 0.859000000000000 1.47596746007530 + 0.860000000000000 1.47439979380936 + 0.861000000000000 1.47283221269472 + 0.862000000000000 1.47126472076191 + 0.863000000000000 1.46969732203477 + 0.864000000000000 1.46813002053051 + 0.865000000000000 1.46656282025963 + 0.866000000000000 1.46499572522593 + 0.867000000000000 1.46342873942652 + 0.868000000000000 1.46186186685178 + 0.869000000000000 1.46029511148534 + 0.870000000000000 1.45872847730412 + 0.871000000000000 1.45716196827824 + 0.872000000000000 1.45559558837108 + 0.873000000000000 1.45402934153922 + 0.874000000000000 1.45246323173247 + 0.875000000000000 1.45089726289379 + 0.876000000000000 1.44933143895937 + 0.877000000000000 1.44776576385853 + 0.878000000000000 1.44620024151378 + 0.879000000000000 1.44463487584076 + 0.880000000000000 1.44306967074825 + 0.881000000000000 1.44150463013815 + 0.882000000000000 1.43993975790548 + 0.883000000000000 1.43837505793836 + 0.884000000000000 1.43681053411799 + 0.885000000000000 1.43524619031866 + 0.886000000000000 1.43368203040772 + 0.887000000000000 1.43211805824560 + 0.888000000000000 1.43055427768575 + 0.889000000000000 1.42899069257466 + 0.890000000000000 1.42742730675185 + 0.891000000000000 1.42586412404986 + 0.892000000000000 1.42430114829422 + 0.893000000000000 1.42273838330348 + 0.894000000000000 1.42117583288913 + 0.895000000000000 1.41961350085567 + 0.896000000000000 1.41805139100055 + 0.897000000000000 1.41648950711416 + 0.898000000000000 1.41492785297986 + 0.899000000000000 1.41336643237391 + 0.900000000000000 1.41180524906552 + 0.901000000000000 1.41024430681679 + 0.902000000000000 1.40868360938273 + 0.903000000000000 1.40712316051126 + 0.904000000000000 1.40556296394316 + 0.905000000000000 1.40400302341209 + 0.906000000000000 1.40244334264457 + 0.907000000000000 1.40088392536000 + 0.908000000000000 1.39932477527059 + 0.909000000000000 1.39776589608140 + 0.910000000000000 1.39620729149033 + 0.911000000000000 1.39464896518808 + 0.912000000000000 1.39309092085817 + 0.913000000000000 1.39153316217691 + 0.914000000000000 1.38997569281342 + 0.915000000000000 1.38841851642957 + 0.916000000000000 1.38686163668004 + 0.917000000000000 1.38530505721224 + 0.918000000000000 1.38374878166637 + 0.919000000000000 1.38219281367535 + 0.920000000000000 1.38063715686486 + 0.921000000000000 1.37908181485329 + 0.922000000000000 1.37752679125177 + 0.923000000000000 1.37597208966415 + 0.924000000000000 1.37441771368696 + 0.925000000000000 1.37286366690945 + 0.926000000000000 1.37130995291355 + 0.927000000000000 1.36975657527388 + 0.928000000000000 1.36820353755774 + 0.929000000000000 1.36665084332507 + 0.930000000000000 1.36509849612851 + 0.931000000000000 1.36354649951331 + 0.932000000000000 1.36199485701739 + 0.933000000000000 1.36044357217130 + 0.934000000000000 1.35889264849823 + 0.935000000000000 1.35734208951397 + 0.936000000000000 1.35579189872693 + 0.937000000000000 1.35424207963815 + 0.938000000000000 1.35269263574125 + 0.939000000000000 1.35114357052244 + 0.940000000000000 1.34959488746053 + 0.941000000000000 1.34804659002691 + 0.942000000000000 1.34649868168553 + 0.943000000000000 1.34495116589291 + 0.944000000000000 1.34340404609814 + 0.945000000000000 1.34185732574286 + 0.946000000000000 1.34031100826124 + 0.947000000000000 1.33876509708001 + 0.948000000000000 1.33721959561843 + 0.949000000000000 1.33567450728828 + 0.950000000000000 1.33412983549387 + 0.951000000000000 1.33258558363201 + 0.952000000000000 1.33104175509203 + 0.953000000000000 1.32949835325577 + 0.954000000000000 1.32795538149756 + 0.955000000000000 1.32641284318421 + 0.956000000000000 1.32487074167504 + 0.957000000000000 1.32332908032183 + 0.958000000000000 1.32178786246884 + 0.959000000000000 1.32024709145279 + 0.960000000000000 1.31870677060289 + 0.961000000000000 1.31716690324077 + 0.962000000000000 1.31562749268055 + 0.963000000000000 1.31408854222876 + 0.964000000000000 1.31255005518441 + 0.965000000000000 1.31101203483891 + 0.966000000000000 1.30947448447613 + 0.967000000000000 1.30793740737236 + 0.968000000000000 1.30640080679629 + 0.969000000000000 1.30486468600906 + 0.970000000000000 1.30332904826420 + 0.971000000000000 1.30179389680766 + 0.972000000000000 1.30025923487777 + 0.973000000000000 1.29872506570530 + 0.974000000000000 1.29719139251336 + 0.975000000000000 1.29565821851750 + 0.976000000000000 1.29412554692562 + 0.977000000000000 1.29259338093802 + 0.978000000000000 1.29106172374736 + 0.979000000000000 1.28953057853869 + 0.980000000000000 1.28799994848941 + 0.981000000000000 1.28646983676930 + 0.982000000000000 1.28494024654050 + 0.983000000000000 1.28341118095748 + 0.984000000000000 1.28188264316710 + 0.985000000000000 1.28035463630855 + 0.986000000000000 1.27882716351335 + 0.987000000000000 1.27730022790539 + 0.988000000000000 1.27577383260089 + 0.989000000000000 1.27424798070838 + 0.990000000000000 1.27272267532875 + 0.991000000000000 1.27119791955521 + 0.992000000000000 1.26967371647329 + 0.993000000000000 1.26815006916083 + 0.994000000000000 1.26662698068803 + 0.995000000000000 1.26510445411734 + 0.996000000000000 1.26358249250359 + 0.997000000000000 1.26206109889387 + 0.998000000000000 1.26054027632759 + 0.999000000000000 1.25902002783647 + 1.00000000000000 1.25750035644453 + 1.00100000000000 1.25598126516807 + 1.00200000000000 1.25446275701572 + 1.00300000000000 1.25294483498837 + 1.00400000000000 1.25142750207921 + 1.00500000000000 1.24991076127373 + 1.00600000000000 1.24839461554968 + 1.00700000000000 1.24687906787713 + 1.00800000000000 1.24536412121839 + 1.00900000000000 1.24384977852808 + 1.01000000000000 1.24233604275308 + 1.01100000000000 1.24082291683256 + 1.01200000000000 1.23931040369794 + 1.01300000000000 1.23779850627293 + 1.01400000000000 1.23628722747350 + 1.01500000000000 1.23477657020789 + 1.01600000000000 1.23326653737661 + 1.01700000000000 1.23175713187243 + 1.01800000000000 1.23024835658038 + 1.01900000000000 1.22874021437775 + 1.02000000000000 1.22723270813410 + 1.02100000000000 1.22572584071123 + 1.02200000000000 1.22421961496322 + 1.02300000000000 1.22271403373639 + 1.02400000000000 1.22120909986931 + 1.02500000000000 1.21970481619282 + 1.02600000000000 1.21820118553000 + 1.02700000000000 1.21669821069619 + 1.02800000000000 1.21519589449896 + 1.02900000000000 1.21369423973815 + 1.03000000000000 1.21219324920585 + 1.03100000000000 1.21069292568639 + 1.03200000000000 1.20919327195633 + 1.03300000000000 1.20769429078452 + 1.03400000000000 1.20619598493201 + 1.03500000000000 1.20469835715212 + 1.03600000000000 1.20320141019042 + 1.03700000000000 1.20170514678470 + 1.03800000000000 1.20020956966502 + 1.03900000000000 1.19871468155367 + 1.04000000000000 1.19722048516519 + 1.04100000000000 1.19572698320637 + 1.04200000000000 1.19423417837621 + 1.04300000000000 1.19274207336600 + 1.04400000000000 1.19125067085925 + 1.04500000000000 1.18975997353170 + 1.04600000000000 1.18826998405137 + 1.04700000000000 1.18678070507850 + 1.04800000000000 1.18529213926557 + 1.04900000000000 1.18380428925732 + 1.05000000000000 1.18231715769073 + 1.05100000000000 1.18083074719503 + 1.05200000000000 1.17934506039167 + 1.05300000000000 1.17786009989439 + 1.05400000000000 1.17637586830915 + 1.05500000000000 1.17489236823415 + 1.05600000000000 1.17340960225987 + 1.05700000000000 1.17192757296902 + 1.05800000000000 1.17044628293655 + 1.05900000000000 1.16896573472968 + 1.06000000000000 1.16748593090788 + 1.06100000000000 1.16600687402287 + 1.06200000000000 1.16452856661863 + 1.06300000000000 1.16305101123138 + 1.06400000000000 1.16157421038962 + 1.06500000000000 1.16009816661408 + 1.06600000000000 1.15862288241778 + 1.06700000000000 1.15714836030599 + 1.06800000000000 1.15567460277622 + 1.06900000000000 1.15420161231829 + 1.07000000000000 1.15272939141424 + 1.07100000000000 1.15125794253840 + 1.07200000000000 1.14978726815737 + 1.07300000000000 1.14831737073001 + 1.07400000000000 1.14684825270747 + 1.07500000000000 1.14537991653315 + 1.07600000000000 1.14391236464275 + 1.07700000000000 1.14244559946422 + 1.07800000000000 1.14097962341783 + 1.07900000000000 1.13951443891609 + 1.08000000000000 1.13805004836382 + 1.08100000000000 1.13658645415812 + 1.08200000000000 1.13512365868838 + 1.08300000000000 1.13366166433628 + 1.08400000000000 1.13220047347578 + 1.08500000000000 1.13074008847317 + 1.08600000000000 1.12928051168700 + 1.08700000000000 1.12782174546813 + 1.08800000000000 1.12636379215975 + 1.08900000000000 1.12490665409733 + 1.09000000000000 1.12345033360865 + 1.09100000000000 1.12199483301380 + 1.09200000000000 1.12054015462520 + 1.09300000000000 1.11908630074756 + 1.09400000000000 1.11763327367794 + 1.09500000000000 1.11618107570570 + 1.09600000000000 1.11472970911254 + 1.09700000000000 1.11327917617247 + 1.09800000000000 1.11182947915185 + 1.09900000000000 1.11038062030936 + 1.10000000000000 1.10893260189603 + 1.10100000000000 1.10748542615523 + 1.10200000000000 1.10603909532266 + 1.10300000000000 1.10459361162639 + 1.10400000000000 1.10314897728681 + 1.10500000000000 1.10170519451670 + 1.10600000000000 1.10026226552117 + 1.10700000000000 1.09882019249772 + 1.10800000000000 1.09737897763617 + 1.10900000000000 1.09593862311875 + 1.11000000000000 1.09449913112005 + 1.11100000000000 1.09306050380704 + 1.11200000000000 1.09162274333904 + 1.11300000000000 1.09018585186780 + 1.11400000000000 1.08874983153742 + 1.11500000000000 1.08731468448442 + 1.11600000000000 1.08588041283769 + 1.11700000000000 1.08444701871854 + 1.11800000000000 1.08301450424066 + 1.11900000000000 1.08158287151017 + 1.12000000000000 1.08015212262560 + 1.12100000000000 1.07872225967789 + 1.12200000000000 1.07729328475038 + 1.12300000000000 1.07586519991888 + 1.12400000000000 1.07443800725158 + 1.12500000000000 1.07301170880914 + 1.12600000000000 1.07158630664465 + 1.12700000000000 1.07016180280362 + 1.12800000000000 1.06873819932403 + 1.12900000000000 1.06731549823631 + 1.13000000000000 1.06589370156333 + 1.13100000000000 1.06447281132045 + 1.13200000000000 1.06305282951545 + 1.13300000000000 1.06163375814863 + 1.13400000000000 1.06021559921273 + 1.13500000000000 1.05879835469299 + 1.13600000000000 1.05738202656711 + 1.13700000000000 1.05596661680532 + 1.13800000000000 1.05455212737030 + 1.13900000000000 1.05313856021727 + 1.14000000000000 1.05172591729392 + 1.14100000000000 1.05031420054047 + 1.14200000000000 1.04890341188965 + 1.14300000000000 1.04749355326673 + 1.14400000000000 1.04608462658946 + 1.14500000000000 1.04467663376816 + 1.14600000000000 1.04326957670568 + 1.14700000000000 1.04186345729741 + 1.14800000000000 1.04045827743127 + 1.14900000000000 1.03905403898775 + 1.15000000000000 1.03765074383991 + 1.15100000000000 1.03624839385334 + 1.15200000000000 1.03484699088622 + 1.15300000000000 1.03344653678932 + 1.15400000000000 1.03204703340596 + 1.15500000000000 1.03064848257206 + 1.15600000000000 1.02925088611615 + 1.15700000000000 1.02785424585932 + 1.15800000000000 1.02645856361530 + 1.15900000000000 1.02506384119041 + 1.16000000000000 1.02367008038360 + 1.16100000000000 1.02227728298642 + 1.16200000000000 1.02088545078307 + 1.16300000000000 1.01949458555037 + 1.16400000000000 1.01810468905779 + 1.16500000000000 1.01671576306744 + 1.16600000000000 1.01532780933409 + 1.16700000000000 1.01394082960516 + 1.16800000000000 1.01255482562074 + 1.16900000000000 1.01116979911359 + 1.17000000000000 1.00978575180914 + 1.17100000000000 1.00840268542552 + 1.17200000000000 1.00702060167355 + 1.17300000000000 1.00563950225672 + 1.17400000000000 1.00425938887125 + 1.17500000000000 1.00288026320607 + 1.17600000000000 1.00150212694282 + 1.17700000000000 1.00012498175585 + 1.17800000000000 0.998748829312270 + 1.17900000000000 0.997373671271900 + 1.18000000000000 0.995999509287316 + 1.18100000000000 0.994626345003842 + 1.18200000000000 0.993254180059558 + 1.18300000000000 0.991883016085310 + 1.18400000000000 0.990512854704714 + 1.18500000000000 0.989143697534162 + 1.18600000000000 0.987775546182834 + 1.18700000000000 0.986408402252698 + 1.18800000000000 0.985042267338525 + 1.18900000000000 0.983677143027889 + 1.19000000000000 0.982313030901178 + 1.19100000000000 0.980949932531600 + 1.19200000000000 0.979587849485190 + 1.19300000000000 0.978226783320819 + 1.19400000000000 0.976866735590199 + 1.19500000000000 0.975507707837889 + 1.19600000000000 0.974149701601310 + 1.19700000000000 0.972792718410740 + 1.19800000000000 0.971436759789335 + 1.19900000000000 0.970081827253123 + 1.20000000000000 0.968727922311025 + 1.20100000000000 0.967375046464850 + 1.20200000000000 0.966023201209313 + 1.20300000000000 0.964672388032033 + 1.20400000000000 0.963322608413550 + 1.20500000000000 0.961973863827325 + 1.20600000000000 0.960626155739751 + 1.20700000000000 0.959279485610162 + 1.20800000000000 0.957933854890840 + 1.20900000000000 0.956589265027018 + 1.21000000000000 0.955245717456897 + 1.21100000000000 0.953903213611643 + 1.21200000000000 0.952561754915406 + 1.21300000000000 0.951221342785319 + 1.21400000000000 0.949881978631510 + 1.21500000000000 0.948543663857110 + 1.21600000000000 0.947206399858261 + 1.21700000000000 0.945870188024121 + 1.21800000000000 0.944535029736878 + 1.21900000000000 0.943200926371751 + 1.22000000000000 0.941867879297004 + 1.22100000000000 0.940535889873951 + 1.22200000000000 0.939204959456967 + 1.22300000000000 0.937875089393491 + 1.22400000000000 0.936546281024040 + 1.22500000000000 0.935218535682213 + 1.22600000000000 0.933891854694704 + 1.22700000000000 0.932566239381306 + 1.22800000000000 0.931241691054920 + 1.22900000000000 0.929918211021565 + 1.23000000000000 0.928595800580387 + 1.23100000000000 0.927274461023664 + 1.23200000000000 0.925954193636820 + 1.23300000000000 0.924634999698425 + 1.23400000000000 0.923316880480216 + 1.23500000000000 0.921999837247091 + 1.23600000000000 0.920683871257130 + 1.23700000000000 0.919368983761597 + 1.23800000000000 0.918055176004952 + 1.23900000000000 0.916742449224853 + 1.24000000000000 0.915430804652178 + 1.24100000000000 0.914120243511017 + 1.24200000000000 0.912810767018695 + 1.24300000000000 0.911502376385773 + 1.24400000000000 0.910195072816060 + 1.24500000000000 0.908888857506620 + 1.24600000000000 0.907583731647781 + 1.24700000000000 0.906279696423146 + 1.24800000000000 0.904976753009601 + 1.24900000000000 0.903674902577321 + 1.25000000000000 0.902374146289786 + 1.25100000000000 0.901074485303781 + 1.25200000000000 0.899775920769411 + 1.25300000000000 0.898478453830112 + 1.25400000000000 0.897182085622652 + 1.25500000000000 0.895886817277149 + 1.25600000000000 0.894592649917073 + 1.25700000000000 0.893299584659260 + 1.25800000000000 0.892007622613919 + 1.25900000000000 0.890716764884643 + 1.26000000000000 0.889427012568416 + 1.26100000000000 0.888138366755622 + 1.26200000000000 0.886850828530059 + 1.26300000000000 0.885564398968942 + 1.26400000000000 0.884279079142916 + 1.26500000000000 0.882994870116065 + 1.26600000000000 0.881711772945922 + 1.26700000000000 0.880429788683476 + 1.26800000000000 0.879148918373183 + 1.26900000000000 0.877869163052977 + 1.27000000000000 0.876590523754277 + 1.27100000000000 0.875313001501997 + 1.27200000000000 0.874036597314557 + 1.27300000000000 0.872761312203892 + 1.27400000000000 0.871487147175459 + 1.27500000000000 0.870214103228250 + 1.27600000000000 0.868942181354802 + 1.27700000000000 0.867671382541202 + 1.27800000000000 0.866401707767104 + 1.27900000000000 0.865133158005730 + 1.28000000000000 0.863865734223887 + 1.28100000000000 0.862599437381974 + 1.28200000000000 0.861334268433989 + 1.28300000000000 0.860070228327545 + 1.28400000000000 0.858807318003874 + 1.28500000000000 0.857545538397842 + 1.28600000000000 0.856284890437951 + 1.28700000000000 0.855025375046359 + 1.28800000000000 0.853766993138882 + 1.28900000000000 0.852509745625009 + 1.29000000000000 0.851253633407906 + 1.29100000000000 0.849998657384433 + 1.29200000000000 0.848744818445149 + 1.29300000000000 0.847492117474324 + 1.29400000000000 0.846240555349948 + 1.29500000000000 0.844990132943743 + 1.29600000000000 0.843740851121170 + 1.29700000000000 0.842492710741442 + 1.29800000000000 0.841245712657533 + 1.29900000000000 0.839999857716187 + 1.30000000000000 0.838755146757928 + 1.30100000000000 0.837511580617075 + 1.30200000000000 0.836269160121746 + 1.30300000000000 0.835027886093870 + 1.30400000000000 0.833787759349198 + 1.30500000000000 0.832548780697316 + 1.30600000000000 0.831310950941647 + 1.30700000000000 0.830074270879472 + 1.30800000000000 0.828838741301931 + 1.30900000000000 0.827604362994039 + 1.31000000000000 0.826371136734693 + 1.31100000000000 0.825139063296686 + 1.31200000000000 0.823908143446712 + 1.31300000000000 0.822678377945383 + 1.31400000000000 0.821449767547232 + 1.31500000000000 0.820222313000731 + 1.31600000000000 0.818996015048295 + 1.31700000000000 0.817770874426297 + 1.31800000000000 0.816546891865074 + 1.31900000000000 0.815324068088943 + 1.32000000000000 0.814102403816206 + 1.32100000000000 0.812881899759165 + 1.32200000000000 0.811662556624128 + 1.32300000000000 0.810444375111424 + 1.32400000000000 0.809227355915412 + 1.32500000000000 0.808011499724489 + 1.32600000000000 0.806796807221103 + 1.32700000000000 0.805583279081766 + 1.32800000000000 0.804370915977059 + 1.32900000000000 0.803159718571645 + 1.33000000000000 0.801949687524283 + 1.33100000000000 0.800740823487833 + 1.33200000000000 0.799533127109272 + 1.33300000000000 0.798326599029700 + 1.33400000000000 0.797121239884352 + 1.33500000000000 0.795917050302613 + 1.33600000000000 0.794714030908022 + 1.33700000000000 0.793512182318286 + 1.33800000000000 0.792311505145293 + 1.33900000000000 0.791111999995118 + 1.34000000000000 0.789913667468037 + 1.34100000000000 0.788716508158537 + 1.34200000000000 0.787520522655328 + 1.34300000000000 0.786325711541350 + 1.34400000000000 0.785132075393788 + 1.34500000000000 0.783939614784081 + 1.34600000000000 0.782748330277932 + 1.34700000000000 0.781558222435322 + 1.34800000000000 0.780369291810516 + 1.34900000000000 0.779181538952080 + 1.35000000000000 0.777994964402885 + 1.35100000000000 0.776809568700124 + 1.35200000000000 0.775625352375319 + 1.35300000000000 0.774442315954334 + 1.35400000000000 0.773260459957383 + 1.35500000000000 0.772079784899048 + 1.35600000000000 0.770900291288280 + 1.35700000000000 0.769721979628418 + 1.35800000000000 0.768544850417196 + 1.35900000000000 0.767368904146756 + 1.36000000000000 0.766194141303656 + 1.36100000000000 0.765020562368885 + 1.36200000000000 0.763848167817872 + 1.36300000000000 0.762676958120496 + 1.36400000000000 0.761506933741098 + 1.36500000000000 0.760338095138494 + 1.36600000000000 0.759170442765983 + 1.36700000000000 0.758003977071360 + 1.36800000000000 0.756838698496924 + 1.36900000000000 0.755674607479496 + 1.37000000000000 0.754511704450421 + 1.37100000000000 0.753349989835587 + 1.37200000000000 0.752189464055431 + 1.37300000000000 0.751030127524952 + 1.37400000000000 0.749871980653723 + 1.37500000000000 0.748715023845902 + 1.37600000000000 0.747559257500239 + 1.37700000000000 0.746404682010094 + 1.37800000000000 0.745251297763444 + 1.37900000000000 0.744099105142894 + 1.38000000000000 0.742948104525688 + 1.38100000000000 0.741798296283724 + 1.38200000000000 0.740649680783561 + 1.38300000000000 0.739502258386431 + 1.38400000000000 0.738356029448252 + 1.38500000000000 0.737210994319637 + 1.38600000000000 0.736067153345908 + 1.38700000000000 0.734924506867104 + 1.38800000000000 0.733783055217994 + 1.38900000000000 0.732642798728089 + 1.39000000000000 0.731503737721651 + 1.39100000000000 0.730365872517707 + 1.39200000000000 0.729229203430057 + 1.39300000000000 0.728093730767288 + 1.39400000000000 0.726959454832785 + 1.39500000000000 0.725826375924740 + 1.39600000000000 0.724694494336168 + 1.39700000000000 0.723563810354912 + 1.39800000000000 0.722434324263658 + 1.39900000000000 0.721306036339949 + 1.40000000000000 0.720178946856188 + 1.40100000000000 0.719053056079660 + 1.40200000000000 0.717928364272533 + 1.40300000000000 0.716804871691878 + 1.40400000000000 0.715682578589673 + 1.40500000000000 0.714561485212821 + 1.40600000000000 0.713441591803156 + 1.40700000000000 0.712322898597457 + 1.40800000000000 0.711205405827460 + 1.40900000000000 0.710089113719866 + 1.41000000000000 0.708974022496358 + 1.41100000000000 0.707860132373604 + 1.41200000000000 0.706747443563278 + 1.41300000000000 0.705635956272065 + 1.41400000000000 0.704525670701673 + 1.41500000000000 0.703416587048846 + 1.41600000000000 0.702308705505377 + 1.41700000000000 0.701202026258113 + 1.41800000000000 0.700096549488975 + 1.41900000000000 0.698992275374961 + 1.42000000000000 0.697889204088166 + 1.42100000000000 0.696787335795784 + 1.42200000000000 0.695686670660128 + 1.42300000000000 0.694587208838634 + 1.42400000000000 0.693488950483881 + 1.42500000000000 0.692391895743592 + 1.42600000000000 0.691296044760654 + 1.42700000000000 0.690201397673126 + 1.42800000000000 0.689107954614250 + 1.42900000000000 0.688015715712464 + 1.43000000000000 0.686924681091411 + 1.43100000000000 0.685834850869953 + 1.43200000000000 0.684746225162183 + 1.43300000000000 0.683658804077431 + 1.43400000000000 0.682572587720282 + 1.43500000000000 0.681487576190584 + 1.43600000000000 0.680403769583460 + 1.43700000000000 0.679321167989320 + 1.43800000000000 0.678239771493872 + 1.43900000000000 0.677159580178132 + 1.44000000000000 0.676080594118438 + 1.44100000000000 0.675002813386461 + 1.44200000000000 0.673926238049214 + 1.44300000000000 0.672850868169066 + 1.44400000000000 0.671776703803754 + 1.44500000000000 0.670703745006390 + 1.44600000000000 0.669631991825479 + 1.44700000000000 0.668561444304923 + 1.44800000000000 0.667492102484040 + 1.44900000000000 0.666423966397569 + 1.45000000000000 0.665357036075687 + 1.45100000000000 0.664291311544015 + 1.45200000000000 0.663226792823634 + 1.45300000000000 0.662163479931094 + 1.45400000000000 0.661101372878425 + 1.45500000000000 0.660040471673151 + 1.45600000000000 0.658980776318299 + 1.45700000000000 0.657922286812411 + 1.45800000000000 0.656865003149559 + 1.45900000000000 0.655808925319347 + 1.46000000000000 0.654754053306934 + 1.46100000000000 0.653700387093038 + 1.46200000000000 0.652647926653949 + 1.46300000000000 0.651596671961542 + 1.46400000000000 0.650546622983288 + 1.46500000000000 0.649497779682262 + 1.46600000000000 0.648450142017161 + 1.46700000000000 0.647403709942307 + 1.46800000000000 0.646358483407668 + 1.46900000000000 0.645314462358861 + 1.47000000000000 0.644271646737167 + 1.47100000000000 0.643230036479545 + 1.47200000000000 0.642189631518639 + 1.47300000000000 0.641150431782790 + 1.47400000000000 0.640112437196050 + 1.47500000000000 0.639075647678192 + 1.47600000000000 0.638040063144721 + 1.47700000000000 0.637005683506886 + 1.47800000000000 0.635972508671690 + 1.47900000000000 0.634940538541903 + 1.48000000000000 0.633909773016076 + 1.48100000000000 0.632880211988544 + 1.48200000000000 0.631851855349446 + 1.48300000000000 0.630824702984734 + 1.48400000000000 0.629798754776180 + 1.48500000000000 0.628774010601394 + 1.48600000000000 0.627750470333830 + 1.48700000000000 0.626728133842802 + 1.48800000000000 0.625707000993491 + 1.48900000000000 0.624687071646959 + 1.49000000000000 0.623668345660159 + 1.49100000000000 0.622650822885948 + 1.49200000000000 0.621634503173098 + 1.49300000000000 0.620619386366304 + 1.49400000000000 0.619605472306200 + 1.49500000000000 0.618592760829370 + 1.49600000000000 0.617581251768354 + 1.49700000000000 0.616570944951666 + 1.49800000000000 0.615561840203802 + 1.49900000000000 0.614553937345249 + 1.50000000000000 0.613547236192502 + 1.50100000000000 0.612541736558073 + 1.50200000000000 0.611537438250498 + 1.50300000000000 0.610534341074355 + 1.50400000000000 0.609532444830270 + 1.50500000000000 0.608531749314934 + 1.50600000000000 0.607532254321106 + 1.50700000000000 0.606533959637634 + 1.50800000000000 0.605536865049457 + 1.50900000000000 0.604540970337623 + 1.51000000000000 0.603546275279298 + 1.51100000000000 0.602552779647777 + 1.51200000000000 0.601560483212493 + 1.51300000000000 0.600569385739034 + 1.51400000000000 0.599579486989150 + 1.51500000000000 0.598590786720763 + 1.51600000000000 0.597603284687983 + 1.51700000000000 0.596616980641115 + 1.51800000000000 0.595631874326672 + 1.51900000000000 0.594647965487387 + 1.52000000000000 0.593665253862221 + 1.52100000000000 0.592683739186378 + 1.52200000000000 0.591703421191316 + 1.52300000000000 0.590724299604752 + 1.52400000000000 0.589746374150683 + 1.52500000000000 0.588769644549389 + 1.52600000000000 0.587794110517449 + 1.52700000000000 0.586819771767748 + 1.52800000000000 0.585846628009494 + 1.52900000000000 0.584874678948223 + 1.53000000000000 0.583903924285813 + 1.53100000000000 0.582934363720496 + 1.53200000000000 0.581965996946869 + 1.53300000000000 0.580998823655900 + 1.53400000000000 0.580032843534949 + 1.53500000000000 0.579068056267768 + 1.53600000000000 0.578104461534522 + 1.53700000000000 0.577142059011792 + 1.53800000000000 0.576180848372591 + 1.53900000000000 0.575220829286375 + 1.54000000000000 0.574262001419051 + 1.54100000000000 0.573304364432990 + 1.54200000000000 0.572347917987038 + 1.54300000000000 0.571392661736527 + 1.54400000000000 0.570438595333286 + 1.54500000000000 0.569485718425653 + 1.54600000000000 0.568534030658482 + 1.54700000000000 0.567583531673159 + 1.54800000000000 0.566634221107611 + 1.54900000000000 0.565686098596317 + 1.55000000000000 0.564739163770318 + 1.55100000000000 0.563793416257229 + 1.55200000000000 0.562848855681250 + 1.55300000000000 0.561905481663177 + 1.55400000000000 0.560963293820412 + 1.55500000000000 0.560022291766976 + 1.55600000000000 0.559082475113516 + 1.55700000000000 0.558143843467322 + 1.55800000000000 0.557206396432331 + 1.55900000000000 0.556270133609144 + 1.56000000000000 0.555335054595032 + 1.56100000000000 0.554401158983950 + 1.56200000000000 0.553468446366547 + 1.56300000000000 0.552536916330177 + 1.56400000000000 0.551606568458908 + 1.56500000000000 0.550677402333536 + 1.56600000000000 0.549749417531594 + 1.56700000000000 0.548822613627364 + 1.56800000000000 0.547896990191885 + 1.56900000000000 0.546972546792966 + 1.57000000000000 0.546049282995198 + 1.57100000000000 0.545127198359962 + 1.57200000000000 0.544206292445441 + 1.57300000000000 0.543286564806632 + 1.57400000000000 0.542368014995354 + 1.57500000000000 0.541450642560262 + 1.57600000000000 0.540534447046853 + 1.57700000000000 0.539619427997485 + 1.57800000000000 0.538705584951376 + 1.57900000000000 0.537792917444627 + 1.58000000000000 0.536881425010223 + 1.58100000000000 0.535971107178050 + 1.58200000000000 0.535061963474900 + 1.58300000000000 0.534153993424489 + 1.58400000000000 0.533247196547460 + 1.58500000000000 0.532341572361399 + 1.58600000000000 0.531437120380843 + 1.58700000000000 0.530533840117292 + 1.58800000000000 0.529631731079218 + 1.58900000000000 0.528730792772079 + 1.59000000000000 0.527831024698323 + 1.59100000000000 0.526932426357406 + 1.59200000000000 0.526034997245799 + 1.59300000000000 0.525138736856997 + 1.59400000000000 0.524243644681534 + 1.59500000000000 0.523349720206988 + 1.59600000000000 0.522456962917997 + 1.59700000000000 0.521565372296265 + 1.59800000000000 0.520674947820575 + 1.59900000000000 0.519785688966800 + 1.60000000000000 0.518897595207910 + 1.60100000000000 0.518010666013988 + 1.60200000000000 0.517124900852234 + 1.60300000000000 0.516240299186981 + 1.60400000000000 0.515356860479702 + 1.60500000000000 0.514474584189021 + 1.60600000000000 0.513593469770726 + 1.60700000000000 0.512713516677775 + 1.60800000000000 0.511834724360310 + 1.60900000000000 0.510957092265666 + 1.61000000000000 0.510080619838381 + 1.61100000000000 0.509205306520206 + 1.61200000000000 0.508331151750118 + 1.61300000000000 0.507458154964326 + 1.61400000000000 0.506586315596287 + 1.61500000000000 0.505715633076708 + 1.61600000000000 0.504846106833567 + 1.61700000000000 0.503977736292113 + 1.61800000000000 0.503110520874883 + 1.61900000000000 0.502244460001708 + 1.62000000000000 0.501379553089728 + 1.62100000000000 0.500515799553398 + 1.62200000000000 0.499653198804499 + 1.62300000000000 0.498791750252150 + 1.62400000000000 0.497931453302816 + 1.62500000000000 0.497072307360321 + 1.62600000000000 0.496214311825853 + 1.62700000000000 0.495357466097980 + 1.62800000000000 0.494501769572658 + 1.62900000000000 0.493647221643239 + 1.63000000000000 0.492793821700483 + 1.63100000000000 0.491941569132569 + 1.63200000000000 0.491090463325104 + 1.63300000000000 0.490240503661131 + 1.63400000000000 0.489391689521143 + 1.63500000000000 0.488544020283091 + 1.63600000000000 0.487697495322393 + 1.63700000000000 0.486852114011946 + 1.63800000000000 0.486007875722134 + 1.63900000000000 0.485164779820842 + 1.64000000000000 0.484322825673459 + 1.64100000000000 0.483482012642895 + 1.64200000000000 0.482642340089588 + 1.64300000000000 0.481803807371511 + 1.64400000000000 0.480966413844188 + 1.64500000000000 0.480130158860699 + 1.64600000000000 0.479295041771692 + 1.64700000000000 0.478461061925392 + 1.64800000000000 0.477628218667613 + 1.64900000000000 0.476796511341765 + 1.65000000000000 0.475965939288864 + 1.65100000000000 0.475136501847544 + 1.65200000000000 0.474308198354065 + 1.65300000000000 0.473481028142326 + 1.65400000000000 0.472654990543867 + 1.65500000000000 0.471830084887890 + 1.65600000000000 0.471006310501258 + 1.65700000000000 0.470183666708511 + 1.65800000000000 0.469362152831875 + 1.65900000000000 0.468541768191269 + 1.66000000000000 0.467722512104320 + 1.66100000000000 0.466904383886364 + 1.66200000000000 0.466087382850467 + 1.66300000000000 0.465271508307422 + 1.66400000000000 0.464456759565772 + 1.66500000000000 0.463643135931807 + 1.66600000000000 0.462830636709582 + 1.66700000000000 0.462019261200924 + 1.66800000000000 0.461209008705443 + 1.66900000000000 0.460399878520537 + 1.67000000000000 0.459591869941406 + 1.67100000000000 0.458784982261060 + 1.67200000000000 0.457979214770331 + 1.67300000000000 0.457174566757877 + 1.67400000000000 0.456371037510197 + 1.67500000000000 0.455568626311637 + 1.67600000000000 0.454767332444401 + 1.67700000000000 0.453967155188561 + 1.67800000000000 0.453168093822064 + 1.67900000000000 0.452370147620743 + 1.68000000000000 0.451573315858329 + 1.68100000000000 0.450777597806454 + 1.68200000000000 0.449982992734668 + 1.68300000000000 0.449189499910441 + 1.68400000000000 0.448397118599179 + 1.68500000000000 0.447605848064227 + 1.68600000000000 0.446815687566884 + 1.68700000000000 0.446026636366408 + 1.68800000000000 0.445238693720029 + 1.68900000000000 0.444451858882955 + 1.69000000000000 0.443666131108383 + 1.69100000000000 0.442881509647507 + 1.69200000000000 0.442097993749530 + 1.69300000000000 0.441315582661668 + 1.69400000000000 0.440534275629167 + 1.69500000000000 0.439754071895303 + 1.69600000000000 0.438974970701400 + 1.69700000000000 0.438196971286831 + 1.69800000000000 0.437420072889034 + 1.69900000000000 0.436644274743516 + 1.70000000000000 0.435869576083867 + 1.70100000000000 0.435095976141765 + 1.70200000000000 0.434323474146985 + 1.70300000000000 0.433552069327411 + 1.70400000000000 0.432781760909045 + 1.70500000000000 0.432012548116011 + 1.70600000000000 0.431244430170570 + 1.70700000000000 0.430477406293127 + 1.70800000000000 0.429711475702238 + 1.70900000000000 0.428946637614622 + 1.71000000000000 0.428182891245167 + 1.71100000000000 0.427420235806941 + 1.71200000000000 0.426658670511202 + 1.71300000000000 0.425898194567401 + 1.71400000000000 0.425138807183200 + 1.71500000000000 0.424380507564473 + 1.71600000000000 0.423623294915319 + 1.71700000000000 0.422867168438068 + 1.71800000000000 0.422112127333295 + 1.71900000000000 0.421358170799821 + 1.72000000000000 0.420605298034729 + 1.72100000000000 0.419853508233369 + 1.72200000000000 0.419102800589368 + 1.72300000000000 0.418353174294638 + 1.72400000000000 0.417604628539385 + 1.72500000000000 0.416857162512117 + 1.72600000000000 0.416110775399657 + 1.72700000000000 0.415365466387143 + 1.72800000000000 0.414621234658046 + 1.72900000000000 0.413878079394173 + 1.73000000000000 0.413135999775678 + 1.73100000000000 0.412394994981067 + 1.73200000000000 0.411655064187212 + 1.73300000000000 0.410916206569358 + 1.73400000000000 0.410178421301126 + 1.73500000000000 0.409441707554531 + 1.73600000000000 0.408706064499983 + 1.73700000000000 0.407971491306298 + 1.73800000000000 0.407237987140708 + 1.73900000000000 0.406505551168867 + 1.74000000000000 0.405774182554860 + 1.74100000000000 0.405043880461215 + 1.74200000000000 0.404314644048905 + 1.74300000000000 0.403586472477362 + 1.74400000000000 0.402859364904483 + 1.74500000000000 0.402133320486638 + 1.74600000000000 0.401408338378680 + 1.74700000000000 0.400684417733952 + 1.74800000000000 0.399961557704295 + 1.74900000000000 0.399239757440059 + 1.75000000000000 0.398519016090107 + 1.75100000000000 0.397799332801829 + 1.75200000000000 0.397080706721145 + 1.75300000000000 0.396363136992514 + 1.75400000000000 0.395646622758946 + 1.75500000000000 0.394931163162007 + 1.75600000000000 0.394216757341827 + 1.75700000000000 0.393503404437110 + 1.75800000000000 0.392791103585141 + 1.75900000000000 0.392079853921796 + 1.76000000000000 0.391369654581546 + 1.76100000000000 0.390660504697470 + 1.76200000000000 0.389952403401261 + 1.76300000000000 0.389245349823231 + 1.76400000000000 0.388539343092326 + 1.76500000000000 0.387834382336127 + 1.76600000000000 0.387130466680864 + 1.76700000000000 0.386427595251419 + 1.76800000000000 0.385725767171338 + 1.76900000000000 0.385024981562836 + 1.77000000000000 0.384325237546807 + 1.77100000000000 0.383626534242830 + 1.77200000000000 0.382928870769180 + 1.77300000000000 0.382232246242833 + 1.77400000000000 0.381536659779476 + 1.77500000000000 0.380842110493512 + 1.77600000000000 0.380148597498071 + 1.77700000000000 0.379456119905017 + 1.77800000000000 0.378764676824957 + 1.77900000000000 0.378074267367243 + 1.78000000000000 0.377384890639988 + 1.78100000000000 0.376696545750069 + 1.78200000000000 0.376009231803136 + 1.78300000000000 0.375322947903618 + 1.78400000000000 0.374637693154735 + 1.78500000000000 0.373953466658501 + 1.78600000000000 0.373270267515735 + 1.78700000000000 0.372588094826065 + 1.78800000000000 0.371906947687943 + 1.78900000000000 0.371226825198643 + 1.79000000000000 0.370547726454275 + 1.79100000000000 0.369869650549793 + 1.79200000000000 0.369192596578999 + 1.79300000000000 0.368516563634552 + 1.79400000000000 0.367841550807977 + 1.79500000000000 0.367167557189672 + 1.79600000000000 0.366494581868914 + 1.79700000000000 0.365822623933867 + 1.79800000000000 0.365151682471592 + 1.79900000000000 0.364481756568051 + 1.80000000000000 0.363812845308118 + 1.80100000000000 0.363144947775582 + 1.80200000000000 0.362478063053160 + 1.80300000000000 0.361812190222499 + 1.80400000000000 0.361147328364188 + 1.80500000000000 0.360483476557762 + 1.80600000000000 0.359820633881711 + 1.80700000000000 0.359158799413488 + 1.80800000000000 0.358497972229513 + 1.80900000000000 0.357838151405186 + 1.81000000000000 0.357179336014889 + 1.81100000000000 0.356521525131996 + 1.81200000000000 0.355864717828880 + 1.81300000000000 0.355208913176921 + 1.81400000000000 0.354554110246508 + 1.81500000000000 0.353900308107057 + 1.81600000000000 0.353247505827006 + 1.81700000000000 0.352595702473831 + 1.81800000000000 0.351944897114049 + 1.81900000000000 0.351295088813226 + 1.82000000000000 0.350646276635987 + 1.82100000000000 0.349998459646017 + 1.82200000000000 0.349351636906074 + 1.82300000000000 0.348705807477993 + 1.82400000000000 0.348060970422694 + 1.82500000000000 0.347417124800189 + 1.82600000000000 0.346774269669589 + 1.82700000000000 0.346132404089112 + 1.82800000000000 0.345491527116088 + 1.82900000000000 0.344851637806967 + 1.83000000000000 0.344212735217327 + 1.83100000000000 0.343574818401880 + 1.83200000000000 0.342937886414477 + 1.83300000000000 0.342301938308120 + 1.83400000000000 0.341666973134965 + 1.83500000000000 0.341032989946328 + 1.83600000000000 0.340399987792696 + 1.83700000000000 0.339767965723730 + 1.83800000000000 0.339136922788274 + 1.83900000000000 0.338506858034363 + 1.84000000000000 0.337877770509224 + 1.84100000000000 0.337249659259292 + 1.84200000000000 0.336622523330207 + 1.84300000000000 0.335996361766828 + 1.84400000000000 0.335371173613238 + 1.84500000000000 0.334746957912747 + 1.84600000000000 0.334123713707905 + 1.84700000000000 0.333501440040503 + 1.84800000000000 0.332880135951583 + 1.84900000000000 0.332259800481445 + 1.85000000000000 0.331640432669650 + 1.85100000000000 0.331022031555030 + 1.85200000000000 0.330404596175695 + 1.85300000000000 0.329788125569037 + 1.85400000000000 0.329172618771739 + 1.85500000000000 0.328558074819778 + 1.85600000000000 0.327944492748438 + 1.85700000000000 0.327331871592309 + 1.85800000000000 0.326720210385299 + 1.85900000000000 0.326109508160638 + 1.86000000000000 0.325499763950885 + 1.86100000000000 0.324890976787935 + 1.86200000000000 0.324283145703026 + 1.86300000000000 0.323676269726742 + 1.86400000000000 0.323070347889025 + 1.86500000000000 0.322465379219175 + 1.86600000000000 0.321861362745863 + 1.86700000000000 0.321258297497132 + 1.86800000000000 0.320656182500406 + 1.86900000000000 0.320055016782497 + 1.87000000000000 0.319454799369607 + 1.87100000000000 0.318855529287342 + 1.87200000000000 0.318257205560710 + 1.87300000000000 0.317659827214133 + 1.87400000000000 0.317063393271450 + 1.87500000000000 0.316467902755926 + 1.87600000000000 0.315873354690256 + 1.87700000000000 0.315279748096572 + 1.87800000000000 0.314687081996449 + 1.87900000000000 0.314095355410913 + 1.88000000000000 0.313504567360443 + 1.88100000000000 0.312914716864982 + 1.88200000000000 0.312325802943939 + 1.88300000000000 0.311737824616198 + 1.88400000000000 0.311150780900124 + 1.88500000000000 0.310564670813565 + 1.88600000000000 0.309979493373864 + 1.88700000000000 0.309395247597863 + 1.88800000000000 0.308811932501904 + 1.88900000000000 0.308229547101845 + 1.89000000000000 0.307648090413055 + 1.89100000000000 0.307067561450429 + 1.89200000000000 0.306487959228389 + 1.89300000000000 0.305909282760891 + 1.89400000000000 0.305331531061432 + 1.89500000000000 0.304754703143054 + 1.89600000000000 0.304178798018351 + 1.89700000000000 0.303603814699475 + 1.89800000000000 0.303029752198144 + 1.89900000000000 0.302456609525643 + 1.90000000000000 0.301884385692833 + 1.90100000000000 0.301313079710156 + 1.90200000000000 0.300742690587643 + 1.90300000000000 0.300173217334915 + 1.90400000000000 0.299604658961194 + 1.90500000000000 0.299037014475306 + 1.90600000000000 0.298470282885686 + 1.90700000000000 0.297904463200385 + 1.90800000000000 0.297339554427078 + 1.90900000000000 0.296775555573065 + 1.91000000000000 0.296212465645278 + 1.91100000000000 0.295650283650292 + 1.91200000000000 0.295089008594321 + 1.91300000000000 0.294528639483232 + 1.91400000000000 0.293969175322548 + 1.91500000000000 0.293410615117452 + 1.91600000000000 0.292852957872792 + 1.91700000000000 0.292296202593093 + 1.91800000000000 0.291740348282553 + 1.91900000000000 0.291185393945056 + 1.92000000000000 0.290631338584174 + 1.92100000000000 0.290078181203175 + 1.92200000000000 0.289525920805024 + 1.92300000000000 0.288974556392394 + 1.92400000000000 0.288424086967667 + 1.92500000000000 0.287874511532943 + 1.92600000000000 0.287325829090043 + 1.92700000000000 0.286778038640515 + 1.92800000000000 0.286231139185638 + 1.92900000000000 0.285685129726432 + 1.93000000000000 0.285140009263658 + 1.93100000000000 0.284595776797826 + 1.93200000000000 0.284052431329201 + 1.93300000000000 0.283509971857805 + 1.93400000000000 0.282968397383427 + 1.93500000000000 0.282427706905624 + 1.93600000000000 0.281887899423729 + 1.93700000000000 0.281348973936856 + 1.93800000000000 0.280810929443903 + 1.93900000000000 0.280273764943559 + 1.94000000000000 0.279737479434311 + 1.94100000000000 0.279202071914446 + 1.94200000000000 0.278667541382055 + 1.94300000000000 0.278133886835044 + 1.94400000000000 0.277601107271135 + 1.94500000000000 0.277069201687871 + 1.94600000000000 0.276538169082621 + 1.94700000000000 0.276008008452588 + 1.94800000000000 0.275478718794811 + 1.94900000000000 0.274950299106172 + 1.95000000000000 0.274422748383399 + 1.95100000000000 0.273896065623073 + 1.95200000000000 0.273370249821632 + 1.95300000000000 0.272845299975377 + 1.95400000000000 0.272321215080475 + 1.95500000000000 0.271797994132966 + 1.95600000000000 0.271275636128768 + 1.95700000000000 0.270754140063680 + 1.95800000000000 0.270233504933388 + 1.95900000000000 0.269713729733470 + 1.96000000000000 0.269194813459401 + 1.96100000000000 0.268676755106560 + 1.96200000000000 0.268159553670228 + 1.96300000000000 0.267643208145602 + 1.96400000000000 0.267127717527793 + 1.96500000000000 0.266613080811832 + 1.96600000000000 0.266099296992680 + 1.96700000000000 0.265586365065224 + 1.96800000000000 0.265074284024290 + 1.96900000000000 0.264563052864643 + 1.97000000000000 0.264052670580992 + 1.97100000000000 0.263543136167997 + 1.97200000000000 0.263034448620273 + 1.97300000000000 0.262526606932393 + 1.97400000000000 0.262019610098895 + 1.97500000000000 0.261513457114282 + 1.97600000000000 0.261008146973036 + 1.97700000000000 0.260503678669612 + 1.97800000000000 0.260000051198450 + 1.97900000000000 0.259497263553976 + 1.98000000000000 0.258995314730607 + 1.98100000000000 0.258494203722758 + 1.98200000000000 0.257993929524843 + 1.98300000000000 0.257494491131283 + 1.98400000000000 0.256995887536507 + 1.98500000000000 0.256498117734961 + 1.98600000000000 0.256001180721107 + 1.98700000000000 0.255505075489432 + 1.98800000000000 0.255009801034451 + 1.98900000000000 0.254515356350710 + 1.99000000000000 0.254021740432794 + 1.99100000000000 0.253528952275326 + 1.99200000000000 0.253036990872979 + 1.99300000000000 0.252545855220471 + 1.99400000000000 0.252055544312579 + 1.99500000000000 0.251566057144135 + 1.99600000000000 0.251077392710037 + 1.99700000000000 0.250589550005249 + 1.99800000000000 0.250102528024808 + 1.99900000000000 0.249616325763825 + 2.00000000000000 0.249130942217493 + 2.00100000000000 0.248646376381090 + 2.00200000000000 0.248162627249982 + 2.00300000000000 0.247679693819630 + 2.00400000000000 0.247197575085589 + 2.00500000000000 0.246716270043520 + 2.00600000000000 0.246235777689186 + 2.00700000000000 0.245756097018464 + 2.00800000000000 0.245277227027342 + 2.00900000000000 0.244799166711928 + 2.01000000000000 0.244321915068452 + 2.01100000000000 0.243845471093272 + 2.01200000000000 0.243369833782876 + 2.01300000000000 0.242895002133887 + 2.01400000000000 0.242420975143068 + 2.01500000000000 0.241947751807323 + 2.01600000000000 0.241475331123706 + 2.01700000000000 0.241003712089420 + 2.01800000000000 0.240532893701826 + 2.01900000000000 0.240062874958442 + 2.02000000000000 0.239593654856950 + 2.02100000000000 0.239125232395200 + 2.02200000000000 0.238657606571213 + 2.02300000000000 0.238190776383187 + 2.02400000000000 0.237724740829495 + 2.02500000000000 0.237259498908699 + 2.02600000000000 0.236795049619543 + 2.02700000000000 0.236331391960967 + 2.02800000000000 0.235868524932101 + 2.02900000000000 0.235406447532277 + 2.03000000000000 0.234945158761029 + 2.03100000000000 0.234484657618099 + 2.03200000000000 0.234024943103437 + 2.03300000000000 0.233566014217210 + 2.03400000000000 0.233107869959800 + 2.03500000000000 0.232650509331813 + 2.03600000000000 0.232193931334082 + 2.03700000000000 0.231738134967666 + 2.03800000000000 0.231283119233860 + 2.03900000000000 0.230828883134195 + 2.04000000000000 0.230375425670443 + 2.04100000000000 0.229922745844621 + 2.04200000000000 0.229470842658992 + 2.04300000000000 0.229019715116074 + 2.04400000000000 0.228569362218639 + 2.04500000000000 0.228119782969717 + 2.04600000000000 0.227670976372603 + 2.04700000000000 0.227222941430858 + 2.04800000000000 0.226775677148312 + 2.04900000000000 0.226329182529069 + 2.05000000000000 0.225883456577513 + 2.05100000000000 0.225438498298304 + 2.05200000000000 0.224994306696392 + 2.05300000000000 0.224550880777010 + 2.05400000000000 0.224108219545687 + 2.05500000000000 0.223666322008244 + 2.05600000000000 0.223225187170802 + 2.05700000000000 0.222784814039784 + 2.05800000000000 0.222345201621919 + 2.05900000000000 0.221906348924244 + 2.06000000000000 0.221468254954110 + 2.06100000000000 0.221030918719184 + 2.06200000000000 0.220594339227451 + 2.06300000000000 0.220158515487220 + 2.06400000000000 0.219723446507126 + 2.06500000000000 0.219289131296135 + 2.06600000000000 0.218855568863544 + 2.06700000000000 0.218422758218987 + 2.06800000000000 0.217990698372440 + 2.06900000000000 0.217559388334220 + 2.07000000000000 0.217128827114991 + 2.07100000000000 0.216699013725766 + 2.07200000000000 0.216269947177913 + 2.07300000000000 0.215841626483156 + 2.07400000000000 0.215414050653577 + 2.07500000000000 0.214987218701624 + 2.07600000000000 0.214561129640108 + 2.07700000000000 0.214135782482212 + 2.07800000000000 0.213711176241490 + 2.07900000000000 0.213287309931874 + 2.08000000000000 0.212864182567673 + 2.08100000000000 0.212441793163579 + 2.08200000000000 0.212020140734671 + 2.08300000000000 0.211599224296414 + 2.08400000000000 0.211179042864666 + 2.08500000000000 0.210759595455682 + 2.08600000000000 0.210340881086113 + 2.08700000000000 0.209922898773011 + 2.08800000000000 0.209505647533832 + 2.08900000000000 0.209089126386443 + 2.09000000000000 0.208673334349116 + 2.09100000000000 0.208258270440541 + 2.09200000000000 0.207843933679823 + 2.09300000000000 0.207430323086486 + 2.09400000000000 0.207017437680477 + 2.09500000000000 0.206605276482171 + 2.09600000000000 0.206193838512367 + 2.09700000000000 0.205783122792301 + 2.09800000000000 0.205373128343639 + 2.09900000000000 0.204963854188488 + 2.10000000000000 0.204555299349394 + 2.10100000000000 0.204147462849346 + 2.10200000000000 0.203740343711782 + 2.10300000000000 0.203333940960585 + 2.10400000000000 0.202928253620095 + 2.10500000000000 0.202523280715104 + 2.10600000000000 0.202119021270864 + 2.10700000000000 0.201715474313086 + 2.10800000000000 0.201312638867945 + 2.10900000000000 0.200910513962086 + 2.11000000000000 0.200509098622617 + 2.11100000000000 0.200108391877125 + 2.11200000000000 0.199708392753668 + 2.11300000000000 0.199309100280783 + 2.11400000000000 0.198910513487486 + 2.11500000000000 0.198512631403280 + 2.11600000000000 0.198115453058151 + 2.11700000000000 0.197718977482576 + 2.11800000000000 0.197323203707521 + 2.11900000000000 0.196928130764448 + 2.12000000000000 0.196533757685317 + 2.12100000000000 0.196140083502586 + 2.12200000000000 0.195747107249217 + 2.12300000000000 0.195354827958675 + 2.12400000000000 0.194963244664936 + 2.12500000000000 0.194572356402483 + 2.12600000000000 0.194182162206313 + 2.12700000000000 0.193792661111942 + 2.12800000000000 0.193403852155399 + 2.12900000000000 0.193015734373237 + 2.13000000000000 0.192628306802534 + 2.13100000000000 0.192241568480890 + 2.13200000000000 0.191855518446436 + 2.13300000000000 0.191470155737836 + 2.13400000000000 0.191085479394283 + 2.13500000000000 0.190701488455512 + 2.13600000000000 0.190318181961792 + 2.13700000000000 0.189935558953936 + 2.13800000000000 0.189553618473299 + 2.13900000000000 0.189172359561785 + 2.14000000000000 0.188791781261845 + 2.14100000000000 0.188411882616481 + 2.14200000000000 0.188032662669250 + 2.14300000000000 0.187654120464263 + 2.14400000000000 0.187276255046192 + 2.14500000000000 0.186899065460269 + 2.14600000000000 0.186522550752289 + 2.14700000000000 0.186146709968613 + 2.14800000000000 0.185771542156172 + 2.14900000000000 0.185397046362465 + 2.15000000000000 0.185023221635565 + 2.15100000000000 0.184650067024120 + 2.15200000000000 0.184277581577357 + 2.15300000000000 0.183905764345081 + 2.15400000000000 0.183534614377681 + 2.15500000000000 0.183164130726129 + 2.15600000000000 0.182794312441985 + 2.15700000000000 0.182425158577398 + 2.15800000000000 0.182056668185109 + 2.15900000000000 0.181688840318451 + 2.16000000000000 0.181321674031355 + 2.16100000000000 0.180955168378349 + 2.16200000000000 0.180589322414561 + 2.16300000000000 0.180224135195724 + 2.16400000000000 0.179859605778173 + 2.16500000000000 0.179495733218852 + 2.16600000000000 0.179132516575313 + 2.16700000000000 0.178769954905722 + 2.16800000000000 0.178408047268854 + 2.16900000000000 0.178046792724105 + 2.17000000000000 0.177686190331486 + 2.17100000000000 0.177326239151627 + 2.17200000000000 0.176966938245783 + 2.17300000000000 0.176608286675832 + 2.17400000000000 0.176250283504278 + 2.17500000000000 0.175892927794253 + 2.17600000000000 0.175536218609522 + 2.17700000000000 0.175180155014481 + 2.17800000000000 0.174824736074160 + 2.17900000000000 0.174469960854226 + 2.18000000000000 0.174115828420987 + 2.18100000000000 0.173762337841389 + 2.18200000000000 0.173409488183022 + 2.18300000000000 0.173057278514121 + 2.18400000000000 0.172705707903568 + 2.18500000000000 0.172354775420893 + 2.18600000000000 0.172004480136278 + 2.18700000000000 0.171654821120556 + 2.18800000000000 0.171305797445217 + 2.18900000000000 0.170957408182406 + 2.19000000000000 0.170609652404927 + 2.19100000000000 0.170262529186245 + 2.19200000000000 0.169916037600486 + 2.19300000000000 0.169570176722444 + 2.19400000000000 0.169224945627575 + 2.19500000000000 0.168880343392004 + 2.19600000000000 0.168536369092530 + 2.19700000000000 0.168193021806618 + 2.19800000000000 0.167850300612410 + 2.19900000000000 0.167508204588725 + 2.20000000000000 0.167166732815055 + 2.20100000000000 0.166825884371576 + 2.20200000000000 0.166485658339143 + 2.20300000000000 0.166146053799292 + 2.20400000000000 0.165807069834246 + 2.20500000000000 0.165468705526915 + 2.20600000000000 0.165130959960895 + 2.20700000000000 0.164793832220474 + 2.20800000000000 0.164457321390630 + 2.20900000000000 0.164121426557036 + 2.21000000000000 0.163786146806060 + 2.21100000000000 0.163451481224765 + 2.21200000000000 0.163117428900916 + 2.21300000000000 0.162783988922976 + 2.21400000000000 0.162451160380111 + 2.21500000000000 0.162118942362190 + 2.21600000000000 0.161787333959788 + 2.21700000000000 0.161456334264188 + 2.21800000000000 0.161125942367380 + 2.21900000000000 0.160796157362066 + 2.22000000000000 0.160466978341658 + 2.22100000000000 0.160138404400285 + 2.22200000000000 0.159810434632788 + 2.22300000000000 0.159483068134727 + 2.22400000000000 0.159156304002379 + 2.22500000000000 0.158830141332744 + 2.22600000000000 0.158504579223540 + 2.22700000000000 0.158179616773211 + 2.22800000000000 0.157855253080924 + 2.22900000000000 0.157531487246574 + 2.23000000000000 0.157208318370783 + 2.23100000000000 0.156885745554903 + 2.23200000000000 0.156563767901017 + 2.23300000000000 0.156242384511941 + 2.23400000000000 0.155921594491223 + 2.23500000000000 0.155601396943148 + 2.23600000000000 0.155281790972739 + 2.23700000000000 0.154962775685756 + 2.23800000000000 0.154644350188700 + 2.23900000000000 0.154326513588813 + 2.24000000000000 0.154009264994080 + 2.24100000000000 0.153692603513230 + 2.24200000000000 0.153376528255738 + 2.24300000000000 0.153061038331827 + 2.24400000000000 0.152746132852468 + 2.24500000000000 0.152431810929382 + 2.24600000000000 0.152118071675041 + 2.24700000000000 0.151804914202671 + 2.24800000000000 0.151492337626252 + 2.24900000000000 0.151180341060519 + 2.25000000000000 0.150868923620964 + 2.25100000000000 0.150558084423838 + 2.25200000000000 0.150247822586151 + 2.25300000000000 0.149938137225675 + 2.25400000000000 0.149629027460943 + 2.25500000000000 0.149320492411254 + 2.25600000000000 0.149012531196668 + 2.25700000000000 0.148705142938016 + 2.25800000000000 0.148398326756893 + 2.25900000000000 0.148092081775664 + 2.26000000000000 0.147786407117465 + 2.26100000000000 0.147481301906203 + 2.26200000000000 0.147176765266558 + 2.26300000000000 0.146872796323982 + 2.26400000000000 0.146569394204705 + 2.26500000000000 0.146266558035731 + 2.26600000000000 0.145964286944844 + 2.26700000000000 0.145662580060605 + 2.26800000000000 0.145361436512356 + 2.26900000000000 0.145060855430219 + 2.27000000000000 0.144760835945102 + 2.27100000000000 0.144461377188692 + 2.27200000000000 0.144162478293464 + 2.27300000000000 0.143864138392678 + 2.27400000000000 0.143566356620381 + 2.27500000000000 0.143269132111409 + 2.27600000000000 0.142972464001388 + 2.27700000000000 0.142676351426732 + 2.27800000000000 0.142380793524650 + 2.27900000000000 0.142085789433142 + 2.28000000000000 0.141791338291002 + 2.28100000000000 0.141497439237820 + 2.28200000000000 0.141204091413981 + 2.28300000000000 0.140911293960669 + 2.28400000000000 0.140619046019865 + 2.28500000000000 0.140327346734349 + 2.28600000000000 0.140036195247703 + 2.28700000000000 0.139745590704309 + 2.28800000000000 0.139455532249354 + 2.28900000000000 0.139166019028825 + 2.29000000000000 0.138877050189516 + 2.29100000000000 0.138588624879028 + 2.29200000000000 0.138300742245765 + 2.29300000000000 0.138013401438943 + 2.29400000000000 0.137726601608582 + 2.29500000000000 0.137440341905517 + 2.29600000000000 0.137154621481388 + 2.29700000000000 0.136869439488652 + 2.29800000000000 0.136584795080575 + 2.29900000000000 0.136300687411239 + 2.30000000000000 0.136017115635538 + 2.30100000000000 0.135734078909183 + 2.30200000000000 0.135451576388703 + 2.30300000000000 0.135169607231441 + 2.30400000000000 0.134888170595561 + 2.30500000000000 0.134607265640045 + 2.30600000000000 0.134326891524695 + 2.30700000000000 0.134047047410135 + 2.30800000000000 0.133767732457811 + 2.30900000000000 0.133488945829990 + 2.31000000000000 0.133210686689764 + 2.31100000000000 0.132932954201050 + 2.31200000000000 0.132655747528589 + 2.31300000000000 0.132379065837950 + 2.31400000000000 0.132102908295528 + 2.31500000000000 0.131827274068546 + 2.31600000000000 0.131552162325057 + 2.31700000000000 0.131277572233941 + 2.31800000000000 0.131003502964911 + 2.31900000000000 0.130729953688511 + 2.32000000000000 0.130456923576116 + 2.32100000000000 0.130184411799933 + 2.32200000000000 0.129912417533007 + 2.32300000000000 0.129640939949211 + 2.32400000000000 0.129369978223259 + 2.32500000000000 0.129099531530699 + 2.32600000000000 0.128829599047913 + 2.32700000000000 0.128560179952125 + 2.32800000000000 0.128291273421395 + 2.32900000000000 0.128022878634621 + 2.33000000000000 0.127754994771543 + 2.33100000000000 0.127487621012739 + 2.33200000000000 0.127220756539632 + 2.33300000000000 0.126954400534482 + 2.33400000000000 0.126688552180395 + 2.33500000000000 0.126423210661320 + 2.33600000000000 0.126158375162049 + 2.33700000000000 0.125894044868218 + 2.33800000000000 0.125630218966310 + 2.33900000000000 0.125366896643654 + 2.34000000000000 0.125104077088425 + 2.34100000000000 0.124841759489644 + 2.34200000000000 0.124579943037183 + 2.34300000000000 0.124318626921761 + 2.34400000000000 0.124057810334946 + 2.34500000000000 0.123797492469155 + 2.34600000000000 0.123537672517659 + 2.34700000000000 0.123278349674577 + 2.34800000000000 0.123019523134880 + 2.34900000000000 0.122761192094394 + 2.35000000000000 0.122503355749794 + 2.35100000000000 0.122246013298612 + 2.35200000000000 0.121989163939233 + 2.35300000000000 0.121732806870895 + 2.35400000000000 0.121476941293694 + 2.35500000000000 0.121221566408581 + 2.35600000000000 0.120966681417363 + 2.35700000000000 0.120712285522703 + 2.35800000000000 0.120458377928123 + 2.35900000000000 0.120204957838003 + 2.36000000000000 0.119952024457582 + 2.36100000000000 0.119699576992956 + 2.36200000000000 0.119447614651082 + 2.36300000000000 0.119196136639779 + 2.36400000000000 0.118945142167722 + 2.36500000000000 0.118694630444453 + 2.36600000000000 0.118444600680370 + 2.36700000000000 0.118195052086737 + 2.36800000000000 0.117945983875680 + 2.36900000000000 0.117697395260186 + 2.37000000000000 0.117449285454109 + 2.37100000000000 0.117201653672163 + 2.37200000000000 0.116954499129930 + 2.37300000000000 0.116707821043854 + 2.37400000000000 0.116461618631248 + 2.37500000000000 0.116215891110288 + 2.37600000000000 0.115970637700016 + 2.37700000000000 0.115725857620343 + 2.37800000000000 0.115481550092045 + 2.37900000000000 0.115237714336767 + 2.38000000000000 0.114994349577021 + 2.38100000000000 0.114751455036187 + 2.38200000000000 0.114509029938515 + 2.38300000000000 0.114267073509124 + 2.38400000000000 0.114025584974001 + 2.38500000000000 0.113784563560004 + 2.38600000000000 0.113544008494862 + 2.38700000000000 0.113303919007172 + 2.38800000000000 0.113064294326406 + 2.38900000000000 0.112825133682903 + 2.39000000000000 0.112586436307877 + 2.39100000000000 0.112348201433413 + 2.39200000000000 0.112110428292468 + 2.39300000000000 0.111873116118871 + 2.39400000000000 0.111636264147326 + 2.39500000000000 0.111399871613409 + 2.39600000000000 0.111163937753570 + 2.39700000000000 0.110928461805133 + 2.39800000000000 0.110693443006297 + 2.39900000000000 0.110458880596133 + 2.40000000000000 0.110224773814591 + 2.40100000000000 0.109991121902492 + 2.40200000000000 0.109757924101536 + 2.40300000000000 0.109525179654296 + 2.40400000000000 0.109292887804222 + 2.40500000000000 0.109061047795641 + 2.40600000000000 0.108829658873755 + 2.40700000000000 0.108598720284645 + 2.40800000000000 0.108368231275267 + 2.40900000000000 0.108138191093455 + 2.41000000000000 0.107908598987920 + 2.41100000000000 0.107679454208252 + 2.41200000000000 0.107450756004917 + 2.41300000000000 0.107222503629261 + 2.41400000000000 0.106994696333508 + 2.41500000000000 0.106767333370760 + 2.41600000000000 0.106540413994999 + 2.41700000000000 0.106313937461084 + 2.41800000000000 0.106087903024754 + 2.41900000000000 0.105862309942630 + 2.42000000000000 0.105637157472208 + 2.42100000000000 0.105412444871868 + 2.42200000000000 0.105188171400867 + 2.42300000000000 0.104964336319344 + 2.42400000000000 0.104740938888317 + 2.42500000000000 0.104517978369685 + 2.42600000000000 0.104295454026227 + 2.42700000000000 0.104073365121605 + 2.42800000000000 0.103851710920358 + 2.42900000000000 0.103630490687909 + 2.43000000000000 0.103409703690562 + 2.43100000000000 0.103189349195500 + 2.43200000000000 0.102969426470791 + 2.43300000000000 0.102749934785381 + 2.43400000000000 0.102530873409099 + 2.43500000000000 0.102312241612657 + 2.43600000000000 0.102094038667647 + 2.43700000000000 0.101876263846544 + 2.43800000000000 0.101658916422705 + 2.43900000000000 0.101441995670367 + 2.44000000000000 0.101225500864653 + 2.44100000000000 0.101009431281566 + 2.44200000000000 0.100793786197991 + 2.44300000000000 0.100578564891696 + 2.44400000000000 0.100363766641333 + 2.44500000000000 0.100149390726433 + 2.44600000000000 9.993543642741350E-002 + 2.44700000000000 9.972190302557207E-002 + 2.44800000000000 9.950878980309003E-002 + 2.44900000000000 9.929609604303119E-002 + 2.45000000000000 9.908382102934214E-002 + 2.45100000000000 9.887196404685245E-002 + 2.45200000000000 9.866052438127429E-002 + 2.45300000000000 9.844950131920278E-002 + 2.45400000000000 9.823889414811587E-002 + 2.45500000000000 9.802870215637458E-002 + 2.45600000000000 9.781892463322261E-002 + 2.45700000000000 9.760956086878665E-002 + 2.45800000000000 9.740061015407625E-002 + 2.45900000000000 9.719207178098392E-002 + 2.46000000000000 9.698394504228498E-002 + 2.46100000000000 9.677622923163764E-002 + 2.46200000000000 9.656892364358294E-002 + 2.46300000000000 9.636202757354477E-002 + 2.46400000000000 9.615554031782983E-002 + 2.46500000000000 9.594946117362753E-002 + 2.46600000000000 9.574378943900999E-002 + 2.46700000000000 9.553852441293210E-002 + 2.46800000000000 9.533366539523133E-002 + 2.46900000000000 9.512921168662772E-002 + 2.47000000000000 9.492516258872387E-002 + 2.47100000000000 9.472151740400490E-002 + 2.47200000000000 9.451827543583821E-002 + 2.47300000000000 9.431543598847368E-002 + 2.47400000000000 9.411299836704330E-002 + 2.47500000000000 9.391096187756144E-002 + 2.47600000000000 9.370932582692450E-002 + 2.47700000000000 9.350808952291084E-002 + 2.47800000000000 9.330725227418080E-002 + 2.47900000000000 9.310681339027667E-002 + 2.48000000000000 9.290677218162233E-002 + 2.48100000000000 9.270712795952341E-002 + 2.48200000000000 9.250788003616703E-002 + 2.48300000000000 9.230902772462177E-002 + 2.48400000000000 9.211057033883753E-002 + 2.48500000000000 9.191250719364540E-002 + 2.48600000000000 9.171483760475749E-002 + 2.48700000000000 9.151756088876700E-002 + 2.48800000000000 9.132067636314782E-002 + 2.48900000000000 9.112418334625459E-002 + 2.49000000000000 9.092808115732241E-002 + 2.49100000000000 9.073236911646695E-002 + 2.49200000000000 9.053704654468400E-002 + 2.49300000000000 9.034211276384946E-002 + 2.49400000000000 9.014756709671924E-002 + 2.49500000000000 8.995340886692907E-002 + 2.49600000000000 8.975963739899426E-002 + 2.49700000000000 8.956625201830959E-002 + 2.49800000000000 8.937325205114911E-002 + 2.49900000000000 8.918063682466609E-002 + 2.50000000000000 8.898840566689266E-002 + 2.50100000000000 8.879655790673971E-002 + 2.50200000000000 8.860509287399673E-002 + 2.50300000000000 8.841400989933168E-002 + 2.50400000000000 8.822330831429064E-002 + 2.50500000000000 8.803298745129760E-002 + 2.50600000000000 8.784304664365444E-002 + 2.50700000000000 8.765348522554071E-002 + 2.50800000000000 8.746430253201323E-002 + 2.50900000000000 8.727549789900599E-002 + 2.51000000000000 8.708707066333000E-002 + 2.51100000000000 8.689902016267305E-002 + 2.51200000000000 8.671134573559930E-002 + 2.51300000000000 8.652404672154924E-002 + 2.51400000000000 8.633712246083951E-002 + 2.51500000000000 8.615057229466254E-002 + 2.51600000000000 8.596439556508628E-002 + 2.51700000000000 8.577859161505409E-002 + 2.51800000000000 8.559315978838436E-002 + 2.51900000000000 8.540809942977044E-002 + 2.52000000000000 8.522340988478018E-002 + 2.52100000000000 8.503909049985588E-002 + 2.52200000000000 8.485514062231374E-002 + 2.52300000000000 8.467155960034398E-002 + 2.52400000000000 8.448834678301030E-002 + 2.52500000000000 8.430550152024967E-002 + 2.52600000000000 8.412302316287201E-002 + 2.52700000000000 8.394091106256019E-002 + 2.52800000000000 8.375916457186934E-002 + 2.52900000000000 8.357778304422678E-002 + 2.53000000000000 8.339676583393178E-002 + 2.53100000000000 8.321611229615523E-002 + 2.53200000000000 8.303582178693927E-002 + 2.53300000000000 8.285589366319704E-002 + 2.53400000000000 8.267632728271238E-002 + 2.53500000000000 8.249712200413958E-002 + 2.53600000000000 8.231827718700302E-002 + 2.53700000000000 8.213979219169680E-002 + 2.53800000000000 8.196166637948454E-002 + 2.53900000000000 8.178389911249909E-002 + 2.54000000000000 8.160648975374199E-002 + 2.54100000000000 8.142943766708333E-002 + 2.54200000000000 8.125274221726145E-002 + 2.54300000000000 8.107640276988251E-002 + 2.54400000000000 8.090041869142017E-002 + 2.54500000000000 8.072478934921531E-002 + 2.54600000000000 8.054951411147561E-002 + 2.54700000000000 8.037459234727529E-002 + 2.54800000000000 8.020002342655473E-002 + 2.54900000000000 8.002580672012012E-002 + 2.55000000000000 7.985194159964304E-002 + 2.55100000000000 7.967842743766031E-002 + 2.55200000000000 7.950526360757335E-002 + 2.55300000000000 7.933244948364807E-002 + 2.55400000000000 7.915998444101426E-002 + 2.55500000000000 7.898786785566551E-002 + 2.55600000000000 7.881609910445864E-002 + 2.55700000000000 7.864467756511331E-002 + 2.55800000000000 7.847360261621178E-002 + 2.55900000000000 7.830287363719850E-002 + 2.56000000000000 7.813249000837960E-002 + 2.56100000000000 7.796245111092261E-002 + 2.56200000000000 7.779275632685606E-002 + 2.56300000000000 7.762340503906910E-002 + 2.56400000000000 7.745439663131107E-002 + 2.56500000000000 7.728573048819116E-002 + 2.56600000000000 7.711740599517793E-002 + 2.56700000000000 7.694942253859889E-002 + 2.56800000000000 7.678177950564036E-002 + 2.56900000000000 7.661447628434655E-002 + 2.57000000000000 7.644751226361973E-002 + 2.57100000000000 7.628088683321935E-002 + 2.57200000000000 7.611459938376192E-002 + 2.57300000000000 7.594864930672041E-002 + 2.57400000000000 7.578303599442397E-002 + 2.57500000000000 7.561775884005732E-002 + 2.57600000000000 7.545281723766058E-002 + 2.57700000000000 7.528821058212855E-002 + 2.57800000000000 7.512393826921049E-002 + 2.57900000000000 7.495999969550957E-002 + 2.58000000000000 7.479639425848256E-002 + 2.58100000000000 7.463312135643921E-002 + 2.58200000000000 7.447018038854192E-002 + 2.58300000000000 7.430757075480525E-002 + 2.58400000000000 7.414529185609556E-002 + 2.58500000000000 7.398334309413040E-002 + 2.58600000000000 7.382172387147819E-002 + 2.58700000000000 7.366043359155765E-002 + 2.58800000000000 7.349947165863749E-002 + 2.58900000000000 7.333883747783579E-002 + 2.59000000000000 7.317853045511960E-002 + 2.59100000000000 7.301854999730450E-002 + 2.59200000000000 7.285889551205410E-002 + 2.59300000000000 7.269956640787953E-002 + 2.59400000000000 7.254056209413910E-002 + 2.59500000000000 7.238188198103757E-002 + 2.59600000000000 7.222352547962595E-002 + 2.59700000000000 7.206549200180085E-002 + 2.59800000000000 7.190778096030399E-002 + 2.59900000000000 7.175039176872183E-002 + 2.60000000000000 7.159332384148494E-002 + 2.60100000000000 7.143657659386762E-002 + 2.60200000000000 7.128014944198729E-002 + 2.60300000000000 7.112404180280407E-002 + 2.60400000000000 7.096825309412036E-002 + 2.60500000000000 7.081278273458011E-002 + 2.60600000000000 7.065763014366849E-002 + 2.60700000000000 7.050279474171138E-002 + 2.60800000000000 7.034827594987476E-002 + 2.60900000000000 7.019407319016430E-002 + 2.61000000000000 7.004018588542478E-002 + 2.61100000000000 6.988661345933952E-002 + 2.61200000000000 6.973335533643010E-002 + 2.61300000000000 6.958041094205553E-002 + 2.61400000000000 6.942777970241189E-002 + 2.61500000000000 6.927546104453176E-002 + 2.61600000000000 6.912345439628384E-002 + 2.61700000000000 6.897175918637215E-002 + 2.61800000000000 6.882037484433567E-002 + 2.61900000000000 6.866930080054774E-002 + 2.62000000000000 6.851853648621568E-002 + 2.62100000000000 6.836808133338002E-002 + 2.62200000000000 6.821793477491406E-002 + 2.62300000000000 6.806809624452330E-002 + 2.62400000000000 6.791856517674504E-002 + 2.62500000000000 6.776934100694761E-002 + 2.62600000000000 6.762042317132992E-002 + 2.62700000000000 6.747181110692096E-002 + 2.62800000000000 6.732350425157919E-002 + 2.62900000000000 6.717550204399193E-002 + 2.63000000000000 6.702780392367488E-002 + 2.63100000000000 6.688040933097152E-002 + 2.63200000000000 6.673331770705264E-002 + 2.63300000000000 6.658652849391558E-002 + 2.63400000000000 6.644004113438387E-002 + 2.63500000000000 6.629385507210650E-002 + 2.63600000000000 6.614796975155747E-002 + 2.63700000000000 6.600238461803513E-002 + 2.63800000000000 6.585709911766165E-002 + 2.63900000000000 6.571211269738238E-002 + 2.64000000000000 6.556742480496543E-002 + 2.64100000000000 6.542303488900085E-002 + 2.64200000000000 6.527894239890027E-002 + 2.64300000000000 6.513514678489613E-002 + 2.64400000000000 6.499164749804127E-002 + 2.64500000000000 6.484844399020818E-002 + 2.64600000000000 6.470553571408857E-002 + 2.64700000000000 6.456292212319255E-002 + 2.64800000000000 6.442060267184828E-002 + 2.64900000000000 6.427857681520122E-002 + 2.65000000000000 6.413684400921359E-002 + 2.65100000000000 6.399540371066370E-002 + 2.65200000000000 6.385425537714549E-002 + 2.65300000000000 6.371339846706779E-002 + 2.65400000000000 6.357283243965370E-002 + 2.65500000000000 6.343255675494013E-002 + 2.65600000000000 6.329257087377708E-002 + 2.65700000000000 6.315287425782705E-002 + 2.65800000000000 6.301346636956437E-002 + 2.65900000000000 6.287434667227466E-002 + 2.66000000000000 6.273551463005426E-002 + 2.66100000000000 6.259696970780949E-002 + 2.66200000000000 6.245871137125607E-002 + 2.66300000000000 6.232073908691847E-002 + 2.66400000000000 6.218305232212946E-002 + 2.66500000000000 6.204565054502923E-002 + 2.66600000000000 6.190853322456494E-002 + 2.66700000000000 6.177169983048995E-002 + 2.66800000000000 6.163514983336339E-002 + 2.66900000000000 6.149888270454932E-002 + 2.67000000000000 6.136289791621623E-002 + 2.67100000000000 6.122719494133626E-002 + 2.67200000000000 6.109177325368483E-002 + 2.67300000000000 6.095663232783968E-002 + 2.67400000000000 6.082177163918043E-002 + 2.67500000000000 6.068719066388790E-002 + 2.67600000000000 6.055288887894345E-002 + 2.67700000000000 6.041886576212834E-002 + 2.67800000000000 6.028512079202302E-002 + 2.67900000000000 6.015165344800656E-002 + 2.68000000000000 6.001846321025604E-002 + 2.68100000000000 5.988554955974582E-002 + 2.68200000000000 5.975291197824679E-002 + 2.68300000000000 5.962054994832596E-002 + 2.68400000000000 5.948846295334562E-002 + 2.68500000000000 5.935665047746275E-002 + 2.68600000000000 5.922511200562827E-002 + 2.68700000000000 5.909384702358652E-002 + 2.68800000000000 5.896285501787453E-002 + 2.68900000000000 5.883213547582133E-002 + 2.69000000000000 5.870168788554731E-002 + 2.69100000000000 5.857151173596353E-002 + 2.69200000000000 5.844160651677108E-002 + 2.69300000000000 5.831197171846044E-002 + 2.69400000000000 5.818260683231072E-002 + 2.69500000000000 5.805351135038907E-002 + 2.69600000000000 5.792468476554993E-002 + 2.69700000000000 5.779612657143444E-002 + 2.69800000000000 5.766783626246969E-002 + 2.69900000000000 5.753981333386806E-002 + 2.70000000000000 5.741205728162658E-002 + 2.70100000000000 5.728456760252622E-002 + 2.70200000000000 5.715734379413116E-002 + 2.70300000000000 5.703038535478819E-002 + 2.70400000000000 5.690369178362597E-002 + 2.70500000000000 5.677726258055438E-002 + 2.70600000000000 5.665109724626380E-002 + 2.70700000000000 5.652519528222438E-002 + 2.70800000000000 5.639955619068548E-002 + 2.70900000000000 5.627417947467486E-002 + 2.71000000000000 5.614906463799803E-002 + 2.71100000000000 5.602421118523754E-002 + 2.71200000000000 5.589961862175225E-002 + 2.71300000000000 5.577528645367679E-002 + 2.71400000000000 5.565121418792069E-002 + 2.71500000000000 5.552740133216771E-002 + 2.71600000000000 5.540384739487517E-002 + 2.71700000000000 5.528055188527332E-002 + 2.71800000000000 5.515751431336449E-002 + 2.71900000000000 5.503473418992248E-002 + 2.72000000000000 5.491221102649181E-002 + 2.72100000000000 5.478994433538711E-002 + 2.72200000000000 5.466793362969224E-002 + 2.72300000000000 5.454617842325975E-002 + 2.72400000000000 5.442467823071005E-002 + 2.72500000000000 5.430343256743078E-002 + 2.72600000000000 5.418244094957604E-002 + 2.72700000000000 5.406170289406572E-002 + 2.72800000000000 5.394121791858475E-002 + 2.72900000000000 5.382098554158242E-002 + 2.73000000000000 5.370100528227163E-002 + 2.73100000000000 5.358127666062817E-002 + 2.73200000000000 5.346179919738995E-002 + 2.73300000000000 5.334257241405652E-002 + 2.73400000000000 5.322359583288802E-002 + 2.73500000000000 5.310486897690466E-002 + 2.73600000000000 5.298639136988593E-002 + 2.73700000000000 5.286816253636993E-002 + 2.73800000000000 5.275018200165257E-002 + 2.73900000000000 5.263244929178685E-002 + 2.74000000000000 5.251496393358217E-002 + 2.74100000000000 5.239772545460371E-002 + 2.74200000000000 5.228073338317143E-002 + 2.74300000000000 5.216398724835954E-002 + 2.74400000000000 5.204748657999571E-002 + 2.74500000000000 5.193123090866041E-002 + 2.74600000000000 5.181521976568603E-002 + 2.74700000000000 5.169945268315627E-002 + 2.74800000000000 5.158392919390533E-002 + 2.74900000000000 5.146864883151726E-002 + 2.75000000000000 5.135361113032513E-002 + 2.75100000000000 5.123881562541030E-002 + 2.75200000000000 5.112426185260175E-002 + 2.75300000000000 5.100994934847529E-002 + 2.75400000000000 5.089587765035283E-002 + 2.75500000000000 5.078204629630164E-002 + 2.75600000000000 5.066845482513354E-002 + 2.75700000000000 5.055510277640433E-002 + 2.75800000000000 5.044198969041281E-002 + 2.75900000000000 5.032911510820025E-002 + 2.76000000000000 5.021647857154951E-002 + 2.76100000000000 5.010407962298435E-002 + 2.76200000000000 4.999191780576864E-002 + 2.76300000000000 4.987999266390564E-002 + 2.76400000000000 4.976830374213727E-002 + 2.76500000000000 4.965685058594330E-002 + 2.76600000000000 4.954563274154066E-002 + 2.76700000000000 4.943464975588265E-002 + 2.76800000000000 4.932390117665815E-002 + 2.76900000000000 4.921338655229102E-002 + 2.77000000000000 4.910310543193912E-002 + 2.77100000000000 4.899305736549377E-002 + 2.77200000000000 4.888324190357879E-002 + 2.77300000000000 4.877365859754995E-002 + 2.77400000000000 4.866430699949404E-002 + 2.77500000000000 4.855518666222824E-002 + 2.77600000000000 4.844629713929923E-002 + 2.77700000000000 4.833763798498256E-002 + 2.77800000000000 4.822920875428179E-002 + 2.77900000000000 4.812100900292780E-002 + 2.78000000000000 4.801303828737797E-002 + 2.78100000000000 4.790529616481547E-002 + 2.78200000000000 4.779778219314846E-002 + 2.78300000000000 4.769049593100929E-002 + 2.78400000000000 4.758343693775382E-002 + 2.78500000000000 4.747660477346063E-002 + 2.78600000000000 4.736999899893023E-002 + 2.78700000000000 4.726361917568426E-002 + 2.78800000000000 4.715746486596476E-002 + 2.78900000000000 4.705153563273351E-002 + 2.79000000000000 4.694583103967099E-002 + 2.79100000000000 4.684035065117590E-002 + 2.79200000000000 4.673509403236419E-002 + 2.79300000000000 4.663006074906844E-002 + 2.79400000000000 4.652525036783690E-002 + 2.79500000000000 4.642066245593292E-002 + 2.79600000000000 4.631629658133404E-002 + 2.79700000000000 4.621215231273131E-002 + 2.79800000000000 4.610822921952838E-002 + 2.79900000000000 4.600452687184090E-002 + 2.80000000000000 4.590104484049563E-002 + 2.80100000000000 4.579778269702963E-002 + 2.80200000000000 4.569474001368965E-002 + 2.80300000000000 4.559191636343116E-002 + 2.80400000000000 4.548931131991774E-002 + 2.80500000000000 4.538692445752014E-002 + 2.80600000000000 4.528475535131563E-002 + 2.80700000000000 4.518280357708717E-002 + 2.80800000000000 4.508106871132263E-002 + 2.80900000000000 4.497955033121404E-002 + 2.81000000000000 4.487824801465670E-002 + 2.81100000000000 4.477716134024860E-002 + 2.81200000000000 4.467628988728941E-002 + 2.81300000000000 4.457563323577990E-002 + 2.81400000000000 4.447519096642102E-002 + 2.81500000000000 4.437496266061316E-002 + 2.81600000000000 4.427494790045539E-002 + 2.81700000000000 4.417514626874462E-002 + 2.81800000000000 4.407555734897491E-002 + 2.81900000000000 4.397618072533656E-002 + 2.82000000000000 4.387701598271544E-002 + 2.82100000000000 4.377806270669209E-002 + 2.82200000000000 4.367932048354108E-002 + 2.82300000000000 4.358078890023009E-002 + 2.82400000000000 4.348246754441918E-002 + 2.82500000000000 4.338435600445999E-002 + 2.82600000000000 4.328645386939500E-002 + 2.82700000000000 4.318876072895663E-002 + 2.82800000000000 4.309127617356658E-002 + 2.82900000000000 4.299399979433494E-002 + 2.83000000000000 4.289693118305948E-002 + 2.83100000000000 4.280006993222480E-002 + 2.83200000000000 4.270341563500154E-002 + 2.83300000000000 4.260696788524565E-002 + 2.83400000000000 4.251072627749757E-002 + 2.83500000000000 4.241469040698137E-002 + 2.83600000000000 4.231885986960404E-002 + 2.83700000000000 4.222323426195469E-002 + 2.83800000000000 4.212781318130375E-002 + 2.83900000000000 4.203259622560211E-002 + 2.84000000000000 4.193758299348046E-002 + 2.84100000000000 4.184277308424836E-002 + 2.84200000000000 4.174816609789357E-002 + 2.84300000000000 4.165376163508114E-002 + 2.84400000000000 4.155955929715272E-002 + 2.84500000000000 4.146555868612563E-002 + 2.84600000000000 4.137175940469225E-002 + 2.84700000000000 4.127816105621907E-002 + 2.84800000000000 4.118476324474594E-002 + 2.84900000000000 4.109156557498532E-002 + 2.85000000000000 4.099856765232143E-002 + 2.85100000000000 4.090576908280943E-002 + 2.85200000000000 4.081316947317477E-002 + 2.85300000000000 4.072076843081215E-002 + 2.85400000000000 4.062856556378500E-002 + 2.85500000000000 4.053656048082443E-002 + 2.85600000000000 4.044475279132859E-002 + 2.85700000000000 4.035314210536182E-002 + 2.85800000000000 4.026172803365391E-002 + 2.85900000000000 4.017051018759917E-002 + 2.86000000000000 4.007948817925574E-002 + 2.86100000000000 3.998866162134477E-002 + 2.86200000000000 3.989803012724964E-002 + 2.86300000000000 3.980759331101509E-002 + 2.86400000000000 3.971735078734651E-002 + 2.86500000000000 3.962730217160906E-002 + 2.86600000000000 3.953744707982692E-002 + 2.86700000000000 3.944778512868249E-002 + 2.86800000000000 3.935831593551555E-002 + 2.86900000000000 3.926903911832251E-002 + 2.87000000000000 3.917995429575558E-002 + 2.87100000000000 3.909106108712197E-002 + 2.87200000000000 3.900235911238310E-002 + 2.87300000000000 3.891384799215378E-002 + 2.87400000000000 3.882552734770150E-002 + 2.87500000000000 3.873739680094544E-002 + 2.87600000000000 3.864945597445583E-002 + 2.87700000000000 3.856170449145312E-002 + 2.87800000000000 3.847414197580714E-002 + 2.87900000000000 3.838676805203631E-002 + 2.88000000000000 3.829958234530686E-002 + 2.88100000000000 3.821258448143198E-002 + 2.88200000000000 3.812577408687112E-002 + 2.88300000000000 3.803915078872906E-002 + 2.88400000000000 3.795271421475521E-002 + 2.88500000000000 3.786646399334266E-002 + 2.88600000000000 3.778039975352764E-002 + 2.88700000000000 3.769452112498844E-002 + 2.88800000000000 3.760882773804480E-002 + 2.88900000000000 3.752331922365699E-002 + 2.89000000000000 3.743799521342508E-002 + 2.89100000000000 3.735285533958809E-002 + 2.89200000000000 3.726789923502323E-002 + 2.89300000000000 3.718312653324504E-002 + 2.89400000000000 3.709853686840467E-002 + 2.89500000000000 3.701412987528901E-002 + 2.89600000000000 3.692990518931988E-002 + 2.89700000000000 3.684586244655327E-002 + 2.89800000000000 3.676200128367855E-002 + 2.89900000000000 3.667832133801761E-002 + 2.90000000000000 3.659482224752408E-002 + 2.90100000000000 3.651150365078255E-002 + 2.90200000000000 3.642836518700775E-002 + 2.90300000000000 3.634540649604373E-002 + 2.90400000000000 3.626262721836308E-002 + 2.90500000000000 3.618002699506612E-002 + 2.90600000000000 3.609760546788011E-002 + 2.90700000000000 3.601536227915843E-002 + 2.90800000000000 3.593329707187975E-002 + 2.90900000000000 3.585140948964732E-002 + 2.91000000000000 3.576969917668806E-002 + 2.91100000000000 3.568816577785184E-002 + 2.91200000000000 3.560680893861060E-002 + 2.91300000000000 3.552562830505759E-002 + 2.91400000000000 3.544462352390661E-002 + 2.91500000000000 3.536379424249113E-002 + 2.91600000000000 3.528314010876350E-002 + 2.91700000000000 3.520266077129421E-002 + 2.91800000000000 3.512235587927104E-002 + 2.91900000000000 3.504222508249825E-002 + 2.92000000000000 3.496226803139579E-002 + 2.92100000000000 3.488248437699849E-002 + 2.92200000000000 3.480287377095530E-002 + 2.92300000000000 3.472343586552841E-002 + 2.92400000000000 3.464417031359254E-002 + 2.92500000000000 3.456507676863405E-002 + 2.92600000000000 3.448615488475022E-002 + 2.92700000000000 3.440740431664836E-002 + 2.92800000000000 3.432882471964509E-002 + 2.92900000000000 3.425041574966549E-002 + 2.93000000000000 3.417217706324235E-002 + 2.93100000000000 3.409410831751526E-002 + 2.93200000000000 3.401620917022991E-002 + 2.93300000000000 3.393847927973729E-002 + 2.93400000000000 3.386091830499288E-002 + 2.93500000000000 3.378352590555575E-002 + 2.93600000000000 3.370630174158788E-002 + 2.93700000000000 3.362924547385331E-002 + 2.93800000000000 3.355235676371735E-002 + 2.93900000000000 3.347563527314580E-002 + 2.94000000000000 3.339908066470411E-002 + 2.94100000000000 3.332269260155656E-002 + 2.94200000000000 3.324647074746556E-002 + 2.94300000000000 3.317041476679076E-002 + 2.94400000000000 3.309452432448828E-002 + 2.94500000000000 3.301879908610990E-002 + 2.94600000000000 3.294323871780230E-002 + 2.94700000000000 3.286784288630621E-002 + 2.94800000000000 3.279261125895561E-002 + 2.94900000000000 3.271754350367703E-002 + 2.95000000000000 3.264263928898859E-002 + 2.95100000000000 3.256789828399936E-002 + 2.95200000000000 3.249332015840845E-002 + 2.95300000000000 3.241890458250427E-002 + 2.95400000000000 3.234465122716369E-002 + 2.95500000000000 3.227055976385133E-002 + 2.95600000000000 3.219662986461866E-002 + 2.95700000000000 3.212286120210322E-002 + 2.95800000000000 3.204925344952788E-002 + 2.95900000000000 3.197580628070005E-002 + 2.96000000000000 3.190251937001078E-002 + 2.96100000000000 3.182939239243407E-002 + 2.96200000000000 3.175642502352603E-002 + 2.96300000000000 3.168361693942408E-002 + 2.96400000000000 3.161096781684616E-002 + 2.96500000000000 3.153847733308998E-002 + 2.96600000000000 3.146614516603213E-002 + 2.96700000000000 3.139397099412736E-002 + 2.96800000000000 3.132195449640779E-002 + 2.96900000000000 3.125009535248208E-002 + 2.97000000000000 3.117839324253465E-002 + 2.97100000000000 3.110684784732487E-002 + 2.97200000000000 3.103545884818631E-002 + 2.97300000000000 3.096422592702590E-002 + 2.97400000000000 3.089314876632316E-002 + 2.97500000000000 3.082222704912941E-002 + 2.97600000000000 3.075146045906699E-002 + 2.97700000000000 3.068084868032840E-002 + 2.97800000000000 3.061039139767564E-002 + 2.97900000000000 3.054008829643927E-002 + 2.98000000000000 3.046993906251771E-002 + 2.98100000000000 3.039994338237646E-002 + 2.98200000000000 3.033010094304721E-002 + 2.98300000000000 3.026041143212720E-002 + 2.98400000000000 3.019087453777830E-002 + 2.98500000000000 3.012148994872626E-002 + 2.98600000000000 3.005225735425996E-002 + 2.98700000000000 2.998317644423059E-002 + 2.98800000000000 2.991424690905083E-002 + 2.98900000000000 2.984546843969414E-002 + 2.99000000000000 2.977684072769390E-002 + 2.99100000000000 2.970836346514266E-002 + 2.99200000000000 2.964003634469134E-002 + 2.99300000000000 2.957185905954846E-002 + 2.99400000000000 2.950383130347931E-002 + 2.99500000000000 2.943595277080525E-002 + 2.99600000000000 2.936822315640281E-002 + 2.99700000000000 2.930064215570299E-002 + 2.99800000000000 2.923320946469045E-002 + 2.99900000000000 2.916592477990272E-002 + 3.00000000000000 2.909878779842943E-002 + 3.00100000000000 2.903179821791152E-002 + 3.00200000000000 2.896495573654042E-002 + 3.00300000000000 2.889826005305733E-002 + 3.00400000000000 2.883171086675240E-002 + 3.00500000000000 2.876530787746396E-002 + 3.00600000000000 2.869905078557771E-002 + 3.00700000000000 2.863293929202600E-002 + 3.00800000000000 2.856697309828698E-002 + 3.00900000000000 2.850115190638388E-002 + 3.01000000000000 2.843547541888413E-002 + 3.01100000000000 2.836994333889873E-002 + 3.01200000000000 2.830455537008134E-002 + 3.01300000000000 2.823931121662758E-002 + 3.01400000000000 2.817421058327418E-002 + 3.01500000000000 2.810925317529829E-002 + 3.01600000000000 2.804443869851662E-002 + 3.01700000000000 2.797976685928471E-002 + 3.01800000000000 2.791523736449614E-002 + 3.01900000000000 2.785084992158176E-002 + 3.02000000000000 2.778660423850888E-002 + 3.02100000000000 2.772250002378053E-002 + 3.02200000000000 2.765853698643470E-002 + 3.02300000000000 2.759471483604351E-002 + 3.02400000000000 2.753103328271246E-002 + 3.02500000000000 2.746749203707971E-002 + 3.02600000000000 2.740409081031518E-002 + 3.02700000000000 2.734082931411992E-002 + 3.02800000000000 2.727770726072525E-002 + 3.02900000000000 2.721472436289196E-002 + 3.03000000000000 2.715188033390963E-002 + 3.03100000000000 2.708917488759583E-002 + 3.03200000000000 2.702660773829532E-002 + 3.03300000000000 2.696417860087925E-002 + 3.03400000000000 2.690188719074447E-002 + 3.03500000000000 2.683973322381272E-002 + 3.03600000000000 2.677771641652984E-002 + 3.03700000000000 2.671583648586505E-002 + 3.03800000000000 2.665409314931011E-002 + 3.03900000000000 2.659248612487866E-002 + 3.04000000000000 2.653101513110532E-002 + 3.04100000000000 2.646967988704505E-002 + 3.04200000000000 2.640848011227228E-002 + 3.04300000000000 2.634741552688020E-002 + 3.04400000000000 2.628648585148000E-002 + 3.04500000000000 2.622569080720007E-002 + 3.04600000000000 2.616503011568524E-002 + 3.04700000000000 2.610450349909606E-002 + 3.04800000000000 2.604411068010798E-002 + 3.04900000000000 2.598385138191062E-002 + 3.05000000000000 2.592372532820698E-002 + 3.05100000000000 2.586373224321273E-002 + 3.05200000000000 2.580387185165537E-002 + 3.05300000000000 2.574414387877356E-002 + 3.05400000000000 2.568454805031626E-002 + 3.05500000000000 2.562508409254206E-002 + 3.05600000000000 2.556575173221836E-002 + 3.05700000000000 2.550655069662065E-002 + 3.05800000000000 2.544748071353169E-002 + 3.05900000000000 2.538854151124086E-002 + 3.06000000000000 2.532973281854327E-002 + 3.06100000000000 2.527105436473912E-002 + 3.06200000000000 2.521250587963284E-002 + 3.06300000000000 2.515408709353245E-002 + 3.06400000000000 2.509579773724869E-002 + 3.06500000000000 2.503763754209433E-002 + 3.06600000000000 2.497960623988339E-002 + 3.06700000000000 2.492170356293043E-002 + 3.06800000000000 2.486392924404971E-002 + 3.06900000000000 2.480628301655453E-002 + 3.07000000000000 2.474876461425640E-002 + 3.07100000000000 2.469137377146435E-002 + 3.07200000000000 2.463411022298417E-002 + 3.07300000000000 2.457697370411758E-002 + 3.07400000000000 2.451996395066160E-002 + 3.07500000000000 2.446308069890770E-002 + 3.07600000000000 2.440632368564113E-002 + 3.07700000000000 2.434969264814008E-002 + 3.07800000000000 2.429318732417503E-002 + 3.07900000000000 2.423680745200793E-002 + 3.08000000000000 2.418055277039150E-002 + 3.08100000000000 2.412442301856844E-002 + 3.08200000000000 2.406841793627072E-002 + 3.08300000000000 2.401253726371879E-002 + 3.08400000000000 2.395678074162092E-002 + 3.08500000000000 2.390114811117235E-002 + 3.08600000000000 2.384563911405462E-002 + 3.08700000000000 2.379025349243480E-002 + 3.08800000000000 2.373499098896474E-002 + 3.08900000000000 2.367985134678036E-002 + 3.09000000000000 2.362483430950086E-002 + 3.09100000000000 2.356993962122801E-002 + 3.09200000000000 2.351516702654544E-002 + 3.09300000000000 2.346051627051781E-002 + 3.09400000000000 2.340598709869017E-002 + 3.09500000000000 2.335157925708715E-002 + 3.09600000000000 2.329729249221226E-002 + 3.09700000000000 2.324312655104713E-002 + 3.09800000000000 2.318908118105081E-002 + 3.09900000000000 2.313515613015895E-002 + 3.10000000000000 2.308135114678319E-002 + 3.10100000000000 2.302766597981033E-002 + 3.10200000000000 2.297410037860159E-002 + 3.10300000000000 2.292065409299193E-002 + 3.10400000000000 2.286732687328932E-002 + 3.10500000000000 2.281411847027394E-002 + 3.10600000000000 2.276102863519752E-002 + 3.10700000000000 2.270805711978253E-002 + 3.10800000000000 2.265520367622154E-002 + 3.10900000000000 2.260246805717643E-002 + 3.11000000000000 2.254985001577767E-002 + 3.11100000000000 2.249734930562360E-002 + 3.11200000000000 2.244496568077969E-002 + 3.11300000000000 2.239269889577783E-002 + 3.11400000000000 2.234054870561558E-002 + 3.11500000000000 2.228851486575545E-002 + 3.11600000000000 2.223659713212419E-002 + 3.11700000000000 2.218479526111205E-002 + 3.11800000000000 2.213310900957205E-002 + 3.11900000000000 2.208153813481925E-002 + 3.12000000000000 2.203008239463007E-002 + 3.12100000000000 2.197874154724151E-002 + 3.12200000000000 2.192751535135044E-002 + 3.12300000000000 2.187640356611293E-002 + 3.12400000000000 2.182540595114346E-002 + 3.12500000000000 2.177452226651425E-002 + 3.12600000000000 2.172375227275448E-002 + 3.12700000000000 2.167309573084965E-002 + 3.12800000000000 2.162255240224079E-002 + 3.12900000000000 2.157212204882378E-002 + 3.13000000000000 2.152180443294864E-002 + 3.13100000000000 2.147159931741875E-002 + 3.13200000000000 2.142150646549024E-002 + 3.13300000000000 2.137152564087118E-002 + 3.13400000000000 2.132165660772090E-002 + 3.13500000000000 2.127189913064928E-002 + 3.13600000000000 2.122225297471603E-002 + 3.13700000000000 2.117271790542999E-002 + 3.13800000000000 2.112329368874837E-002 + 3.13900000000000 2.107398009107610E-002 + 3.14000000000000 2.102477687926511E-002 + 3.14100000000000 2.097568382061357E-002 + 3.14200000000000 2.092670068286520E-002 + 3.14300000000000 2.087782723420862E-002 + 3.14400000000000 2.082906324327656E-002 + 3.14500000000000 2.078040847914519E-002 + 3.14600000000000 2.073186271133339E-002 + 3.14700000000000 2.068342570980211E-002 + 3.14800000000000 2.063509724495357E-002 + 3.14900000000000 2.058687708763062E-002 + 3.15000000000000 2.053876500911600E-002 + 3.15100000000000 2.049076078113168E-002 + 3.15200000000000 2.044286417583809E-002 + 3.15300000000000 2.039507496583349E-002 + 3.15400000000000 2.034739292415320E-002 + 3.15500000000000 2.029981782426895E-002 + 3.15600000000000 2.025234944008818E-002 + 3.15700000000000 2.020498754595326E-002 + 3.15800000000000 2.015773191664091E-002 + 3.15900000000000 2.011058232736140E-002 + 3.16000000000000 2.006353855375794E-002 + 3.16100000000000 2.001660037190589E-002 + 3.16200000000000 1.996976755831214E-002 + 3.16300000000000 1.992303988991435E-002 + 3.16400000000000 1.987641714408033E-002 + 3.16500000000000 1.982989909860728E-002 + 3.16600000000000 1.978348553172111E-002 + 3.16700000000000 1.973717622207576E-002 + 3.16800000000000 1.969097094875254E-002 + 3.16900000000000 1.964486949125934E-002 + 3.17000000000000 1.959887162953004E-002 + 3.17100000000000 1.955297714392376E-002 + 3.17200000000000 1.950718581522421E-002 + 3.17300000000000 1.946149742463895E-002 + 3.17400000000000 1.941591175379874E-002 + 3.17500000000000 1.937042858475686E-002 + 3.17600000000000 1.932504769998839E-002 + 3.17700000000000 1.927976888238954E-002 + 3.17800000000000 1.923459191527695E-002 + 3.17900000000000 1.918951658238702E-002 + 3.18000000000000 1.914454266787527E-002 + 3.18100000000000 1.909966995631553E-002 + 3.18200000000000 1.905489823269940E-002 + 3.18300000000000 1.901022728243546E-002 + 3.18400000000000 1.896565689134866E-002 + 3.18500000000000 1.892118684567961E-002 + 3.18600000000000 1.887681693208386E-002 + 3.18700000000000 1.883254693763130E-002 + 3.18800000000000 1.878837664980543E-002 + 3.18900000000000 1.874430585650270E-002 + 3.19000000000000 1.870033434603180E-002 + 3.19100000000000 1.865646190711303E-002 + 3.19200000000000 1.861268832887759E-002 + 3.19300000000000 1.856901340086692E-002 + 3.19400000000000 1.852543691303202E-002 + 3.19500000000000 1.848195865573279E-002 + 3.19600000000000 1.843857841973731E-002 + 3.19700000000000 1.839529599622123E-002 + 3.19800000000000 1.835211117676706E-002 + 3.19900000000000 1.830902375336350E-002 + 3.20000000000000 1.826603351840479E-002 + 3.20100000000000 1.822314026469002E-002 + 3.20200000000000 1.818034378542246E-002 + 3.20300000000000 1.813764387420891E-002 + 3.20400000000000 1.809504032505901E-002 + 3.20500000000000 1.805253293238461E-002 + 3.20600000000000 1.801012149099902E-002 + 3.20700000000000 1.796780579611647E-002 + 3.20800000000000 1.792558564335132E-002 + 3.20900000000000 1.788346082871748E-002 + 3.21000000000000 1.784143114862774E-002 + 3.21100000000000 1.779949639989304E-002 + 3.21200000000000 1.775765637972188E-002 + 3.21300000000000 1.771591088571962E-002 + 3.21400000000000 1.767425971588786E-002 + 3.21500000000000 1.763270266862370E-002 + 3.21600000000000 1.759123954271918E-002 + 3.21700000000000 1.754987013736055E-002 + 3.21800000000000 1.750859425212764E-002 + 3.21900000000000 1.746741168699321E-002 + 3.22000000000000 1.742632224232225E-002 + 3.22100000000000 1.738532571887141E-002 + 3.22200000000000 1.734442191778823E-002 + 3.22300000000000 1.730361064061059E-002 + 3.22400000000000 1.726289168926599E-002 + 3.22500000000000 1.722226486607095E-002 + 3.22600000000000 1.718172997373029E-002 + 3.22700000000000 1.714128681533655E-002 + 3.22800000000000 1.710093519436928E-002 + 3.22900000000000 1.706067491469445E-002 + 3.23000000000000 1.702050578056374E-002 + 3.23100000000000 1.698042759661392E-002 + 3.23200000000000 1.694044016786621E-002 + 3.23300000000000 1.690054329972562E-002 + 3.23400000000000 1.686073679798031E-002 + 3.23500000000000 1.682102046880095E-002 + 3.23600000000000 1.678139411874004E-002 + 3.23700000000000 1.674185755473134E-002 + 3.23800000000000 1.670241058408913E-002 + 3.23900000000000 1.666305301450765E-002 + 3.24000000000000 1.662378465406040E-002 + 3.24100000000000 1.658460531119955E-002 + 3.24200000000000 1.654551479475526E-002 + 3.24300000000000 1.650651291393506E-002 + 3.24400000000000 1.646759947832318E-002 + 3.24500000000000 1.642877429787997E-002 + 3.24600000000000 1.639003718294123E-002 + 3.24700000000000 1.635138794421753E-002 + 3.24800000000000 1.631282639279365E-002 + 3.24900000000000 1.627435234012791E-002 + 3.25000000000000 1.623596559805153E-002 + 3.25100000000000 1.619766597876800E-002 + 3.25200000000000 1.615945329485243E-002 + 3.25300000000000 1.612132735925098E-002 + 3.25400000000000 1.608328798528015E-002 + 3.25500000000000 1.604533498662620E-002 + 3.25600000000000 1.600746817734448E-002 + 3.25700000000000 1.596968737185886E-002 + 3.25800000000000 1.593199238496103E-002 + 3.25900000000000 1.589438303180994E-002 + 3.26000000000000 1.585685912793111E-002 + 3.26100000000000 1.581942048921605E-002 + 3.26200000000000 1.578206693192162E-002 + 3.26300000000000 1.574479827266939E-002 + 3.26400000000000 1.570761432844502E-002 + 3.26500000000000 1.567051491659769E-002 + 3.26600000000000 1.563349985483936E-002 + 3.26700000000000 1.559656896124430E-002 + 3.26800000000000 1.555972205424832E-002 + 3.26900000000000 1.552295895264826E-002 + 3.27000000000000 1.548627947560130E-002 + 3.27100000000000 1.544968344262439E-002 + 3.27200000000000 1.541317067359360E-002 + 3.27300000000000 1.537674098874351E-002 + 3.27400000000000 1.534039420866661E-002 + 3.27500000000000 1.530413015431265E-002 + 3.27600000000000 1.526794864698804E-002 + 3.27700000000000 1.523184950835526E-002 + 3.27800000000000 1.519583256043223E-002 + 3.27900000000000 1.515989762559166E-002 + 3.28000000000000 1.512404452656048E-002 + 3.28100000000000 1.508827308641925E-002 + 3.28200000000000 1.505258312860147E-002 + 3.28300000000000 1.501697447689306E-002 + 3.28400000000000 1.498144695543165E-002 + 3.28500000000000 1.494600038870610E-002 + 3.28600000000000 1.491063460155577E-002 + 3.28700000000000 1.487534941916997E-002 + 3.28800000000000 1.484014466708735E-002 + 3.28900000000000 1.480502017119530E-002 + 3.29000000000000 1.476997575772933E-002 + 3.29100000000000 1.473501125327247E-002 + 3.29200000000000 1.470012648475466E-002 + 3.29300000000000 1.466532127945218E-002 + 3.29400000000000 1.463059546498699E-002 + 3.29500000000000 1.459594886932617E-002 + 3.29600000000000 1.456138132078134E-002 + 3.29700000000000 1.452689264800800E-002 + 3.29800000000000 1.449248268000497E-002 + 3.29900000000000 1.445815124611379E-002 + 3.30000000000000 1.442389817601811E-002 + 3.30100000000000 1.438972329974311E-002 + 3.30200000000000 1.435562644765486E-002 + 3.30300000000000 1.432160745045981E-002 + 3.30400000000000 1.428766613920410E-002 + 3.30500000000000 1.425380234527303E-002 + 3.30600000000000 1.422001590039045E-002 + 3.30700000000000 1.418630663661815E-002 + 3.30800000000000 1.415267438635529E-002 + 3.30900000000000 1.411911898233780E-002 + 3.31000000000000 1.408564025763781E-002 + 3.31100000000000 1.405223804566300E-002 + 3.31200000000000 1.401891218015610E-002 + 3.31300000000000 1.398566249519423E-002 + 3.31400000000000 1.395248882518835E-002 + 3.31500000000000 1.391939100488264E-002 + 3.31600000000000 1.388636886935397E-002 + 3.31700000000000 1.385342225401125E-002 + 3.31800000000000 1.382055099459491E-002 + 3.31900000000000 1.378775492717627E-002 + 3.32000000000000 1.375503388815695E-002 + 3.32100000000000 1.372238771426834E-002 + 3.32200000000000 1.368981624257099E-002 + 3.32300000000000 1.365731931045401E-002 + 3.32400000000000 1.362489675563451E-002 + 3.32500000000000 1.359254841615705E-002 + 3.32600000000000 1.356027413039300E-002 + 3.32700000000000 1.352807373703999E-002 + 3.32800000000000 1.349594707512136E-002 + 3.32900000000000 1.346389398398556E-002 + 3.33000000000000 1.343191430330558E-002 + 3.33100000000000 1.340000787307835E-002 + 3.33200000000000 1.336817453362420E-002 + 3.33300000000000 1.333641412558629E-002 + 3.33400000000000 1.330472648993002E-002 + 3.33500000000000 1.327311146794244E-002 + 3.33600000000000 1.324156890123173E-002 + 3.33700000000000 1.321009863172658E-002 + 3.33800000000000 1.317870050167567E-002 + 3.33900000000000 1.314737435364706E-002 + 3.34000000000000 1.311612003052762E-002 + 3.34100000000000 1.308493737552250E-002 + 3.34200000000000 1.305382623215455E-002 + 3.34300000000000 1.302278644426373E-002 + 3.34400000000000 1.299181785600659E-002 + 3.34500000000000 1.296092031185564E-002 + 3.34600000000000 1.293009365659886E-002 + 3.34700000000000 1.289933773533909E-002 + 3.34800000000000 1.286865239349350E-002 + 3.34900000000000 1.283803747679299E-002 + 3.35000000000000 1.280749283128167E-002 + 3.35100000000000 1.277701830331627E-002 + 3.35200000000000 1.274661373956559E-002 + 3.35300000000000 1.271627898700997E-002 + 3.35400000000000 1.268601389294068E-002 + 3.35500000000000 1.265581830495942E-002 + 3.35600000000000 1.262569207097770E-002 + 3.35700000000000 1.259563503921636E-002 + 3.35800000000000 1.256564705820497E-002 + 3.35900000000000 1.253572797678126E-002 + 3.36000000000000 1.250587764409061E-002 + 3.36100000000000 1.247609590958547E-002 + 3.36200000000000 1.244638262302485E-002 + 3.36300000000000 1.241673763447369E-002 + 3.36400000000000 1.238716079430239E-002 + 3.36500000000000 1.235765195318622E-002 + 3.36600000000000 1.232821096210478E-002 + 3.36700000000000 1.229883767234147E-002 + 3.36800000000000 1.226953193548290E-002 + 3.36900000000000 1.224029360341838E-002 + 3.37000000000000 1.221112252833938E-002 + 3.37100000000000 1.218201856273895E-002 + 3.37200000000000 1.215298155941122E-002 + 3.37300000000000 1.212401137145081E-002 + 3.37400000000000 1.209510785225234E-002 + 3.37500000000000 1.206627085550984E-002 + 3.37600000000000 1.203750023521624E-002 + 3.37700000000000 1.200879584566281E-002 + 3.37800000000000 1.198015754143863E-002 + 3.37900000000000 1.195158517743008E-002 + 3.38000000000000 1.192307860882024E-002 + 3.38100000000000 1.189463769108841E-002 + 3.38200000000000 1.186626228000954E-002 + 3.38300000000000 1.183795223165370E-002 + 3.38400000000000 1.180970740238557E-002 + 3.38500000000000 1.178152764886387E-002 + 3.38600000000000 1.175341282804085E-002 + 3.38700000000000 1.172536279716176E-002 + 3.38800000000000 1.169737741376429E-002 + 3.38900000000000 1.166945653567806E-002 + 3.39000000000000 1.164160002102411E-002 + 3.39100000000000 1.161380772821433E-002 + 3.39200000000000 1.158607951595095E-002 + 3.39300000000000 1.155841524322601E-002 + 3.39400000000000 1.153081476932084E-002 + 3.39500000000000 1.150327795380552E-002 + 3.39600000000000 1.147580465653837E-002 + 3.39700000000000 1.144839473766540E-002 + 3.39800000000000 1.142104805761982E-002 + 3.39900000000000 1.139376447712149E-002 + 3.40000000000000 1.136654385717640E-002 + 3.40100000000000 1.133938605907615E-002 + 3.40200000000000 1.131229094439746E-002 + 3.40300000000000 1.128525837500157E-002 + 3.40400000000000 1.125828821303381E-002 + 3.40500000000000 1.123138032092303E-002 + 3.40600000000000 1.120453456138108E-002 + 3.40700000000000 1.117775079740234E-002 + 3.40800000000000 1.115102889226312E-002 + 3.40900000000000 1.112436870952121E-002 + 3.41000000000000 1.109777011301538E-002 + 3.41100000000000 1.107123296686477E-002 + 3.41200000000000 1.104475713546848E-002 + 3.41300000000000 1.101834248350501E-002 + 3.41400000000000 1.099198887593172E-002 + 3.41500000000000 1.096569617798438E-002 + 3.41600000000000 1.093946425517662E-002 + 3.41700000000000 1.091329297329942E-002 + 3.41800000000000 1.088718219842061E-002 + 3.41900000000000 1.086113179688436E-002 + 3.42000000000000 1.083514163531068E-002 + 3.42100000000000 1.080921158059487E-002 + 3.42200000000000 1.078334149990710E-002 + 3.42300000000000 1.075753126069179E-002 + 3.42400000000000 1.073178073066719E-002 + 3.42500000000000 1.070608977782487E-002 + 3.42600000000000 1.068045827042918E-002 + 3.42700000000000 1.065488607701674E-002 + 3.42800000000000 1.062937306639598E-002 + 3.42900000000000 1.060391910764664E-002 + 3.43000000000000 1.057852407011921E-002 + 3.43100000000000 1.055318782343449E-002 + 3.43200000000000 1.052791023748306E-002 + 3.43300000000000 1.050269118242480E-002 + 3.43400000000000 1.047753052868835E-002 + 3.43500000000000 1.045242814697069E-002 + 3.43600000000000 1.042738390823656E-002 + 3.43700000000000 1.040239768371800E-002 + 3.43800000000000 1.037746934491391E-002 + 3.43900000000000 1.035259876358943E-002 + 3.44000000000000 1.032778581177556E-002 + 3.44100000000000 1.030303036176861E-002 + 3.44200000000000 1.027833228612974E-002 + 3.44300000000000 1.025369145768443E-002 + 3.44400000000000 1.022910774952202E-002 + 3.44500000000000 1.020458103499522E-002 + 3.44600000000000 1.018011118771959E-002 + 3.44700000000000 1.015569808157309E-002 + 3.44800000000000 1.013134159069558E-002 + 3.44900000000000 1.010704158948829E-002 + 3.45000000000000 1.008279795261343E-002 + 3.45100000000000 1.005861055499358E-002 + 3.45200000000000 1.003447927181133E-002 + 3.45300000000000 1.001040397850869E-002 + 3.45400000000000 9.986384550786683E-003 + 3.45500000000000 9.962420864604813E-003 + 3.45600000000000 9.938512796180609E-003 + 3.45700000000000 9.914660221989138E-003 + 3.45800000000000 9.890863018762516E-003 + 3.45900000000000 9.867121063489435E-003 + 3.46000000000000 9.843434233414695E-003 + 3.46100000000000 9.819802406038690E-003 + 3.46200000000000 9.796225459116974E-003 + 3.46300000000000 9.772703270659756E-003 + 3.46400000000000 9.749235718931430E-003 + 3.46500000000000 9.725822682450104E-003 + 3.46600000000000 9.702464039987117E-003 + 3.46700000000000 9.679159670566569E-003 + 3.46800000000000 9.655909453464855E-003 + 3.46900000000000 9.632713268210170E-003 + 3.47000000000000 9.609570994582064E-003 + 3.47100000000000 9.586482512610959E-003 + 3.47200000000000 9.563447702577667E-003 + 3.47300000000000 9.540466445012932E-003 + 3.47400000000000 9.517538620696972E-003 + 3.47500000000000 9.494664110658985E-003 + 3.47600000000000 9.471842796176695E-003 + 3.47700000000000 9.449074558775888E-003 + 3.47800000000000 9.426359280229933E-003 + 3.47900000000000 9.403696842559340E-003 + 3.48000000000000 9.381087128031257E-003 + 3.48100000000000 9.358530019159046E-003 + 3.48200000000000 9.336025398701786E-003 + 3.48300000000000 9.313573149663844E-003 + 3.48400000000000 9.291173155294378E-003 + 3.48500000000000 9.268825299086902E-003 + 3.48600000000000 9.246529464778802E-003 + 3.48700000000000 9.224285536350907E-003 + 3.48800000000000 9.202093398026995E-003 + 3.48900000000000 9.179952934273358E-003 + 3.49000000000000 9.157864029798330E-003 + 3.49100000000000 9.135826569551848E-003 + 3.49200000000000 9.113840438724973E-003 + 3.49300000000000 9.091905522749445E-003 + 3.49400000000000 9.070021707297239E-003 + 3.49500000000000 9.048188878280086E-003 + 3.49600000000000 9.026406921849039E-003 + 3.49700000000000 9.004675724394010E-003 + 3.49800000000000 8.982995172543319E-003 + 3.49900000000000 8.961365153163254E-003 + 3.50000000000000 8.939785553357605E-003 + 3.50100000000000 8.918256260467210E-003 + 3.50200000000000 8.896777162069524E-003 + 3.50300000000000 8.875348145978162E-003 + 3.50400000000000 8.853969100242436E-003 + 3.50500000000000 8.832639913146935E-003 + 3.50600000000000 8.811360473211049E-003 + 3.50700000000000 8.790130669188557E-003 + 3.50800000000000 8.768950390067146E-003 + 3.50900000000000 8.747819525067988E-003 + 3.51000000000000 8.726737963645289E-003 + 3.51100000000000 8.705705595485849E-003 + 3.51200000000000 8.684722310508619E-003 + 3.51300000000000 8.663787998864247E-003 + 3.51400000000000 8.642902550934662E-003 + 3.51500000000000 8.622065857332602E-003 + 3.51600000000000 8.601277808901207E-003 + 3.51700000000000 8.580538296713552E-003 + 3.51800000000000 8.559847212072218E-003 + 3.51900000000000 8.539204446508864E-003 + 3.52000000000000 8.518609891783780E-003 + 3.52100000000000 8.498063439885449E-003 + 3.52200000000000 8.477564983030109E-003 + 3.52300000000000 8.457114413661338E-003 + 3.52400000000000 8.436711624449589E-003 + 3.52500000000000 8.416356508291785E-003 + 3.52600000000000 8.396048958310864E-003 + 3.52700000000000 8.375788867855363E-003 + 3.52800000000000 8.355576130498974E-003 + 3.52900000000000 8.335410640040113E-003 + 3.53000000000000 8.315292290501501E-003 + 3.53100000000000 8.295220976129733E-003 + 3.53200000000000 8.275196591394829E-003 + 3.53300000000000 8.255219030989837E-003 + 3.53400000000000 8.235288189830374E-003 + 3.53500000000000 8.215403963054226E-003 + 3.53600000000000 8.195566246020903E-003 + 3.53700000000000 8.175774934311224E-003 + 3.53800000000000 8.156029923726880E-003 + 3.53900000000000 8.136331110290031E-003 + 3.54000000000000 8.116678390242859E-003 + 3.54100000000000 8.097071660047157E-003 + 3.54200000000000 8.077510816383906E-003 + 3.54300000000000 8.057995756152857E-003 + 3.54400000000000 8.038526376472106E-003 + 3.54500000000000 8.019102574677665E-003 + 3.54600000000000 7.999724248323053E-003 + 3.54700000000000 7.980391295178888E-003 + 3.54800000000000 7.961103613232439E-003 + 3.54900000000000 7.941861100687236E-003 + 3.55000000000000 7.922663655962637E-003 + 3.55100000000000 7.903511177693424E-003 + 3.55200000000000 7.884403564729378E-003 + 3.55300000000000 7.865340716134867E-003 + 3.55400000000000 7.846322531188424E-003 + 3.55500000000000 7.827348909382354E-003 + 3.55600000000000 7.808419750422305E-003 + 3.55700000000000 7.789534954226854E-003 + 3.55800000000000 7.770694420927107E-003 + 3.55900000000000 7.751898050866284E-003 + 3.56000000000000 7.733145744599294E-003 + 3.56100000000000 7.714437402892350E-003 + 3.56200000000000 7.695772926722544E-003 + 3.56300000000000 7.677152217277447E-003 + 3.56400000000000 7.658575175954695E-003 + 3.56500000000000 7.640041704361585E-003 + 3.56600000000000 7.621551704314659E-003 + 3.56700000000000 7.603105077839328E-003 + 3.56800000000000 7.584701727169435E-003 + 3.56900000000000 7.566341554746861E-003 + 3.57000000000000 7.548024463221126E-003 + 3.57100000000000 7.529750355448984E-003 + 3.57200000000000 7.511519134494018E-003 + 3.57300000000000 7.493330703626239E-003 + 3.57400000000000 7.475184966321690E-003 + 3.57500000000000 7.457081826262046E-003 + 3.57600000000000 7.439021187334198E-003 + 3.57700000000000 7.421002953629877E-003 + 3.57800000000000 7.403027029445234E-003 + 3.57900000000000 7.385093319280466E-003 + 3.58000000000000 7.367201727839402E-003 + 3.58100000000000 7.349352160029103E-003 + 3.58200000000000 7.331544520959478E-003 + 3.58300000000000 7.313778715942891E-003 + 3.58400000000000 7.296054650493754E-003 + 3.58500000000000 7.278372230328139E-003 + 3.58600000000000 7.260731361363391E-003 + 3.58700000000000 7.243131949717721E-003 + 3.58800000000000 7.225573901709827E-003 + 3.58900000000000 7.208057123858500E-003 + 3.59000000000000 7.190581522882234E-003 + 3.59100000000000 7.173147005698823E-003 + 3.59200000000000 7.155753479424997E-003 + 3.59300000000000 7.138400851376008E-003 + 3.59400000000000 7.121089029065261E-003 + 3.59500000000000 7.103817920203910E-003 + 3.59600000000000 7.086587432700487E-003 + 3.59700000000000 7.069397474660503E-003 + 3.59800000000000 7.052247954386075E-003 + 3.59900000000000 7.035138780375526E-003 + 3.60000000000000 7.018069861323017E-003 + 3.60100000000000 7.001041106118149E-003 + 3.60200000000000 6.984052423845591E-003 + 3.60300000000000 6.967103723784688E-003 + 3.60400000000000 6.950194915409091E-003 + 3.60500000000000 6.933325908386363E-003 + 3.60600000000000 6.916496612577614E-003 + 3.60700000000000 6.899706938037100E-003 + 3.60800000000000 6.882956795011870E-003 + 3.60900000000000 6.866246093941366E-003 + 3.61000000000000 6.849574745457053E-003 + 3.61100000000000 6.832942660382038E-003 + 3.61200000000000 6.816349749730707E-003 + 3.61300000000000 6.799795924708330E-003 + 3.61400000000000 6.783281096710699E-003 + 3.61500000000000 6.766805177323748E-003 + 3.61600000000000 6.750368078323177E-003 + 3.61700000000000 6.733969711674091E-003 + 3.61800000000000 6.717609989530602E-003 + 3.61900000000000 6.701288824235484E-003 + 3.62000000000000 6.685006128319791E-003 + 3.62100000000000 6.668761814502475E-003 + 3.62200000000000 6.652555795690033E-003 + 3.62300000000000 6.636387984976125E-003 + 3.62400000000000 6.620258295641214E-003 + 3.62500000000000 6.604166641152188E-003 + 3.62600000000000 6.588112935162000E-003 + 3.62700000000000 6.572097091509297E-003 + 3.62800000000000 6.556119024218056E-003 + 3.62900000000000 6.540178647497212E-003 + 3.63000000000000 6.524275875740299E-003 + 3.63100000000000 6.508410623525085E-003 + 3.63200000000000 6.492582805613206E-003 + 3.63300000000000 6.476792336949797E-003 + 3.63400000000000 6.461039132663136E-003 + 3.63500000000000 6.445323108064282E-003 + 3.63600000000000 6.429644178646715E-003 + 3.63700000000000 6.414002260085965E-003 + 3.63800000000000 6.398397268239260E-003 + 3.63900000000000 6.382829119145159E-003 + 3.64000000000000 6.367297729023206E-003 + 3.64100000000000 6.351803014273557E-003 + 3.64200000000000 6.336344891476628E-003 + 3.64300000000000 6.320923277392740E-003 + 3.64400000000000 6.305538088961758E-003 + 3.64500000000000 6.290189243302735E-003 + 3.64600000000000 6.274876657713559E-003 + 3.64700000000000 6.259600249670597E-003 + 3.64800000000000 6.244359936828345E-003 + 3.64900000000000 6.229155637019057E-003 + 3.65000000000000 6.213987268252412E-003 + 3.65100000000000 6.198854748715153E-003 + 3.65200000000000 6.183757996770740E-003 + 3.65300000000000 6.168696930958989E-003 + 3.65400000000000 6.153671469995721E-003 + 3.65500000000000 6.138681532772427E-003 + 3.65600000000000 6.123727038355909E-003 + 3.65700000000000 6.108807905987919E-003 + 3.65800000000000 6.093924055084833E-003 + 3.65900000000000 6.079075405237285E-003 + 3.66000000000000 6.064261876209838E-003 + 3.66100000000000 6.049483387940615E-003 + 3.66200000000000 6.034739860540969E-003 + 3.66300000000000 6.020031214295130E-003 + 3.66400000000000 6.005357369659872E-003 + 3.66500000000000 5.990718247264153E-003 + 3.66600000000000 5.976113767908780E-003 + 3.66700000000000 5.961543852566057E-003 + 3.66800000000000 5.947008422379466E-003 + 3.66900000000000 5.932507398663294E-003 + 3.67000000000000 5.918040702902311E-003 + 3.67100000000000 5.903608256751431E-003 + 3.67200000000000 5.889209982035360E-003 + 3.67300000000000 5.874845800748261E-003 + 3.67400000000000 5.860515635053421E-003 + 3.67500000000000 5.846219407282907E-003 + 3.67600000000000 5.831957039937225E-003 + 3.67700000000000 5.817728455684996E-003 + 3.67800000000000 5.803533577362600E-003 + 3.67900000000000 5.789372327973856E-003 + 3.68000000000000 5.775244630689679E-003 + 3.68100000000000 5.761150408847753E-003 + 3.68200000000000 5.747089585952184E-003 + 3.68300000000000 5.733062085673174E-003 + 3.68400000000000 5.719067831846695E-003 + 3.68500000000000 5.705106748474137E-003 + 3.68600000000000 5.691178759721996E-003 + 3.68700000000000 5.677283789921529E-003 + 3.68800000000000 5.663421763568435E-003 + 3.68900000000000 5.649592605322509E-003 + 3.69000000000000 5.635796240007335E-003 + 3.69100000000000 5.622032592609928E-003 + 3.69200000000000 5.608301588280430E-003 + 3.69300000000000 5.594603152331777E-003 + 3.69400000000000 5.580937210239358E-003 + 3.69500000000000 5.567303687640706E-003 + 3.69600000000000 5.553702510335158E-003 + 3.69700000000000 5.540133604283536E-003 + 3.69800000000000 5.526596895607827E-003 + 3.69900000000000 5.513092310590845E-003 + 3.70000000000000 5.499619775675921E-003 + 3.70100000000000 5.486179217466571E-003 + 3.70200000000000 5.472770562726172E-003 + 3.70300000000000 5.459393738377649E-003 + 3.70400000000000 5.446048671503141E-003 + 3.70500000000000 5.432735289343695E-003 + 3.70600000000000 5.419453519298931E-003 + 3.70700000000000 5.406203288926729E-003 + 3.70800000000000 5.392984525942910E-003 + 3.70900000000000 5.379797158220913E-003 + 3.71000000000000 5.366641113791484E-003 + 3.71100000000000 5.353516320842347E-003 + 3.71200000000000 5.340422707717900E-003 + 3.71300000000000 5.327360202918891E-003 + 3.71400000000000 5.314328735102100E-003 + 3.71500000000000 5.301328233080030E-003 + 3.71600000000000 5.288358625820584E-003 + 3.71700000000000 5.275419842446758E-003 + 3.71800000000000 5.262511812236329E-003 + 3.71900000000000 5.249634464621528E-003 + 3.72000000000000 5.236787729188740E-003 + 3.72100000000000 5.223971535678189E-003 + 3.72200000000000 5.211185813983628E-003 + 3.72300000000000 5.198430494152021E-003 + 3.72400000000000 5.185705506383236E-003 + 3.72500000000000 5.173010781029741E-003 + 3.72600000000000 5.160346248596287E-003 + 3.72700000000000 5.147711839739607E-003 + 3.72800000000000 5.135107485268091E-003 + 3.72900000000000 5.122533116141503E-003 + 3.73000000000000 5.109988663470646E-003 + 3.73100000000000 5.097474058517085E-003 + 3.73200000000000 5.084989232692814E-003 + 3.73300000000000 5.072534117559971E-003 + 3.73400000000000 5.060108644830520E-003 + 3.73500000000000 5.047712746365948E-003 + 3.73600000000000 5.035346354176965E-003 + 3.73700000000000 5.023009400423204E-003 + 3.73800000000000 5.010701817412911E-003 + 3.73900000000000 4.998423537602640E-003 + 3.74000000000000 4.986174493596963E-003 + 3.74100000000000 4.973954618148159E-003 + 3.74200000000000 4.961763844155919E-003 + 3.74300000000000 4.949602104667041E-003 + 3.74400000000000 4.937469332875128E-003 + 3.74500000000000 4.925365462120305E-003 + 3.74600000000000 4.913290425888903E-003 + 3.74700000000000 4.901244157813162E-003 + 3.74800000000000 4.889226591670943E-003 + 3.74900000000000 4.877237661385432E-003 + 3.75000000000000 4.865277301024826E-003 + 3.75100000000000 4.853345444802060E-003 + 3.75200000000000 4.841442027074494E-003 + 3.75300000000000 4.829566982343630E-003 + 3.75400000000000 4.817720245254807E-003 + 3.75500000000000 4.805901750596923E-003 + 3.75600000000000 4.794111433302115E-003 + 3.75700000000000 4.782349228445502E-003 + 3.75800000000000 4.770615071244859E-003 + 3.75900000000000 4.758908897060351E-003 + 3.76000000000000 4.747230641394221E-003 + 3.76100000000000 4.735580239890519E-003 + 3.76200000000000 4.723957628334795E-003 + 3.76300000000000 4.712362742653820E-003 + 3.76400000000000 4.700795518915293E-003 + 3.76500000000000 4.689255893327558E-003 + 3.76600000000000 4.677743802239301E-003 + 3.76700000000000 4.666259182139282E-003 + 3.76800000000000 4.654801969656033E-003 + 3.76900000000000 4.643372101557585E-003 + 3.77000000000000 4.631969514751164E-003 + 3.77100000000000 4.620594146282922E-003 + 3.77200000000000 4.609245933337648E-003 + 3.77300000000000 4.597924813238476E-003 + 3.77400000000000 4.586630723446616E-003 + 3.77500000000000 4.575363601561052E-003 + 3.77600000000000 4.564123385318274E-003 + 3.77700000000000 4.552910012591989E-003 + 3.77800000000000 4.541723421392842E-003 + 3.77900000000000 4.530563549868134E-003 + 3.78000000000000 4.519430336301535E-003 + 3.78100000000000 4.508323719112819E-003 + 3.78200000000000 4.497243636857567E-003 + 3.78300000000000 4.486190028226900E-003 + 3.78400000000000 4.475162832047191E-003 + 3.78500000000000 4.464161987279797E-003 + 3.78600000000000 4.453187433020772E-003 + 3.78700000000000 4.442239108500595E-003 + 3.78800000000000 4.431316953083892E-003 + 3.78900000000000 4.420420906269158E-003 + 3.79000000000000 4.409550907688484E-003 + 3.79100000000000 4.398706897107284E-003 + 3.79200000000000 4.387888814424012E-003 + 3.79300000000000 4.377096599669897E-003 + 3.79400000000000 4.366330193008659E-003 + 3.79500000000000 4.355589534736251E-003 + 3.79600000000000 4.344874565280572E-003 + 3.79700000000000 4.334185225201202E-003 + 3.79800000000000 4.323521455189128E-003 + 3.79900000000000 4.312883196066470E-003 + 3.80000000000000 4.302270388786220E-003 + 3.80100000000000 4.291682974431963E-003 + 3.80200000000000 4.281120894217607E-003 + 3.80300000000000 4.270584089487119E-003 + 3.80400000000000 4.260072501714255E-003 + 3.80500000000000 4.249586072502287E-003 + 3.80600000000000 4.239124743583742E-003 + 3.80700000000000 4.228688456820133E-003 + 3.80800000000000 4.218277154201687E-003 + 3.80900000000000 4.207890777847086E-003 + 3.81000000000000 4.197529270003197E-003 + 3.81100000000000 4.187192573044808E-003 + 3.81200000000000 4.176880629474360E-003 + 3.81300000000000 4.166593381921690E-003 + 3.81400000000000 4.156330773143763E-003 + 3.81500000000000 4.146092746024404E-003 + 3.81600000000000 4.135879243574043E-003 + 3.81700000000000 4.125690208929451E-003 + 3.81800000000000 4.115525585353473E-003 + 3.81900000000000 4.105385316234772E-003 + 3.82000000000000 4.095269345087567E-003 + 3.82100000000000 4.085177615551369E-003 + 3.82200000000000 4.075110071390729E-003 + 3.82300000000000 4.065066656494969E-003 + 3.82400000000000 4.055047314877927E-003 + 3.82500000000000 4.045051990677705E-003 + 3.82600000000000 4.035080628156399E-003 + 3.82700000000000 4.025133171699851E-003 + 3.82800000000000 4.015209565817386E-003 + 3.82900000000000 4.005309755141563E-003 + 3.83000000000000 3.995433684427908E-003 + 3.83100000000000 3.985581298554666E-003 + 3.83200000000000 3.975752542522547E-003 + 3.83300000000000 3.965947361454464E-003 + 3.83400000000000 3.956165700595286E-003 + 3.83500000000000 3.946407505311582E-003 + 3.83600000000000 3.936672721091366E-003 + 3.83700000000000 3.926961293543846E-003 + 3.83800000000000 3.917273168399172E-003 + 3.83900000000000 3.907608291508182E-003 + 3.84000000000000 3.897966608842151E-003 + 3.84100000000000 3.888348066492542E-003 + 3.84200000000000 3.878752610670760E-003 + 3.84300000000000 3.869180187707888E-003 + 3.84400000000000 3.859630744054451E-003 + 3.84500000000000 3.850104226280161E-003 + 3.84600000000000 3.840600581073673E-003 + 3.84700000000000 3.831119755242328E-003 + 3.84800000000000 3.821661695711913E-003 + 3.84900000000000 3.812226349526414E-003 + 3.85000000000000 3.802813663847767E-003 + 3.85100000000000 3.793423585955606E-003 + 3.85200000000000 3.784056063247030E-003 + 3.85300000000000 3.774711043236346E-003 + 3.85400000000000 3.765388473554831E-003 + 3.85500000000000 3.756088301950487E-003 + 3.85600000000000 3.746810476287790E-003 + 3.85700000000000 3.737554944547456E-003 + 3.85800000000000 3.728321654826196E-003 + 3.85900000000000 3.719110555336467E-003 + 3.86000000000000 3.709921594406234E-003 + 3.86100000000000 3.700754720478731E-003 + 3.86200000000000 3.691609882112218E-003 + 3.86300000000000 3.682487027979738E-003 + 3.86400000000000 3.673386106868877E-003 + 3.86500000000000 3.664307067681528E-003 + 3.86600000000000 3.655249859433647E-003 + 3.86700000000000 3.646214431255017E-003 + 3.86800000000000 3.637200732389009E-003 + 3.86900000000000 3.628208712192342E-003 + 3.87000000000000 3.619238320134850E-003 + 3.87100000000000 3.610289505799236E-003 + 3.87200000000000 3.601362218880848E-003 + 3.87300000000000 3.592456409187430E-003 + 3.87400000000000 3.583572026638895E-003 + 3.87500000000000 3.574709021267086E-003 + 3.87600000000000 3.565867343215543E-003 + 3.87700000000000 3.557046942739262E-003 + 3.87800000000000 3.548247770204474E-003 + 3.87900000000000 3.539469776088397E-003 + 3.88000000000000 3.530712910979011E-003 + 3.88100000000000 3.521977125574828E-003 + 3.88200000000000 3.513262370684648E-003 + 3.88300000000000 3.504568597227341E-003 + 3.88400000000000 3.495895756231605E-003 + 3.88500000000000 3.487243798835741E-003 + 3.88600000000000 3.478612676287423E-003 + 3.88700000000000 3.470002339943461E-003 + 3.88800000000000 3.461412741269577E-003 + 3.88900000000000 3.452843831840180E-003 + 3.89000000000000 3.444295563338125E-003 + 3.89100000000000 3.435767887554497E-003 + 3.89200000000000 3.427260756388374E-003 + 3.89300000000000 3.418774121846604E-003 + 3.89400000000000 3.410307936043581E-003 + 3.89500000000000 3.401862151201009E-003 + 3.89600000000000 3.393436719647686E-003 + 3.89700000000000 3.385031593819273E-003 + 3.89800000000000 3.376646726258067E-003 + 3.89900000000000 3.368282069612782E-003 + 3.90000000000000 3.359937576638318E-003 + 3.90100000000000 3.351613200195541E-003 + 3.90200000000000 3.343308893251061E-003 + 3.90300000000000 3.335024608877003E-003 + 3.90400000000000 3.326760300250791E-003 + 3.90500000000000 3.318515920654915E-003 + 3.90600000000000 3.310291423476728E-003 + 3.90700000000000 3.302086762208204E-003 + 3.90800000000000 3.293901890445728E-003 + 3.90900000000000 3.285736761889874E-003 + 3.91000000000000 3.277591330345183E-003 + 3.91100000000000 3.269465549719948E-003 + 3.91200000000000 3.261359374025983E-003 + 3.91300000000000 3.253272757378420E-003 + 3.91400000000000 3.245205653995479E-003 + 3.91500000000000 3.237158018198254E-003 + 3.91600000000000 3.229129804410495E-003 + 3.91700000000000 3.221120967158386E-003 + 3.91800000000000 3.213131461070340E-003 + 3.91900000000000 3.205161240876770E-003 + 3.92000000000000 3.197210261409879E-003 + 3.92100000000000 3.189278477603443E-003 + 3.92200000000000 3.181365844492599E-003 + 3.92300000000000 3.173472317213625E-003 + 3.92400000000000 3.165597851003729E-003 + 3.92500000000000 3.157742401200832E-003 + 3.92600000000000 3.149905923243362E-003 + 3.92700000000000 3.142088372670029E-003 + 3.92800000000000 3.134289705119625E-003 + 3.92900000000000 3.126509876330800E-003 + 3.93000000000000 3.118748842141859E-003 + 3.93100000000000 3.111006558490547E-003 + 3.93200000000000 3.103282981413837E-003 + 3.93300000000000 3.095578067047718E-003 + 3.93400000000000 3.087891771626992E-003 + 3.93500000000000 3.080224051485058E-003 + 3.93600000000000 3.072574863053700E-003 + 3.93700000000000 3.064944162862884E-003 + 3.93800000000000 3.057331907540550E-003 + 3.93900000000000 3.049738053812396E-003 + 3.94000000000000 3.042162558501678E-003 + 3.94100000000000 3.034605378528997E-003 + 3.94200000000000 3.027066470912098E-003 + 3.94300000000000 3.019545792765657E-003 + 3.94400000000000 3.012043301301078E-003 + 3.94500000000000 3.004558953826285E-003 + 3.94600000000000 2.997092707745526E-003 + 3.94700000000000 2.989644520559149E-003 + 3.94800000000000 2.982214349863416E-003 + 3.94900000000000 2.974802153350289E-003 + 3.95000000000000 2.967407888807230E-003 + 3.95100000000000 2.960031514116993E-003 + 3.95200000000000 2.952672987257429E-003 + 3.95300000000000 2.945332266301272E-003 + 3.95400000000000 2.938009309415946E-003 + 3.95500000000000 2.930704074863363E-003 + 3.95600000000000 2.923416520999713E-003 + 3.95700000000000 2.916146606275271E-003 + 3.95800000000000 2.908894289234196E-003 + 3.95900000000000 2.901659528514325E-003 + 3.96000000000000 2.894442282846978E-003 + 3.96100000000000 2.887242511056755E-003 + 3.96200000000000 2.880060172061345E-003 + 3.96300000000000 2.872895224871314E-003 + 3.96400000000000 2.865747628589917E-003 + 3.96500000000000 2.858617342412895E-003 + 3.96600000000000 2.851504325628282E-003 + 3.96700000000000 2.844408537616200E-003 + 3.96800000000000 2.837329937848674E-003 + 3.96900000000000 2.830268485889422E-003 + 3.97000000000000 2.823224141393667E-003 + 3.97100000000000 2.816196864107943E-003 + 3.97200000000000 2.809186613869892E-003 + 3.97300000000000 2.802193350608078E-003 + 3.97400000000000 2.795217034341785E-003 + 3.97500000000000 2.788257625180826E-003 + 3.97600000000000 2.781315083325350E-003 + 3.97700000000000 2.774389369065648E-003 + 3.97800000000000 2.767480442781957E-003 + 3.97900000000000 2.760588264944273E-003 + 3.98000000000000 2.753712796112156E-003 + 3.98100000000000 2.746853996934534E-003 + 3.98200000000000 2.740011828149518E-003 + 3.98300000000000 2.733186250584209E-003 + 3.98400000000000 2.726377225154506E-003 + 3.98500000000000 2.719584712864913E-003 + 3.98600000000000 2.712808674808356E-003 + 3.98700000000000 2.706049072165985E-003 + 3.98800000000000 2.699305866206994E-003 + 3.98900000000000 2.692579018288422E-003 + 3.99000000000000 2.685868489854974E-003 + 3.99100000000000 2.679174242438825E-003 + 3.99200000000000 2.672496237659439E-003 + 3.99300000000000 2.665834437223375E-003 + 3.99400000000000 2.659188802924104E-003 + 3.99500000000000 2.652559296641824E-003 + 3.99600000000000 2.645945880343266E-003 + 3.99700000000000 2.639348516081518E-003 + 3.99800000000000 2.632767165995832E-003 + 3.99900000000000 2.626201792311444E-003 + 4.00000000000000 2.619652357339382E-003 + 4.00100000000000 2.613118823476289E-003 + 4.00200000000000 2.606601153204237E-003 + 4.00300000000000 2.600099309090538E-003 + 4.00400000000000 2.593613253787568E-003 + 4.00500000000000 2.587142950032582E-003 + 4.00600000000000 2.580688360647524E-003 + 4.00700000000000 2.574249448538857E-003 + 4.00800000000000 2.567826176697370E-003 + 4.00900000000000 2.561418508198004E-003 + 4.01000000000000 2.555026406199669E-003 + 4.01100000000000 2.548649833945055E-003 + 4.01200000000000 2.542288754760466E-003 + 4.01300000000000 2.535943132055630E-003 + 4.01400000000000 2.529612929323518E-003 + 4.01500000000000 2.523298110140175E-003 + 4.01600000000000 2.516998638164525E-003 + 4.01700000000000 2.510714477138208E-003 + 4.01800000000000 2.504445590885392E-003 + 4.01900000000000 2.498191943312598E-003 + 4.02000000000000 2.491953498408519E-003 + 4.02100000000000 2.485730220243853E-003 + 4.02200000000000 2.479522072971111E-003 + 4.02300000000000 2.473329020824453E-003 + 4.02400000000000 2.467151028119503E-003 + 4.02500000000000 2.460988059253179E-003 + 4.02600000000000 2.454840078703517E-003 + 4.02700000000000 2.448707051029487E-003 + 4.02800000000000 2.442588940870833E-003 + 4.02900000000000 2.436485712947886E-003 + 4.03000000000000 2.430397332061395E-003 + 4.03100000000000 2.424323763092356E-003 + 4.03200000000000 2.418264971001828E-003 + 4.03300000000000 2.412220920830770E-003 + 4.03400000000000 2.406191577699870E-003 + 4.03500000000000 2.400176906809359E-003 + 4.03600000000000 2.394176873438853E-003 + 4.03700000000000 2.388191442947175E-003 + 4.03800000000000 2.382220580772181E-003 + 4.03900000000000 2.376264252430596E-003 + 4.04000000000000 2.370322423517836E-003 + 4.04100000000000 2.364395059707843E-003 + 4.04200000000000 2.358482126752914E-003 + 4.04300000000000 2.352583590483525E-003 + 4.04400000000000 2.346699416808172E-003 + 4.04500000000000 2.340829571713194E-003 + 4.04600000000000 2.334974021262606E-003 + 4.04700000000000 2.329132731597934E-003 + 4.04800000000000 2.323305668938042E-003 + 4.04900000000000 2.317492799578967E-003 + 4.05000000000000 2.311694089893755E-003 + 4.05100000000000 2.305909506332284E-003 + 4.05200000000000 2.300139015421108E-003 + 4.05300000000000 2.294382583763286E-003 + 4.05400000000000 2.288640178038214E-003 + 4.05500000000000 2.282911765001462E-003 + 4.05600000000000 2.277197311484608E-003 + 4.05700000000000 2.271496784395075E-003 + 4.05800000000000 2.265810150715962E-003 + 4.05900000000000 2.260137377505881E-003 + 4.06000000000000 2.254478431898797E-003 + 4.06100000000000 2.248833281103859E-003 + 4.06200000000000 2.243201892405238E-003 + 4.06300000000000 2.237584233161965E-003 + 4.06400000000000 2.231980270807769E-003 + 4.06500000000000 2.226389972850913E-003 + 4.06600000000000 2.220813306874032E-003 + 4.06700000000000 2.215250240533970E-003 + 4.06800000000000 2.209700741561620E-003 + 4.06900000000000 2.204164777761770E-003 + 4.07000000000000 2.198642317012923E-003 + 4.07100000000000 2.193133327267160E-003 + 4.07200000000000 2.187637776549959E-003 + 4.07300000000000 2.182155632960053E-003 + 4.07400000000000 2.176686864669258E-003 + 4.07500000000000 2.171231439922316E-003 + 4.07600000000000 2.165789327036742E-003 + 4.07700000000000 2.160360494402660E-003 + 4.07800000000000 2.154944910482645E-003 + 4.07900000000000 2.149542543811572E-003 + 4.08000000000000 2.144153362996443E-003 + 4.08100000000000 2.138777336716248E-003 + 4.08200000000000 2.133414433721797E-003 + 4.08300000000000 2.128064622835565E-003 + 4.08400000000000 2.122727872951536E-003 + 4.08500000000000 2.117404153035051E-003 + 4.08600000000000 2.112093432122645E-003 + 4.08700000000000 2.106795679321899E-003 + 4.08800000000000 2.101510863811278E-003 + 4.08900000000000 2.096238954839982E-003 + 4.09000000000000 2.090979921727789E-003 + 4.09100000000000 2.085733733864899E-003 + 4.09200000000000 2.080500360711786E-003 + 4.09300000000000 2.075279771799039E-003 + 4.09400000000000 2.070071936727209E-003 + 4.09500000000000 2.064876825166660E-003 + 4.09600000000000 2.059694406857414E-003 + 4.09700000000000 2.054524651608997E-003 + 4.09800000000000 2.049367529300290E-003 + 4.09900000000000 2.044223009879377E-003 + 4.10000000000000 2.039091063363393E-003 + 4.10100000000000 2.033971659838371E-003 + 4.10200000000000 2.028864769459094E-003 + 4.10300000000000 2.023770362448946E-003 + 4.10400000000000 2.018688409099756E-003 + 4.10500000000000 2.013618879771652E-003 + 4.10600000000000 2.008561744892916E-003 + 4.10700000000000 2.003516974959824E-003 + 4.10800000000000 1.998484540536507E-003 + 4.10900000000000 1.993464412254797E-003 + 4.11000000000000 1.988456560814080E-003 + 4.11100000000000 1.983460956981151E-003 + 4.11200000000000 1.978477571590058E-003 + 4.11300000000000 1.973506375541965E-003 + 4.11400000000000 1.968547339805000E-003 + 4.11500000000000 1.963600435414105E-003 + 4.11600000000000 1.958665633470895E-003 + 4.11700000000000 1.953742905143508E-003 + 4.11800000000000 1.948832221666462E-003 + 4.11900000000000 1.943933554340509E-003 + 4.12000000000000 1.939046874532484E-003 + 4.12100000000000 1.934172153675171E-003 + 4.12200000000000 1.929309363267148E-003 + 4.12300000000000 1.924458474872645E-003 + 4.12400000000000 1.919619460121407E-003 + 4.12500000000000 1.914792290708540E-003 + 4.12600000000000 1.909976938394371E-003 + 4.12700000000000 1.905173375004312E-003 + 4.12800000000000 1.900381572428703E-003 + 4.12900000000000 1.895601502622682E-003 + 4.13000000000000 1.890833137606038E-003 + 4.13100000000000 1.886076449463065E-003 + 4.13200000000000 1.881331410342426E-003 + 4.13300000000000 1.876597992457011E-003 + 4.13400000000000 1.871876168083790E-003 + 4.13500000000000 1.867165909563682E-003 + 4.13600000000000 1.862467189301402E-003 + 4.13700000000000 1.857779979765330E-003 + 4.13800000000000 1.853104253487372E-003 + 4.13900000000000 1.848439983062809E-003 + 4.14000000000000 1.843787141150170E-003 + 4.14100000000000 1.839145700471085E-003 + 4.14200000000000 1.834515633810151E-003 + 4.14300000000000 1.829896914014790E-003 + 4.14400000000000 1.825289513995111E-003 + 4.14500000000000 1.820693406723773E-003 + 4.14600000000000 1.816108565235847E-003 + 4.14700000000000 1.811534962628680E-003 + 4.14800000000000 1.806972572061752E-003 + 4.14900000000000 1.802421366756546E-003 + 4.15000000000000 1.797881319996410E-003 + 4.15100000000000 1.793352405126415E-003 + 4.15200000000000 1.788834595553227E-003 + 4.15300000000000 1.784327864744963E-003 + 4.15400000000000 1.779832186231065E-003 + 4.15500000000000 1.775347533602154E-003 + 4.15600000000000 1.770873880509905E-003 + 4.15700000000000 1.766411200666903E-003 + 4.15800000000000 1.761959467846517E-003 + 4.15900000000000 1.757518655882761E-003 + 4.16000000000000 1.753088738670160E-003 + 4.16100000000000 1.748669690163619E-003 + 4.16200000000000 1.744261484378289E-003 + 4.16300000000000 1.739864095389430E-003 + 4.16400000000000 1.735477497332285E-003 + 4.16500000000000 1.731101664401940E-003 + 4.16600000000000 1.726736570853200E-003 + 4.16700000000000 1.722382191000451E-003 + 4.16800000000000 1.718038499217528E-003 + 4.16900000000000 1.713705469937589E-003 + 4.17000000000000 1.709383077652978E-003 + 4.17100000000000 1.705071296915097E-003 + 4.17200000000000 1.700770102334275E-003 + 4.17300000000000 1.696479468579638E-003 + 4.17400000000000 1.692199370378978E-003 + 4.17500000000000 1.687929782518627E-003 + 4.17600000000000 1.683670679843317E-003 + 4.17700000000000 1.679422037256065E-003 + 4.17800000000000 1.675183829718033E-003 + 4.17900000000000 1.670956032248404E-003 + 4.18000000000000 1.666738619924255E-003 + 4.18100000000000 1.662531567880423E-003 + 4.18200000000000 1.658334851309382E-003 + 4.18300000000000 1.654148445461114E-003 + 4.18400000000000 1.649972325642982E-003 + 4.18500000000000 1.645806467219602E-003 + 4.18600000000000 1.641650845612716E-003 + 4.18700000000000 1.637505436301065E-003 + 4.18800000000000 1.633370214820268E-003 + 4.18900000000000 1.629245156762683E-003 + 4.19000000000000 1.625130237777299E-003 + 4.19100000000000 1.621025433569595E-003 + 4.19200000000000 1.616930719901421E-003 + 4.19300000000000 1.612846072590875E-003 + 4.19400000000000 1.608771467512176E-003 + 4.19500000000000 1.604706880595536E-003 + 4.19600000000000 1.600652287827041E-003 + 4.19700000000000 1.596607665248525E-003 + 4.19800000000000 1.592572988957445E-003 + 4.19900000000000 1.588548235106762E-003 + 4.20000000000000 1.584533379904811E-003 + 4.20100000000000 1.580528399615182E-003 + 4.20200000000000 1.576533270556599E-003 + 4.20300000000000 1.572547969102792E-003 + 4.20400000000000 1.568572471682380E-003 + 4.20500000000000 1.564606754778746E-003 + 4.20600000000000 1.560650794929917E-003 + 4.20700000000000 1.556704568728443E-003 + 4.20800000000000 1.552768052821272E-003 + 4.20900000000000 1.548841223909634E-003 + 4.21000000000000 1.544924058748916E-003 + 4.21100000000000 1.541016534148543E-003 + 4.21200000000000 1.537118626971863E-003 + 4.21300000000000 1.533230314136015E-003 + 4.21400000000000 1.529351572611823E-003 + 4.21500000000000 1.525482379423666E-003 + 4.21600000000000 1.521622711649366E-003 + 4.21700000000000 1.517772546420063E-003 + 4.21800000000000 1.513931860920102E-003 + 4.21900000000000 1.510100632386909E-003 + 4.22000000000000 1.506278838110878E-003 + 4.22100000000000 1.502466455435249E-003 + 4.22200000000000 1.498663461755991E-003 + 4.22300000000000 1.494869834521690E-003 + 4.22400000000000 1.491085551233420E-003 + 4.22500000000000 1.487310589444639E-003 + 4.22600000000000 1.483544926761064E-003 + 4.22700000000000 1.479788540840556E-003 + 4.22800000000000 1.476041409393007E-003 + 4.22900000000000 1.472303510180218E-003 + 4.23000000000000 1.468574821015791E-003 + 4.23100000000000 1.464855319765007E-003 + 4.23200000000000 1.461144984344712E-003 + 4.23300000000000 1.457443792723205E-003 + 4.23400000000000 1.453751722920120E-003 + 4.23500000000000 1.450068753006312E-003 + 4.23600000000000 1.446394861103746E-003 + 4.23700000000000 1.442730025385375E-003 + 4.23800000000000 1.439074224075035E-003 + 4.23900000000000 1.435427435447330E-003 + 4.24000000000000 1.431789637827509E-003 + 4.24100000000000 1.428160809591366E-003 + 4.24200000000000 1.424540929165119E-003 + 4.24300000000000 1.420929975025299E-003 + 4.24400000000000 1.417327925698642E-003 + 4.24500000000000 1.413734759761966E-003 + 4.24600000000000 1.410150455842073E-003 + 4.24700000000000 1.406574992615626E-003 + 4.24800000000000 1.403008348809041E-003 + 4.24900000000000 1.399450503198382E-003 + 4.25000000000000 1.395901434609237E-003 + 4.25100000000000 1.392361121916621E-003 + 4.25200000000000 1.388829544044855E-003 + 4.25300000000000 1.385306679967462E-003 + 4.25400000000000 1.381792508707054E-003 + 4.25500000000000 1.378287009335222E-003 + 4.25600000000000 1.374790160972428E-003 + 4.25700000000000 1.371301942787897E-003 + 4.25800000000000 1.367822333999500E-003 + 4.25900000000000 1.364351313873655E-003 + 4.26000000000000 1.360888861725215E-003 + 4.26100000000000 1.357434956917353E-003 + 4.26200000000000 1.353989578861466E-003 + 4.26300000000000 1.350552707017055E-003 + 4.26400000000000 1.347124320891625E-003 + 4.26500000000000 1.343704400040574E-003 + 4.26600000000000 1.340292924067086E-003 + 4.26700000000000 1.336889872622024E-003 + 4.26800000000000 1.333495225403827E-003 + 4.26900000000000 1.330108962158394E-003 + 4.27000000000000 1.326731062678990E-003 + 4.27100000000000 1.323361506806127E-003 + 4.27200000000000 1.320000274427468E-003 + 4.27300000000000 1.316647345477714E-003 + 4.27400000000000 1.313302699938506E-003 + 4.27500000000000 1.309966317838312E-003 + 4.27600000000000 1.306638179252329E-003 + 4.27700000000000 1.303318264302369E-003 + 4.27800000000000 1.300006553156764E-003 + 4.27900000000000 1.296703026030258E-003 + 4.28000000000000 1.293407663183898E-003 + 4.28100000000000 1.290120444924939E-003 + 4.28200000000000 1.286841351606731E-003 + 4.28300000000000 1.283570363628623E-003 + 4.28400000000000 1.280307461435856E-003 + 4.28500000000000 1.277052625519457E-003 + 4.28600000000000 1.273805836416144E-003 + 4.28700000000000 1.270567074708219E-003 + 4.28800000000000 1.267336321023459E-003 + 4.28900000000000 1.264113556035027E-003 + 4.29000000000000 1.260898760461359E-003 + 4.29100000000000 1.257691915066067E-003 + 4.29200000000000 1.254493000657838E-003 + 4.29300000000000 1.251301998090329E-003 + 4.29400000000000 1.248118888262069E-003 + 4.29500000000000 1.244943652116358E-003 + 4.29600000000000 1.241776270641164E-003 + 4.29700000000000 1.238616724869025E-003 + 4.29800000000000 1.235464995876944E-003 + 4.29900000000000 1.232321064786297E-003 + 4.30000000000000 1.229184912762726E-003 + 4.30100000000000 1.226056521016041E-003 + 4.30200000000000 1.222935870800124E-003 + 4.30300000000000 1.219822943412824E-003 + 4.30400000000000 1.216717720195862E-003 + 4.30500000000000 1.213620182534732E-003 + 4.30600000000000 1.210530311858600E-003 + 4.30700000000000 1.207448089640209E-003 + 4.30800000000000 1.204373497395777E-003 + 4.30900000000000 1.201306516684902E-003 + 4.31000000000000 1.198247129110462E-003 + 4.31100000000000 1.195195316318520E-003 + 4.31200000000000 1.192151059998223E-003 + 4.31300000000000 1.189114341881708E-003 + 4.31400000000000 1.186085143744004E-003 + 4.31500000000000 1.183063447402936E-003 + 4.31600000000000 1.180049234719026E-003 + 4.31700000000000 1.177042487595399E-003 + 4.31800000000000 1.174043187977685E-003 + 4.31900000000000 1.171051317853928E-003 + 4.32000000000000 1.168066859254481E-003 + 4.32100000000000 1.165089794251920E-003 + 4.32200000000000 1.162120104960942E-003 + 4.32300000000000 1.159157773538275E-003 + 4.32400000000000 1.156202782182579E-003 + 4.32500000000000 1.153255113134353E-003 + 4.32600000000000 1.150314748675839E-003 + 4.32700000000000 1.147381671130931E-003 + 4.32800000000000 1.144455862865079E-003 + 4.32900000000000 1.141537306285193E-003 + 4.33000000000000 1.138625983839552E-003 + 4.33100000000000 1.135721878017711E-003 + 4.33200000000000 1.132824971350406E-003 + 4.33300000000000 1.129935246409459E-003 + 4.33400000000000 1.127052685807690E-003 + 4.33500000000000 1.124177272198821E-003 + 4.33600000000000 1.121308988277382E-003 + 4.33700000000000 1.118447816778625E-003 + 4.33800000000000 1.115593740478424E-003 + 4.33900000000000 1.112746742193188E-003 + 4.34000000000000 1.109906804779769E-003 + 4.34100000000000 1.107073911135367E-003 + 4.34200000000000 1.104248044197444E-003 + 4.34300000000000 1.101429186943629E-003 + 4.34400000000000 1.098617322391626E-003 + 4.34500000000000 1.095812433599129E-003 + 4.34600000000000 1.093014503663724E-003 + 4.34700000000000 1.090223515722804E-003 + 4.34800000000000 1.087439452953479E-003 + 4.34900000000000 1.084662298572481E-003 + 4.35000000000000 1.081892035836079E-003 + 4.35100000000000 1.079128648039988E-003 + 4.35200000000000 1.076372118519279E-003 + 4.35300000000000 1.073622430648290E-003 + 4.35400000000000 1.070879567840537E-003 + 4.35500000000000 1.068143513548626E-003 + 4.35600000000000 1.065414251264164E-003 + 4.35700000000000 1.062691764517669E-003 + 4.35800000000000 1.059976036878484E-003 + 4.35900000000000 1.057267051954688E-003 + 4.36000000000000 1.054564793393006E-003 + 4.36100000000000 1.051869244878727E-003 + 4.36200000000000 1.049180390135609E-003 + 4.36300000000000 1.046498212925797E-003 + 4.36400000000000 1.043822697049736E-003 + 4.36500000000000 1.041153826346081E-003 + 4.36600000000000 1.038491584691611E-003 + 4.36700000000000 1.035835956001143E-003 + 4.36800000000000 1.033186924227449E-003 + 4.36900000000000 1.030544473361162E-003 + 4.37000000000000 1.027908587430697E-003 + 4.37100000000000 1.025279250502162E-003 + 4.37200000000000 1.022656446679275E-003 + 4.37300000000000 1.020040160103272E-003 + 4.37400000000000 1.017430374952831E-003 + 4.37500000000000 1.014827075443979E-003 + 4.37600000000000 1.012230245830014E-003 + 4.37700000000000 1.009639870401412E-003 + 4.37800000000000 1.007055933485749E-003 + 4.37900000000000 1.004478419447616E-003 + 4.38000000000000 1.001907312688533E-003 + 4.38100000000000 9.993425976468624E-004 + 4.38200000000000 9.967842587977332E-004 + 4.38300000000000 9.942322806529480E-004 + 4.38400000000000 9.916866477609066E-004 + 4.38500000000000 9.891473447065195E-004 + 4.38600000000000 9.866143561111243E-004 + 4.38700000000000 9.840876666324056E-004 + 4.38800000000000 9.815672609643094E-004 + 4.38900000000000 9.790531238369614E-004 + 4.39000000000000 9.765452400165862E-004 + 4.39100000000000 9.740435943054219E-004 + 4.39200000000000 9.715481715416416E-004 + 4.39300000000000 9.690589565992695E-004 + 4.39400000000000 9.665759343880986E-004 + 4.39500000000000 9.640990898536110E-004 + 4.39600000000000 9.616284079768969E-004 + 4.39700000000000 9.591638737745699E-004 + 4.39800000000000 9.567054722986907E-004 + 4.39900000000000 9.542531886366822E-004 + 4.40000000000000 9.518070079112520E-004 + 4.40100000000000 9.493669152803105E-004 + 4.40200000000000 9.469328959368907E-004 + 4.40300000000000 9.445049351090676E-004 + 4.40400000000000 9.420830180598804E-004 + 4.40500000000000 9.396671300872495E-004 + 4.40600000000000 9.372572565238997E-004 + 4.40700000000000 9.348533827372798E-004 + 4.40800000000000 9.324554941294827E-004 + 4.40900000000000 9.300635761371674E-004 + 4.41000000000000 9.276776142314792E-004 + 4.41100000000000 9.252975939179717E-004 + 4.41200000000000 9.229235007365286E-004 + 4.41300000000000 9.205553202612832E-004 + 4.41400000000000 9.181930381005435E-004 + 4.41500000000000 9.158366398967101E-004 + 4.41600000000000 9.134861113262024E-004 + 4.41700000000000 9.111414380993784E-004 + 4.41800000000000 9.088026059604574E-004 + 4.41900000000000 9.064696006874437E-004 + 4.42000000000000 9.041424080920488E-004 + 4.42100000000000 9.018210140196135E-004 + 4.42200000000000 8.995054043490327E-004 + 4.42300000000000 8.971955649926762E-004 + 4.42400000000000 8.948914818963155E-004 + 4.42500000000000 8.925931410390459E-004 + 4.42600000000000 8.903005284332083E-004 + 4.42700000000000 8.880136301243167E-004 + 4.42800000000000 8.857324321909796E-004 + 4.42900000000000 8.834569207448250E-004 + 4.43000000000000 8.811870819304273E-004 + 4.43100000000000 8.789229019252266E-004 + 4.43200000000000 8.766643669394595E-004 + 4.43300000000000 8.744114632160796E-004 + 4.43400000000000 8.721641770306842E-004 + 4.43500000000000 8.699224946914403E-004 + 4.43600000000000 8.676864025390087E-004 + 4.43700000000000 8.654558869464708E-004 + 4.43800000000000 8.632309343192535E-004 + 4.43900000000000 8.610115310950549E-004 + 4.44000000000000 8.587976637437720E-004 + 4.44100000000000 8.565893187674254E-004 + 4.44200000000000 8.543864827000850E-004 + 4.44300000000000 8.521891421077996E-004 + 4.44400000000000 8.499972835885206E-004 + 4.44500000000000 8.478108937720292E-004 + 4.44600000000000 8.456299593198665E-004 + 4.44700000000000 8.434544669252562E-004 + 4.44800000000000 8.412844033130356E-004 + 4.44900000000000 8.391197552395816E-004 + 4.45000000000000 8.369605094927375E-004 + 4.45100000000000 8.348066528917433E-004 + 4.45200000000000 8.326581722871614E-004 + 4.45300000000000 8.305150545608057E-004 + 4.45400000000000 8.283772866256695E-004 + 4.45500000000000 8.262448554258551E-004 + 4.45600000000000 8.241177479365005E-004 + 4.45700000000000 8.219959511637101E-004 + 4.45800000000000 8.198794521444821E-004 + 4.45900000000000 8.177682379466390E-004 + 4.46000000000000 8.156622956687564E-004 + 4.46100000000000 8.135616124400905E-004 + 4.46200000000000 8.114661754205109E-004 + 4.46300000000000 8.093759718004270E-004 + 4.46400000000000 8.072909888007212E-004 + 4.46500000000000 8.052112136726761E-004 + 4.46600000000000 8.031366336979065E-004 + 4.46700000000000 8.010672361882883E-004 + 4.46800000000000 7.990030084858904E-004 + 4.46900000000000 7.969439379629038E-004 + 4.47000000000000 7.948900120215741E-004 + 4.47100000000000 7.928412180941303E-004 + 4.47200000000000 7.907975436427180E-004 + 4.47300000000000 7.887589761593292E-004 + 4.47400000000000 7.867255031657345E-004 + 4.47500000000000 7.846971122134137E-004 + 4.47600000000000 7.826737908834892E-004 + 4.47700000000000 7.806555267866553E-004 + 4.47800000000000 7.786423075631120E-004 + 4.47900000000000 7.766341208824967E-004 + 4.48000000000000 7.746309544438168E-004 + 4.48100000000000 7.726327959753819E-004 + 4.48200000000000 7.706396332347351E-004 + 4.48300000000000 7.686514540085882E-004 + 4.48400000000000 7.666682461127519E-004 + 4.48500000000000 7.646899973920712E-004 + 4.48600000000000 7.627166957203576E-004 + 4.48700000000000 7.607483290003207E-004 + 4.48800000000000 7.587848851635049E-004 + 4.48900000000000 7.568263521702209E-004 + 4.49000000000000 7.548727180094790E-004 + 4.49100000000000 7.529239706989253E-004 + 4.49200000000000 7.509800982847727E-004 + 4.49300000000000 7.490410888417380E-004 + 4.49400000000000 7.471069304729747E-004 + 4.49500000000000 7.451776113100066E-004 + 4.49600000000000 7.432531195126646E-004 + 4.49700000000000 7.413334432690201E-004 + 4.49800000000000 7.394185707953194E-004 + 4.49900000000000 7.375084903359204E-004 + 4.50000000000000 7.356031901632261E-004 + 4.50100000000000 7.337026585776210E-004 + 4.50200000000000 7.318068839074067E-004 + 4.50300000000000 7.299158545087357E-004 + 4.50400000000000 7.280295587655500E-004 + 4.50500000000000 7.261479850895147E-004 + 4.50600000000000 7.242711219199549E-004 + 4.50700000000000 7.223989577237918E-004 + 4.50800000000000 7.205314809954786E-004 + 4.50900000000000 7.186686802569381E-004 + 4.51000000000000 7.168105440574985E-004 + 4.51100000000000 7.149570609738295E-004 + 4.51200000000000 7.131082196098803E-004 + 4.51300000000000 7.112640085968165E-004 + 4.51400000000000 7.094244165929562E-004 + 4.51500000000000 7.075894322837085E-004 + 4.51600000000000 7.057590443815099E-004 + 4.51700000000000 7.039332416257632E-004 + 4.51800000000000 7.021120127827741E-004 + 4.51900000000000 7.002953466456890E-004 + 4.52000000000000 6.984832320344334E-004 + 4.52100000000000 6.966756577956507E-004 + 4.52200000000000 6.948726128026384E-004 + 4.52300000000000 6.930740859552894E-004 + 4.52400000000000 6.912800661800271E-004 + 4.52500000000000 6.894905424297471E-004 + 4.52600000000000 6.877055036837544E-004 + 4.52700000000000 6.859249389477022E-004 + 4.52800000000000 6.841488372535324E-004 + 4.52900000000000 6.823771876594134E-004 + 4.53000000000000 6.806099792496795E-004 + 4.53100000000000 6.788472011347714E-004 + 4.53200000000000 6.770888424511743E-004 + 4.53300000000000 6.753348923613592E-004 + 4.53400000000000 6.735853400537219E-004 + 4.53500000000000 6.718401747425225E-004 + 4.53600000000000 6.700993856678274E-004 + 4.53700000000000 6.683629620954474E-004 + 4.53800000000000 6.666308933168788E-004 + 4.53900000000000 6.649031686492455E-004 + 4.54000000000000 6.631797774352366E-004 + 4.54100000000000 6.614607090430501E-004 + 4.54200000000000 6.597459528663324E-004 + 4.54300000000000 6.580354983241191E-004 + 4.54400000000000 6.563293348607771E-004 + 4.54500000000000 6.546274519459456E-004 + 4.54600000000000 6.529298390744770E-004 + 4.54700000000000 6.512364857663794E-004 + 4.54800000000000 6.495473815667570E-004 + 4.54900000000000 6.478625160457536E-004 + 4.55000000000000 6.461818787984934E-004 + 4.55100000000000 6.445054594450228E-004 + 4.55200000000000 6.428332476302541E-004 + 4.55300000000000 6.411652330239066E-004 + 4.55400000000000 6.395014053204489E-004 + 4.55500000000000 6.378417542390430E-004 + 4.55600000000000 6.361862695234849E-004 + 4.55700000000000 6.345349409421495E-004 + 4.55800000000000 6.328877582879323E-004 + 4.55900000000000 6.312447113781926E-004 + 4.56000000000000 6.296057900546976E-004 + 4.56100000000000 6.279709841835651E-004 + 4.56200000000000 6.263402836552064E-004 + 4.56300000000000 6.247136783842713E-004 + 4.56400000000000 6.230911583095907E-004 + 4.56500000000000 6.214727133941209E-004 + 4.56600000000000 6.198583336248881E-004 + 4.56700000000000 6.182480090129309E-004 + 4.56800000000000 6.166417295932462E-004 + 4.56900000000000 6.150394854247336E-004 + 4.57000000000000 6.134412665901375E-004 + 4.57100000000000 6.118470631959955E-004 + 4.57200000000000 6.102568653725796E-004 + 4.57300000000000 6.086706632738426E-004 + 4.57400000000000 6.070884470773644E-004 + 4.57500000000000 6.055102069842935E-004 + 4.57600000000000 6.039359332192960E-004 + 4.57700000000000 6.023656160304991E-004 + 4.57800000000000 6.007992456894362E-004 + 4.57900000000000 5.992368124909937E-004 + 4.58000000000000 5.976783067533554E-004 + 4.58100000000000 5.961237188179498E-004 + 4.58200000000000 5.945730390493948E-004 + 4.58300000000000 5.930262578354443E-004 + 4.58400000000000 5.914833655869342E-004 + 4.58500000000000 5.899443527377292E-004 + 4.58600000000000 5.884092097446681E-004 + 4.58700000000000 5.868779270875120E-004 + 4.58800000000000 5.853504952688888E-004 + 4.58900000000000 5.838269048142425E-004 + 4.59000000000000 5.823071462717784E-004 + 4.59100000000000 5.807912102124098E-004 + 4.59200000000000 5.792790872297069E-004 + 4.59300000000000 5.777707679398428E-004 + 4.59400000000000 5.762662429815401E-004 + 4.59500000000000 5.747655030160213E-004 + 4.59600000000000 5.732685387269522E-004 + 4.59700000000000 5.717753408203937E-004 + 4.59800000000000 5.702859000247472E-004 + 4.59900000000000 5.688002070907029E-004 + 4.60000000000000 5.673182527911887E-004 + 4.60100000000000 5.658400279213180E-004 + 4.60200000000000 5.643655232983369E-004 + 4.60300000000000 5.628947297615750E-004 + 4.60400000000000 5.614276381723910E-004 + 4.60500000000000 5.599642394141238E-004 + 4.60600000000000 5.585045243920406E-004 + 4.60700000000000 5.570484840332845E-004 + 4.60800000000000 5.555961092868252E-004 + 4.60900000000000 5.541473911234079E-004 + 4.61000000000000 5.527023205355008E-004 + 4.61100000000000 5.512608885372465E-004 + 4.61200000000000 5.498230861644102E-004 + 4.61300000000000 5.483889044743298E-004 + 4.61400000000000 5.469583345458660E-004 + 4.61500000000000 5.455313674793505E-004 + 4.61600000000000 5.441079943965376E-004 + 4.61700000000000 5.426882064405535E-004 + 4.61800000000000 5.412719947758461E-004 + 4.61900000000000 5.398593505881362E-004 + 4.62000000000000 5.384502650843661E-004 + 4.62100000000000 5.370447294926526E-004 + 4.62200000000000 5.356427350622355E-004 + 4.62300000000000 5.342442730634284E-004 + 4.62400000000000 5.328493347875711E-004 + 4.62500000000000 5.314579115469781E-004 + 4.62600000000000 5.300699946748920E-004 + 4.62700000000000 5.286855755254332E-004 + 4.62800000000000 5.273046454735511E-004 + 4.62900000000000 5.259271959149764E-004 + 4.63000000000000 5.245532182661718E-004 + 4.63100000000000 5.231827039642830E-004 + 4.63200000000000 5.218156444670922E-004 + 4.63300000000000 5.204520312529674E-004 + 4.63400000000000 5.190918558208166E-004 + 4.63500000000000 5.177351096900388E-004 + 4.63600000000000 5.163817844004751E-004 + 4.63700000000000 5.150318715123629E-004 + 4.63800000000000 5.136853626062872E-004 + 4.63900000000000 5.123422492831317E-004 + 4.64000000000000 5.110025231640345E-004 + 4.64100000000000 5.096661758903372E-004 + 4.64200000000000 5.083331991235404E-004 + 4.64300000000000 5.070035845452549E-004 + 4.64400000000000 5.056773238571551E-004 + 4.64500000000000 5.043544087809324E-004 + 4.64600000000000 5.030348310582484E-004 + 4.64700000000000 5.017185824506868E-004 + 4.64800000000000 5.004056547397089E-004 + 4.64900000000000 4.990960397266052E-004 + 4.65000000000000 4.977897292324506E-004 + 4.65100000000000 4.964867150980566E-004 + 4.65200000000000 4.951869891839256E-004 + 4.65300000000000 4.938905433702056E-004 + 4.65400000000000 4.925973695566430E-004 + 4.65500000000000 4.913074596625372E-004 + 4.65600000000000 4.900208056266952E-004 + 4.65700000000000 4.887373994073851E-004 + 4.65800000000000 4.874572329822912E-004 + 4.65900000000000 4.861802983484682E-004 + 4.66000000000000 4.849065875222956E-004 + 4.66100000000000 4.836360925394327E-004 + 4.66200000000000 4.823688054547740E-004 + 4.66300000000000 4.811047183424024E-004 + 4.66400000000000 4.798438232955461E-004 + 4.66500000000000 4.785861124265325E-004 + 4.66600000000000 4.773315778667441E-004 + 4.66700000000000 4.760802117665737E-004 + 4.66800000000000 4.748320062953791E-004 + 4.66900000000000 4.735869536414398E-004 + 4.67000000000000 4.723450460119119E-004 + 4.67100000000000 4.711062756327833E-004 + 4.67200000000000 4.698706347488310E-004 + 4.67300000000000 4.686381156235757E-004 + 4.67400000000000 4.674087105392387E-004 + 4.67500000000000 4.661824117966975E-004 + 4.67600000000000 4.649592117154418E-004 + 4.67700000000000 4.637391026335304E-004 + 4.67800000000000 4.625220769075477E-004 + 4.67900000000000 4.613081269125592E-004 + 4.68000000000000 4.600972450420694E-004 + 4.68100000000000 4.588894237079775E-004 + 4.68200000000000 4.576846553405351E-004 + 4.68300000000000 4.564829323883025E-004 + 4.68400000000000 4.552842473181052E-004 + 4.68500000000000 4.540885926149921E-004 + 4.68600000000000 4.528959607821929E-004 + 4.68700000000000 4.517063443410734E-004 + 4.68800000000000 4.505197358310952E-004 + 4.68900000000000 4.493361278097717E-004 + 4.69000000000000 4.481555128526263E-004 + 4.69100000000000 4.469778835531503E-004 + 4.69200000000000 4.458032325227596E-004 + 4.69300000000000 4.446315523907540E-004 + 4.69400000000000 4.434628358042741E-004 + 4.69500000000000 4.422970754282596E-004 + 4.69600000000000 4.411342639454082E-004 + 4.69700000000000 4.399743940561322E-004 + 4.69800000000000 4.388174584785187E-004 + 4.69900000000000 4.376634499482872E-004 + 4.70000000000000 4.365123612187473E-004 + 4.70100000000000 4.353641850607591E-004 + 4.70200000000000 4.342189142626906E-004 + 4.70300000000000 4.330765416303765E-004 + 4.70400000000000 4.319370599870784E-004 + 4.70500000000000 4.308004621734416E-004 + 4.70600000000000 4.296667410474566E-004 + 4.70700000000000 4.285358894844170E-004 + 4.70800000000000 4.274079003768782E-004 + 4.70900000000000 4.262827666346181E-004 + 4.71000000000000 4.251604811845960E-004 + 4.71100000000000 4.240410369709117E-004 + 4.71200000000000 4.229244269547663E-004 + 4.71300000000000 4.218106441144201E-004 + 4.71400000000000 4.206996814451542E-004 + 4.71500000000000 4.195915319592301E-004 + 4.71600000000000 4.184861886858483E-004 + 4.71700000000000 4.173836446711103E-004 + 4.71800000000000 4.162838929779777E-004 + 4.71900000000000 4.151869266862324E-004 + 4.72000000000000 4.140927388924377E-004 + 4.72100000000000 4.130013227098977E-004 + 4.72200000000000 4.119126712686195E-004 + 4.72300000000000 4.108267777152720E-004 + 4.72400000000000 4.097436352131473E-004 + 4.72500000000000 4.086632369421224E-004 + 4.72600000000000 4.075855760986192E-004 + 4.72700000000000 4.065106458955648E-004 + 4.72800000000000 4.054384395623547E-004 + 4.72900000000000 4.043689503448117E-004 + 4.73000000000000 4.033021715051486E-004 + 4.73100000000000 4.022380963219291E-004 + 4.73200000000000 4.011767180900294E-004 + 4.73300000000000 4.001180301205991E-004 + 4.73400000000000 3.990620257410239E-004 + 4.73500000000000 3.980086982948863E-004 + 4.73600000000000 3.969580411419276E-004 + 4.73700000000000 3.959100476580104E-004 + 4.73800000000000 3.948647112350795E-004 + 4.73900000000000 3.938220252811255E-004 + 4.74000000000000 3.927819832201448E-004 + 4.74100000000000 3.917445784921040E-004 + 4.74200000000000 3.907098045529000E-004 + 4.74300000000000 3.896776548743247E-004 + 4.74400000000000 3.886481229440262E-004 + 4.74500000000000 3.876212022654709E-004 + 4.74600000000000 3.865968863579071E-004 + 4.74700000000000 3.855751687563275E-004 + 4.74800000000000 3.845560430114315E-004 + 4.74900000000000 3.835395026895890E-004 + 4.75000000000000 3.825255413728022E-004 + 4.75100000000000 3.815141526586700E-004 + 4.75200000000000 3.805053301603504E-004 + 4.75300000000000 3.794990675065230E-004 + 4.75400000000000 3.784953583413542E-004 + 4.75500000000000 3.774941963244593E-004 + 4.75600000000000 3.764955751308655E-004 + 4.75700000000000 3.754994884509773E-004 + 4.75800000000000 3.745059299905379E-004 + 4.75900000000000 3.735148934705951E-004 + 4.76000000000000 3.725263726274634E-004 + 4.76100000000000 3.715403612126891E-004 + 4.76200000000000 3.705568529930130E-004 + 4.76300000000000 3.695758417503365E-004 + 4.76400000000000 3.685973212816832E-004 + 4.76500000000000 3.676212853991653E-004 + 4.76600000000000 3.666477279299462E-004 + 4.76700000000000 3.656766427162065E-004 + 4.76800000000000 3.647080236151077E-004 + 4.76900000000000 3.637418644987561E-004 + 4.77000000000000 3.627781592541682E-004 + 4.77100000000000 3.618169017832361E-004 + 4.77200000000000 3.608580860026903E-004 + 4.77300000000000 3.599017058440666E-004 + 4.77400000000000 3.589477552536697E-004 + 4.77500000000000 3.579962281925392E-004 + 4.77600000000000 3.570471186364139E-004 + 4.77700000000000 3.561004205756975E-004 + 4.77800000000000 3.551561280154239E-004 + 4.77900000000000 3.542142349752219E-004 + 4.78000000000000 3.532747354892816E-004 + 4.78100000000000 3.523376236063195E-004 + 4.78200000000000 3.514028933895432E-004 + 4.78300000000000 3.504705389166189E-004 + 4.78400000000000 3.495405542796357E-004 + 4.78500000000000 3.486129335850714E-004 + 4.78600000000000 3.476876709537597E-004 + 4.78700000000000 3.467647605208548E-004 + 4.78800000000000 3.458441964357981E-004 + 4.78900000000000 3.449259728622844E-004 + 4.79000000000000 3.440100839782278E-004 + 4.79100000000000 3.430965239757281E-004 + 4.79200000000000 3.421852870610376E-004 + 4.79300000000000 3.412763674545266E-004 + 4.79400000000000 3.403697593906507E-004 + 4.79500000000000 3.394654571179177E-004 + 4.79600000000000 3.385634548988527E-004 + 4.79700000000000 3.376637470099670E-004 + 4.79800000000000 3.367663277417230E-004 + 4.79900000000000 3.358711913985025E-004 + 4.80000000000000 3.349783322985730E-004 + 4.80100000000000 3.340877447740546E-004 + 4.80200000000000 3.331994231708876E-004 + 4.80300000000000 3.323133618487996E-004 + 4.80400000000000 3.314295551812725E-004 + 4.80500000000000 3.305479975555105E-004 + 4.80600000000000 3.296686833724062E-004 + 4.80700000000000 3.287916070465100E-004 + 4.80800000000000 3.279167630059962E-004 + 4.80900000000000 3.270441456926308E-004 + 4.81000000000000 3.261737495617401E-004 + 4.81100000000000 3.253055690821779E-004 + 4.81200000000000 3.244395987362928E-004 + 4.81300000000000 3.235758330198977E-004 + 4.81400000000000 3.227142664422360E-004 + 4.81500000000000 3.218548935259513E-004 + 4.81600000000000 3.209977088070547E-004 + 4.81700000000000 3.201427068348928E-004 + 4.81800000000000 3.192898821721170E-004 + 4.81900000000000 3.184392293946512E-004 + 4.82000000000000 3.175907430916599E-004 + 4.82100000000000 3.167444178655179E-004 + 4.82200000000000 3.159002483317776E-004 + 4.82300000000000 3.150582291191387E-004 + 4.82400000000000 3.142183548694163E-004 + 4.82500000000000 3.133806202375100E-004 + 4.82600000000000 3.125450198913731E-004 + 4.82700000000000 3.117115485119808E-004 + 4.82800000000000 3.108802007932998E-004 + 4.82900000000000 3.100509714422573E-004 + 4.83000000000000 3.092238551787101E-004 + 4.83100000000000 3.083988467354138E-004 + 4.83200000000000 3.075759408579926E-004 + 4.83300000000000 3.067551323049076E-004 + 4.83400000000000 3.059364158474277E-004 + 4.83500000000000 3.051197862695979E-004 + 4.83600000000000 3.043052383682095E-004 + 4.83700000000000 3.034927669527701E-004 + 4.83800000000000 3.026823668454719E-004 + 4.83900000000000 3.018740328811635E-004 + 4.84000000000000 3.010677599073186E-004 + 4.84100000000000 3.002635427840054E-004 + 4.84200000000000 2.994613763838584E-004 + 4.84300000000000 2.986612555920467E-004 + 4.84400000000000 2.978631753062452E-004 + 4.84500000000000 2.970671304366044E-004 + 4.84600000000000 2.962731159057208E-004 + 4.84700000000000 2.954811266486076E-004 + 4.84800000000000 2.946911576126644E-004 + 4.84900000000000 2.939032037576479E-004 + 4.85000000000000 2.931172600556436E-004 + 4.85100000000000 2.923333214910347E-004 + 4.85200000000000 2.915513830604736E-004 + 4.85300000000000 2.907714397728530E-004 + 4.85400000000000 2.899934866492763E-004 + 4.85500000000000 2.892175187230285E-004 + 4.85600000000000 2.884435310395476E-004 + 4.85700000000000 2.876715186563947E-004 + 4.85800000000000 2.869014766432263E-004 + 4.85900000000000 2.861334000817646E-004 + 4.86000000000000 2.853672840657690E-004 + 4.86100000000000 2.846031237010076E-004 + 4.86200000000000 2.838409141052282E-004 + 4.86300000000000 2.830806504081300E-004 + 4.86400000000000 2.823223277513351E-004 + 4.86500000000000 2.815659412883598E-004 + 4.86600000000000 2.808114861845868E-004 + 4.86700000000000 2.800589576172360E-004 + 4.86800000000000 2.793083507753372E-004 + 4.86900000000000 2.785596608597015E-004 + 4.87000000000000 2.778128830828927E-004 + 4.87100000000000 2.770680126692004E-004 + 4.87200000000000 2.763250448546112E-004 + 4.87300000000000 2.755839748867807E-004 + 4.87400000000000 2.748447980250063E-004 + 4.87500000000000 2.741075095401986E-004 + 4.87600000000000 2.733721047148545E-004 + 4.87700000000000 2.726385788430292E-004 + 4.87800000000000 2.719069272303082E-004 + 4.87900000000000 2.711771451937805E-004 + 4.88000000000000 2.704492280620108E-004 + 4.88100000000000 2.697231711750114E-004 + 4.88200000000000 2.689989698842166E-004 + 4.88300000000000 2.682766195524534E-004 + 4.88400000000000 2.675561155539159E-004 + 4.88500000000000 2.668374532741372E-004 + 4.88600000000000 2.661206281099625E-004 + 4.88700000000000 2.654056354695228E-004 + 4.88800000000000 2.646924707722068E-004 + 4.88900000000000 2.639811294486345E-004 + 4.89000000000000 2.632716069406306E-004 + 4.89100000000000 2.625638987011974E-004 + 4.89200000000000 2.618580001944884E-004 + 4.89300000000000 2.611539068957814E-004 + 4.89400000000000 2.604516142914517E-004 + 4.89500000000000 2.597511178789463E-004 + 4.89600000000000 2.590524131667567E-004 + 4.89700000000000 2.583554956743926E-004 + 4.89800000000000 2.576603609323563E-004 + 4.89900000000000 2.569670044821151E-004 + 4.90000000000000 2.562754218760765E-004 + 4.90100000000000 2.555856086775612E-004 + 4.90200000000000 2.548975604607767E-004 + 4.90300000000000 2.542112728107921E-004 + 4.90400000000000 2.535267413235120E-004 + 4.90500000000000 2.528439616056498E-004 + 4.90600000000000 2.521629292747027E-004 + 4.90700000000000 2.514836399589254E-004 + 4.90800000000000 2.508060892973046E-004 + 4.90900000000000 2.501302729395335E-004 + 4.91000000000000 2.494561865459852E-004 + 4.91100000000000 2.487838257876885E-004 + 4.91200000000000 2.481131863463019E-004 + 4.91300000000000 2.474442639140873E-004 + 4.91400000000000 2.467770541938861E-004 + 4.91500000000000 2.461115528990924E-004 + 4.91600000000000 2.454477557536289E-004 + 4.91700000000000 2.447856584919214E-004 + 4.91800000000000 2.441252568588728E-004 + 4.91900000000000 2.434665466098394E-004 + 4.92000000000000 2.428095235106047E-004 + 4.92100000000000 2.421541833373552E-004 + 4.92200000000000 2.415005218766551E-004 + 4.92300000000000 2.408485349254212E-004 + 4.92400000000000 2.401982182908988E-004 + 4.92500000000000 2.395495677906365E-004 + 4.92600000000000 2.389025792524613E-004 + 4.92700000000000 2.382572485144546E-004 + 4.92800000000000 2.376135714249273E-004 + 4.92900000000000 2.369715438423948E-004 + 4.93000000000000 2.363311616355537E-004 + 4.93100000000000 2.356924206832559E-004 + 4.93200000000000 2.350553168744859E-004 + 4.93300000000000 2.344198461083351E-004 + 4.93400000000000 2.337860042939782E-004 + 4.93500000000000 2.331537873506494E-004 + 4.93600000000000 2.325231912076174E-004 + 4.93700000000000 2.318942118041619E-004 + 4.93800000000000 2.312668450895496E-004 + 4.93900000000000 2.306410870230101E-004 + 4.94000000000000 2.300169335737119E-004 + 4.94100000000000 2.293943807207390E-004 + 4.94200000000000 2.287734244530664E-004 + 4.94300000000000 2.281540607695371E-004 + 4.94400000000000 2.275362856788381E-004 + 4.94500000000000 2.269200951994767E-004 + 4.94600000000000 2.263054853597569E-004 + 4.94700000000000 2.256924521977563E-004 + 4.94800000000000 2.250809917613022E-004 + 4.94900000000000 2.244711001079486E-004 + 4.95000000000000 2.238627733049523E-004 + 4.95100000000000 2.232560074292499E-004 + 4.95200000000000 2.226507985674352E-004 + 4.95300000000000 2.220471428157345E-004 + 4.95400000000000 2.214450362799854E-004 + 4.95500000000000 2.208444750756116E-004 + 4.95600000000000 2.202454553276020E-004 + 4.95700000000000 2.196479731704864E-004 + 4.95800000000000 2.190520247483125E-004 + 4.95900000000000 2.184576062146239E-004 + 4.96000000000000 2.178647137324369E-004 + 4.96100000000000 2.172733434742172E-004 + 4.96200000000000 2.166834916218584E-004 + 4.96300000000000 2.160951543666578E-004 + 4.96400000000000 2.155083279092954E-004 + 4.96500000000000 2.149230084598103E-004 + 4.96600000000000 2.143391922375783E-004 + 4.96700000000000 2.137568754712901E-004 + 4.96800000000000 2.131760543989283E-004 + 4.96900000000000 2.125967252677451E-004 + 4.97000000000000 2.120188843342407E-004 + 4.97100000000000 2.114425278641397E-004 + 4.97200000000000 2.108676521323705E-004 + 4.97300000000000 2.102942534230424E-004 + 4.97400000000000 2.097223280294231E-004 + 4.97500000000000 2.091518722539175E-004 + 4.97600000000000 2.085828824080455E-004 + 4.97700000000000 2.080153548124195E-004 + 4.97800000000000 2.074492857967236E-004 + 4.97900000000000 2.068846716996905E-004 + 4.98000000000000 2.063215088690812E-004 + 4.98100000000000 2.057597936616618E-004 + 4.98200000000000 2.051995224431828E-004 + 4.98300000000000 2.046406915883574E-004 + 4.98400000000000 2.040832974808394E-004 + 4.98500000000000 2.035273365132024E-004 + 4.98600000000000 2.029728050869176E-004 + 4.98700000000000 2.024196996123332E-004 + 4.98800000000000 2.018680165086522E-004 + 4.98900000000000 2.013177522039117E-004 + 4.99000000000000 2.007689031349615E-004 + 4.99100000000000 2.002214657474425E-004 + 4.99200000000000 1.996754364957662E-004 + 4.99300000000000 1.991308118430930E-004 + 4.99400000000000 1.985875882613117E-004 + 4.99500000000000 1.980457622310175E-004 + 4.99600000000000 1.975053302414924E-004 + 4.99700000000000 1.969662887906833E-004 + 4.99800000000000 1.964286343851813E-004 + 4.99900000000000 1.958923635402010E-004 + 5.00000000000000 1.953574727795598E-004 + 5.00100000000000 1.948239586356571E-004 + 5.00200000000000 1.942918176494537E-004 + 5.00300000000000 1.937610463704507E-004 + 5.00400000000000 1.932316413566697E-004 + 5.00500000000000 1.927035991746319E-004 + 5.00600000000000 1.921769163993373E-004 + 5.00700000000000 1.916515896142448E-004 + 5.00800000000000 1.911276154112516E-004 + 5.00900000000000 1.906049903906726E-004 + 5.01000000000000 1.900837111612207E-004 + 5.01100000000000 1.895637743399858E-004 + 5.01200000000000 1.890451765524154E-004 + 5.01300000000000 1.885279144322940E-004 + 5.01400000000000 1.880119846217229E-004 + 5.01500000000000 1.874973837711004E-004 + 5.01600000000000 1.869841085391018E-004 + 5.01700000000000 1.864721555926593E-004 + 5.01800000000000 1.859615216069420E-004 + 5.01900000000000 1.854522032653364E-004 + 5.02000000000000 1.849441972594261E-004 + 5.02100000000000 1.844375002889727E-004 + 5.02200000000000 1.839321090618950E-004 + 5.02300000000000 1.834280202942506E-004 + 5.02400000000000 1.829252307102154E-004 + 5.02500000000000 1.824237370420641E-004 + 5.02600000000000 1.819235360301510E-004 + 5.02700000000000 1.814246244228903E-004 + 5.02800000000000 1.809269989767364E-004 + 5.02900000000000 1.804306564561653E-004 + 5.03000000000000 1.799355936336542E-004 + 5.03100000000000 1.794418072896628E-004 + 5.03200000000000 1.789492942126140E-004 + 5.03300000000000 1.784580511988746E-004 + 5.03400000000000 1.779680750527361E-004 + 5.03500000000000 1.774793625863954E-004 + 5.03600000000000 1.769919106199360E-004 + 5.03700000000000 1.765057159813091E-004 + 5.03800000000000 1.760207755063138E-004 + 5.03900000000000 1.755370860385792E-004 + 5.04000000000000 1.750546444295448E-004 + 5.04100000000000 1.745734475384418E-004 + 5.04200000000000 1.740934922322743E-004 + 5.04300000000000 1.736147753858005E-004 + 5.04400000000000 1.731372938815139E-004 + 5.04500000000000 1.726610446096249E-004 + 5.04600000000000 1.721860244680418E-004 + 5.04700000000000 1.717122303623525E-004 + 5.04800000000000 1.712396592058056E-004 + 5.04900000000000 1.707683079192922E-004 + 5.05000000000000 1.702981734313273E-004 + 5.05100000000000 1.698292526780312E-004 + 5.05200000000000 1.693615426031117E-004 + 5.05300000000000 1.688950401578450E-004 + 5.05400000000000 1.684297423010580E-004 + 5.05500000000000 1.679656459991095E-004 + 5.05600000000000 1.675027482258725E-004 + 5.05700000000000 1.670410459627160E-004 + 5.05800000000000 1.665805361984865E-004 + 5.05900000000000 1.661212159294898E-004 + 5.06000000000000 1.656630821594740E-004 + 5.06100000000000 1.652061318996102E-004 + 5.06200000000000 1.647503621684752E-004 + 5.06300000000000 1.642957699920341E-004 + 5.06400000000000 1.638423524036209E-004 + 5.06500000000000 1.633901064439222E-004 + 5.06600000000000 1.629390291609590E-004 + 5.06700000000000 1.624891176100680E-004 + 5.06800000000000 1.620403688538855E-004 + 5.06900000000000 1.615927799623287E-004 + 5.07000000000000 1.611463480125777E-004 + 5.07100000000000 1.607010700890595E-004 + 5.07200000000000 1.602569432834287E-004 + 5.07300000000000 1.598139646945511E-004 + 5.07400000000000 1.593721314284860E-004 + 5.07500000000000 1.589314405984684E-004 + 5.07600000000000 1.584918893248923E-004 + 5.07700000000000 1.580534747352928E-004 + 5.07800000000000 1.576161939643291E-004 + 5.07900000000000 1.571800441537672E-004 + 5.08000000000000 1.567450224524624E-004 + 5.08100000000000 1.563111260163428E-004 + 5.08200000000000 1.558783520083916E-004 + 5.08300000000000 1.554466975986299E-004 + 5.08400000000000 1.550161599641004E-004 + 5.08500000000000 1.545867362888497E-004 + 5.08600000000000 1.541584237639114E-004 + 5.08700000000000 1.537312195872895E-004 + 5.08800000000000 1.533051209639414E-004 + 5.08900000000000 1.528801251057608E-004 + 5.09000000000000 1.524562292315613E-004 + 5.09100000000000 1.520334305670593E-004 + 5.09200000000000 1.516117263448575E-004 + 5.09300000000000 1.511911138044278E-004 + 5.09400000000000 1.507715901920953E-004 + 5.09500000000000 1.503531527610212E-004 + 5.09600000000000 1.499357987711862E-004 + 5.09700000000000 1.495195254893745E-004 + 5.09800000000000 1.491043301891567E-004 + 5.09900000000000 1.486902101508735E-004 + 5.10000000000000 1.482771626616197E-004 + 5.10100000000000 1.478651850152273E-004 + 5.10200000000000 1.474542745122492E-004 + 5.10300000000000 1.470444284599436E-004 + 5.10400000000000 1.466356441722564E-004 + 5.10500000000000 1.462279189698066E-004 + 5.10600000000000 1.458212501798688E-004 + 5.10700000000000 1.454156351363576E-004 + 5.10800000000000 1.450110711798117E-004 + 5.10900000000000 1.446075556573773E-004 + 5.11000000000000 1.442050859227925E-004 + 5.11100000000000 1.438036593363710E-004 + 5.11200000000000 1.434032732649864E-004 + 5.11300000000000 1.430039250820564E-004 + 5.11400000000000 1.426056121675262E-004 + 5.11500000000000 1.422083319078537E-004 + 5.11600000000000 1.418120816959927E-004 + 5.11700000000000 1.414168589313778E-004 + 5.11800000000000 1.410226610199084E-004 + 5.11900000000000 1.406294853739332E-004 + 5.12000000000000 1.402373294122342E-004 + 5.12100000000000 1.398461905600114E-004 + 5.12200000000000 1.394560662488671E-004 + 5.12300000000000 1.390669539167902E-004 + 5.12400000000000 1.386788510081412E-004 + 5.12500000000000 1.382917549736360E-004 + 5.12600000000000 1.379056632703310E-004 + 5.12700000000000 1.375205733616077E-004 + 5.12800000000000 1.371364827171570E-004 + 5.12900000000000 1.367533888129640E-004 + 5.13000000000000 1.363712891312930E-004 + 5.13100000000000 1.359901811606718E-004 + 5.13200000000000 1.356100623958769E-004 + 5.13300000000000 1.352309303379177E-004 + 5.13400000000000 1.348527824940224E-004 + 5.13500000000000 1.344756163776218E-004 + 5.13600000000000 1.340994295083348E-004 + 5.13700000000000 1.337242194119534E-004 + 5.13800000000000 1.333499836204273E-004 + 5.13900000000000 1.329767196718494E-004 + 5.14000000000000 1.326044251104406E-004 + 5.14100000000000 1.322330974865349E-004 + 5.14200000000000 1.318627343565646E-004 + 5.14300000000000 1.314933332830456E-004 + 5.14400000000000 1.311248918345624E-004 + 5.14500000000000 1.307574075857533E-004 + 5.14600000000000 1.303908781172961E-004 + 5.14700000000000 1.300253010158928E-004 + 5.14800000000000 1.296606738742557E-004 + 5.14900000000000 1.292969942910918E-004 + 5.15000000000000 1.289342598710892E-004 + 5.15100000000000 1.285724682249022E-004 + 5.15200000000000 1.282116169691364E-004 + 5.15300000000000 1.278517037263346E-004 + 5.15400000000000 1.274927261249626E-004 + 5.15500000000000 1.271346817993941E-004 + 5.15600000000000 1.267775683898971E-004 + 5.15700000000000 1.264213835426189E-004 + 5.15800000000000 1.260661249095722E-004 + 5.15900000000000 1.257117901486207E-004 + 5.16000000000000 1.253583769234649E-004 + 5.16100000000000 1.250058829036277E-004 + 5.16200000000000 1.246543057644407E-004 + 5.16300000000000 1.243036431870294E-004 + 5.16400000000000 1.239538928582997E-004 + 5.16500000000000 1.236050524709235E-004 + 5.16600000000000 1.232571197233247E-004 + 5.16700000000000 1.229100923196654E-004 + 5.16800000000000 1.225639679698317E-004 + 5.16900000000000 1.222187443894196E-004 + 5.17000000000000 1.218744192997218E-004 + 5.17100000000000 1.215309904277130E-004 + 5.17200000000000 1.211884555060366E-004 + 5.17300000000000 1.208468122729906E-004 + 5.17400000000000 1.205060584725141E-004 + 5.17500000000000 1.201661918541733E-004 + 5.17600000000000 1.198272101731480E-004 + 5.17700000000000 1.194891111902176E-004 + 5.17800000000000 1.191518926717482E-004 + 5.17900000000000 1.188155523896779E-004 + 5.18000000000000 1.184800881215042E-004 + 5.18100000000000 1.181454976502699E-004 + 5.18200000000000 1.178117787645497E-004 + 5.18300000000000 1.174789292584370E-004 + 5.18400000000000 1.171469469315301E-004 + 5.18500000000000 1.168158295889189E-004 + 5.18600000000000 1.164855750411715E-004 + 5.18700000000000 1.161561811043209E-004 + 5.18800000000000 1.158276455998518E-004 + 5.18900000000000 1.154999663546869E-004 + 5.19000000000000 1.151731412011741E-004 + 5.19100000000000 1.148471679770731E-004 + 5.19200000000000 1.145220445255421E-004 + 5.19300000000000 1.141977686951248E-004 + 5.19400000000000 1.138743383397372E-004 + 5.19500000000000 1.135517513186545E-004 + 5.19600000000000 1.132300054964979E-004 + 5.19700000000000 1.129090987432220E-004 + 5.19800000000000 1.125890289341012E-004 + 5.19900000000000 1.122697939497172E-004 + 5.20000000000000 1.119513916759457E-004 + 5.20100000000000 1.116338200039439E-004 + 5.20200000000000 1.113170768301372E-004 + 5.20300000000000 1.110011600562066E-004 + 5.20400000000000 1.106860675890758E-004 + 5.20500000000000 1.103717973408984E-004 + 5.20600000000000 1.100583472290452E-004 + 5.20700000000000 1.097457151760913E-004 + 5.20800000000000 1.094338991098037E-004 + 5.20900000000000 1.091228969631283E-004 + 5.21000000000000 1.088127066741776E-004 + 5.21100000000000 1.085033261862177E-004 + 5.21200000000000 1.081947534476563E-004 + 5.21300000000000 1.078869864120292E-004 + 5.21400000000000 1.075800230379890E-004 + 5.21500000000000 1.072738612892915E-004 + 5.21600000000000 1.069684991347840E-004 + 5.21700000000000 1.066639345483925E-004 + 5.21800000000000 1.063601655091094E-004 + 5.21900000000000 1.060571900009811E-004 + 5.22000000000000 1.057550060130958E-004 + 5.22100000000000 1.054536115395708E-004 + 5.22200000000000 1.051530045795408E-004 + 5.22300000000000 1.048531831371451E-004 + 5.22400000000000 1.045541452215159E-004 + 5.22500000000000 1.042558888467656E-004 + 5.22600000000000 1.039584120319748E-004 + 5.22700000000000 1.036617128011805E-004 + 5.22800000000000 1.033657891833635E-004 + 5.22900000000000 1.030706392124365E-004 + 5.23000000000000 1.027762609272323E-004 + 5.23100000000000 1.024826523714915E-004 + 5.23200000000000 1.021898115938504E-004 + 5.23300000000000 1.018977366478295E-004 + 5.23400000000000 1.016064255918211E-004 + 5.23500000000000 1.013158764890776E-004 + 5.23600000000000 1.010260874076998E-004 + 5.23700000000000 1.007370564206246E-004 + 5.23800000000000 1.004487816056134E-004 + 5.23900000000000 1.001612610452407E-004 + 5.24000000000000 9.987449282688154E-005 + 5.24100000000000 9.958847504270063E-005 + 5.24200000000000 9.930320578963993E-005 + 5.24300000000000 9.901868316940730E-005 + 5.24400000000000 9.873490528846491E-005 + 5.24500000000000 9.845187025801742E-005 + 5.24600000000000 9.816957619400051E-005 + 5.24700000000000 9.788802121706936E-005 + 5.24800000000000 9.760720345258688E-005 + 5.24900000000000 9.732712103061252E-005 + 5.25000000000000 9.704777208589040E-005 + 5.25100000000000 9.676915475783823E-005 + 5.25200000000000 9.649126719053571E-005 + 5.25300000000000 9.621410753271308E-005 + 5.25400000000000 9.593767393773980E-005 + 5.25500000000000 9.566196456361326E-005 + 5.25600000000000 9.538697757294727E-005 + 5.25700000000000 9.511271113296106E-005 + 5.25800000000000 9.483916341546773E-005 + 5.25900000000000 9.456633259686314E-005 + 5.26000000000000 9.429421685811479E-005 + 5.26100000000000 9.402281438475035E-005 + 5.26200000000000 9.375212336684684E-005 + 5.26300000000000 9.348214199901930E-005 + 5.26400000000000 9.321286848040967E-005 + 5.26500000000000 9.294430101467581E-005 + 5.26600000000000 9.267643780998036E-005 + 5.26700000000000 9.240927707897980E-005 + 5.26800000000000 9.214281703881341E-005 + 5.26900000000000 9.187705591109220E-005 + 5.27000000000000 9.161199192188817E-005 + 5.27100000000000 9.134762330172324E-005 + 5.27200000000000 9.108394828555834E-005 + 5.27300000000000 9.082096511278272E-005 + 5.27400000000000 9.055867202720274E-005 + 5.27500000000000 9.029706727703150E-005 + 5.27600000000000 9.003614911487784E-005 + 5.27700000000000 8.977591579773543E-005 + 5.27800000000000 8.951636558697233E-005 + 5.27900000000000 8.925749674832005E-005 + 5.28000000000000 8.899930755186292E-005 + 5.28100000000000 8.874179627202750E-005 + 5.28200000000000 8.848496118757189E-005 + 5.28300000000000 8.822880058157507E-005 + 5.28400000000000 8.797331274142644E-005 + 5.28500000000000 8.771849595881512E-005 + 5.28600000000000 8.746434852971948E-005 + 5.28700000000000 8.721086875439675E-005 + 5.28800000000000 8.695805493737225E-005 + 5.28900000000000 8.670590538742924E-005 + 5.29000000000000 8.645441841759827E-005 + 5.29100000000000 8.620359234514686E-005 + 5.29200000000000 8.595342549156921E-005 + 5.29300000000000 8.570391618257551E-005 + 5.29400000000000 8.545506274808211E-005 + 5.29500000000000 8.520686352220076E-005 + 5.29600000000000 8.495931684322850E-005 + 5.29700000000000 8.471242105363752E-005 + 5.29800000000000 8.446617450006471E-005 + 5.29900000000000 8.422057553330158E-005 + 5.30000000000000 8.397562250828408E-005 + 5.30100000000000 8.373131378408234E-005 + 5.30200000000000 8.348764772389060E-005 + 5.30300000000000 8.324462269501723E-005 + 5.30400000000000 8.300223706887429E-005 + 5.30500000000000 8.276048922096791E-005 + 5.30600000000000 8.251937753088782E-005 + 5.30700000000000 8.227890038229769E-005 + 5.30800000000000 8.203905616292496E-005 + 5.30900000000000 8.179984326455082E-005 + 5.31000000000000 8.156126008300042E-005 + 5.31100000000000 8.132330501813296E-005 + 5.31200000000000 8.108597647383152E-005 + 5.31300000000000 8.084927285799356E-005 + 5.31400000000000 8.061319258252077E-005 + 5.31500000000000 8.037773406330948E-005 + 5.31600000000000 8.014289572024073E-005 + 5.31700000000000 7.990867597717042E-005 + 5.31800000000000 7.967507326191979E-005 + 5.31900000000000 7.944208600626549E-005 + 5.32000000000000 7.920971264592990E-005 + 5.32100000000000 7.897795162057162E-005 + 5.32200000000000 7.874680137377548E-005 + 5.32300000000000 7.851626035304326E-005 + 5.32400000000000 7.828632700978386E-005 + 5.32500000000000 7.805699979930376E-005 + 5.32600000000000 7.782827718079747E-005 + 5.32700000000000 7.760015761733799E-005 + 5.32800000000000 7.737263957586723E-005 + 5.32900000000000 7.714572152718667E-005 + 5.33000000000000 7.691940194594761E-005 + 5.33100000000000 7.669367931064200E-005 + 5.33200000000000 7.646855210359289E-005 + 5.33300000000000 7.624401881094497E-005 + 5.33400000000000 7.602007792265529E-005 + 5.33500000000000 7.579672793248384E-005 + 5.33600000000000 7.557396733798419E-005 + 5.33700000000000 7.535179464049425E-005 + 5.33800000000000 7.513020834512692E-005 + 5.33900000000000 7.490920696076085E-005 + 5.34000000000000 7.468878900003114E-005 + 5.34100000000000 7.446895297932015E-005 + 5.34200000000000 7.424969741874836E-005 + 5.34300000000000 7.403102084216505E-005 + 5.34400000000000 7.381292177713920E-005 + 5.34500000000000 7.359539875495043E-005 + 5.34600000000000 7.337845031057980E-005 + 5.34700000000000 7.316207498270067E-005 + 5.34800000000000 7.294627131366982E-005 + 5.34900000000000 7.273103784951811E-005 + 5.35000000000000 7.251637313994176E-005 + 5.35100000000000 7.230227573829315E-005 + 5.35200000000000 7.208874420157181E-005 + 5.35300000000000 7.187577709041568E-005 + 5.35400000000000 7.166337296909191E-005 + 5.35500000000000 7.145153040548808E-005 + 5.35600000000000 7.124024797110333E-005 + 5.35700000000000 7.102952424103929E-005 + 5.35800000000000 7.081935779399148E-005 + 5.35900000000000 7.060974721224038E-005 + 5.36000000000000 7.040069108164246E-005 + 5.36100000000000 7.019218799162168E-005 + 5.36200000000000 6.998423653516045E-005 + 5.36300000000000 6.977683530879108E-005 + 5.36400000000000 6.956998291258697E-005 + 5.36500000000000 6.936367795015377E-005 + 5.36600000000000 6.915791902862100E-005 + 5.36700000000000 6.895270475863317E-005 + 5.36800000000000 6.874803375434109E-005 + 5.36900000000000 6.854390463339347E-005 + 5.37000000000000 6.834031601692808E-005 + 5.37100000000000 6.813726652956335E-005 + 5.37200000000000 6.793475479938974E-005 + 5.37300000000000 6.773277945796111E-005 + 5.37400000000000 6.753133914028636E-005 + 5.37500000000000 6.733043248482091E-005 + 5.37600000000000 6.713005813345808E-005 + 5.37700000000000 6.693021473152077E-005 + 5.37800000000000 6.673090092775295E-005 + 5.37900000000000 6.653211537431135E-005 + 5.38000000000000 6.633385672675692E-005 + 5.38100000000000 6.613612364404653E-005 + 5.38200000000000 6.593891478852467E-005 + 5.38300000000000 6.574222882591500E-005 + 5.38400000000000 6.554606442531208E-005 + 5.38500000000000 6.535042025917313E-005 + 5.38600000000000 6.515529500330970E-005 + 5.38700000000000 6.496068733687940E-005 + 5.38800000000000 6.476659594237777E-005 + 5.38900000000000 6.457301950562987E-005 + 5.39000000000000 6.437995671578230E-005 + 5.39100000000000 6.418740626529484E-005 + 5.39200000000000 6.399536684993251E-005 + 5.39300000000000 6.380383716875725E-005 + 5.39400000000000 6.361281592411979E-005 + 5.39500000000000 6.342230182165171E-005 + 5.39600000000000 6.323229357025736E-005 + 5.39700000000000 6.304278988210551E-005 + 5.39800000000000 6.285378947262173E-005 + 5.39900000000000 6.266529106048008E-005 + 5.40000000000000 6.247729336759524E-005 + 5.40100000000000 6.228979511911446E-005 + 5.40200000000000 6.210279504340966E-005 + 5.40300000000000 6.191629187206944E-005 + 5.40400000000000 6.173028433989124E-005 + 5.40500000000000 6.154477118487334E-005 + 5.40600000000000 6.135975114820706E-005 + 5.40700000000000 6.117522297426881E-005 + 5.40800000000000 6.099118541061231E-005 + 5.40900000000000 6.080763720796081E-005 + 5.41000000000000 6.062457712019910E-005 + 5.41100000000000 6.044200390436596E-005 + 5.41200000000000 6.025991632064627E-005 + 5.41300000000000 6.007831313236320E-005 + 5.41400000000000 5.989719310597058E-005 + 5.41500000000000 5.971655501104517E-005 + 5.41600000000000 5.953639762027896E-005 + 5.41700000000000 5.935671970947150E-005 + 5.41800000000000 5.917752005752216E-005 + 5.41900000000000 5.899879744642266E-005 + 5.42000000000000 5.882055066124930E-005 + 5.42100000000000 5.864277849015542E-005 + 5.42200000000000 5.846547972436389E-005 + 5.42300000000000 5.828865315815934E-005 + 5.42400000000000 5.811229758888085E-005 + 5.42500000000000 5.793641181691433E-005 + 5.42600000000000 5.776099464568492E-005 + 5.42700000000000 5.758604488164966E-005 + 5.42800000000000 5.741156133428994E-005 + 5.42900000000000 5.723754281610396E-005 + 5.43000000000000 5.706398814259950E-005 + 5.43100000000000 5.689089613228632E-005 + 5.43200000000000 5.671826560666882E-005 + 5.43300000000000 5.654609539023873E-005 + 5.43400000000000 5.637438431046759E-005 + 5.43500000000000 5.620313119779956E-005 + 5.43600000000000 5.603233488564402E-005 + 5.43700000000000 5.586199421036825E-005 + 5.43800000000000 5.569210801129015E-005 + 5.43900000000000 5.552267513067104E-005 + 5.44000000000000 5.535369441370824E-005 + 5.44100000000000 5.518516470852799E-005 + 5.44200000000000 5.501708486617814E-005 + 5.44300000000000 5.484945374062099E-005 + 5.44400000000000 5.468227018872610E-005 + 5.44500000000000 5.451553307026304E-005 + 5.44600000000000 5.434924124789440E-005 + 5.44700000000000 5.418339358716846E-005 + 5.44800000000000 5.401798895651224E-005 + 5.44900000000000 5.385302622722437E-005 + 5.45000000000000 5.368850427346788E-005 + 5.45100000000000 5.352442197226328E-005 + 5.45200000000000 5.336077820348150E-005 + 5.45300000000000 5.319757184983676E-005 + 5.45400000000000 5.303480179687968E-005 + 5.45500000000000 5.287246693299013E-005 + 5.45600000000000 5.271056614937043E-005 + 5.45700000000000 5.254909834003830E-005 + 5.45800000000000 5.238806240181982E-005 + 5.45900000000000 5.222745723434274E-005 + 5.46000000000000 5.206728174002935E-005 + 5.46100000000000 5.190753482408967E-005 + 5.46200000000000 5.174821539451458E-005 + 5.46300000000000 5.158932236206891E-005 + 5.46400000000000 5.143085464028468E-005 + 5.46500000000000 5.127281114545421E-005 + 5.46600000000000 5.111519079662329E-005 + 5.46700000000000 5.095799251558445E-005 + 5.46800000000000 5.080121522687016E-005 + 5.46900000000000 5.064485785774607E-005 + 5.47000000000000 5.048891933820421E-005 + 5.47100000000000 5.033339860095633E-005 + 5.47200000000000 5.017829458142721E-005 + 5.47300000000000 5.002360621774787E-005 + 5.47400000000000 4.986933245074891E-005 + 5.47500000000000 4.971547222395397E-005 + 5.47600000000000 4.956202448357295E-005 + 5.47700000000000 4.940898817849543E-005 + 5.47800000000000 4.925636226028407E-005 + 5.47900000000000 4.910414568316792E-005 + 5.48000000000000 4.895233740403597E-005 + 5.48100000000000 4.880093638243054E-005 + 5.48200000000000 4.864994158054067E-005 + 5.48300000000000 4.849935196319565E-005 + 5.48400000000000 4.834916649785852E-005 + 5.48500000000000 4.819938415461943E-005 + 5.48600000000000 4.805000390618941E-005 + 5.48700000000000 4.790102472789361E-005 + 5.48800000000000 4.775244559766503E-005 + 5.48900000000000 4.760426549603808E-005 + 5.49000000000000 4.745648340614202E-005 + 5.49100000000000 4.730909831369475E-005 + 5.49200000000000 4.716210920699627E-005 + 5.49300000000000 4.701551507692229E-005 + 5.49400000000000 4.686931491691801E-005 + 5.49500000000000 4.672350772299163E-005 + 5.49600000000000 4.657809249370813E-005 + 5.49700000000000 4.643306823018292E-005 + 5.49800000000000 4.628843393607550E-005 + 5.49900000000000 4.614418861758321E-005 + 5.50000000000000 4.600033128343499E-005 + 5.50100000000000 4.585686094488503E-005 + 5.50200000000000 4.571377661570676E-005 + 5.50300000000000 4.557107731218626E-005 + 5.50400000000000 4.542876205311643E-005 + 5.50500000000000 4.528682985979061E-005 + 5.50600000000000 4.514527975599635E-005 + 5.50700000000000 4.500411076800942E-005 + 5.50800000000000 4.486332192458754E-005 + 5.50900000000000 4.472291225696423E-005 + 5.51000000000000 4.458288079884287E-005 + 5.51100000000000 4.444322658639035E-005 + 5.51200000000000 4.430394865823117E-005 + 5.51300000000000 4.416504605544134E-005 + 5.51400000000000 4.402651782154222E-005 + 5.51500000000000 4.388836300249461E-005 + 5.51600000000000 4.375058064669265E-005 + 5.51700000000000 4.361316980495780E-005 + 5.51800000000000 4.347612953053295E-005 + 5.51900000000000 4.333945887907624E-005 + 5.52000000000000 4.320315690865532E-005 + 5.52100000000000 4.306722267974121E-005 + 5.52200000000000 4.293165525520246E-005 + 5.52300000000000 4.279645370029921E-005 + 5.52400000000000 4.266161708267728E-005 + 5.52500000000000 4.252714447236225E-005 + 5.52600000000000 4.239303494175365E-005 + 5.52700000000000 4.225928756561896E-005 + 5.52800000000000 4.212590142108793E-005 + 5.52900000000000 4.199287558764660E-005 + 5.53000000000000 4.186020914713155E-005 + 5.53100000000000 4.172790118372411E-005 + 5.53200000000000 4.159595078394447E-005 + 5.53300000000000 4.146435703664597E-005 + 5.53400000000000 4.133311903300939E-005 + 5.53500000000000 4.120223586653705E-005 + 5.53600000000000 4.107170663304720E-005 + 5.53700000000000 4.094153043066828E-005 + 5.53800000000000 4.081170635983312E-005 + 5.53900000000000 4.068223352327334E-005 + 5.54000000000000 4.055311102601363E-005 + 5.54100000000000 4.042433797536609E-005 + 5.54200000000000 4.029591348092459E-005 + 5.54300000000000 4.016783665455907E-005 + 5.54400000000000 4.004010661041002E-005 + 5.54500000000000 3.991272246488279E-005 + 5.54600000000000 3.978568333664197E-005 + 5.54700000000000 3.965898834660591E-005 + 5.54800000000000 3.953263661794099E-005 + 5.54900000000000 3.940662727605628E-005 + 5.55000000000000 3.928095944859778E-005 + 5.55100000000000 3.915563226544303E-005 + 5.55200000000000 3.903064485869551E-005 + 5.55300000000000 3.890599636267922E-005 + 5.55400000000000 3.878168591393310E-005 + 5.55500000000000 3.865771265120565E-005 + 5.55600000000000 3.853407571544937E-005 + 5.55700000000000 3.841077424981540E-005 + 5.55800000000000 3.828780739964803E-005 + 5.55900000000000 3.816517431247927E-005 + 5.56000000000000 3.804287413802349E-005 + 5.56100000000000 3.792090602817203E-005 + 5.56200000000000 3.779926913698771E-005 + 5.56300000000000 3.767796262069960E-005 + 5.56400000000000 3.755698563769756E-005 + 5.56500000000000 3.743633734852700E-005 + 5.56600000000000 3.731601691588341E-005 + 5.56700000000000 3.719602350460719E-005 + 5.56800000000000 3.707635628167825E-005 + 5.56900000000000 3.695701441621078E-005 + 5.57000000000000 3.683799707944791E-005 + 5.57100000000000 3.671930344475651E-005 + 5.57200000000000 3.660093268762185E-005 + 5.57300000000000 3.648288398564251E-005 + 5.57400000000000 3.636515651852503E-005 + 5.57500000000000 3.624774946807871E-005 + 5.57600000000000 3.613066201821043E-005 + 5.57700000000000 3.601389335491955E-005 + 5.57800000000000 3.589744266629254E-005 + 5.57900000000000 3.578130914249803E-005 + 5.58000000000000 3.566549197578150E-005 + 5.58100000000000 3.554999036046025E-005 + 5.58200000000000 3.543480349291820E-005 + 5.58300000000000 3.531993057160084E-005 + 5.58400000000000 3.520537079701010E-005 + 5.58500000000000 3.509112337169930E-005 + 5.58600000000000 3.497718750026800E-005 + 5.58700000000000 3.486356238935704E-005 + 5.58800000000000 3.475024724764340E-005 + 5.58900000000000 3.463724128583520E-005 + 5.59000000000000 3.452454371666677E-005 + 5.59100000000000 3.441215375489343E-005 + 5.59200000000000 3.430007061728670E-005 + 5.59300000000000 3.418829352262923E-005 + 5.59400000000000 3.407682169170975E-005 + 5.59500000000000 3.396565434731829E-005 + 5.59600000000000 3.385479071424104E-005 + 5.59700000000000 3.374423001925552E-005 + 5.59800000000000 3.363397149112571E-005 + 5.59900000000000 3.352401436059693E-005 + 5.60000000000000 3.341435786039116E-005 + 5.60100000000000 3.330500122520208E-005 + 5.60200000000000 3.319594369169009E-005 + 5.60300000000000 3.308718449847764E-005 + 5.60400000000000 3.297872288614419E-005 + 5.60500000000000 3.287055809722147E-005 + 5.60600000000000 3.276268937618867E-005 + 5.60700000000000 3.265511596946756E-005 + 5.60800000000000 3.254783712541770E-005 + 5.60900000000000 3.244085209433168E-005 + 5.61000000000000 3.233416012843033E-005 + 5.61100000000000 3.222776048185792E-005 + 5.61200000000000 3.212165241067742E-005 + 5.61300000000000 3.201583517286579E-005 + 5.61400000000000 3.191030802830923E-005 + 5.61500000000000 3.180507023879836E-005 + 5.61600000000000 3.170012106802368E-005 + 5.61700000000000 3.159545978157077E-005 + 5.61800000000000 3.149108564691557E-005 + 5.61900000000000 3.138699793341983E-005 + 5.62000000000000 3.128319591232629E-005 + 5.62100000000000 3.117967885675417E-005 + 5.62200000000000 3.107644604169446E-005 + 5.62300000000000 3.097349674400526E-005 + 5.62400000000000 3.087083024240724E-005 + 5.62500000000000 3.076844581747900E-005 + 5.62600000000000 3.066634275165243E-005 + 5.62700000000000 3.056452032920821E-005 + 5.62800000000000 3.046297783627118E-005 + 5.62900000000000 3.036171456080577E-005 + 5.63000000000000 3.026072979261151E-005 + 5.63100000000000 3.016002282331844E-005 + 5.63200000000000 3.005959294638262E-005 + 5.63300000000000 2.995943945708154E-005 + 5.63400000000000 2.985956165250976E-005 + 5.63500000000000 2.975995883157425E-005 + 5.63600000000000 2.966063029498999E-005 + 5.63700000000000 2.956157534527554E-005 + 5.63800000000000 2.946279328674851E-005 + 5.63900000000000 2.936428342552110E-005 + 5.64000000000000 2.926604506949576E-005 + 5.64100000000000 2.916807752836064E-005 + 5.64200000000000 2.907038011358528E-005 + 5.64300000000000 2.897295213841612E-005 + 5.64400000000000 2.887579291787218E-005 + 5.64500000000000 2.877890176874062E-005 + 5.64600000000000 2.868227800957240E-005 + 5.64700000000000 2.858592096067788E-005 + 5.64800000000000 2.848982994412254E-005 + 5.64900000000000 2.839400428372256E-005 + 5.65000000000000 2.829844330504056E-005 + 5.65100000000000 2.820314633538124E-005 + 5.65200000000000 2.810811270378706E-005 + 5.65300000000000 2.801334174103398E-005 + 5.65400000000000 2.791883277962719E-005 + 5.65500000000000 2.782458515379675E-005 + 5.65600000000000 2.773059819949341E-005 + 5.65700000000000 2.763687125438432E-005 + 5.65800000000000 2.754340365784880E-005 + 5.65900000000000 2.745019475097408E-005 + 5.66000000000000 2.735724387655111E-005 + 5.66100000000000 2.726455037907031E-005 + 5.66200000000000 2.717211360471743E-005 + 5.66300000000000 2.707993290136928E-005 + 5.66400000000000 2.698800761858961E-005 + 5.66500000000000 2.689633710762492E-005 + 5.66600000000000 2.680492072140027E-005 + 5.66700000000000 2.671375781451521E-005 + 5.66800000000000 2.662284774323954E-005 + 5.66900000000000 2.653218986550925E-005 + 5.67000000000000 2.644178354092240E-005 + 5.67100000000000 2.635162813073494E-005 + 5.67200000000000 2.626172299785673E-005 + 5.67300000000000 2.617206750684732E-005 + 5.67400000000000 2.608266102391199E-005 + 5.67500000000000 2.599350291689760E-005 + 5.67600000000000 2.590459255528858E-005 + 5.67700000000000 2.581592931020285E-005 + 5.67800000000000 2.572751255438781E-005 + 5.67900000000000 2.563934166221627E-005 + 5.68000000000000 2.555141600968251E-005 + 5.68100000000000 2.546373497439818E-005 + 5.68200000000000 2.537629793558837E-005 + 5.68300000000000 2.528910427408760E-005 + 5.68400000000000 2.520215337233582E-005 + 5.68500000000000 2.511544461437450E-005 + 5.68600000000000 2.502897738584260E-005 + 5.68700000000000 2.494275107397268E-005 + 5.68800000000000 2.485676506758693E-005 + 5.68900000000000 2.477101875709325E-005 + 5.69000000000000 2.468551153448135E-005 + 5.69100000000000 2.460024279331881E-005 + 5.69200000000000 2.451521192874720E-005 + 5.69300000000000 2.443041833747817E-005 + 5.69400000000000 2.434586141778963E-005 + 5.69500000000000 2.426154056952179E-005 + 5.69600000000000 2.417745519407336E-005 + 5.69700000000000 2.409360469439771E-005 + 5.69800000000000 2.400998847499896E-005 + 5.69900000000000 2.392660594192826E-005 + 5.70000000000000 2.384345650277981E-005 + 5.70100000000000 2.376053956668724E-005 + 5.70200000000000 2.367785454431963E-005 + 5.70300000000000 2.359540084787784E-005 + 5.70400000000000 2.351317789109067E-005 + 5.70500000000000 2.343118508921105E-005 + 5.70600000000000 2.334942185901239E-005 + 5.70700000000000 2.326788761878471E-005 + 5.70800000000000 2.318658178833096E-005 + 5.70900000000000 2.310550378896325E-005 + 5.71000000000000 2.302465304349916E-005 + 5.71100000000000 2.294402897625795E-005 + 5.71200000000000 2.286363101305694E-005 + 5.71300000000000 2.278345858120773E-005 + 5.71400000000000 2.270351110951260E-005 + 5.71500000000000 2.262378802826075E-005 + 5.71600000000000 2.254428876922461E-005 + 5.71700000000000 2.246501276565632E-005 + 5.71800000000000 2.238595945228389E-005 + 5.71900000000000 2.230712826530769E-005 + 5.72000000000000 2.222851864239676E-005 + 5.72100000000000 2.215013002268519E-005 + 5.72200000000000 2.207196184676851E-005 + 5.72300000000000 2.199401355670008E-005 + 5.72400000000000 2.191628459598748E-005 + 5.72500000000000 2.183877440958894E-005 + 5.72600000000000 2.176148244390974E-005 + 5.72700000000000 2.168440814679865E-005 + 5.72800000000000 2.160755096754437E-005 + 5.72900000000000 2.153091035687194E-005 + 5.73000000000000 2.145448576693929E-005 + 5.73100000000000 2.137827665133355E-005 + 5.73200000000000 2.130228246506768E-005 + 5.73300000000000 2.122650266457684E-005 + 5.73400000000000 2.115093670771495E-005 + 5.73500000000000 2.107558405375114E-005 + 5.73600000000000 2.100044416336629E-005 + 5.73700000000000 2.092551649864953E-005 + 5.73800000000000 2.085080052309476E-005 + 5.73900000000000 2.077629570159723E-005 + 5.74000000000000 2.070200150045000E-005 + 5.74100000000000 2.062791738734057E-005 + 5.74200000000000 2.055404283134741E-005 + 5.74300000000000 2.048037730293648E-005 + 5.74400000000000 2.040692027395793E-005 + 5.74500000000000 2.033367121764254E-005 + 5.74600000000000 2.026062960859842E-005 + 5.74700000000000 2.018779492280759E-005 + 5.74800000000000 2.011516663762253E-005 + 5.74900000000000 2.004274423176289E-005 + 5.75000000000000 1.997052718531208E-005 + 5.75100000000000 1.989851497971387E-005 + 5.75200000000000 1.982670709776910E-005 + 5.75300000000000 1.975510302363228E-005 + 5.75400000000000 1.968370224280830E-005 + 5.75500000000000 1.961250424214906E-005 + 5.75600000000000 1.954150850985017E-005 + 5.75700000000000 1.947071453544762E-005 + 5.75800000000000 1.940012180981453E-005 + 5.75900000000000 1.932972982515777E-005 + 5.76000000000000 1.925953807501472E-005 + 5.76100000000000 1.918954605425000E-005 + 5.76200000000000 1.911975325905217E-005 + 5.76300000000000 1.905015918693051E-005 + 5.76400000000000 1.898076333671170E-005 + 5.76500000000000 1.891156520853661E-005 + 5.76600000000000 1.884256430385710E-005 + 5.76700000000000 1.877376012543272E-005 + 5.76800000000000 1.870515217732754E-005 + 5.76900000000000 1.863673996490688E-005 + 5.77000000000000 1.856852299483418E-005 + 5.77100000000000 1.850050077506773E-005 + 5.77200000000000 1.843267281485753E-005 + 5.77300000000000 1.836503862474210E-005 + 5.77400000000000 1.829759771654526E-005 + 5.77500000000000 1.823034960337304E-005 + 5.77600000000000 1.816329379961046E-005 + 5.77700000000000 1.809642982091841E-005 + 5.77800000000000 1.802975718423050E-005 + 5.77900000000000 1.796327540774994E-005 + 5.78000000000000 1.789698401094637E-005 + 5.78100000000000 1.783088251455282E-005 + 5.78200000000000 1.776497044056252E-005 + 5.78300000000000 1.769924731222583E-005 + 5.78400000000000 1.763371265404718E-005 + 5.78500000000000 1.756836599178190E-005 + 5.78600000000000 1.750320685243322E-005 + 5.78700000000000 1.743823476424920E-005 + 5.78800000000000 1.737344925671956E-005 + 5.78900000000000 1.730884986057279E-005 + 5.79000000000000 1.724443610777293E-005 + 5.79100000000000 1.718020753151667E-005 + 5.79200000000000 1.711616366623024E-005 + 5.79300000000000 1.705230404756640E-005 + 5.79400000000000 1.698862821240144E-005 + 5.79500000000000 1.692513569883216E-005 + 5.79600000000000 1.686182604617284E-005 + 5.79700000000000 1.679869879495232E-005 + 5.79800000000000 1.673575348691090E-005 + 5.79900000000000 1.667298966499751E-005 + 5.80000000000000 1.661040687336658E-005 + 5.80100000000000 1.654800465737517E-005 + 5.80200000000000 1.648578256358003E-005 + 5.80300000000000 1.642374013973456E-005 + 5.80400000000000 1.636187693478595E-005 + 5.80500000000000 1.630019249887224E-005 + 5.80600000000000 1.623868638331932E-005 + 5.80700000000000 1.617735814063810E-005 + 5.80800000000000 1.611620732452154E-005 + 5.80900000000000 1.605523348984179E-005 + 5.81000000000000 1.599443619264723E-005 + 5.81100000000000 1.593381499015967E-005 + 5.81200000000000 1.587336944077135E-005 + 5.81300000000000 1.581309910404218E-005 + 5.81400000000000 1.575300354069680E-005 + 5.81500000000000 1.569308231262174E-005 + 5.81600000000000 1.563333498286260E-005 + 5.81700000000000 1.557376111562112E-005 + 5.81800000000000 1.551436027625242E-005 + 5.81900000000000 1.545513203126215E-005 + 5.82000000000000 1.539607594830362E-005 + 5.82100000000000 1.533719159617505E-005 + 5.82200000000000 1.527847854481672E-005 + 5.82300000000000 1.521993636530816E-005 + 5.82400000000000 1.516156462986539E-005 + 5.82500000000000 1.510336291183809E-005 + 5.82600000000000 1.504533078570686E-005 + 5.82700000000000 1.498746782708040E-005 + 5.82800000000000 1.492977361269277E-005 + 5.82900000000000 1.487224772040064E-005 + 5.83000000000000 1.481488972918048E-005 + 5.83100000000000 1.475769921912591E-005 + 5.83200000000000 1.470067577144486E-005 + 5.83300000000000 1.464381896845690E-005 + 5.83400000000000 1.458712839359048E-005 + 5.83500000000000 1.453060363138025E-005 + 5.83600000000000 1.447424426746430E-005 + 5.83700000000000 1.441804988858151E-005 + 5.83800000000000 1.436202008256877E-005 + 5.83900000000000 1.430615443835839E-005 + 5.84000000000000 1.425045254597535E-005 + 5.84100000000000 1.419491399653462E-005 + 5.84200000000000 1.413953838223852E-005 + 5.84300000000000 1.408432529637407E-005 + 5.84400000000000 1.402927433331024E-005 + 5.84500000000000 1.397438508849544E-005 + 5.84600000000000 1.391965715845474E-005 + 5.84700000000000 1.386509014078733E-005 + 5.84800000000000 1.381068363416385E-005 + 5.84900000000000 1.375643723832375E-005 + 5.85000000000000 1.370235055407272E-005 + 5.85100000000000 1.364842318328005E-005 + 5.85200000000000 1.359465472887602E-005 + 5.85300000000000 1.354104479484932E-005 + 5.85400000000000 1.348759298624443E-005 + 5.85500000000000 1.343429890915911E-005 + 5.85600000000000 1.338116217074173E-005 + 5.85700000000000 1.332818237918876E-005 + 5.85800000000000 1.327535914374218E-005 + 5.85900000000000 1.322269207468694E-005 + 5.86000000000000 1.317018078334841E-005 + 5.86100000000000 1.311782488208980E-005 + 5.86200000000000 1.306562398430966E-005 + 5.86300000000000 1.301357770443934E-005 + 5.86400000000000 1.296168565794049E-005 + 5.86500000000000 1.290994746130245E-005 + 5.86600000000000 1.285836273203987E-005 + 5.86700000000000 1.280693108869009E-005 + 5.86800000000000 1.275565215081071E-005 + 5.86900000000000 1.270452553897708E-005 + 5.87000000000000 1.265355087477979E-005 + 5.87100000000000 1.260272778082222E-005 + 5.87200000000000 1.255205588071806E-005 + 5.87300000000000 1.250153479908884E-005 + 5.87400000000000 1.245116416156145E-005 + 5.87500000000000 1.240094359476573E-005 + 5.87600000000000 1.235087272633197E-005 + 5.87700000000000 1.230095118488851E-005 + 5.87800000000000 1.225117860005928E-005 + 5.87900000000000 1.220155460246139E-005 + 5.88000000000000 1.215207882370267E-005 + 5.88100000000000 1.210275089637930E-005 + 5.88200000000000 1.205357045407338E-005 + 5.88300000000000 1.200453713135049E-005 + 5.88400000000000 1.195565056375736E-005 + 5.88500000000000 1.190691038781943E-005 + 5.88600000000000 1.185831624103846E-005 + 5.88700000000000 1.180986776189018E-005 + 5.88800000000000 1.176156458982192E-005 + 5.88900000000000 1.171340636525018E-005 + 5.89000000000000 1.166539272955835E-005 + 5.89100000000000 1.161752332509430E-005 + 5.89200000000000 1.156979779516804E-005 + 5.89300000000000 1.152221578404940E-005 + 5.89400000000000 1.147477693696566E-005 + 5.89500000000000 1.142748090009925E-005 + 5.89600000000000 1.138032732058541E-005 + 5.89700000000000 1.133331584650984E-005 + 5.89800000000000 1.128644612690645E-005 + 5.89900000000000 1.123971781175500E-005 + 5.90000000000000 1.119313055197882E-005 + 5.90100000000000 1.114668399944252E-005 + 5.90200000000000 1.110037780694967E-005 + 5.90300000000000 1.105421162824055E-005 + 5.90400000000000 1.100818511798987E-005 + 5.90500000000000 1.096229793180447E-005 + 5.90600000000000 1.091654972622109E-005 + 5.90700000000000 1.087094015870405E-005 + 5.90800000000000 1.082546888764308E-005 + 5.90900000000000 1.078013557235102E-005 + 5.91000000000000 1.073493987306155E-005 + 5.91100000000000 1.068988145092704E-005 + 5.91200000000000 1.064495996801622E-005 + 5.91300000000000 1.060017508731202E-005 + 5.91400000000000 1.055552647270933E-005 + 5.91500000000000 1.051101378901278E-005 + 5.91600000000000 1.046663670193453E-005 + 5.91700000000000 1.042239487809211E-005 + 5.91800000000000 1.037828798500615E-005 + 5.91900000000000 1.033431569109823E-005 + 5.92000000000000 1.029047766568872E-005 + 5.92100000000000 1.024677357899454E-005 + 5.92200000000000 1.020320310212704E-005 + 5.92300000000000 1.015976590708978E-005 + 5.92400000000000 1.011646166677642E-005 + 5.92500000000000 1.007329005496853E-005 + 5.92600000000000 1.003025074633344E-005 + 5.92700000000000 9.987343416422098E-006 + 5.92800000000000 9.944567741666940E-006 + 5.92900000000000 9.901923399379738E-006 + 5.93000000000000 9.859410067749478E-006 + 5.93100000000000 9.817027425840229E-006 + 5.93200000000000 9.774775153589049E-006 + 5.93300000000000 9.732652931803840E-006 + 5.93400000000000 9.690660442161247E-006 + 5.93500000000000 9.648797367204571E-006 + 5.93600000000000 9.607063390341673E-006 + 5.93700000000000 9.565458195842852E-006 + 5.93800000000000 9.523981468838798E-006 + 5.93900000000000 9.482632895318486E-006 + 5.94000000000000 9.441412162127112E-006 + 5.94100000000000 9.400318956964024E-006 + 5.94200000000000 9.359352968380642E-006 + 5.94300000000000 9.318513885778421E-006 + 5.94400000000000 9.277801399406786E-006 + 5.94500000000000 9.237215200361088E-006 + 5.94600000000000 9.196754980580555E-006 + 5.94700000000000 9.156420432846256E-006 + 5.94800000000000 9.116211250779074E-006 + 5.94900000000000 9.076127128837679E-006 + 5.95000000000000 9.036167762316500E-006 + 5.95100000000000 8.996332847343710E-006 + 5.95200000000000 8.956622080879229E-006 + 5.95300000000000 8.917035160712682E-006 + 5.95400000000000 8.877571785461450E-006 + 5.95500000000000 8.838231654568619E-006 + 5.95600000000000 8.799014468301047E-006 + 5.95700000000000 8.759919927747329E-006 + 5.95800000000000 8.720947734815839E-006 + 5.95900000000000 8.682097592232761E-006 + 5.96000000000000 8.643369203540119E-006 + 5.96100000000000 8.604762273093792E-006 + 5.96200000000000 8.566276506061576E-006 + 5.96300000000000 8.527911608421218E-006 + 5.96400000000000 8.489667286958482E-006 + 5.96500000000000 8.451543249265191E-006 + 5.96600000000000 8.413539203737280E-006 + 5.96700000000000 8.375654859572892E-006 + 5.96800000000000 8.337889926770427E-006 + 5.96900000000000 8.300244116126615E-006 + 5.97000000000000 8.262717139234620E-006 + 5.97100000000000 8.225308708482097E-006 + 5.97200000000000 8.188018537049308E-006 + 5.97300000000000 8.150846338907209E-006 + 5.97400000000000 8.113791828815544E-006 + 5.97500000000000 8.076854722320964E-006 + 5.97600000000000 8.040034735755138E-006 + 5.97700000000000 8.003331586232853E-006 + 5.97800000000000 7.966744991650164E-006 + 5.97900000000000 7.930274670682483E-006 + 5.98000000000000 7.893920342782745E-006 + 5.98100000000000 7.857681728179526E-006 + 5.98200000000000 7.821558547875186E-006 + 5.98300000000000 7.785550523644012E-006 + 5.98400000000000 7.749657378030385E-006 + 5.98500000000000 7.713878834346907E-006 + 5.98600000000000 7.678214616672592E-006 + 5.98700000000000 7.642664449851013E-006 + 5.98800000000000 7.607228059488475E-006 + 5.98900000000000 7.571905171952199E-006 + 5.99000000000000 7.536695514368475E-006 + 5.99100000000000 7.501598814620887E-006 + 5.99200000000000 7.466614801348471E-006 + 5.99300000000000 7.431743203943917E-006 + 5.99400000000000 7.396983752551778E-006 + 5.99500000000000 7.362336178066661E-006 + 5.99600000000000 7.327800212131437E-006 + 5.99700000000000 7.293375587135461E-006 + 5.99800000000000 7.259062036212779E-006 + 5.99900000000000 7.224859293240374E-006 + 6.00000000000000 7.190767092836362E-006 + 6.00100000000000 7.156785170358240E-006 + 6.00200000000000 7.122913261901126E-006 + 6.00300000000000 7.089151104295991E-006 + 6.00400000000000 7.055498435107914E-006 + 6.00500000000000 7.021954992634323E-006 + 6.00600000000000 6.988520515903250E-006 + 6.00700000000000 6.955194744671609E-006 + 6.00800000000000 6.921977419423440E-006 + 6.00900000000000 6.888868281368186E-006 + 6.01000000000000 6.855867072438963E-006 + 6.01100000000000 6.822973535290844E-006 + 6.01200000000000 6.790187413299131E-006 + 6.01300000000000 6.757508450557665E-006 + 6.01400000000000 6.724936391877088E-006 + 6.01500000000000 6.692470982783160E-006 + 6.01600000000000 6.660111969515058E-006 + 6.01700000000000 6.627859099023666E-006 + 6.01800000000000 6.595712118969904E-006 + 6.01900000000000 6.563670777723036E-006 + 6.02000000000000 6.531734824358982E-006 + 6.02100000000000 6.499904008658651E-006 + 6.02200000000000 6.468178081106261E-006 + 6.02300000000000 6.436556792887680E-006 + 6.02400000000000 6.405039895888748E-006 + 6.02500000000000 6.373627142693639E-006 + 6.02600000000000 6.342318286583189E-006 + 6.02700000000000 6.311113081533250E-006 + 6.02800000000000 6.280011282213049E-006 + 6.02900000000000 6.249012643983548E-006 + 6.03000000000000 6.218116922895800E-006 + 6.03100000000000 6.187323875689316E-006 + 6.03200000000000 6.156633259790447E-006 + 6.03300000000000 6.126044833310748E-006 + 6.03400000000000 6.095558355045374E-006 + 6.03500000000000 6.065173584471443E-006 + 6.03600000000000 6.034890281746446E-006 + 6.03700000000000 6.004708207706630E-006 + 6.03800000000000 5.974627123865394E-006 + 6.03900000000000 5.944646792411700E-006 + 6.04000000000000 5.914766976208470E-006 + 6.04100000000000 5.884987438791005E-006 + 6.04200000000000 5.855307944365397E-006 + 6.04300000000000 5.825728257806937E-006 + 6.04400000000000 5.796248144658557E-006 + 6.04500000000000 5.766867371129249E-006 + 6.04600000000000 5.737585704092489E-006 + 6.04700000000000 5.708402911084688E-006 + 6.04800000000000 5.679318760303621E-006 + 6.04900000000000 5.650333020606879E-006 + 6.05000000000000 5.621445461510311E-006 + 6.05100000000000 5.592655853186480E-006 + 6.05200000000000 5.563963966463119E-006 + 6.05300000000000 5.535369572821596E-006 + 6.05400000000000 5.506872444395371E-006 + 6.05500000000000 5.478472353968472E-006 + 6.05600000000000 5.450169074973969E-006 + 6.05700000000000 5.421962381492446E-006 + 6.05800000000000 5.393852048250488E-006 + 6.05900000000000 5.365837850619165E-006 + 6.06000000000000 5.337919564612520E-006 + 6.06100000000000 5.310096966886066E-006 + 6.06200000000000 5.282369834735282E-006 + 6.06300000000000 5.254737946094119E-006 + 6.06400000000000 5.227201079533493E-006 + 6.06500000000000 5.199759014259817E-006 + 6.06600000000000 5.172411530113498E-006 + 6.06700000000000 5.145158407567455E-006 + 6.06800000000000 5.117999427725655E-006 + 6.06900000000000 5.090934372321629E-006 + 6.07000000000000 5.063963023716998E-006 + 6.07100000000000 5.037085164900021E-006 + 6.07200000000000 5.010300579484120E-006 + 6.07300000000000 4.983609051706429E-006 + 6.07400000000000 4.957010366426339E-006 + 6.07500000000000 4.930504309124047E-006 + 6.07600000000000 4.904090665899111E-006 + 6.07700000000000 4.877769223469008E-006 + 6.07800000000000 4.851539769167693E-006 + 6.07900000000000 4.825402090944167E-006 + 6.08000000000000 4.799355977361049E-006 + 6.08100000000000 4.773401217593143E-006 + 6.08200000000000 4.747537601426026E-006 + 6.08300000000000 4.721764919254616E-006 + 6.08400000000000 4.696082962081765E-006 + 6.08500000000000 4.670491521516851E-006 + 6.08600000000000 4.644990389774360E-006 + 6.08700000000000 4.619579359672496E-006 + 6.08800000000000 4.594258224631773E-006 + 6.08900000000000 4.569026778673613E-006 + 6.09000000000000 4.543884816418977E-006 + 6.09100000000000 4.518832133086949E-006 + 6.09200000000000 4.493868524493372E-006 + 6.09300000000000 4.468993787049459E-006 + 6.09400000000000 4.444207717760414E-006 + 6.09500000000000 4.419510114224068E-006 + 6.09600000000000 4.394900774629502E-006 + 6.09700000000000 4.370379497755683E-006 + 6.09800000000000 4.345946082970108E-006 + 6.09900000000000 4.321600330227436E-006 + 6.10000000000000 4.297342040068140E-006 + 6.10100000000000 4.273171013617160E-006 + 6.10200000000000 4.249087052582547E-006 + 6.10300000000000 4.225089959254131E-006 + 6.10400000000000 4.201179536502168E-006 + 6.10500000000000 4.177355587776016E-006 + 6.10600000000000 4.153617917102800E-006 + 6.10700000000000 4.129966329086077E-006 + 6.10800000000000 4.106400628904521E-006 + 6.10900000000000 4.082920622310598E-006 + 6.11000000000000 4.059526115629245E-006 + 6.11100000000000 4.036216915756561E-006 + 6.11200000000000 4.012992830158494E-006 + 6.11300000000000 3.989853666869535E-006 + 6.11400000000000 3.966799234491421E-006 + 6.11500000000000 3.943829342191820E-006 + 6.11600000000000 3.920943799703055E-006 + 6.11700000000000 3.898142417320799E-006 + 6.11800000000000 3.875425005902790E-006 + 6.11900000000000 3.852791376867543E-006 + 6.12000000000000 3.830241342193073E-006 + 6.12100000000000 3.807774714415617E-006 + 6.12200000000000 3.785391306628356E-006 + 6.12300000000000 3.763090932480146E-006 + 6.12400000000000 3.740873406174253E-006 + 6.12500000000000 3.718738542467084E-006 + 6.12600000000000 3.696686156666930E-006 + 6.12700000000000 3.674716064632712E-006 + 6.12800000000000 3.652828082772720E-006 + 6.12900000000000 3.631022028043371E-006 + 6.13000000000000 3.609297717947961E-006 + 6.13100000000000 3.587654970535415E-006 + 6.13200000000000 3.566093604399060E-006 + 6.13300000000000 3.544613438675377E-006 + 6.13400000000000 3.523214293042777E-006 + 6.13500000000000 3.501895987720367E-006 + 6.13600000000000 3.480658343466727E-006 + 6.13700000000000 3.459501181578689E-006 + 6.13800000000000 3.438424323890115E-006 + 6.13900000000000 3.417427592770682E-006 + 6.14000000000000 3.396510811124672E-006 + 6.14100000000000 3.375673802389761E-006 + 6.14200000000000 3.354916390535818E-006 + 6.14300000000000 3.334238400063698E-006 + 6.14400000000000 3.313639656004047E-006 + 6.14500000000000 3.293119983916110E-006 + 6.14600000000000 3.272679209886531E-006 + 6.14700000000000 3.252317160528168E-006 + 6.14800000000000 3.232033662978912E-006 + 6.14900000000000 3.211828544900502E-006 + 6.15000000000000 3.191701634477347E-006 + 6.15100000000000 3.171652760415353E-006 + 6.15200000000000 3.151681751940742E-006 + 6.15300000000000 3.131788438798901E-006 + 6.15400000000000 3.111972651253200E-006 + 6.15500000000000 3.092234220083839E-006 + 6.15600000000000 3.072572976586690E-006 + 6.15700000000000 3.052988752572133E-006 + 6.15800000000000 3.033481380363917E-006 + 6.15900000000000 3.014050692798002E-006 + 6.16000000000000 2.994696523221414E-006 + 6.16100000000000 2.975418705491108E-006 + 6.16200000000000 2.956217073972825E-006 + 6.16300000000000 2.937091463539953E-006 + 6.16400000000000 2.918041709572406E-006 + 6.16500000000000 2.899067647955481E-006 + 6.16600000000000 2.880169115078742E-006 + 6.16700000000000 2.861345947834892E-006 + 6.16800000000000 2.842597983618650E-006 + 6.16900000000000 2.823925060325647E-006 + 6.17000000000000 2.805327016351300E-006 + 6.17100000000000 2.786803690589704E-006 + 6.17200000000000 2.768354922432534E-006 + 6.17300000000000 2.749980551767929E-006 + 6.17400000000000 2.731680418979399E-006 + 6.17500000000000 2.713454364944726E-006 + 6.17600000000000 2.695302231034868E-006 + 6.17700000000000 2.677223859112868E-006 + 6.17800000000000 2.659219091532767E-006 + 6.17900000000000 2.641287771138518E-006 + 6.18000000000000 2.623429741262908E-006 + 6.18100000000000 2.605644845726469E-006 + 6.18200000000000 2.587932928836417E-006 + 6.18300000000000 2.570293835385566E-006 + 6.18400000000000 2.552727410651264E-006 + 6.18500000000000 2.535233500394328E-006 + 6.18600000000000 2.517811950857980E-006 + 6.18700000000000 2.500462608766783E-006 + 6.18800000000000 2.483185321325588E-006 + 6.18900000000000 2.465979936218477E-006 + 6.19000000000000 2.448846301607714E-006 + 6.19100000000000 2.431784266132697E-006 + 6.19200000000000 2.414793678908907E-006 + 6.19300000000000 2.397874389526876E-006 + 6.19400000000000 2.381026248051142E-006 + 6.19500000000000 2.364249105019207E-006 + 6.19600000000000 2.347542811440519E-006 + 6.19700000000000 2.330907218795428E-006 + 6.19800000000000 2.314342179034165E-006 + 6.19900000000000 2.297847544575820E-006 + 6.20000000000000 2.281423168307315E-006 + 6.20100000000000 2.265068903582389E-006 + 6.20200000000000 2.248784604220584E-006 + 6.20300000000000 2.232570124506231E-006 + 6.20400000000000 2.216425319187442E-006 + 6.20500000000000 2.200350043475101E-006 + 6.20600000000000 2.184344153041863E-006 + 6.20700000000000 2.168407504021156E-006 + 6.20800000000000 2.152539953006176E-006 + 6.20900000000000 2.136741357048901E-006 + 6.21000000000000 2.121011573659093E-006 + 6.21100000000000 2.105350460803310E-006 + 6.21200000000000 2.089757876903924E-006 + 6.21300000000000 2.074233680838136E-006 + 6.21400000000000 2.058777731936992E-006 + 6.21500000000000 2.043389889984415E-006 + 6.21600000000000 2.028070015216217E-006 + 6.21700000000000 2.012817968319140E-006 + 6.21800000000000 1.997633610429884E-006 + 6.21900000000000 1.982516803134137E-006 + 6.22000000000000 1.967467408465618E-006 + 6.22100000000000 1.952485288905108E-006 + 6.22200000000000 1.937570307379507E-006 + 6.22300000000000 1.922722327260864E-006 + 6.22400000000000 1.907941212365437E-006 + 6.22500000000000 1.893226826952739E-006 + 6.22600000000000 1.878579035724592E-006 + 6.22700000000000 1.863997703824186E-006 + 6.22800000000000 1.849482696835137E-006 + 6.22900000000000 1.835033880780550E-006 + 6.23000000000000 1.820651122122084E-006 + 6.23100000000000 1.806334287759021E-006 + 6.23200000000000 1.792083245027336E-006 + 6.23300000000000 1.777897861698770E-006 + 6.23400000000000 1.763778005979909E-006 + 6.23500000000000 1.749723546511256E-006 + 6.23600000000000 1.735734352366324E-006 + 6.23700000000000 1.721810293050711E-006 + 6.23800000000000 1.707951238501191E-006 + 6.23900000000000 1.694157059084807E-006 + 6.24000000000000 1.680427625597957E-006 + 6.24100000000000 1.666762809265495E-006 + 6.24200000000000 1.653162481739828E-006 + 6.24300000000000 1.639626515100016E-006 + 6.24400000000000 1.626154781850876E-006 + 6.24500000000000 1.612747154922089E-006 + 6.24600000000000 1.599403507667308E-006 + 6.24700000000000 1.586123713863272E-006 + 6.24800000000000 1.572907647708917E-006 + 6.24900000000000 1.559755183824495E-006 + 6.25000000000000 1.546666197250696E-006 + 6.25100000000000 1.533640563447765E-006 + 6.25200000000000 1.520678158294635E-006 + 6.25300000000000 1.507778858088044E-006 + 6.25400000000000 1.494942539541676E-006 + 6.25500000000000 1.482169079785289E-006 + 6.25600000000000 1.469458356363850E-006 + 6.25700000000000 1.456810247236675E-006 + 6.25800000000000 1.444224630776571E-006 + 6.25900000000000 1.431701385768976E-006 + 6.26000000000000 1.419240391411109E-006 + 6.26100000000000 1.406841527311118E-006 + 6.26200000000000 1.394504673487227E-006 + 6.26300000000000 1.382229710366899E-006 + 6.26400000000000 1.370016518785982E-006 + 6.26500000000000 1.357864979987878E-006 + 6.26600000000000 1.345774975622697E-006 + 6.26700000000000 1.333746387746426E-006 + 6.26800000000000 1.321779098820095E-006 + 6.26900000000000 1.309872991708946E-006 + 6.27000000000000 1.298027949681603E-006 + 6.27100000000000 1.286243856409253E-006 + 6.27200000000000 1.274520595964815E-006 + 6.27300000000000 1.262858052822125E-006 + 6.27400000000000 1.251256111855118E-006 + 6.27500000000000 1.239714658337011E-006 + 6.27600000000000 1.228233577939491E-006 + 6.27700000000000 1.216812756731904E-006 + 6.27800000000000 1.205452081180450E-006 + 6.27900000000000 1.194151438147376E-006 + 6.28000000000000 1.182910714890172E-006 + 6.28100000000000 1.171729799060775E-006 + 6.28200000000000 1.160608578704765E-006 + 6.28300000000000 1.149546942260578E-006 + 6.28400000000000 1.138544778558707E-006 + 6.28500000000000 1.127601976820914E-006 + 6.28600000000000 1.116718426659443E-006 + 6.28700000000000 1.105894018076234E-006 + 6.28800000000000 1.095128641462140E-006 + 6.28900000000000 1.084422187596147E-006 + 6.29000000000000 1.073774547644597E-006 + 6.29100000000000 1.063185613160413E-006 + 6.29200000000000 1.052655276082323E-006 + 6.29300000000000 1.042183428734094E-006 + 6.29400000000000 1.031769963823758E-006 + 6.29500000000000 1.021414774442855E-006 + 6.29600000000000 1.011117754065661E-006 + 6.29700000000000 1.000878796548433E-006 + 6.29800000000000 9.906977961286486E-007 + 6.29900000000000 9.805746474242500E-007 + 6.30000000000000 9.705092454328917E-007 + 6.30100000000000 9.605014855311872E-007 + 6.30200000000000 9.505512634739623E-007 + 6.30300000000000 9.406584753935095E-007 + 6.30400000000000 9.308230177988403E-007 + 6.30500000000000 9.210447875749482E-007 + 6.30600000000000 9.113236819820664E-007 + 6.30700000000000 9.016595986549320E-007 + 6.30800000000000 8.920524356020527E-007 + 6.30900000000000 8.825020912049721E-007 + 6.31000000000000 8.730084642175432E-007 + 6.31100000000000 8.635714537651986E-007 + 6.31200000000000 8.541909593442267E-007 + 6.31300000000000 8.448668808210491E-007 + 6.31400000000000 8.355991184314991E-007 + 6.31500000000000 8.263875727801051E-007 + 6.31600000000000 8.172321448393753E-007 + 6.31700000000000 8.081327359490819E-007 + 6.31800000000000 7.990892478155529E-007 + 6.31900000000000 7.901015825109625E-007 + 6.32000000000000 7.811696424726234E-007 + 6.32100000000000 7.722933305022854E-007 + 6.32200000000000 7.634725497654307E-007 + 6.32300000000000 7.547072037905771E-007 + 6.32400000000000 7.459971964685796E-007 + 6.32500000000000 7.373424320519347E-007 + 6.32600000000000 7.287428151540893E-007 + 6.32700000000000 7.201982507487502E-007 + 6.32800000000000 7.117086441691953E-007 + 6.32900000000000 7.032739011075879E-007 + 6.33000000000000 6.948939276142939E-007 + 6.33100000000000 6.865686300972005E-007 + 6.33200000000000 6.782979153210371E-007 + 6.33300000000000 6.700816904066972E-007 + 6.33400000000000 6.619198628305669E-007 + 6.33500000000000 6.538123404238503E-007 + 6.33600000000000 6.457590313718996E-007 + 6.33700000000000 6.377598442135492E-007 + 6.33800000000000 6.298146878404478E-007 + 6.33900000000000 6.219234714963969E-007 + 6.34000000000000 6.140861047766890E-007 + 6.34100000000000 6.063024976274485E-007 + 6.34200000000000 5.985725603449763E-007 + 6.34300000000000 5.908962035750935E-007 + 6.34400000000000 5.832733383124906E-007 + 6.34500000000000 5.757038759000774E-007 + 6.34600000000000 5.681877280283340E-007 + 6.34700000000000 5.607248067346671E-007 + 6.34800000000000 5.533150244027648E-007 + 6.34900000000000 5.459582937619564E-007 + 6.35000000000000 5.386545278865724E-007 + 6.35100000000000 5.314036401953086E-007 + 6.35200000000000 5.242055444505907E-007 + 6.35300000000000 5.170601547579424E-007 + 6.35400000000000 5.099673855653537E-007 + 6.35500000000000 5.029271516626542E-007 + 6.35600000000000 4.959393681808864E-007 + 6.35700000000000 4.890039505916812E-007 + 6.35800000000000 4.821208147066369E-007 + 6.35900000000000 4.752898766766990E-007 + 6.36000000000000 4.685110529915433E-007 + 6.36100000000000 4.617842604789600E-007 + 6.36200000000000 4.551094163042403E-007 + 6.36300000000000 4.484864379695659E-007 + 6.36400000000000 4.419152433133999E-007 + 6.36500000000000 4.353957505098791E-007 + 6.36600000000000 4.289278780682101E-007 + 6.36700000000000 4.225115448320668E-007 + 6.36800000000000 4.161466699789886E-007 + 6.36900000000000 4.098331730197834E-007 + 6.37000000000000 4.035709737979302E-007 + 6.37100000000000 3.973599924889854E-007 + 6.37200000000000 3.912001495999908E-007 + 6.37300000000000 3.850913659688825E-007 + 6.37400000000000 3.790335627639040E-007 + 6.37500000000000 3.730266614830200E-007 + 6.37600000000000 3.670705839533318E-007 + 6.37700000000000 3.611652523304966E-007 + 6.37800000000000 3.553105890981471E-007 + 6.37900000000000 3.495065170673142E-007 + 6.38000000000000 3.437529593758511E-007 + 6.38100000000000 3.380498394878598E-007 + 6.38200000000000 3.323970811931197E-007 + 6.38300000000000 3.267946086065188E-007 + 6.38400000000000 3.212423461674845E-007 + 6.38500000000000 3.157402186394207E-007 + 6.38600000000000 3.102881511091417E-007 + 6.38700000000000 3.048860689863138E-007 + 6.38800000000000 2.995338980028938E-007 + 6.38900000000000 2.942315642125727E-007 + 6.39000000000000 2.889789939902205E-007 + 6.39100000000000 2.837761140313329E-007 + 6.39200000000000 2.786228513514796E-007 + 6.39300000000000 2.735191332857563E-007 + 6.39400000000000 2.684648874882360E-007 + 6.39500000000000 2.634600419314253E-007 + 6.39600000000000 2.585045249057203E-007 + 6.39700000000000 2.535982650188656E-007 + 6.39800000000000 2.487411911954152E-007 + 6.39900000000000 2.439332326761955E-007 + 6.40000000000000 2.391743190177697E-007 + 6.40100000000000 2.344643800919046E-007 + 6.40200000000000 2.298033460850398E-007 + 6.40300000000000 2.251911474977579E-007 + 6.40400000000000 2.206277151442576E-007 + 6.40500000000000 2.161129801518277E-007 + 6.40600000000000 2.116468739603245E-007 + 6.40700000000000 2.072293283216500E-007 + 6.40800000000000 2.028602752992324E-007 + 6.40900000000000 1.985396472675086E-007 + 6.41000000000000 1.942673769114086E-007 + 6.41100000000000 1.900433972258420E-007 + 6.41200000000000 1.858676415151865E-007 + 6.41300000000000 1.817400433927776E-007 + 6.41400000000000 1.776605367804010E-007 + 6.41500000000000 1.736290559077872E-007 + 6.41600000000000 1.696455353121070E-007 + 6.41700000000000 1.657099098374695E-007 + 6.41800000000000 1.618221146344223E-007 + 6.41900000000000 1.579820851594532E-007 + 6.42000000000000 1.541897571744939E-007 + 6.42100000000000 1.504450667464254E-007 + 6.42200000000000 1.467479502465861E-007 + 6.42300000000000 1.430983443502806E-007 + 6.42400000000000 1.394961860362915E-007 + 6.42500000000000 1.359414125863928E-007 + 6.42600000000000 1.324339615848644E-007 + 6.42700000000000 1.289737709180096E-007 + 6.42800000000000 1.255607787736742E-007 + 6.42900000000000 1.221949236407666E-007 + 6.43000000000000 1.188761443087813E-007 + 6.43100000000000 1.156043798673230E-007 + 6.43200000000000 1.123795697056332E-007 + 6.43300000000000 1.092016535121185E-007 + 6.43400000000000 1.060705712738805E-007 + 6.43500000000000 1.029862632762483E-007 + 6.43600000000000 9.994867010231238E-008 + 6.43700000000000 9.695773263245993E-008 + 6.43800000000000 9.401339204391293E-008 + 6.43900000000000 9.111558981026737E-008 + 6.44000000000000 8.826426770103470E-008 + 6.44100000000000 8.545936778118501E-008 + 6.44200000000000 8.270083241069196E-008 + 6.44300000000000 7.998860424407975E-008 + 6.44400000000000 7.732262622997176E-008 + 6.44500000000000 7.470284161064102E-008 + 6.44600000000000 7.212919392156274E-008 + 6.44700000000000 6.960162699096826E-008 + 6.44800000000000 6.712008493940133E-008 + 6.44900000000000 6.468451217927581E-008 + 6.45000000000000 6.229485341443526E-008 + 6.45100000000000 5.995105363971455E-008 + 6.45200000000000 5.765305814050307E-008 + 6.45300000000000 5.540081249230978E-008 + 6.45400000000000 5.319426256033025E-008 + 6.45500000000000 5.103335449901523E-008 + 6.45600000000000 4.891803475164123E-008 + 6.45700000000000 4.684825004988282E-008 + 6.45800000000000 4.482394741338662E-008 + 6.45900000000000 4.284507414934738E-008 + 6.46000000000000 4.091157785208552E-008 + 6.46100000000000 3.902340640262664E-008 + 6.46200000000000 3.718050796828276E-008 + 6.46300000000000 3.538283100223534E-008 + 6.46400000000000 3.363032424312011E-008 + 6.46500000000000 3.192293671461368E-008 + 6.46600000000000 3.026061772502182E-008 + 6.46700000000000 2.864331686686961E-008 + 6.46800000000000 2.707098401649338E-008 + 6.46900000000000 2.554356933363427E-008 + 6.47000000000000 2.406102326103374E-008 + 6.47100000000000 2.262329652403065E-008 + 6.47200000000000 2.123034013016026E-008 + 6.47300000000000 1.988210536875488E-008 + 6.47400000000000 1.857854381054626E-008 + 6.47500000000000 1.731960730726982E-008 + 6.47600000000000 1.610524799127055E-008 + 6.47700000000000 1.493541827511064E-008 + 6.47800000000000 1.381007085117891E-008 + 6.47900000000000 1.272915869130193E-008 + 6.48000000000000 1.169263504635688E-008 + 6.48100000000000 1.070045344588618E-008 + 6.48200000000000 9.752567697713735E-009 + 6.48300000000000 8.848931887563077E-009 + 6.48400000000000 7.989500378677076E-009 + 6.48500000000000 7.174227811439432E-009 + 6.48600000000000 6.403069102997925E-009 + 6.48700000000000 5.675979446889275E-009 + 6.48800000000000 4.992914312665825E-009 + 6.48900000000000 4.353829445523863E-009 + 6.49000000000000 3.758680865933665E-009 + 6.49100000000000 3.207424869271258E-009 + 6.49200000000000 2.700018025451867E-009 + 6.49300000000000 2.236417178565073E-009 + 6.49400000000000 1.816579446511655E-009 + 6.49500000000000 1.440462220642136E-009 + 6.49600000000000 1.108023165397016E-009 + 6.49700000000000 8.192202179486913E-010 + 6.49800000000000 5.740115878450635E-010 + 6.49900000000000 3.723557566548315E-010 + 6.50000000000000 2.142114776144619E-010 + 6.50100000000000 9.953777527684065E-011 + 6.50200000000000 2.829394516159925E-011 + 6.50300000000000 4.395534071150019E-013 + 6.50400000000000 4.395534071150019E-013 + 6.50500000000000 4.395534071150019E-013 + 6.50600000000000 4.395534071150019E-013 + 6.50700000000000 4.395534071150019E-013 + 6.50800000000000 4.395534071150019E-013 + 6.50900000000000 4.395534071150019E-013 + 6.51000000000000 4.395534071150019E-013 + 6.51100000000000 4.395534071150019E-013 + 6.51200000000000 4.395534071150019E-013 + 6.51300000000000 4.395534071150019E-013 + 6.51400000000000 4.395534071150019E-013 + 6.51500000000000 4.395534071150019E-013 + 6.51600000000000 4.395534071150019E-013 + 6.51700000000000 4.395534071150019E-013 + 6.51800000000000 4.395534071150019E-013 + 6.51900000000000 4.395534071150019E-013 + 6.52000000000000 4.395534071150019E-013 + 6.52100000000000 4.395534071150019E-013 + 6.52200000000000 4.395534071150019E-013 + 6.52300000000000 4.395534071150019E-013 + 6.52400000000000 4.395534071150019E-013 + 6.52500000000000 4.395534071150019E-013 + 6.52600000000000 4.395534071150019E-013 + 6.52700000000000 4.395534071150019E-013 + 6.52800000000000 4.395534071150019E-013 + 6.52900000000000 4.395534071150019E-013 + 6.53000000000000 4.395534071150019E-013 + 6.53100000000000 4.395534071150019E-013 + 6.53200000000000 4.395534071150019E-013 + 6.53300000000000 4.395534071150019E-013 + 6.53400000000000 4.395534071150019E-013 + 6.53500000000000 4.395534071150019E-013 + 6.53600000000000 4.395534071150019E-013 + 6.53700000000000 4.395534071150019E-013 + 6.53800000000000 4.395534071150019E-013 + 6.53900000000000 4.395534071150019E-013 + 6.54000000000000 4.395534071150019E-013 + 6.54100000000000 4.395534071150019E-013 + 6.54200000000000 4.395534071150019E-013 + 6.54300000000000 4.395534071150019E-013 + 6.54400000000000 4.395534071150019E-013 + 6.54500000000000 4.395534071150019E-013 + 6.54600000000000 4.395534071150019E-013 + 6.54700000000000 4.395534071150019E-013 + 6.54800000000000 4.395534071150019E-013 + 6.54900000000000 4.395534071150019E-013 + 6.55000000000000 4.395534071150019E-013 + 6.55100000000000 4.395534071150019E-013 + 6.55200000000000 4.395534071150019E-013 + 6.55300000000000 4.395534071150019E-013 + 6.55400000000000 4.395534071150019E-013 + 6.55500000000000 4.395534071150019E-013 + 6.55600000000000 4.395534071150019E-013 + 6.55700000000000 4.395534071150019E-013 + 6.55800000000000 4.395534071150019E-013 + 6.55900000000000 4.395534071150019E-013 + 6.56000000000000 4.395534071150019E-013 + 6.56100000000000 4.395534071150019E-013 + 6.56200000000000 4.395534071150019E-013 + 6.56300000000000 4.395534071150019E-013 + 6.56400000000000 4.395534071150019E-013 + 6.56500000000000 4.395534071150019E-013 + 6.56600000000000 4.395534071150019E-013 + 6.56700000000000 4.395534071150019E-013 + 6.56800000000000 4.395534071150019E-013 + 6.56900000000000 4.395534071150019E-013 + 6.57000000000000 4.395534071150019E-013 + 6.57100000000000 4.395534071150019E-013 + 6.57200000000000 4.395534071150019E-013 + 6.57300000000000 4.395534071150019E-013 + 6.57400000000000 4.395534071150019E-013 + 6.57500000000000 4.395534071150019E-013 + 6.57600000000000 4.395534071150019E-013 + 6.57700000000000 4.395534071150019E-013 + 6.57800000000000 4.395534071150019E-013 + 6.57900000000000 4.395534071150019E-013 + 6.58000000000000 4.395534071150019E-013 + 6.58100000000000 4.395534071150019E-013 + 6.58200000000000 4.395534071150019E-013 + 6.58300000000000 4.395534071150019E-013 + 6.58400000000000 4.395534071150019E-013 + 6.58500000000000 4.395534071150019E-013 + 6.58600000000000 4.395534071150019E-013 + 6.58700000000000 4.395534071150019E-013 + 6.58800000000000 4.395534071150019E-013 + 6.58900000000000 4.395534071150019E-013 + 6.59000000000000 4.395534071150019E-013 + 6.59100000000000 4.395534071150019E-013 + 6.59200000000000 4.395534071150019E-013 + 6.59300000000000 4.395534071150019E-013 + 6.59400000000000 4.395534071150019E-013 + 6.59500000000000 4.395534071150019E-013 + 6.59600000000000 4.395534071150019E-013 + 6.59700000000000 4.395534071150019E-013 + 6.59800000000000 4.395534071150019E-013 + 6.59900000000000 4.395534071150019E-013 + 6.60000000000000 4.395534071150019E-013 + 6.60100000000000 4.395534071150019E-013 + 6.60200000000000 4.395534071150019E-013 + 6.60300000000000 4.395534071150019E-013 + 6.60400000000000 4.395534071150019E-013 + 6.60500000000000 4.395534071150019E-013 + 6.60600000000000 4.395534071150019E-013 + 6.60700000000000 4.395534071150019E-013 + 6.60800000000000 4.395534071150019E-013 + 6.60900000000000 4.395534071150019E-013 + 6.61000000000000 4.395534071150019E-013 + 6.61100000000000 4.395534071150019E-013 + 6.61200000000000 4.395534071150019E-013 + 6.61300000000000 4.395534071150019E-013 + 6.61400000000000 4.395534071150019E-013 + 6.61500000000000 4.395534071150019E-013 + 6.61600000000000 4.395534071150019E-013 + 6.61700000000000 4.395534071150019E-013 + 6.61800000000000 4.395534071150019E-013 + 6.61900000000000 4.395534071150019E-013 + 6.62000000000000 4.395534071150019E-013 + 6.62100000000000 4.395534071150019E-013 + 6.62200000000000 4.395534071150019E-013 + 6.62300000000000 4.395534071150019E-013 + 6.62400000000000 4.395534071150019E-013 + 6.62500000000000 4.395534071150019E-013 + 6.62600000000000 4.395534071150019E-013 + 6.62700000000000 4.395534071150019E-013 + 6.62800000000000 4.395534071150019E-013 + 6.62900000000000 4.395534071150019E-013 + 6.63000000000000 4.395534071150019E-013 + 6.63100000000000 4.395534071150019E-013 + 6.63200000000000 4.395534071150019E-013 + 6.63300000000000 4.395534071150019E-013 + 6.63400000000000 4.395534071150019E-013 + 6.63500000000000 4.395534071150019E-013 + 6.63600000000000 4.395534071150019E-013 + 6.63700000000000 4.395534071150019E-013 + 6.63800000000000 4.395534071150019E-013 + 6.63900000000000 4.395534071150019E-013 + 6.64000000000000 4.395534071150019E-013 + 6.64100000000000 4.395534071150019E-013 + 6.64200000000000 4.395534071150019E-013 + 6.64300000000000 4.395534071150019E-013 + 6.64400000000000 4.395534071150019E-013 + 6.64500000000000 4.395534071150019E-013 + 6.64600000000000 4.395534071150019E-013 + 6.64700000000000 4.395534071150019E-013 + 6.64800000000000 4.395534071150019E-013 + 6.64900000000000 4.395534071150019E-013 + 6.65000000000000 4.395534071150019E-013 + 6.65100000000000 4.395534071150019E-013 + 6.65200000000000 4.395534071150019E-013 + 6.65300000000000 4.395534071150019E-013 + 6.65400000000000 4.395534071150019E-013 + 6.65500000000000 4.395534071150019E-013 + 6.65600000000000 4.395534071150019E-013 + 6.65700000000000 4.395534071150019E-013 + 6.65800000000000 4.395534071150019E-013 + 6.65900000000000 4.395534071150019E-013 + 6.66000000000000 4.395534071150019E-013 + 6.66100000000000 4.395534071150019E-013 + 6.66200000000000 4.395534071150019E-013 + 6.66300000000000 4.395534071150019E-013 + 6.66400000000000 4.395534071150019E-013 + 6.66500000000000 4.395534071150019E-013 + 6.66600000000000 4.395534071150019E-013 + 6.66700000000000 4.395534071150019E-013 + 6.66800000000000 4.395534071150019E-013 + 6.66900000000000 4.395534071150019E-013 + 6.67000000000000 4.395534071150019E-013 + 6.67100000000000 4.395534071150019E-013 + 6.67200000000000 4.395534071150019E-013 + 6.67300000000000 4.395534071150019E-013 + 6.67400000000000 4.395534071150019E-013 + 6.67500000000000 4.395534071150019E-013 + 6.67600000000000 4.395534071150019E-013 + 6.67700000000000 4.395534071150019E-013 + 6.67800000000000 4.395534071150019E-013 + 6.67900000000000 4.395534071150019E-013 + 6.68000000000000 4.395534071150019E-013 + 6.68100000000000 4.395534071150019E-013 + 6.68200000000000 4.395534071150019E-013 + 6.68300000000000 4.395534071150019E-013 + 6.68400000000000 4.395534071150019E-013 + 6.68500000000000 4.395534071150019E-013 + 6.68600000000000 4.395534071150019E-013 + 6.68700000000000 4.395534071150019E-013 + 6.68800000000000 4.395534071150019E-013 + 6.68900000000000 4.395534071150019E-013 + 6.69000000000000 4.395534071150019E-013 + 6.69100000000000 4.395534071150019E-013 + 6.69200000000000 4.395534071150019E-013 + 6.69300000000000 4.395534071150019E-013 + 6.69400000000000 4.395534071150019E-013 + 6.69500000000000 4.395534071150019E-013 + 6.69600000000000 4.395534071150019E-013 + 6.69700000000000 4.395534071150019E-013 + 6.69800000000000 4.395534071150019E-013 + 6.69900000000000 4.395534071150019E-013 + 6.70000000000000 4.395534071150019E-013 + 6.70100000000000 4.395534071150019E-013 + 6.70200000000000 4.395534071150019E-013 + 6.70300000000000 4.395534071150019E-013 + 6.70400000000000 4.395534071150019E-013 + 6.70500000000000 4.395534071150019E-013 + 6.70600000000000 4.395534071150019E-013 + 6.70700000000000 4.395534071150019E-013 + 6.70800000000000 4.395534071150019E-013 + 6.70900000000000 4.395534071150019E-013 + 6.71000000000000 4.395534071150019E-013 + 6.71100000000000 4.395534071150019E-013 + 6.71200000000000 4.395534071150019E-013 + 6.71300000000000 4.395534071150019E-013 + 6.71400000000000 4.395534071150019E-013 + 6.71500000000000 4.395534071150019E-013 + 6.71600000000000 4.395534071150019E-013 + 6.71700000000000 4.395534071150019E-013 + 6.71800000000000 4.395534071150019E-013 + 6.71900000000000 4.395534071150019E-013 + 6.72000000000000 4.395534071150019E-013 + 6.72100000000000 4.395534071150019E-013 + 6.72200000000000 4.395534071150019E-013 + 6.72300000000000 4.395534071150019E-013 + 6.72400000000000 4.395534071150019E-013 + 6.72500000000000 4.395534071150019E-013 + 6.72600000000000 4.395534071150019E-013 + 6.72700000000000 4.395534071150019E-013 + 6.72800000000000 4.395534071150019E-013 + 6.72900000000000 4.395534071150019E-013 + 6.73000000000000 4.395534071150019E-013 + 6.73100000000000 4.395534071150019E-013 + 6.73200000000000 4.395534071150019E-013 + 6.73300000000000 4.395534071150019E-013 + 6.73400000000000 4.395534071150019E-013 + 6.73500000000000 4.395534071150019E-013 + 6.73600000000000 4.395534071150019E-013 + 6.73700000000000 4.395534071150019E-013 + 6.73800000000000 4.395534071150019E-013 + 6.73900000000000 4.395534071150019E-013 + 6.74000000000000 4.395534071150019E-013 + 6.74100000000000 4.395534071150019E-013 + 6.74200000000000 4.395534071150019E-013 + 6.74300000000000 4.395534071150019E-013 + 6.74400000000000 4.395534071150019E-013 + 6.74500000000000 4.395534071150019E-013 + 6.74600000000000 4.395534071150019E-013 + 6.74700000000000 4.395534071150019E-013 + 6.74800000000000 4.395534071150019E-013 + 6.74900000000000 4.395534071150019E-013 + 6.75000000000000 4.395534071150019E-013 + 6.75100000000000 4.395534071150019E-013 + 6.75200000000000 4.395534071150019E-013 + 6.75300000000000 4.395534071150019E-013 + 6.75400000000000 4.395534071150019E-013 + 6.75500000000000 4.395534071150019E-013 + 6.75600000000000 4.395534071150019E-013 + 6.75700000000000 4.395534071150019E-013 + 6.75800000000000 4.395534071150019E-013 + 6.75900000000000 4.395534071150019E-013 + 6.76000000000000 4.395534071150019E-013 + 6.76100000000000 4.395534071150019E-013 + 6.76200000000000 4.395534071150019E-013 + 6.76300000000000 4.395534071150019E-013 + 6.76400000000000 4.395534071150019E-013 + 6.76500000000000 4.395534071150019E-013 + 6.76600000000000 4.395534071150019E-013 + 6.76700000000000 4.395534071150019E-013 + 6.76800000000000 4.395534071150019E-013 + 6.76900000000000 4.395534071150019E-013 + 6.77000000000000 4.395534071150019E-013 + 6.77100000000000 4.395534071150019E-013 + 6.77200000000000 4.395534071150019E-013 + 6.77300000000000 4.395534071150019E-013 + 6.77400000000000 4.395534071150019E-013 + 6.77500000000000 4.395534071150019E-013 + 6.77600000000000 4.395534071150019E-013 + 6.77700000000000 4.395534071150019E-013 + 6.77800000000000 4.395534071150019E-013 + 6.77900000000000 4.395534071150019E-013 + 6.78000000000000 4.395534071150019E-013 + 6.78100000000000 4.395534071150019E-013 + 6.78200000000000 4.395534071150019E-013 + 6.78300000000000 4.395534071150019E-013 + 6.78400000000000 4.395534071150019E-013 + 6.78500000000000 4.395534071150019E-013 + 6.78600000000000 4.395534071150019E-013 + 6.78700000000000 4.395534071150019E-013 + 6.78800000000000 4.395534071150019E-013 + 6.78900000000000 4.395534071150019E-013 + 6.79000000000000 4.395534071150019E-013 + 6.79100000000000 4.395534071150019E-013 + 6.79200000000000 4.395534071150019E-013 + 6.79300000000000 4.395534071150019E-013 + 6.79400000000000 4.395534071150019E-013 + 6.79500000000000 4.395534071150019E-013 + 6.79600000000000 4.395534071150019E-013 + 6.79700000000000 4.395534071150019E-013 + 6.79800000000000 4.395534071150019E-013 + 6.79900000000000 4.395534071150019E-013 + 6.80000000000000 4.395534071150019E-013 + 6.80100000000000 4.395534071150019E-013 + 6.80200000000000 4.395534071150019E-013 + 6.80300000000000 4.395534071150019E-013 + 6.80400000000000 4.395534071150019E-013 + 6.80500000000000 4.395534071150019E-013 + 6.80600000000000 4.395534071150019E-013 + 6.80700000000000 4.395534071150019E-013 + 6.80800000000000 4.395534071150019E-013 + 6.80900000000000 4.395534071150019E-013 + 6.81000000000000 4.395534071150019E-013 + 6.81100000000000 4.395534071150019E-013 + 6.81200000000000 4.395534071150019E-013 + 6.81300000000000 4.395534071150019E-013 + 6.81400000000000 4.395534071150019E-013 + 6.81500000000000 4.395534071150019E-013 + 6.81600000000000 4.395534071150019E-013 + 6.81700000000000 4.395534071150019E-013 + 6.81800000000000 4.395534071150019E-013 + 6.81900000000000 4.395534071150019E-013 + 6.82000000000000 4.395534071150019E-013 + 6.82100000000000 4.395534071150019E-013 + 6.82200000000000 4.395534071150019E-013 + 6.82300000000000 4.395534071150019E-013 + 6.82400000000000 4.395534071150019E-013 + 6.82500000000000 4.395534071150019E-013 + 6.82600000000000 4.395534071150019E-013 + 6.82700000000000 4.395534071150019E-013 + 6.82800000000000 4.395534071150019E-013 + 6.82900000000000 4.395534071150019E-013 + 6.83000000000000 4.395534071150019E-013 + 6.83100000000000 4.395534071150019E-013 + 6.83200000000000 4.395534071150019E-013 + 6.83300000000000 4.395534071150019E-013 + 6.83400000000000 4.395534071150019E-013 + 6.83500000000000 4.395534071150019E-013 + 6.83600000000000 4.395534071150019E-013 + 6.83700000000000 4.395534071150019E-013 + 6.83800000000000 4.395534071150019E-013 + 6.83900000000000 4.395534071150019E-013 + 6.84000000000000 4.395534071150019E-013 + 6.84100000000000 4.395534071150019E-013 + 6.84200000000000 4.395534071150019E-013 + 6.84300000000000 4.395534071150019E-013 + 6.84400000000000 4.395534071150019E-013 + 6.84500000000000 4.395534071150019E-013 + 6.84600000000000 4.395534071150019E-013 + 6.84700000000000 4.395534071150019E-013 + 6.84800000000000 4.395534071150019E-013 + 6.84900000000000 4.395534071150019E-013 + 6.85000000000000 4.395534071150019E-013 + 6.85100000000000 4.395534071150019E-013 + 6.85200000000000 4.395534071150019E-013 + 6.85300000000000 4.395534071150019E-013 + 6.85400000000000 4.395534071150019E-013 + 6.85500000000000 4.395534071150019E-013 + 6.85600000000000 4.395534071150019E-013 + 6.85700000000000 4.395534071150019E-013 + 6.85800000000000 4.395534071150019E-013 + 6.85900000000000 4.395534071150019E-013 + 6.86000000000000 4.395534071150019E-013 + 6.86100000000000 4.395534071150019E-013 + 6.86200000000000 4.395534071150019E-013 + 6.86300000000000 4.395534071150019E-013 + 6.86400000000000 4.395534071150019E-013 + 6.86500000000000 4.395534071150019E-013 + 6.86600000000000 4.395534071150019E-013 + 6.86700000000000 4.395534071150019E-013 + 6.86800000000000 4.395534071150019E-013 + 6.86900000000000 4.395534071150019E-013 + 6.87000000000000 4.395534071150019E-013 + 6.87100000000000 4.395534071150019E-013 + 6.87200000000000 4.395534071150019E-013 + 6.87300000000000 4.395534071150019E-013 + 6.87400000000000 4.395534071150019E-013 + 6.87500000000000 4.395534071150019E-013 + 6.87600000000000 4.395534071150019E-013 + 6.87700000000000 4.395534071150019E-013 + 6.87800000000000 4.395534071150019E-013 + 6.87900000000000 4.395534071150019E-013 + 6.88000000000000 4.395534071150019E-013 + 6.88100000000000 4.395534071150019E-013 + 6.88200000000000 4.395534071150019E-013 + 6.88300000000000 4.395534071150019E-013 + 6.88400000000000 4.395534071150019E-013 + 6.88500000000000 4.395534071150019E-013 + 6.88600000000000 4.395534071150019E-013 + 6.88700000000000 4.395534071150019E-013 + 6.88800000000000 4.395534071150019E-013 + 6.88900000000000 4.395534071150019E-013 + 6.89000000000000 4.395534071150019E-013 + 6.89100000000000 4.395534071150019E-013 + 6.89200000000000 4.395534071150019E-013 + 6.89300000000000 4.395534071150019E-013 + 6.89400000000000 4.395534071150019E-013 + 6.89500000000000 4.395534071150019E-013 + 6.89600000000000 4.395534071150019E-013 + 6.89700000000000 4.395534071150019E-013 + 6.89800000000000 4.395534071150019E-013 + 6.89900000000000 4.395534071150019E-013 + 6.90000000000000 4.395534071150019E-013 + 6.90100000000000 4.395534071150019E-013 + 6.90200000000000 4.395534071150019E-013 + 6.90300000000000 4.395534071150019E-013 + 6.90400000000000 4.395534071150019E-013 + 6.90500000000000 4.395534071150019E-013 + 6.90600000000000 4.395534071150019E-013 + 6.90700000000000 4.395534071150019E-013 + 6.90800000000000 4.395534071150019E-013 + 6.90900000000000 4.395534071150019E-013 + 6.91000000000000 4.395534071150019E-013 + 6.91100000000000 4.395534071150019E-013 + 6.91200000000000 4.395534071150019E-013 + 6.91300000000000 4.395534071150019E-013 + 6.91400000000000 4.395534071150019E-013 + 6.91500000000000 4.395534071150019E-013 + 6.91600000000000 4.395534071150019E-013 + 6.91700000000000 4.395534071150019E-013 + 6.91800000000000 4.395534071150019E-013 + 6.91900000000000 4.395534071150019E-013 + 6.92000000000000 4.395534071150019E-013 + 6.92100000000000 4.395534071150019E-013 + 6.92200000000000 4.395534071150019E-013 + 6.92300000000000 4.395534071150019E-013 + 6.92400000000000 4.395534071150019E-013 + 6.92500000000000 4.395534071150019E-013 + 6.92600000000000 4.395534071150019E-013 + 6.92700000000000 4.395534071150019E-013 + 6.92800000000000 4.395534071150019E-013 + 6.92900000000000 4.395534071150019E-013 + 6.93000000000000 4.395534071150019E-013 + 6.93100000000000 4.395534071150019E-013 + 6.93200000000000 4.395534071150019E-013 + 6.93300000000000 4.395534071150019E-013 + 6.93400000000000 4.395534071150019E-013 + 6.93500000000000 4.395534071150019E-013 + 6.93600000000000 4.395534071150019E-013 + 6.93700000000000 4.395534071150019E-013 + 6.93800000000000 4.395534071150019E-013 + 6.93900000000000 4.395534071150019E-013 + 6.94000000000000 4.395534071150019E-013 + 6.94100000000000 4.395534071150019E-013 + 6.94200000000000 4.395534071150019E-013 + 6.94300000000000 4.395534071150019E-013 + 6.94400000000000 4.395534071150019E-013 + 6.94500000000000 4.395534071150019E-013 + 6.94600000000000 4.395534071150019E-013 + 6.94700000000000 4.395534071150019E-013 + 6.94800000000000 4.395534071150019E-013 + 6.94900000000000 4.395534071150019E-013 + 6.95000000000000 4.395534071150019E-013 + 6.95100000000000 4.395534071150019E-013 + 6.95200000000000 4.395534071150019E-013 + 6.95300000000000 4.395534071150019E-013 + 6.95400000000000 4.395534071150019E-013 + 6.95500000000000 4.395534071150019E-013 + 6.95600000000000 4.395534071150019E-013 + 6.95700000000000 4.395534071150019E-013 + 6.95800000000000 4.395534071150019E-013 + 6.95900000000000 4.395534071150019E-013 + 6.96000000000000 4.395534071150019E-013 + 6.96100000000000 4.395534071150019E-013 + 6.96200000000000 4.395534071150019E-013 + 6.96300000000000 4.395534071150019E-013 + 6.96400000000000 4.395534071150019E-013 + 6.96500000000000 4.395534071150019E-013 + 6.96600000000000 4.395534071150019E-013 + 6.96700000000000 4.395534071150019E-013 + 6.96800000000000 4.395534071150019E-013 + 6.96900000000000 4.395534071150019E-013 + 6.97000000000000 4.395534071150019E-013 + 6.97100000000000 4.395534071150019E-013 + 6.97200000000000 4.395534071150019E-013 + 6.97300000000000 4.395534071150019E-013 + 6.97400000000000 4.395534071150019E-013 + 6.97500000000000 4.395534071150019E-013 + 6.97600000000000 4.395534071150019E-013 + 6.97700000000000 4.395534071150019E-013 + 6.97800000000000 4.395534071150019E-013 + 6.97900000000000 4.395534071150019E-013 + 6.98000000000000 4.395534071150019E-013 + 6.98100000000000 4.395534071150019E-013 + 6.98200000000000 4.395534071150019E-013 + 6.98300000000000 4.395534071150019E-013 + 6.98400000000000 4.395534071150019E-013 + 6.98500000000000 4.395534071150019E-013 + 6.98600000000000 4.395534071150019E-013 + 6.98700000000000 4.395534071150019E-013 + 6.98800000000000 4.395534071150019E-013 + 6.98900000000000 4.395534071150019E-013 + 6.99000000000000 4.395534071150019E-013 + 6.99100000000000 4.395534071150019E-013 + 6.99200000000000 4.395534071150019E-013 + 6.99300000000000 4.395534071150019E-013 + 6.99400000000000 4.395534071150019E-013 + 6.99500000000000 4.395534071150019E-013 + 6.99600000000000 4.395534071150019E-013 + 6.99700000000000 4.395534071150019E-013 + 6.99800000000000 4.395534071150019E-013 + 6.99900000000000 4.395534071150019E-013 + 7.00000000000000 4.395534071150019E-013 + 7.00100000000000 4.395534071150019E-013 + 7.00200000000000 4.395534071150019E-013 + 7.00300000000000 4.395534071150019E-013 + 7.00400000000000 4.395534071150019E-013 + 7.00500000000000 4.395534071150019E-013 + 7.00600000000000 4.395534071150019E-013 + 7.00700000000000 4.395534071150019E-013 + 7.00800000000000 4.395534071150019E-013 + 7.00900000000000 4.395534071150019E-013 + 7.01000000000000 4.395534071150019E-013 + 7.01100000000000 4.395534071150019E-013 + 7.01200000000000 4.395534071150019E-013 + 7.01300000000000 4.395534071150019E-013 + 7.01400000000000 4.395534071150019E-013 + 7.01500000000000 4.395534071150019E-013 + 7.01600000000000 4.395534071150019E-013 + 7.01700000000000 4.395534071150019E-013 + 7.01800000000000 4.395534071150019E-013 + 7.01900000000000 4.395534071150019E-013 + 7.02000000000000 4.395534071150019E-013 + 7.02100000000000 4.395534071150019E-013 + 7.02200000000000 4.395534071150019E-013 + 7.02300000000000 4.395534071150019E-013 + 7.02400000000000 4.395534071150019E-013 + 7.02500000000000 4.395534071150019E-013 + 7.02600000000000 4.395534071150019E-013 + 7.02700000000000 4.395534071150019E-013 + 7.02800000000000 4.395534071150019E-013 + 7.02900000000000 4.395534071150019E-013 + 7.03000000000000 4.395534071150019E-013 + 7.03100000000000 4.395534071150019E-013 + 7.03200000000000 4.395534071150019E-013 + 7.03300000000000 4.395534071150019E-013 + 7.03400000000000 4.395534071150019E-013 + 7.03500000000000 4.395534071150019E-013 + 7.03600000000000 4.395534071150019E-013 + 7.03700000000000 4.395534071150019E-013 + 7.03800000000000 4.395534071150019E-013 + 7.03900000000000 4.395534071150019E-013 + 7.04000000000000 4.395534071150019E-013 + 7.04100000000000 4.395534071150019E-013 + 7.04200000000000 4.395534071150019E-013 + 7.04300000000000 4.395534071150019E-013 + 7.04400000000000 4.395534071150019E-013 + 7.04500000000000 4.395534071150019E-013 + 7.04600000000000 4.395534071150019E-013 + 7.04700000000000 4.395534071150019E-013 + 7.04800000000000 4.395534071150019E-013 + 7.04900000000000 4.395534071150019E-013 + 7.05000000000000 4.395534071150019E-013 + 7.05100000000000 4.395534071150019E-013 + 7.05200000000000 4.395534071150019E-013 + 7.05300000000000 4.395534071150019E-013 + 7.05400000000000 4.395534071150019E-013 + 7.05500000000000 4.395534071150019E-013 + 7.05600000000000 4.395534071150019E-013 + 7.05700000000000 4.395534071150019E-013 + 7.05800000000000 4.395534071150019E-013 + 7.05900000000000 4.395534071150019E-013 + 7.06000000000000 4.395534071150019E-013 + 7.06100000000000 4.395534071150019E-013 + 7.06200000000000 4.395534071150019E-013 + 7.06300000000000 4.395534071150019E-013 + 7.06400000000000 4.395534071150019E-013 + 7.06500000000000 4.395534071150019E-013 + 7.06600000000000 4.395534071150019E-013 + 7.06700000000000 4.395534071150019E-013 + 7.06800000000000 4.395534071150019E-013 + 7.06900000000000 4.395534071150019E-013 + 7.07000000000000 4.395534071150019E-013 + 7.07100000000000 4.395534071150019E-013 + 7.07200000000000 4.395534071150019E-013 + 7.07300000000000 4.395534071150019E-013 + 7.07400000000000 4.395534071150019E-013 + 7.07500000000000 4.395534071150019E-013 + 7.07600000000000 4.395534071150019E-013 + 7.07700000000000 4.395534071150019E-013 + 7.07800000000000 4.395534071150019E-013 + 7.07900000000000 4.395534071150019E-013 + 7.08000000000000 4.395534071150019E-013 + 7.08100000000000 4.395534071150019E-013 + 7.08200000000000 4.395534071150019E-013 + 7.08300000000000 4.395534071150019E-013 + 7.08400000000000 4.395534071150019E-013 + 7.08500000000000 4.395534071150019E-013 + 7.08600000000000 4.395534071150019E-013 + 7.08700000000000 4.395534071150019E-013 + 7.08800000000000 4.395534071150019E-013 + 7.08900000000000 4.395534071150019E-013 + 7.09000000000000 4.395534071150019E-013 + 7.09100000000000 4.395534071150019E-013 + 7.09200000000000 4.395534071150019E-013 + 7.09300000000000 4.395534071150019E-013 + 7.09400000000000 4.395534071150019E-013 + 7.09500000000000 4.395534071150019E-013 + 7.09600000000000 4.395534071150019E-013 + 7.09700000000000 4.395534071150019E-013 + 7.09800000000000 4.395534071150019E-013 + 7.09900000000000 4.395534071150019E-013 + 7.10000000000000 4.395534071150019E-013 + 7.10100000000000 4.395534071150019E-013 + 7.10200000000000 4.395534071150019E-013 + 7.10300000000000 4.395534071150019E-013 + 7.10400000000000 4.395534071150019E-013 + 7.10500000000000 4.395534071150019E-013 + 7.10600000000000 4.395534071150019E-013 + 7.10700000000000 4.395534071150019E-013 + 7.10800000000000 4.395534071150019E-013 + 7.10900000000000 4.395534071150019E-013 + 7.11000000000000 4.395534071150019E-013 + 7.11100000000000 4.395534071150019E-013 + 7.11200000000000 4.395534071150019E-013 + 7.11300000000000 4.395534071150019E-013 + 7.11400000000000 4.395534071150019E-013 + 7.11500000000000 4.395534071150019E-013 + 7.11600000000000 4.395534071150019E-013 + 7.11700000000000 4.395534071150019E-013 + 7.11800000000000 4.395534071150019E-013 + 7.11900000000000 4.395534071150019E-013 + 7.12000000000000 4.395534071150019E-013 + 7.12100000000000 4.395534071150019E-013 + 7.12200000000000 4.395534071150019E-013 + 7.12300000000000 4.395534071150019E-013 + 7.12400000000000 4.395534071150019E-013 + 7.12500000000000 4.395534071150019E-013 + 7.12600000000000 4.395534071150019E-013 + 7.12700000000000 4.395534071150019E-013 + 7.12800000000000 4.395534071150019E-013 + 7.12900000000000 4.395534071150019E-013 + 7.13000000000000 4.395534071150019E-013 + 7.13100000000000 4.395534071150019E-013 + 7.13200000000000 4.395534071150019E-013 + 7.13300000000000 4.395534071150019E-013 + 7.13400000000000 4.395534071150019E-013 + 7.13500000000000 4.395534071150019E-013 + 7.13600000000000 4.395534071150019E-013 + 7.13700000000000 4.395534071150019E-013 + 7.13800000000000 4.395534071150019E-013 + 7.13900000000000 4.395534071150019E-013 + 7.14000000000000 4.395534071150019E-013 + 7.14100000000000 4.395534071150019E-013 + 7.14200000000000 4.395534071150019E-013 + 7.14300000000000 4.395534071150019E-013 + 7.14400000000000 4.395534071150019E-013 + 7.14500000000000 4.395534071150019E-013 + 7.14600000000000 4.395534071150019E-013 + 7.14700000000000 4.395534071150019E-013 + 7.14800000000000 4.395534071150019E-013 + 7.14900000000000 4.395534071150019E-013 + 7.15000000000000 4.395534071150019E-013 + 7.15100000000000 4.395534071150019E-013 + 7.15200000000000 4.395534071150019E-013 + 7.15300000000000 4.395534071150019E-013 + 7.15400000000000 4.395534071150019E-013 + 7.15500000000000 4.395534071150019E-013 + 7.15600000000000 4.395534071150019E-013 + 7.15700000000000 4.395534071150019E-013 + 7.15800000000000 4.395534071150019E-013 + 7.15900000000000 4.395534071150019E-013 + 7.16000000000000 4.395534071150019E-013 + 7.16100000000000 4.395534071150019E-013 + 7.16200000000000 4.395534071150019E-013 + 7.16300000000000 4.395534071150019E-013 + 7.16400000000000 4.395534071150019E-013 + 7.16500000000000 4.395534071150019E-013 + 7.16600000000000 4.395534071150019E-013 + 7.16700000000000 4.395534071150019E-013 + 7.16800000000000 4.395534071150019E-013 + 7.16900000000000 4.395534071150019E-013 + 7.17000000000000 4.395534071150019E-013 + 7.17100000000000 4.395534071150019E-013 + 7.17200000000000 4.395534071150019E-013 + 7.17300000000000 4.395534071150019E-013 + 7.17400000000000 4.395534071150019E-013 + 7.17500000000000 4.395534071150019E-013 + 7.17600000000000 4.395534071150019E-013 + 7.17700000000000 4.395534071150019E-013 + 7.17800000000000 4.395534071150019E-013 + 7.17900000000000 4.395534071150019E-013 + 7.18000000000000 4.395534071150019E-013 + 7.18100000000000 4.395534071150019E-013 + 7.18200000000000 4.395534071150019E-013 + 7.18300000000000 4.395534071150019E-013 + 7.18400000000000 4.395534071150019E-013 + 7.18500000000000 4.395534071150019E-013 + 7.18600000000000 4.395534071150019E-013 + 7.18700000000000 4.395534071150019E-013 + 7.18800000000000 4.395534071150019E-013 + 7.18900000000000 4.395534071150019E-013 + 7.19000000000000 4.395534071150019E-013 + 7.19100000000000 4.395534071150019E-013 + 7.19200000000000 4.395534071150019E-013 + 7.19300000000000 4.395534071150019E-013 + 7.19400000000000 4.395534071150019E-013 + 7.19500000000000 4.395534071150019E-013 + 7.19600000000000 4.395534071150019E-013 + 7.19700000000000 4.395534071150019E-013 + 7.19800000000000 4.395534071150019E-013 + 7.19900000000000 4.395534071150019E-013 + 7.20000000000000 4.395534071150019E-013 + 7.20100000000000 4.395534071150019E-013 + 7.20200000000000 4.395534071150019E-013 + 7.20300000000000 4.395534071150019E-013 + 7.20400000000000 4.395534071150019E-013 + 7.20500000000000 4.395534071150019E-013 + 7.20600000000000 4.395534071150019E-013 + 7.20700000000000 4.395534071150019E-013 + 7.20800000000000 4.395534071150019E-013 + 7.20900000000000 4.395534071150019E-013 + 7.21000000000000 4.395534071150019E-013 + 7.21100000000000 4.395534071150019E-013 + 7.21200000000000 4.395534071150019E-013 + 7.21300000000000 4.395534071150019E-013 + 7.21400000000000 4.395534071150019E-013 + 7.21500000000000 4.395534071150019E-013 + 7.21600000000000 4.395534071150019E-013 + 7.21700000000000 4.395534071150019E-013 + 7.21800000000000 4.395534071150019E-013 + 7.21900000000000 4.395534071150019E-013 + 7.22000000000000 4.395534071150019E-013 + 7.22100000000000 4.395534071150019E-013 + 7.22200000000000 4.395534071150019E-013 + 7.22300000000000 4.395534071150019E-013 + 7.22400000000000 4.395534071150019E-013 + 7.22500000000000 4.395534071150019E-013 + 7.22600000000000 4.395534071150019E-013 + 7.22700000000000 4.395534071150019E-013 + 7.22800000000000 4.395534071150019E-013 + 7.22900000000000 4.395534071150019E-013 + 7.23000000000000 4.395534071150019E-013 + 7.23100000000000 4.395534071150019E-013 + 7.23200000000000 4.395534071150019E-013 + 7.23300000000000 4.395534071150019E-013 + 7.23400000000000 4.395534071150019E-013 + 7.23500000000000 4.395534071150019E-013 + 7.23600000000000 4.395534071150019E-013 + 7.23700000000000 4.395534071150019E-013 + 7.23800000000000 4.395534071150019E-013 + 7.23900000000000 4.395534071150019E-013 + 7.24000000000000 4.395534071150019E-013 + 7.24100000000000 4.395534071150019E-013 + 7.24200000000000 4.395534071150019E-013 + 7.24300000000000 4.395534071150019E-013 + 7.24400000000000 4.395534071150019E-013 + 7.24500000000000 4.395534071150019E-013 + 7.24600000000000 4.395534071150019E-013 + 7.24700000000000 4.395534071150019E-013 + 7.24800000000000 4.395534071150019E-013 + 7.24900000000000 4.395534071150019E-013 + 7.25000000000000 4.395534071150019E-013 + 7.25100000000000 4.395534071150019E-013 + 7.25200000000000 4.395534071150019E-013 + 7.25300000000000 4.395534071150019E-013 + 7.25400000000000 4.395534071150019E-013 + 7.25500000000000 4.395534071150019E-013 + 7.25600000000000 4.395534071150019E-013 + 7.25700000000000 4.395534071150019E-013 + 7.25800000000000 4.395534071150019E-013 + 7.25900000000000 4.395534071150019E-013 + 7.26000000000000 4.395534071150019E-013 + 7.26100000000000 4.395534071150019E-013 + 7.26200000000000 4.395534071150019E-013 + 7.26300000000000 4.395534071150019E-013 + 7.26400000000000 4.395534071150019E-013 + 7.26500000000000 4.395534071150019E-013 + 7.26600000000000 4.395534071150019E-013 + 7.26700000000000 4.395534071150019E-013 + 7.26800000000000 4.395534071150019E-013 + 7.26900000000000 4.395534071150019E-013 + 7.27000000000000 4.395534071150019E-013 + 7.27100000000000 4.395534071150019E-013 + 7.27200000000000 4.395534071150019E-013 + 7.27300000000000 4.395534071150019E-013 + 7.27400000000000 4.395534071150019E-013 + 7.27500000000000 4.395534071150019E-013 + 7.27600000000000 4.395534071150019E-013 + 7.27700000000000 4.395534071150019E-013 + 7.27800000000000 4.395534071150019E-013 + 7.27900000000000 4.395534071150019E-013 + 7.28000000000000 4.395534071150019E-013 + 7.28100000000000 4.395534071150019E-013 + 7.28200000000000 4.395534071150019E-013 + 7.28300000000000 4.395534071150019E-013 + 7.28400000000000 4.395534071150019E-013 + 7.28500000000000 4.395534071150019E-013 + 7.28600000000000 4.395534071150019E-013 + 7.28700000000000 4.395534071150019E-013 + 7.28800000000000 4.395534071150019E-013 + 7.28900000000000 4.395534071150019E-013 + 7.29000000000000 4.395534071150019E-013 + 7.29100000000000 4.395534071150019E-013 + 7.29200000000000 4.395534071150019E-013 + 7.29300000000000 4.395534071150019E-013 + 7.29400000000000 4.395534071150019E-013 + 7.29500000000000 4.395534071150019E-013 + 7.29600000000000 4.395534071150019E-013 + 7.29700000000000 4.395534071150019E-013 + 7.29800000000000 4.395534071150019E-013 + 7.29900000000000 4.395534071150019E-013 + 7.30000000000000 4.395534071150019E-013 + 7.30100000000000 4.395534071150019E-013 + 7.30200000000000 4.395534071150019E-013 + 7.30300000000000 4.395534071150019E-013 + 7.30400000000000 4.395534071150019E-013 + 7.30500000000000 4.395534071150019E-013 + 7.30600000000000 4.395534071150019E-013 + 7.30700000000000 4.395534071150019E-013 + 7.30800000000000 4.395534071150019E-013 + 7.30900000000000 4.395534071150019E-013 + 7.31000000000000 4.395534071150019E-013 + 7.31100000000000 4.395534071150019E-013 + 7.31200000000000 4.395534071150019E-013 + 7.31300000000000 4.395534071150019E-013 + 7.31400000000000 4.395534071150019E-013 + 7.31500000000000 4.395534071150019E-013 + 7.31600000000000 4.395534071150019E-013 + 7.31700000000000 4.395534071150019E-013 + 7.31800000000000 4.395534071150019E-013 + 7.31900000000000 4.395534071150019E-013 + 7.32000000000000 4.395534071150019E-013 + 7.32100000000000 4.395534071150019E-013 + 7.32200000000000 4.395534071150019E-013 + 7.32300000000000 4.395534071150019E-013 + 7.32400000000000 4.395534071150019E-013 + 7.32500000000000 4.395534071150019E-013 + 7.32600000000000 4.395534071150019E-013 + 7.32700000000000 4.395534071150019E-013 + 7.32800000000000 4.395534071150019E-013 + 7.32900000000000 4.395534071150019E-013 + 7.33000000000000 4.395534071150019E-013 + 7.33100000000000 4.395534071150019E-013 + 7.33200000000000 4.395534071150019E-013 + 7.33300000000000 4.395534071150019E-013 + 7.33400000000000 4.395534071150019E-013 + 7.33500000000000 4.395534071150019E-013 + 7.33600000000000 4.395534071150019E-013 + 7.33700000000000 4.395534071150019E-013 + 7.33800000000000 4.395534071150019E-013 + 7.33900000000000 4.395534071150019E-013 + 7.34000000000000 4.395534071150019E-013 + 7.34100000000000 4.395534071150019E-013 + 7.34200000000000 4.395534071150019E-013 + 7.34300000000000 4.395534071150019E-013 + 7.34400000000000 4.395534071150019E-013 + 7.34500000000000 4.395534071150019E-013 + 7.34600000000000 4.395534071150019E-013 + 7.34700000000000 4.395534071150019E-013 + 7.34800000000000 4.395534071150019E-013 + 7.34900000000000 4.395534071150019E-013 + 7.35000000000000 4.395534071150019E-013 + 7.35100000000000 4.395534071150019E-013 + 7.35200000000000 4.395534071150019E-013 + 7.35300000000000 4.395534071150019E-013 + 7.35400000000000 4.395534071150019E-013 + 7.35500000000000 4.395534071150019E-013 + 7.35600000000000 4.395534071150019E-013 + 7.35700000000000 4.395534071150019E-013 + 7.35800000000000 4.395534071150019E-013 + 7.35900000000000 4.395534071150019E-013 + 7.36000000000000 4.395534071150019E-013 + 7.36100000000000 4.395534071150019E-013 + 7.36200000000000 4.395534071150019E-013 + 7.36300000000000 4.395534071150019E-013 + 7.36400000000000 4.395534071150019E-013 + 7.36500000000000 4.395534071150019E-013 + 7.36600000000000 4.395534071150019E-013 + 7.36700000000000 4.395534071150019E-013 + 7.36800000000000 4.395534071150019E-013 + 7.36900000000000 4.395534071150019E-013 + 7.37000000000000 4.395534071150019E-013 + 7.37100000000000 4.395534071150019E-013 + 7.37200000000000 4.395534071150019E-013 + 7.37300000000000 4.395534071150019E-013 + 7.37400000000000 4.395534071150019E-013 + 7.37500000000000 4.395534071150019E-013 + 7.37600000000000 4.395534071150019E-013 + 7.37700000000000 4.395534071150019E-013 + 7.37800000000000 4.395534071150019E-013 + 7.37900000000000 4.395534071150019E-013 + 7.38000000000000 4.395534071150019E-013 + 7.38100000000000 4.395534071150019E-013 + 7.38200000000000 4.395534071150019E-013 + 7.38300000000000 4.395534071150019E-013 + 7.38400000000000 4.395534071150019E-013 + 7.38500000000000 4.395534071150019E-013 + 7.38600000000000 4.395534071150019E-013 + 7.38700000000000 4.395534071150019E-013 + 7.38800000000000 4.395534071150019E-013 + 7.38900000000000 4.395534071150019E-013 + 7.39000000000000 4.395534071150019E-013 + 7.39100000000000 4.395534071150019E-013 + 7.39200000000000 4.395534071150019E-013 + 7.39300000000000 4.395534071150019E-013 + 7.39400000000000 4.395534071150019E-013 + 7.39500000000000 4.395534071150019E-013 + 7.39600000000000 4.395534071150019E-013 + 7.39700000000000 4.395534071150019E-013 + 7.39800000000000 4.395534071150019E-013 + 7.39900000000000 4.395534071150019E-013 + 7.40000000000000 4.395534071150019E-013 + 7.40100000000000 4.395534071150019E-013 + 7.40200000000000 4.395534071150019E-013 + 7.40300000000000 4.395534071150019E-013 + 7.40400000000000 4.395534071150019E-013 + 7.40500000000000 4.395534071150019E-013 + 7.40600000000000 4.395534071150019E-013 + 7.40700000000000 4.395534071150019E-013 + 7.40800000000000 4.395534071150019E-013 + 7.40900000000000 4.395534071150019E-013 + 7.41000000000000 4.395534071150019E-013 + 7.41100000000000 4.395534071150019E-013 + 7.41200000000000 4.395534071150019E-013 + 7.41300000000000 4.395534071150019E-013 + 7.41400000000000 4.395534071150019E-013 + 7.41500000000000 4.395534071150019E-013 + 7.41600000000000 4.395534071150019E-013 + 7.41700000000000 4.395534071150019E-013 + 7.41800000000000 4.395534071150019E-013 + 7.41900000000000 4.395534071150019E-013 + 7.42000000000000 4.395534071150019E-013 + 7.42100000000000 4.395534071150019E-013 + 7.42200000000000 4.395534071150019E-013 + 7.42300000000000 4.395534071150019E-013 + 7.42400000000000 4.395534071150019E-013 + 7.42500000000000 4.395534071150019E-013 + 7.42600000000000 4.395534071150019E-013 + 7.42700000000000 4.395534071150019E-013 + 7.42800000000000 4.395534071150019E-013 + 7.42900000000000 4.395534071150019E-013 + 7.43000000000000 4.395534071150019E-013 + 7.43100000000000 4.395534071150019E-013 + 7.43200000000000 4.395534071150019E-013 + 7.43300000000000 4.395534071150019E-013 + 7.43400000000000 4.395534071150019E-013 + 7.43500000000000 4.395534071150019E-013 + 7.43600000000000 4.395534071150019E-013 + 7.43700000000000 4.395534071150019E-013 + 7.43800000000000 4.395534071150019E-013 + 7.43900000000000 4.395534071150019E-013 + 7.44000000000000 4.395534071150019E-013 + 7.44100000000000 4.395534071150019E-013 + 7.44200000000000 4.395534071150019E-013 + 7.44300000000000 4.395534071150019E-013 + 7.44400000000000 4.395534071150019E-013 + 7.44500000000000 4.395534071150019E-013 + 7.44600000000000 4.395534071150019E-013 + 7.44700000000000 4.395534071150019E-013 + 7.44800000000000 4.395534071150019E-013 + 7.44900000000000 4.395534071150019E-013 + 7.45000000000000 4.395534071150019E-013 + 7.45100000000000 4.395534071150019E-013 + 7.45200000000000 4.395534071150019E-013 + 7.45300000000000 4.395534071150019E-013 + 7.45400000000000 4.395534071150019E-013 + 7.45500000000000 4.395534071150019E-013 + 7.45600000000000 4.395534071150019E-013 + 7.45700000000000 4.395534071150019E-013 + 7.45800000000000 4.395534071150019E-013 + 7.45900000000000 4.395534071150019E-013 + 7.46000000000000 4.395534071150019E-013 + 7.46100000000000 4.395534071150019E-013 + 7.46200000000000 4.395534071150019E-013 + 7.46300000000000 4.395534071150019E-013 + 7.46400000000000 4.395534071150019E-013 + 7.46500000000000 4.395534071150019E-013 + 7.46600000000000 4.395534071150019E-013 + 7.46700000000000 4.395534071150019E-013 + 7.46800000000000 4.395534071150019E-013 + 7.46900000000000 4.395534071150019E-013 + 7.47000000000000 4.395534071150019E-013 + 7.47100000000000 4.395534071150019E-013 + 7.47200000000000 4.395534071150019E-013 + 7.47300000000000 4.395534071150019E-013 + 7.47400000000000 4.395534071150019E-013 + 7.47500000000000 4.395534071150019E-013 + 7.47600000000000 4.395534071150019E-013 + 7.47700000000000 4.395534071150019E-013 + 7.47800000000000 4.395534071150019E-013 + 7.47900000000000 4.395534071150019E-013 + 7.48000000000000 4.395534071150019E-013 + 7.48100000000000 4.395534071150019E-013 + 7.48200000000000 4.395534071150019E-013 + 7.48300000000000 4.395534071150019E-013 + 7.48400000000000 4.395534071150019E-013 + 7.48500000000000 4.395534071150019E-013 + 7.48600000000000 4.395534071150019E-013 + 7.48700000000000 4.395534071150019E-013 + 7.48800000000000 4.395534071150019E-013 + 7.48900000000000 4.395534071150019E-013 + 7.49000000000000 4.395534071150019E-013 + 7.49100000000000 4.395534071150019E-013 + 7.49200000000000 4.395534071150019E-013 + 7.49300000000000 4.395534071150019E-013 + 7.49400000000000 4.395534071150019E-013 + 7.49500000000000 4.395534071150019E-013 + 7.49600000000000 4.395534071150019E-013 + 7.49700000000000 4.395534071150019E-013 + 7.49800000000000 4.395534071150019E-013 + 7.49900000000000 4.395534071150019E-013 + 7.50000000000000 4.395534071150019E-013 + 7.50100000000000 4.395534071150019E-013 + 7.50200000000000 4.395534071150019E-013 + 7.50300000000000 4.395534071150019E-013 + 7.50400000000000 4.395534071150019E-013 + 7.50500000000000 4.395534071150019E-013 + 7.50600000000000 4.395534071150019E-013 + 7.50700000000000 4.395534071150019E-013 + 7.50800000000000 4.395534071150019E-013 + 7.50900000000000 4.395534071150019E-013 + 7.51000000000000 4.395534071150019E-013 + 7.51100000000000 4.395534071150019E-013 + 7.51200000000000 4.395534071150019E-013 + 7.51300000000000 4.395534071150019E-013 + 7.51400000000000 4.395534071150019E-013 + 7.51500000000000 4.395534071150019E-013 + 7.51600000000000 4.395534071150019E-013 + 7.51700000000000 4.395534071150019E-013 + 7.51800000000000 4.395534071150019E-013 + 7.51900000000000 4.395534071150019E-013 + 7.52000000000000 4.395534071150019E-013 + 7.52100000000000 4.395534071150019E-013 + 7.52200000000000 4.395534071150019E-013 + 7.52300000000000 4.395534071150019E-013 + 7.52400000000000 4.395534071150019E-013 + 7.52500000000000 4.395534071150019E-013 + 7.52600000000000 4.395534071150019E-013 + 7.52700000000000 4.395534071150019E-013 + 7.52800000000000 4.395534071150019E-013 + 7.52900000000000 4.395534071150019E-013 + 7.53000000000000 4.395534071150019E-013 + 7.53100000000000 4.395534071150019E-013 + 7.53200000000000 4.395534071150019E-013 + 7.53300000000000 4.395534071150019E-013 + 7.53400000000000 4.395534071150019E-013 + 7.53500000000000 4.395534071150019E-013 + 7.53600000000000 4.395534071150019E-013 + 7.53700000000000 4.395534071150019E-013 + 7.53800000000000 4.395534071150019E-013 + 7.53900000000000 4.395534071150019E-013 + 7.54000000000000 4.395534071150019E-013 + 7.54100000000000 4.395534071150019E-013 + 7.54200000000000 4.395534071150019E-013 + 7.54300000000000 4.395534071150019E-013 + 7.54400000000000 4.395534071150019E-013 + 7.54500000000000 4.395534071150019E-013 + 7.54600000000000 4.395534071150019E-013 + 7.54700000000000 4.395534071150019E-013 + 7.54800000000000 4.395534071150019E-013 + 7.54900000000000 4.395534071150019E-013 + 7.55000000000000 4.395534071150019E-013 + 7.55100000000000 4.395534071150019E-013 + 7.55200000000000 4.395534071150019E-013 + 7.55300000000000 4.395534071150019E-013 + 7.55400000000000 4.395534071150019E-013 + 7.55500000000000 4.395534071150019E-013 + 7.55600000000000 4.395534071150019E-013 + 7.55700000000000 4.395534071150019E-013 + 7.55800000000000 4.395534071150019E-013 + 7.55900000000000 4.395534071150019E-013 + 7.56000000000000 4.395534071150019E-013 + 7.56100000000000 4.395534071150019E-013 + 7.56200000000000 4.395534071150019E-013 + 7.56300000000000 4.395534071150019E-013 + 7.56400000000000 4.395534071150019E-013 + 7.56500000000000 4.395534071150019E-013 + 7.56600000000000 4.395534071150019E-013 + 7.56700000000000 4.395534071150019E-013 + 7.56800000000000 4.395534071150019E-013 + 7.56900000000000 4.395534071150019E-013 + 7.57000000000000 4.395534071150019E-013 + 7.57100000000000 4.395534071150019E-013 + 7.57200000000000 4.395534071150019E-013 + 7.57300000000000 4.395534071150019E-013 + 7.57400000000000 4.395534071150019E-013 + 7.57500000000000 4.395534071150019E-013 + 7.57600000000000 4.395534071150019E-013 + 7.57700000000000 4.395534071150019E-013 + 7.57800000000000 4.395534071150019E-013 + 7.57900000000000 4.395534071150019E-013 + 7.58000000000000 4.395534071150019E-013 + 7.58100000000000 4.395534071150019E-013 + 7.58200000000000 4.395534071150019E-013 + 7.58300000000000 4.395534071150019E-013 + 7.58400000000000 4.395534071150019E-013 + 7.58500000000000 4.395534071150019E-013 + 7.58600000000000 4.395534071150019E-013 + 7.58700000000000 4.395534071150019E-013 + 7.58800000000000 4.395534071150019E-013 + 7.58900000000000 4.395534071150019E-013 + 7.59000000000000 4.395534071150019E-013 + 7.59100000000000 4.395534071150019E-013 + 7.59200000000000 4.395534071150019E-013 + 7.59300000000000 4.395534071150019E-013 + 7.59400000000000 4.395534071150019E-013 + 7.59500000000000 4.395534071150019E-013 + 7.59600000000000 4.395534071150019E-013 + 7.59700000000000 4.395534071150019E-013 + 7.59800000000000 4.395534071150019E-013 + 7.59900000000000 4.395534071150019E-013 + 7.60000000000000 4.395534071150019E-013 + 7.60100000000000 4.395534071150019E-013 + 7.60200000000000 4.395534071150019E-013 + 7.60300000000000 4.395534071150019E-013 + 7.60400000000000 4.395534071150019E-013 + 7.60500000000000 4.395534071150019E-013 + 7.60600000000000 4.395534071150019E-013 + 7.60700000000000 4.395534071150019E-013 + 7.60800000000000 4.395534071150019E-013 + 7.60900000000000 4.395534071150019E-013 + 7.61000000000000 4.395534071150019E-013 + 7.61100000000000 4.395534071150019E-013 + 7.61200000000000 4.395534071150019E-013 + 7.61300000000000 4.395534071150019E-013 + 7.61400000000000 4.395534071150019E-013 + 7.61500000000000 4.395534071150019E-013 + 7.61600000000000 4.395534071150019E-013 + 7.61700000000000 4.395534071150019E-013 + 7.61800000000000 4.395534071150019E-013 + 7.61900000000000 4.395534071150019E-013 + 7.62000000000000 4.395534071150019E-013 + 7.62100000000000 4.395534071150019E-013 + 7.62200000000000 4.395534071150019E-013 + 7.62300000000000 4.395534071150019E-013 + 7.62400000000000 4.395534071150019E-013 + 7.62500000000000 4.395534071150019E-013 + 7.62600000000000 4.395534071150019E-013 + 7.62700000000000 4.395534071150019E-013 + 7.62800000000000 4.395534071150019E-013 + 7.62900000000000 4.395534071150019E-013 + 7.63000000000000 4.395534071150019E-013 + 7.63100000000000 4.395534071150019E-013 + 7.63200000000000 4.395534071150019E-013 + 7.63300000000000 4.395534071150019E-013 + 7.63400000000000 4.395534071150019E-013 + 7.63500000000000 4.395534071150019E-013 + 7.63600000000000 4.395534071150019E-013 + 7.63700000000000 4.395534071150019E-013 + 7.63800000000000 4.395534071150019E-013 + 7.63900000000000 4.395534071150019E-013 + 7.64000000000000 4.395534071150019E-013 + 7.64100000000000 4.395534071150019E-013 + 7.64200000000000 4.395534071150019E-013 + 7.64300000000000 4.395534071150019E-013 + 7.64400000000000 4.395534071150019E-013 + 7.64500000000000 4.395534071150019E-013 + 7.64600000000000 4.395534071150019E-013 + 7.64700000000000 4.395534071150019E-013 + 7.64800000000000 4.395534071150019E-013 + 7.64900000000000 4.395534071150019E-013 + 7.65000000000000 4.395534071150019E-013 + 7.65100000000000 4.395534071150019E-013 + 7.65200000000000 4.395534071150019E-013 + 7.65300000000000 4.395534071150019E-013 + 7.65400000000000 4.395534071150019E-013 + 7.65500000000000 4.395534071150019E-013 + 7.65600000000000 4.395534071150019E-013 + 7.65700000000000 4.395534071150019E-013 + 7.65800000000000 4.395534071150019E-013 + 7.65900000000000 4.395534071150019E-013 + 7.66000000000000 4.395534071150019E-013 + 7.66100000000000 4.395534071150019E-013 + 7.66200000000000 4.395534071150019E-013 + 7.66300000000000 4.395534071150019E-013 + 7.66400000000000 4.395534071150019E-013 + 7.66500000000000 4.395534071150019E-013 + 7.66600000000000 4.395534071150019E-013 + 7.66700000000000 4.395534071150019E-013 + 7.66800000000000 4.395534071150019E-013 + 7.66900000000000 4.395534071150019E-013 + 7.67000000000000 4.395534071150019E-013 + 7.67100000000000 4.395534071150019E-013 + 7.67200000000000 4.395534071150019E-013 + 7.67300000000000 4.395534071150019E-013 + 7.67400000000000 4.395534071150019E-013 + 7.67500000000000 4.395534071150019E-013 + 7.67600000000000 4.395534071150019E-013 + 7.67700000000000 4.395534071150019E-013 + 7.67800000000000 4.395534071150019E-013 + 7.67900000000000 4.395534071150019E-013 + 7.68000000000000 4.395534071150019E-013 + 7.68100000000000 4.395534071150019E-013 + 7.68200000000000 4.395534071150019E-013 + 7.68300000000000 4.395534071150019E-013 + 7.68400000000000 4.395534071150019E-013 + 7.68500000000000 4.395534071150019E-013 + 7.68600000000000 4.395534071150019E-013 + 7.68700000000000 4.395534071150019E-013 + 7.68800000000000 4.395534071150019E-013 + 7.68900000000000 4.395534071150019E-013 + 7.69000000000000 4.395534071150019E-013 + 7.69100000000000 4.395534071150019E-013 + 7.69200000000000 4.395534071150019E-013 + 7.69300000000000 4.395534071150019E-013 + 7.69400000000000 4.395534071150019E-013 + 7.69500000000000 4.395534071150019E-013 + 7.69600000000000 4.395534071150019E-013 + 7.69700000000000 4.395534071150019E-013 + 7.69800000000000 4.395534071150019E-013 + 7.69900000000000 4.395534071150019E-013 + 7.70000000000000 4.395534071150019E-013 + 7.70100000000000 4.395534071150019E-013 + 7.70200000000000 4.395534071150019E-013 + 7.70300000000000 4.395534071150019E-013 + 7.70400000000000 4.395534071150019E-013 + 7.70500000000000 4.395534071150019E-013 + 7.70600000000000 4.395534071150019E-013 + 7.70700000000000 4.395534071150019E-013 + 7.70800000000000 4.395534071150019E-013 + 7.70900000000000 4.395534071150019E-013 + 7.71000000000000 4.395534071150019E-013 + 7.71100000000000 4.395534071150019E-013 + 7.71200000000000 4.395534071150019E-013 + 7.71300000000000 4.395534071150019E-013 + 7.71400000000000 4.395534071150019E-013 + 7.71500000000000 4.395534071150019E-013 + 7.71600000000000 4.395534071150019E-013 + 7.71700000000000 4.395534071150019E-013 + 7.71800000000000 4.395534071150019E-013 + 7.71900000000000 4.395534071150019E-013 + 7.72000000000000 4.395534071150019E-013 + 7.72100000000000 4.395534071150019E-013 + 7.72200000000000 4.395534071150019E-013 + 7.72300000000000 4.395534071150019E-013 + 7.72400000000000 4.395534071150019E-013 + 7.72500000000000 4.395534071150019E-013 + 7.72600000000000 4.395534071150019E-013 + 7.72700000000000 4.395534071150019E-013 + 7.72800000000000 4.395534071150019E-013 + 7.72900000000000 4.395534071150019E-013 + 7.73000000000000 4.395534071150019E-013 + 7.73100000000000 4.395534071150019E-013 + 7.73200000000000 4.395534071150019E-013 + 7.73300000000000 4.395534071150019E-013 + 7.73400000000000 4.395534071150019E-013 + 7.73500000000000 4.395534071150019E-013 + 7.73600000000000 4.395534071150019E-013 + 7.73700000000000 4.395534071150019E-013 + 7.73800000000000 4.395534071150019E-013 + 7.73900000000000 4.395534071150019E-013 + 7.74000000000000 4.395534071150019E-013 + 7.74100000000000 4.395534071150019E-013 + 7.74200000000000 4.395534071150019E-013 + 7.74300000000000 4.395534071150019E-013 + 7.74400000000000 4.395534071150019E-013 + 7.74500000000000 4.395534071150019E-013 + 7.74600000000000 4.395534071150019E-013 + 7.74700000000000 4.395534071150019E-013 + 7.74800000000000 4.395534071150019E-013 + 7.74900000000000 4.395534071150019E-013 + 7.75000000000000 4.395534071150019E-013 + 7.75100000000000 4.395534071150019E-013 + 7.75200000000000 4.395534071150019E-013 + 7.75300000000000 4.395534071150019E-013 + 7.75400000000000 4.395534071150019E-013 + 7.75500000000000 4.395534071150019E-013 + 7.75600000000000 4.395534071150019E-013 + 7.75700000000000 4.395534071150019E-013 + 7.75800000000000 4.395534071150019E-013 + 7.75900000000000 4.395534071150019E-013 + 7.76000000000000 4.395534071150019E-013 + 7.76100000000000 4.395534071150019E-013 + 7.76200000000000 4.395534071150019E-013 + 7.76300000000000 4.395534071150019E-013 + 7.76400000000000 4.395534071150019E-013 + 7.76500000000000 4.395534071150019E-013 + 7.76600000000000 4.395534071150019E-013 + 7.76700000000000 4.395534071150019E-013 + 7.76800000000000 4.395534071150019E-013 + 7.76900000000000 4.395534071150019E-013 + 7.77000000000000 4.395534071150019E-013 + 7.77100000000000 4.395534071150019E-013 + 7.77200000000000 4.395534071150019E-013 + 7.77300000000000 4.395534071150019E-013 + 7.77400000000000 4.395534071150019E-013 + 7.77500000000000 4.395534071150019E-013 + 7.77600000000000 4.395534071150019E-013 + 7.77700000000000 4.395534071150019E-013 + 7.77800000000000 4.395534071150019E-013 + 7.77900000000000 4.395534071150019E-013 + 7.78000000000000 4.395534071150019E-013 + 7.78100000000000 4.395534071150019E-013 + 7.78200000000000 4.395534071150019E-013 + 7.78300000000000 4.395534071150019E-013 + 7.78400000000000 4.395534071150019E-013 + 7.78500000000000 4.395534071150019E-013 + 7.78600000000000 4.395534071150019E-013 + 7.78700000000000 4.395534071150019E-013 + 7.78800000000000 4.395534071150019E-013 + 7.78900000000000 4.395534071150019E-013 + 7.79000000000000 4.395534071150019E-013 + 7.79100000000000 4.395534071150019E-013 + 7.79200000000000 4.395534071150019E-013 + 7.79300000000000 4.395534071150019E-013 + 7.79400000000000 4.395534071150019E-013 + 7.79500000000000 4.395534071150019E-013 + 7.79600000000000 4.395534071150019E-013 + 7.79700000000000 4.395534071150019E-013 + 7.79800000000000 4.395534071150019E-013 + 7.79900000000000 4.395534071150019E-013 + 7.80000000000000 4.395534071150019E-013 + 7.80100000000000 4.395534071150019E-013 + 7.80200000000000 4.395534071150019E-013 + 7.80300000000000 4.395534071150019E-013 + 7.80400000000000 4.395534071150019E-013 + 7.80500000000000 4.395534071150019E-013 + 7.80600000000000 4.395534071150019E-013 + 7.80700000000000 4.395534071150019E-013 + 7.80800000000000 4.395534071150019E-013 + 7.80900000000000 4.395534071150019E-013 + 7.81000000000000 4.395534071150019E-013 + 7.81100000000000 4.395534071150019E-013 + 7.81200000000000 4.395534071150019E-013 + 7.81300000000000 4.395534071150019E-013 + 7.81400000000000 4.395534071150019E-013 + 7.81500000000000 4.395534071150019E-013 + 7.81600000000000 4.395534071150019E-013 + 7.81700000000000 4.395534071150019E-013 + 7.81800000000000 4.395534071150019E-013 + 7.81900000000000 4.395534071150019E-013 + 7.82000000000000 4.395534071150019E-013 + 7.82100000000000 4.395534071150019E-013 + 7.82200000000000 4.395534071150019E-013 + 7.82300000000000 4.395534071150019E-013 + 7.82400000000000 4.395534071150019E-013 + 7.82500000000000 4.395534071150019E-013 + 7.82600000000000 4.395534071150019E-013 + 7.82700000000000 4.395534071150019E-013 + 7.82800000000000 4.395534071150019E-013 + 7.82900000000000 4.395534071150019E-013 + 7.83000000000000 4.395534071150019E-013 + 7.83100000000000 4.395534071150019E-013 + 7.83200000000000 4.395534071150019E-013 + 7.83300000000000 4.395534071150019E-013 + 7.83400000000000 4.395534071150019E-013 + 7.83500000000000 4.395534071150019E-013 + 7.83600000000000 4.395534071150019E-013 + 7.83700000000000 4.395534071150019E-013 + 7.83800000000000 4.395534071150019E-013 + 7.83900000000000 4.395534071150019E-013 + 7.84000000000000 4.395534071150019E-013 + 7.84100000000000 4.395534071150019E-013 + 7.84200000000000 4.395534071150019E-013 + 7.84300000000000 4.395534071150019E-013 + 7.84400000000000 4.395534071150019E-013 + 7.84500000000000 4.395534071150019E-013 + 7.84600000000000 4.395534071150019E-013 + 7.84700000000000 4.395534071150019E-013 + 7.84800000000000 4.395534071150019E-013 + 7.84900000000000 4.395534071150019E-013 + 7.85000000000000 4.395534071150019E-013 + 7.85100000000000 4.395534071150019E-013 + 7.85200000000000 4.395534071150019E-013 + 7.85300000000000 4.395534071150019E-013 + 7.85400000000000 4.395534071150019E-013 + 7.85500000000000 4.395534071150019E-013 + 7.85600000000000 4.395534071150019E-013 + 7.85700000000000 4.395534071150019E-013 + 7.85800000000000 4.395534071150019E-013 + 7.85900000000000 4.395534071150019E-013 + 7.86000000000000 4.395534071150019E-013 + 7.86100000000000 4.395534071150019E-013 + 7.86200000000000 4.395534071150019E-013 + 7.86300000000000 4.395534071150019E-013 + 7.86400000000000 4.395534071150019E-013 + 7.86500000000000 4.395534071150019E-013 + 7.86600000000000 4.395534071150019E-013 + 7.86700000000000 4.395534071150019E-013 + 7.86800000000000 4.395534071150019E-013 + 7.86900000000000 4.395534071150019E-013 + 7.87000000000000 4.395534071150019E-013 + 7.87100000000000 4.395534071150019E-013 + 7.87200000000000 4.395534071150019E-013 + 7.87300000000000 4.395534071150019E-013 + 7.87400000000000 4.395534071150019E-013 + 7.87500000000000 4.395534071150019E-013 + 7.87600000000000 4.395534071150019E-013 + 7.87700000000000 4.395534071150019E-013 + 7.87800000000000 4.395534071150019E-013 + 7.87900000000000 4.395534071150019E-013 + 7.88000000000000 4.395534071150019E-013 + 7.88100000000000 4.395534071150019E-013 + 7.88200000000000 4.395534071150019E-013 + 7.88300000000000 4.395534071150019E-013 + 7.88400000000000 4.395534071150019E-013 + 7.88500000000000 4.395534071150019E-013 + 7.88600000000000 4.395534071150019E-013 + 7.88700000000000 4.395534071150019E-013 + 7.88800000000000 4.395534071150019E-013 + 7.88900000000000 4.395534071150019E-013 + 7.89000000000000 4.395534071150019E-013 + 7.89100000000000 4.395534071150019E-013 + 7.89200000000000 4.395534071150019E-013 + 7.89300000000000 4.395534071150019E-013 + 7.89400000000000 4.395534071150019E-013 + 7.89500000000000 4.395534071150019E-013 + 7.89600000000000 4.395534071150019E-013 + 7.89700000000000 4.395534071150019E-013 + 7.89800000000000 4.395534071150019E-013 + 7.89900000000000 4.395534071150019E-013 + 7.90000000000000 4.395534071150019E-013 + 7.90100000000000 4.395534071150019E-013 + 7.90200000000000 4.395534071150019E-013 + 7.90300000000000 4.395534071150019E-013 + 7.90400000000000 4.395534071150019E-013 + 7.90500000000000 4.395534071150019E-013 + 7.90600000000000 4.395534071150019E-013 + 7.90700000000000 4.395534071150019E-013 + 7.90800000000000 4.395534071150019E-013 + 7.90900000000000 4.395534071150019E-013 + 7.91000000000000 4.395534071150019E-013 + 7.91100000000000 4.395534071150019E-013 + 7.91200000000000 4.395534071150019E-013 + 7.91300000000000 4.395534071150019E-013 + 7.91400000000000 4.395534071150019E-013 + 7.91500000000000 4.395534071150019E-013 + 7.91600000000000 4.395534071150019E-013 + 7.91700000000000 4.395534071150019E-013 + 7.91800000000000 4.395534071150019E-013 + 7.91900000000000 4.395534071150019E-013 + 7.92000000000000 4.395534071150019E-013 + 7.92100000000000 4.395534071150019E-013 + 7.92200000000000 4.395534071150019E-013 + 7.92300000000000 4.395534071150019E-013 + 7.92400000000000 4.395534071150019E-013 + 7.92500000000000 4.395534071150019E-013 + 7.92600000000000 4.395534071150019E-013 + 7.92700000000000 4.395534071150019E-013 + 7.92800000000000 4.395534071150019E-013 + 7.92900000000000 4.395534071150019E-013 + 7.93000000000000 4.395534071150019E-013 + 7.93100000000000 4.395534071150019E-013 + 7.93200000000000 4.395534071150019E-013 + 7.93300000000000 4.395534071150019E-013 + 7.93400000000000 4.395534071150019E-013 + 7.93500000000000 4.395534071150019E-013 + 7.93600000000000 4.395534071150019E-013 + 7.93700000000000 4.395534071150019E-013 + 7.93800000000000 4.395534071150019E-013 + 7.93900000000000 4.395534071150019E-013 + 7.94000000000000 4.395534071150019E-013 + 7.94100000000000 4.395534071150019E-013 + 7.94200000000000 4.395534071150019E-013 + 7.94300000000000 4.395534071150019E-013 + 7.94400000000000 4.395534071150019E-013 + 7.94500000000000 4.395534071150019E-013 + 7.94600000000000 4.395534071150019E-013 + 7.94700000000000 4.395534071150019E-013 + 7.94800000000000 4.395534071150019E-013 + 7.94900000000000 4.395534071150019E-013 + 7.95000000000000 4.395534071150019E-013 + 7.95100000000000 4.395534071150019E-013 + 7.95200000000000 4.395534071150019E-013 + 7.95300000000000 4.395534071150019E-013 + 7.95400000000000 4.395534071150019E-013 + 7.95500000000000 4.395534071150019E-013 + 7.95600000000000 4.395534071150019E-013 + 7.95700000000000 4.395534071150019E-013 + 7.95800000000000 4.395534071150019E-013 + 7.95900000000000 4.395534071150019E-013 + 7.96000000000000 4.395534071150019E-013 + 7.96100000000000 4.395534071150019E-013 + 7.96200000000000 4.395534071150019E-013 + 7.96300000000000 4.395534071150019E-013 + 7.96400000000000 4.395534071150019E-013 + 7.96500000000000 4.395534071150019E-013 + 7.96600000000000 4.395534071150019E-013 + 7.96700000000000 4.395534071150019E-013 + 7.96800000000000 4.395534071150019E-013 + 7.96900000000000 4.395534071150019E-013 + 7.97000000000000 4.395534071150019E-013 + 7.97100000000000 4.395534071150019E-013 + 7.97200000000000 4.395534071150019E-013 + 7.97300000000000 4.395534071150019E-013 + 7.97400000000000 4.395534071150019E-013 + 7.97500000000000 4.395534071150019E-013 + 7.97600000000000 4.395534071150019E-013 + 7.97700000000000 4.395534071150019E-013 + 7.97800000000000 4.395534071150019E-013 + 7.97900000000000 4.395534071150019E-013 + 7.98000000000000 4.395534071150019E-013 + 7.98100000000000 4.395534071150019E-013 + 7.98200000000000 4.395534071150019E-013 + 7.98300000000000 4.395534071150019E-013 + 7.98400000000000 4.395534071150019E-013 + 7.98500000000000 4.395534071150019E-013 + 7.98600000000000 4.395534071150019E-013 + 7.98700000000000 4.395534071150019E-013 + 7.98800000000000 4.395534071150019E-013 + 7.98900000000000 4.395534071150019E-013 + 7.99000000000000 4.395534071150019E-013 + 7.99100000000000 4.395534071150019E-013 + 7.99200000000000 4.395534071150019E-013 + 7.99300000000000 4.395534071150019E-013 + 7.99400000000000 4.395534071150019E-013 + 7.99500000000000 4.395534071150019E-013 + 7.99600000000000 4.395534071150019E-013 + 7.99700000000000 4.395534071150019E-013 + 7.99800000000000 4.395534071150019E-013 + 7.99900000000000 4.395534071150019E-013 + 8.00000000000000 4.395534071150019E-013 + 8.00100000000000 4.395534071150019E-013 + 8.00200000000000 4.395534071150019E-013 + 8.00300000000000 4.395534071150019E-013 + 8.00400000000000 4.395534071150019E-013 + 8.00500000000000 4.395534071150019E-013 + 8.00600000000000 4.395534071150019E-013 + 8.00700000000000 4.395534071150019E-013 + 8.00800000000000 4.395534071150019E-013 + 8.00900000000000 4.395534071150019E-013 + 8.01000000000000 4.395534071150019E-013 + 8.01100000000000 4.395534071150019E-013 + 8.01200000000000 4.395534071150019E-013 + 8.01300000000000 4.395534071150019E-013 + 8.01400000000000 4.395534071150019E-013 + 8.01500000000000 4.395534071150019E-013 + 8.01600000000000 4.395534071150019E-013 + 8.01700000000000 4.395534071150019E-013 + 8.01800000000000 4.395534071150019E-013 + 8.01900000000000 4.395534071150019E-013 + 8.02000000000000 4.395534071150019E-013 + 8.02100000000000 4.395534071150019E-013 + 8.02200000000000 4.395534071150019E-013 + 8.02300000000000 4.395534071150019E-013 + 8.02400000000000 4.395534071150019E-013 + 8.02500000000000 4.395534071150019E-013 + 8.02600000000000 4.395534071150019E-013 + 8.02700000000000 4.395534071150019E-013 + 8.02800000000000 4.395534071150019E-013 + 8.02900000000000 4.395534071150019E-013 + 8.03000000000000 4.395534071150019E-013 + 8.03100000000000 4.395534071150019E-013 + 8.03200000000000 4.395534071150019E-013 + 8.03300000000000 4.395534071150019E-013 + 8.03400000000000 4.395534071150019E-013 + 8.03500000000000 4.395534071150019E-013 + 8.03600000000000 4.395534071150019E-013 + 8.03700000000000 4.395534071150019E-013 + 8.03800000000000 4.395534071150019E-013 + 8.03900000000000 4.395534071150019E-013 + 8.04000000000000 4.395534071150019E-013 + 8.04100000000000 4.395534071150019E-013 + 8.04200000000000 4.395534071150019E-013 + 8.04300000000000 4.395534071150019E-013 + 8.04400000000000 4.395534071150019E-013 + 8.04500000000000 4.395534071150019E-013 + 8.04600000000000 4.395534071150019E-013 + 8.04700000000000 4.395534071150019E-013 + 8.04800000000000 4.395534071150019E-013 + 8.04900000000000 4.395534071150019E-013 + 8.05000000000000 4.395534071150019E-013 + 8.05100000000000 4.395534071150019E-013 + 8.05200000000000 4.395534071150019E-013 + 8.05300000000000 4.395534071150019E-013 + 8.05400000000000 4.395534071150019E-013 + 8.05500000000000 4.395534071150019E-013 + 8.05600000000000 4.395534071150019E-013 + 8.05700000000000 4.395534071150019E-013 + 8.05800000000000 4.395534071150019E-013 + 8.05900000000000 4.395534071150019E-013 + 8.06000000000000 4.395534071150019E-013 + 8.06100000000000 4.395534071150019E-013 + 8.06200000000000 4.395534071150019E-013 + 8.06300000000000 4.395534071150019E-013 + 8.06400000000000 4.395534071150019E-013 + 8.06500000000000 4.395534071150019E-013 + 8.06600000000000 4.395534071150019E-013 + 8.06700000000000 4.395534071150019E-013 + 8.06800000000000 4.395534071150019E-013 + 8.06900000000000 4.395534071150019E-013 + 8.07000000000000 4.395534071150019E-013 + 8.07100000000000 4.395534071150019E-013 + 8.07200000000000 4.395534071150019E-013 + 8.07300000000000 4.395534071150019E-013 + 8.07400000000000 4.395534071150019E-013 + 8.07500000000000 4.395534071150019E-013 + 8.07600000000000 4.395534071150019E-013 + 8.07700000000000 4.395534071150019E-013 + 8.07800000000000 4.395534071150019E-013 + 8.07900000000000 4.395534071150019E-013 + 8.08000000000000 4.395534071150019E-013 + 8.08100000000000 4.395534071150019E-013 + 8.08200000000000 4.395534071150019E-013 + 8.08300000000000 4.395534071150019E-013 + 8.08400000000000 4.395534071150019E-013 + 8.08500000000000 4.395534071150019E-013 + 8.08600000000000 4.395534071150019E-013 + 8.08700000000000 4.395534071150019E-013 + 8.08800000000000 4.395534071150019E-013 + 8.08900000000000 4.395534071150019E-013 + 8.09000000000000 4.395534071150019E-013 + 8.09100000000000 4.395534071150019E-013 + 8.09200000000000 4.395534071150019E-013 + 8.09300000000000 4.395534071150019E-013 + 8.09400000000000 4.395534071150019E-013 + 8.09500000000000 4.395534071150019E-013 + 8.09600000000000 4.395534071150019E-013 + 8.09700000000000 4.395534071150019E-013 + 8.09800000000000 4.395534071150019E-013 + 8.09900000000000 4.395534071150019E-013 + 8.10000000000000 4.395534071150019E-013 + 8.10100000000000 4.395534071150019E-013 + 8.10200000000000 4.395534071150019E-013 + 8.10300000000000 4.395534071150019E-013 + 8.10400000000000 4.395534071150019E-013 + 8.10500000000000 4.395534071150019E-013 + 8.10600000000000 4.395534071150019E-013 + 8.10700000000000 4.395534071150019E-013 + 8.10800000000000 4.395534071150019E-013 + 8.10900000000000 4.395534071150019E-013 + 8.11000000000000 4.395534071150019E-013 + 8.11100000000000 4.395534071150019E-013 + 8.11200000000000 4.395534071150019E-013 + 8.11300000000000 4.395534071150019E-013 + 8.11400000000000 4.395534071150019E-013 + 8.11500000000000 4.395534071150019E-013 + 8.11600000000000 4.395534071150019E-013 + 8.11700000000000 4.395534071150019E-013 + 8.11800000000000 4.395534071150019E-013 + 8.11900000000000 4.395534071150019E-013 + 8.12000000000000 4.395534071150019E-013 + 8.12100000000000 4.395534071150019E-013 + 8.12200000000000 4.395534071150019E-013 + 8.12300000000000 4.395534071150019E-013 + 8.12400000000000 4.395534071150019E-013 + 8.12500000000000 4.395534071150019E-013 + 8.12600000000000 4.395534071150019E-013 + 8.12700000000000 4.395534071150019E-013 + 8.12800000000000 4.395534071150019E-013 + 8.12900000000000 4.395534071150019E-013 + 8.13000000000000 4.395534071150019E-013 + 8.13100000000000 4.395534071150019E-013 + 8.13200000000000 4.395534071150019E-013 + 8.13300000000000 4.395534071150019E-013 + 8.13400000000000 4.395534071150019E-013 + 8.13500000000000 4.395534071150019E-013 + 8.13600000000000 4.395534071150019E-013 + 8.13700000000000 4.395534071150019E-013 + 8.13800000000000 4.395534071150019E-013 + 8.13900000000000 4.395534071150019E-013 + 8.14000000000000 4.395534071150019E-013 + 8.14100000000000 4.395534071150019E-013 + 8.14200000000000 4.395534071150019E-013 + 8.14300000000000 4.395534071150019E-013 + 8.14400000000000 4.395534071150019E-013 + 8.14500000000000 4.395534071150019E-013 + 8.14600000000000 4.395534071150019E-013 + 8.14700000000000 4.395534071150019E-013 + 8.14800000000000 4.395534071150019E-013 + 8.14900000000000 4.395534071150019E-013 + 8.15000000000000 4.395534071150019E-013 + 8.15100000000000 4.395534071150019E-013 + 8.15200000000000 4.395534071150019E-013 + 8.15300000000000 4.395534071150019E-013 + 8.15400000000000 4.395534071150019E-013 + 8.15500000000000 4.395534071150019E-013 + 8.15600000000000 4.395534071150019E-013 + 8.15700000000000 4.395534071150019E-013 + 8.15800000000000 4.395534071150019E-013 + 8.15900000000000 4.395534071150019E-013 + 8.16000000000000 4.395534071150019E-013 + 8.16100000000000 4.395534071150019E-013 + 8.16200000000000 4.395534071150019E-013 + 8.16300000000000 4.395534071150019E-013 + 8.16400000000000 4.395534071150019E-013 + 8.16500000000000 4.395534071150019E-013 + 8.16600000000000 4.395534071150019E-013 + 8.16700000000000 4.395534071150019E-013 + 8.16800000000000 4.395534071150019E-013 + 8.16900000000000 4.395534071150019E-013 + 8.17000000000000 4.395534071150019E-013 + 8.17100000000000 4.395534071150019E-013 + 8.17200000000000 4.395534071150019E-013 + 8.17300000000000 4.395534071150019E-013 + 8.17400000000000 4.395534071150019E-013 + 8.17500000000000 4.395534071150019E-013 + 8.17600000000000 4.395534071150019E-013 + 8.17700000000000 4.395534071150019E-013 + 8.17800000000000 4.395534071150019E-013 + 8.17900000000000 4.395534071150019E-013 + 8.18000000000000 4.395534071150019E-013 + 8.18100000000000 4.395534071150019E-013 + 8.18200000000000 4.395534071150019E-013 + 8.18300000000000 4.395534071150019E-013 + 8.18400000000000 4.395534071150019E-013 + 8.18500000000000 4.395534071150019E-013 + 8.18600000000000 4.395534071150019E-013 + 8.18700000000000 4.395534071150019E-013 + 8.18800000000000 4.395534071150019E-013 + 8.18900000000000 4.395534071150019E-013 + 8.19000000000000 4.395534071150019E-013 + 8.19100000000000 4.395534071150019E-013 + 8.19200000000000 4.395534071150019E-013 + 8.19300000000000 4.395534071150019E-013 + 8.19400000000000 4.395534071150019E-013 + 8.19500000000000 4.395534071150019E-013 + 8.19600000000000 4.395534071150019E-013 + 8.19700000000000 4.395534071150019E-013 + 8.19800000000000 4.395534071150019E-013 + 8.19900000000000 4.395534071150019E-013 + 8.20000000000000 4.395534071150019E-013 + 8.20100000000000 4.395534071150019E-013 + 8.20200000000000 4.395534071150019E-013 + 8.20300000000000 4.395534071150019E-013 + 8.20400000000000 4.395534071150019E-013 + 8.20500000000000 4.395534071150019E-013 + 8.20600000000000 4.395534071150019E-013 + 8.20700000000000 4.395534071150019E-013 + 8.20800000000000 4.395534071150019E-013 + 8.20900000000000 4.395534071150019E-013 + 8.21000000000000 4.395534071150019E-013 + 8.21100000000000 4.395534071150019E-013 + 8.21200000000000 4.395534071150019E-013 + 8.21300000000000 4.395534071150019E-013 + 8.21400000000000 4.395534071150019E-013 + 8.21500000000000 4.395534071150019E-013 + 8.21600000000000 4.395534071150019E-013 + 8.21700000000000 4.395534071150019E-013 + 8.21800000000000 4.395534071150019E-013 + 8.21900000000000 4.395534071150019E-013 + 8.22000000000000 4.395534071150019E-013 + 8.22100000000000 4.395534071150019E-013 + 8.22200000000000 4.395534071150019E-013 + 8.22300000000000 4.395534071150019E-013 + 8.22400000000000 4.395534071150019E-013 + 8.22500000000000 4.395534071150019E-013 + 8.22600000000000 4.395534071150019E-013 + 8.22700000000000 4.395534071150019E-013 + 8.22800000000000 4.395534071150019E-013 + 8.22900000000000 4.395534071150019E-013 + 8.23000000000000 4.395534071150019E-013 + 8.23100000000000 4.395534071150019E-013 + 8.23200000000000 4.395534071150019E-013 + 8.23300000000000 4.395534071150019E-013 + 8.23400000000000 4.395534071150019E-013 + 8.23500000000000 4.395534071150019E-013 + 8.23600000000000 4.395534071150019E-013 + 8.23700000000000 4.395534071150019E-013 + 8.23800000000000 4.395534071150019E-013 + 8.23900000000000 4.395534071150019E-013 + 8.24000000000000 4.395534071150019E-013 + 8.24100000000000 4.395534071150019E-013 + 8.24200000000000 4.395534071150019E-013 + 8.24300000000000 4.395534071150019E-013 + 8.24400000000000 4.395534071150019E-013 + 8.24500000000000 4.395534071150019E-013 + 8.24600000000000 4.395534071150019E-013 + 8.24700000000000 4.395534071150019E-013 + 8.24800000000000 4.395534071150019E-013 + 8.24900000000000 4.395534071150019E-013 + 8.25000000000000 4.395534071150019E-013 + 8.25100000000000 4.395534071150019E-013 + 8.25200000000000 4.395534071150019E-013 + 8.25300000000000 4.395534071150019E-013 + 8.25400000000000 4.395534071150019E-013 + 8.25500000000000 4.395534071150019E-013 + 8.25600000000000 4.395534071150019E-013 + 8.25700000000000 4.395534071150019E-013 + 8.25800000000000 4.395534071150019E-013 + 8.25900000000000 4.395534071150019E-013 + 8.26000000000000 4.395534071150019E-013 + 8.26100000000000 4.395534071150019E-013 + 8.26200000000000 4.395534071150019E-013 + 8.26300000000000 4.395534071150019E-013 + 8.26400000000000 4.395534071150019E-013 + 8.26500000000000 4.395534071150019E-013 + 8.26600000000000 4.395534071150019E-013 + 8.26700000000000 4.395534071150019E-013 + 8.26800000000000 4.395534071150019E-013 + 8.26900000000000 4.395534071150019E-013 + 8.27000000000000 4.395534071150019E-013 + 8.27100000000000 4.395534071150019E-013 + 8.27200000000000 4.395534071150019E-013 + 8.27300000000000 4.395534071150019E-013 + 8.27400000000000 4.395534071150019E-013 + 8.27500000000000 4.395534071150019E-013 + 8.27600000000000 4.395534071150019E-013 + 8.27700000000000 4.395534071150019E-013 + 8.27800000000000 4.395534071150019E-013 + 8.27900000000000 4.395534071150019E-013 + 8.28000000000000 4.395534071150019E-013 + 8.28100000000000 4.395534071150019E-013 + 8.28200000000000 4.395534071150019E-013 + 8.28300000000000 4.395534071150019E-013 + 8.28400000000000 4.395534071150019E-013 + 8.28500000000000 4.395534071150019E-013 + 8.28600000000000 4.395534071150019E-013 + 8.28700000000000 4.395534071150019E-013 + 8.28800000000000 4.395534071150019E-013 + 8.28900000000000 4.395534071150019E-013 + 8.29000000000000 4.395534071150019E-013 + 8.29100000000000 4.395534071150019E-013 + 8.29200000000000 4.395534071150019E-013 + 8.29300000000000 4.395534071150019E-013 + 8.29400000000000 4.395534071150019E-013 + 8.29500000000000 4.395534071150019E-013 + 8.29600000000000 4.395534071150019E-013 + 8.29700000000000 4.395534071150019E-013 + 8.29800000000000 4.395534071150019E-013 + 8.29900000000000 4.395534071150019E-013 + 8.30000000000000 4.395534071150019E-013 + 8.30100000000000 4.395534071150019E-013 + 8.30200000000000 4.395534071150019E-013 + 8.30300000000000 4.395534071150019E-013 + 8.30400000000000 4.395534071150019E-013 + 8.30500000000000 4.395534071150019E-013 + 8.30600000000000 4.395534071150019E-013 + 8.30700000000000 4.395534071150019E-013 + 8.30800000000000 4.395534071150019E-013 + 8.30900000000000 4.395534071150019E-013 + 8.31000000000000 4.395534071150019E-013 + 8.31100000000000 4.395534071150019E-013 + 8.31200000000000 4.395534071150019E-013 + 8.31300000000000 4.395534071150019E-013 + 8.31400000000000 4.395534071150019E-013 + 8.31500000000000 4.395534071150019E-013 + 8.31600000000000 4.395534071150019E-013 + 8.31700000000000 4.395534071150019E-013 + 8.31800000000000 4.395534071150019E-013 + 8.31900000000000 4.395534071150019E-013 + 8.32000000000000 4.395534071150019E-013 + 8.32100000000000 4.395534071150019E-013 + 8.32200000000000 4.395534071150019E-013 + 8.32300000000000 4.395534071150019E-013 + 8.32400000000000 4.395534071150019E-013 + 8.32500000000000 4.395534071150019E-013 + 8.32600000000000 4.395534071150019E-013 + 8.32700000000000 4.395534071150019E-013 + 8.32800000000000 4.395534071150019E-013 + 8.32900000000000 4.395534071150019E-013 + 8.33000000000000 4.395534071150019E-013 + 8.33100000000000 4.395534071150019E-013 + 8.33200000000000 4.395534071150019E-013 + 8.33300000000000 4.395534071150019E-013 + 8.33400000000000 4.395534071150019E-013 + 8.33500000000000 4.395534071150019E-013 + 8.33600000000000 4.395534071150019E-013 + 8.33700000000000 4.395534071150019E-013 + 8.33800000000000 4.395534071150019E-013 + 8.33900000000000 4.395534071150019E-013 + 8.34000000000000 4.395534071150019E-013 + 8.34100000000000 4.395534071150019E-013 + 8.34200000000000 4.395534071150019E-013 + 8.34300000000000 4.395534071150019E-013 + 8.34400000000000 4.395534071150019E-013 + 8.34500000000000 4.395534071150019E-013 + 8.34600000000000 4.395534071150019E-013 + 8.34700000000000 4.395534071150019E-013 + 8.34800000000000 4.395534071150019E-013 + 8.34900000000000 4.395534071150019E-013 + 8.35000000000000 4.395534071150019E-013 + 8.35100000000000 4.395534071150019E-013 + 8.35200000000000 4.395534071150019E-013 + 8.35300000000000 4.395534071150019E-013 + 8.35400000000000 4.395534071150019E-013 + 8.35500000000000 4.395534071150019E-013 + 8.35600000000000 4.395534071150019E-013 + 8.35700000000000 4.395534071150019E-013 + 8.35800000000000 4.395534071150019E-013 + 8.35900000000000 4.395534071150019E-013 + 8.36000000000000 4.395534071150019E-013 + 8.36100000000000 4.395534071150019E-013 + 8.36200000000000 4.395534071150019E-013 + 8.36300000000000 4.395534071150019E-013 + 8.36400000000000 4.395534071150019E-013 + 8.36500000000000 4.395534071150019E-013 + 8.36600000000000 4.395534071150019E-013 + 8.36700000000000 4.395534071150019E-013 + 8.36800000000000 4.395534071150019E-013 + 8.36900000000000 4.395534071150019E-013 + 8.37000000000000 4.395534071150019E-013 + 8.37100000000000 4.395534071150019E-013 + 8.37200000000000 4.395534071150019E-013 + 8.37300000000000 4.395534071150019E-013 + 8.37400000000000 4.395534071150019E-013 + 8.37500000000000 4.395534071150019E-013 + 8.37600000000000 4.395534071150019E-013 + 8.37700000000000 4.395534071150019E-013 + 8.37800000000000 4.395534071150019E-013 + 8.37900000000000 4.395534071150019E-013 + 8.38000000000000 4.395534071150019E-013 + 8.38100000000000 4.395534071150019E-013 + 8.38200000000000 4.395534071150019E-013 + 8.38300000000000 4.395534071150019E-013 + 8.38400000000000 4.395534071150019E-013 + 8.38500000000000 4.395534071150019E-013 + 8.38600000000000 4.395534071150019E-013 + 8.38700000000000 4.395534071150019E-013 + 8.38800000000000 4.395534071150019E-013 + 8.38900000000000 4.395534071150019E-013 + 8.39000000000000 4.395534071150019E-013 + 8.39100000000000 4.395534071150019E-013 + 8.39200000000000 4.395534071150019E-013 + 8.39300000000000 4.395534071150019E-013 + 8.39400000000000 4.395534071150019E-013 + 8.39500000000000 4.395534071150019E-013 + 8.39600000000000 4.395534071150019E-013 + 8.39700000000000 4.395534071150019E-013 + 8.39800000000000 4.395534071150019E-013 + 8.39900000000000 4.395534071150019E-013 + 8.40000000000000 4.395534071150019E-013 + 8.40100000000000 4.395534071150019E-013 + 8.40200000000000 4.395534071150019E-013 + 8.40300000000000 4.395534071150019E-013 + 8.40400000000000 4.395534071150019E-013 + 8.40500000000000 4.395534071150019E-013 + 8.40600000000000 4.395534071150019E-013 + 8.40700000000000 4.395534071150019E-013 + 8.40800000000000 4.395534071150019E-013 + 8.40900000000000 4.395534071150019E-013 + 8.41000000000000 4.395534071150019E-013 + 8.41100000000000 4.395534071150019E-013 + 8.41200000000000 4.395534071150019E-013 + 8.41300000000000 4.395534071150019E-013 + 8.41400000000000 4.395534071150019E-013 + 8.41500000000000 4.395534071150019E-013 + 8.41600000000000 4.395534071150019E-013 + 8.41700000000000 4.395534071150019E-013 + 8.41800000000000 4.395534071150019E-013 + 8.41900000000000 4.395534071150019E-013 + 8.42000000000000 4.395534071150019E-013 + 8.42100000000000 4.395534071150019E-013 + 8.42200000000000 4.395534071150019E-013 + 8.42300000000000 4.395534071150019E-013 + 8.42400000000000 4.395534071150019E-013 + 8.42500000000000 4.395534071150019E-013 + 8.42600000000000 4.395534071150019E-013 + 8.42700000000000 4.395534071150019E-013 + 8.42800000000000 4.395534071150019E-013 + 8.42900000000000 4.395534071150019E-013 + 8.43000000000000 4.395534071150019E-013 + 8.43100000000000 4.395534071150019E-013 + 8.43200000000000 4.395534071150019E-013 + 8.43300000000000 4.395534071150019E-013 + 8.43400000000000 4.395534071150019E-013 + 8.43500000000000 4.395534071150019E-013 + 8.43600000000000 4.395534071150019E-013 + 8.43700000000000 4.395534071150019E-013 + 8.43800000000000 4.395534071150019E-013 + 8.43900000000000 4.395534071150019E-013 + 8.44000000000000 4.395534071150019E-013 + 8.44100000000000 4.395534071150019E-013 + 8.44200000000000 4.395534071150019E-013 + 8.44300000000000 4.395534071150019E-013 + 8.44400000000000 4.395534071150019E-013 + 8.44500000000000 4.395534071150019E-013 + 8.44600000000000 4.395534071150019E-013 + 8.44700000000000 4.395534071150019E-013 + 8.44800000000000 4.395534071150019E-013 + 8.44900000000000 4.395534071150019E-013 + 8.45000000000000 4.395534071150019E-013 + 8.45100000000000 4.395534071150019E-013 + 8.45200000000000 4.395534071150019E-013 + 8.45300000000000 4.395534071150019E-013 + 8.45400000000000 4.395534071150019E-013 + 8.45500000000000 4.395534071150019E-013 + 8.45600000000000 4.395534071150019E-013 + 8.45700000000000 4.395534071150019E-013 + 8.45800000000000 4.395534071150019E-013 + 8.45900000000000 4.395534071150019E-013 + 8.46000000000000 4.395534071150019E-013 + 8.46100000000000 4.395534071150019E-013 + 8.46200000000000 4.395534071150019E-013 + 8.46300000000000 4.395534071150019E-013 + 8.46400000000000 4.395534071150019E-013 + 8.46500000000000 4.395534071150019E-013 + 8.46600000000000 4.395534071150019E-013 + 8.46700000000000 4.395534071150019E-013 + 8.46800000000000 4.395534071150019E-013 + 8.46900000000000 4.395534071150019E-013 + 8.47000000000000 4.395534071150019E-013 + 8.47100000000000 4.395534071150019E-013 + 8.47200000000000 4.395534071150019E-013 + 8.47300000000000 4.395534071150019E-013 + 8.47400000000000 4.395534071150019E-013 + 8.47500000000000 4.395534071150019E-013 + 8.47600000000000 4.395534071150019E-013 + 8.47700000000000 4.395534071150019E-013 + 8.47800000000000 4.395534071150019E-013 + 8.47900000000000 4.395534071150019E-013 + 8.48000000000000 4.395534071150019E-013 + 8.48100000000000 4.395534071150019E-013 + 8.48200000000000 4.395534071150019E-013 + 8.48300000000000 4.395534071150019E-013 + 8.48400000000000 4.395534071150019E-013 + 8.48500000000000 4.395534071150019E-013 + 8.48600000000000 4.395534071150019E-013 + 8.48700000000000 4.395534071150019E-013 + 8.48800000000000 4.395534071150019E-013 + 8.48900000000000 4.395534071150019E-013 + 8.49000000000000 4.395534071150019E-013 + 8.49100000000000 4.395534071150019E-013 + 8.49200000000000 4.395534071150019E-013 + 8.49300000000000 4.395534071150019E-013 + 8.49400000000000 4.395534071150019E-013 + 8.49500000000000 4.395534071150019E-013 + 8.49600000000000 4.395534071150019E-013 + 8.49700000000000 4.395534071150019E-013 + 8.49800000000000 4.395534071150019E-013 + 8.49900000000000 4.395534071150019E-013 + 8.50000000000000 4.395534071150019E-013 + 8.50100000000000 4.395534071150019E-013 + 8.50200000000000 4.395534071150019E-013 + 8.50300000000000 4.395534071150019E-013 + 8.50400000000000 4.395534071150019E-013 + 8.50500000000000 4.395534071150019E-013 + 8.50600000000000 4.395534071150019E-013 + 8.50700000000000 4.395534071150019E-013 + 8.50800000000000 4.395534071150019E-013 + 8.50900000000000 4.395534071150019E-013 + 8.51000000000000 4.395534071150019E-013 + 8.51100000000000 4.395534071150019E-013 + 8.51200000000000 4.395534071150019E-013 + 8.51300000000000 4.395534071150019E-013 + 8.51400000000000 4.395534071150019E-013 + 8.51500000000000 4.395534071150019E-013 + 8.51600000000000 4.395534071150019E-013 + 8.51700000000000 4.395534071150019E-013 + 8.51800000000000 4.395534071150019E-013 + 8.51900000000000 4.395534071150019E-013 + 8.52000000000000 4.395534071150019E-013 + 8.52100000000000 4.395534071150019E-013 + 8.52200000000000 4.395534071150019E-013 + 8.52300000000000 4.395534071150019E-013 + 8.52400000000000 4.395534071150019E-013 + 8.52500000000000 4.395534071150019E-013 + 8.52600000000000 4.395534071150019E-013 + 8.52700000000000 4.395534071150019E-013 + 8.52800000000000 4.395534071150019E-013 + 8.52900000000000 4.395534071150019E-013 + 8.53000000000000 4.395534071150019E-013 + 8.53100000000000 4.395534071150019E-013 + 8.53200000000000 4.395534071150019E-013 + 8.53300000000000 4.395534071150019E-013 + 8.53400000000000 4.395534071150019E-013 + 8.53500000000000 4.395534071150019E-013 + 8.53600000000000 4.395534071150019E-013 + 8.53700000000000 4.395534071150019E-013 + 8.53800000000000 4.395534071150019E-013 + 8.53900000000000 4.395534071150019E-013 + 8.54000000000000 4.395534071150019E-013 + 8.54100000000000 4.395534071150019E-013 + 8.54200000000000 4.395534071150019E-013 + 8.54300000000000 4.395534071150019E-013 + 8.54400000000000 4.395534071150019E-013 + 8.54500000000000 4.395534071150019E-013 + 8.54600000000000 4.395534071150019E-013 + 8.54700000000000 4.395534071150019E-013 + 8.54800000000000 4.395534071150019E-013 + 8.54900000000000 4.395534071150019E-013 + 8.55000000000000 4.395534071150019E-013 + 8.55100000000000 4.395534071150019E-013 + 8.55200000000000 4.395534071150019E-013 + 8.55300000000000 4.395534071150019E-013 + 8.55400000000000 4.395534071150019E-013 + 8.55500000000000 4.395534071150019E-013 + 8.55600000000000 4.395534071150019E-013 + 8.55700000000000 4.395534071150019E-013 + 8.55800000000000 4.395534071150019E-013 + 8.55900000000000 4.395534071150019E-013 + 8.56000000000000 4.395534071150019E-013 + 8.56100000000000 4.395534071150019E-013 + 8.56200000000000 4.395534071150019E-013 + 8.56300000000000 4.395534071150019E-013 + 8.56400000000000 4.395534071150019E-013 + 8.56500000000000 4.395534071150019E-013 + 8.56600000000000 4.395534071150019E-013 + 8.56700000000000 4.395534071150019E-013 + 8.56800000000000 4.395534071150019E-013 + 8.56900000000000 4.395534071150019E-013 + 8.57000000000000 4.395534071150019E-013 + 8.57100000000000 4.395534071150019E-013 + 8.57200000000000 4.395534071150019E-013 + 8.57300000000000 4.395534071150019E-013 + 8.57400000000000 4.395534071150019E-013 + 8.57500000000000 4.395534071150019E-013 + 8.57600000000000 4.395534071150019E-013 + 8.57700000000000 4.395534071150019E-013 + 8.57800000000000 4.395534071150019E-013 + 8.57900000000000 4.395534071150019E-013 + 8.58000000000000 4.395534071150019E-013 + 8.58100000000000 4.395534071150019E-013 + 8.58200000000000 4.395534071150019E-013 + 8.58300000000000 4.395534071150019E-013 + 8.58400000000000 4.395534071150019E-013 + 8.58500000000000 4.395534071150019E-013 + 8.58600000000000 4.395534071150019E-013 + 8.58700000000000 4.395534071150019E-013 + 8.58800000000000 4.395534071150019E-013 + 8.58900000000000 4.395534071150019E-013 + 8.59000000000000 4.395534071150019E-013 + 8.59100000000000 4.395534071150019E-013 + 8.59200000000000 4.395534071150019E-013 + 8.59300000000000 4.395534071150019E-013 + 8.59400000000000 4.395534071150019E-013 + 8.59500000000000 4.395534071150019E-013 + 8.59600000000000 4.395534071150019E-013 + 8.59700000000000 4.395534071150019E-013 + 8.59800000000000 4.395534071150019E-013 + 8.59900000000000 4.395534071150019E-013 + 8.60000000000000 4.395534071150019E-013 + 8.60100000000000 4.395534071150019E-013 + 8.60200000000000 4.395534071150019E-013 + 8.60300000000000 4.395534071150019E-013 + 8.60400000000000 4.395534071150019E-013 + 8.60500000000000 4.395534071150019E-013 + 8.60600000000000 4.395534071150019E-013 + 8.60700000000000 4.395534071150019E-013 + 8.60800000000000 4.395534071150019E-013 + 8.60900000000000 4.395534071150019E-013 + 8.61000000000000 4.395534071150019E-013 + 8.61100000000000 4.395534071150019E-013 + 8.61200000000000 4.395534071150019E-013 + 8.61300000000000 4.395534071150019E-013 + 8.61400000000000 4.395534071150019E-013 + 8.61500000000000 4.395534071150019E-013 + 8.61600000000000 4.395534071150019E-013 + 8.61700000000000 4.395534071150019E-013 + 8.61800000000000 4.395534071150019E-013 + 8.61900000000000 4.395534071150019E-013 + 8.62000000000000 4.395534071150019E-013 + 8.62100000000000 4.395534071150019E-013 + 8.62200000000000 4.395534071150019E-013 + 8.62300000000000 4.395534071150019E-013 + 8.62400000000000 4.395534071150019E-013 + 8.62500000000000 4.395534071150019E-013 + 8.62600000000000 4.395534071150019E-013 + 8.62700000000000 4.395534071150019E-013 + 8.62800000000000 4.395534071150019E-013 + 8.62900000000000 4.395534071150019E-013 + 8.63000000000000 4.395534071150019E-013 + 8.63100000000000 4.395534071150019E-013 + 8.63200000000000 4.395534071150019E-013 + 8.63300000000000 4.395534071150019E-013 + 8.63400000000000 4.395534071150019E-013 + 8.63500000000000 4.395534071150019E-013 + 8.63600000000000 4.395534071150019E-013 + 8.63700000000000 4.395534071150019E-013 + 8.63800000000000 4.395534071150019E-013 + 8.63900000000000 4.395534071150019E-013 + 8.64000000000000 4.395534071150019E-013 + 8.64100000000000 4.395534071150019E-013 + 8.64200000000000 4.395534071150019E-013 + 8.64300000000000 4.395534071150019E-013 + 8.64400000000000 4.395534071150019E-013 + 8.64500000000000 4.395534071150019E-013 + 8.64600000000000 4.395534071150019E-013 + 8.64700000000000 4.395534071150019E-013 + 8.64800000000000 4.395534071150019E-013 + 8.64900000000000 4.395534071150019E-013 + 8.65000000000000 4.395534071150019E-013 + 8.65100000000000 4.395534071150019E-013 + 8.65200000000000 4.395534071150019E-013 + 8.65300000000000 4.395534071150019E-013 + 8.65400000000000 4.395534071150019E-013 + 8.65500000000000 4.395534071150019E-013 + 8.65600000000000 4.395534071150019E-013 + 8.65700000000000 4.395534071150019E-013 + 8.65800000000000 4.395534071150019E-013 + 8.65900000000000 4.395534071150019E-013 + 8.66000000000000 4.395534071150019E-013 + 8.66100000000000 4.395534071150019E-013 + 8.66200000000000 4.395534071150019E-013 + 8.66300000000000 4.395534071150019E-013 + 8.66400000000000 4.395534071150019E-013 + 8.66500000000000 4.395534071150019E-013 + 8.66600000000000 4.395534071150019E-013 + 8.66700000000000 4.395534071150019E-013 + 8.66800000000000 4.395534071150019E-013 + 8.66900000000000 4.395534071150019E-013 + 8.67000000000000 4.395534071150019E-013 + 8.67100000000000 4.395534071150019E-013 + 8.67200000000000 4.395534071150019E-013 + 8.67300000000000 4.395534071150019E-013 + 8.67400000000000 4.395534071150019E-013 + 8.67500000000000 4.395534071150019E-013 + 8.67600000000000 4.395534071150019E-013 + 8.67700000000000 4.395534071150019E-013 + 8.67800000000000 4.395534071150019E-013 + 8.67900000000000 4.395534071150019E-013 + 8.68000000000000 4.395534071150019E-013 + 8.68100000000000 4.395534071150019E-013 + 8.68200000000000 4.395534071150019E-013 + 8.68300000000000 4.395534071150019E-013 + 8.68400000000000 4.395534071150019E-013 + 8.68500000000000 4.395534071150019E-013 + 8.68600000000000 4.395534071150019E-013 + 8.68700000000000 4.395534071150019E-013 + 8.68800000000000 4.395534071150019E-013 + 8.68900000000000 4.395534071150019E-013 + 8.69000000000000 4.395534071150019E-013 + 8.69100000000000 4.395534071150019E-013 + 8.69200000000000 4.395534071150019E-013 + 8.69300000000000 4.395534071150019E-013 + 8.69400000000000 4.395534071150019E-013 + 8.69500000000000 4.395534071150019E-013 + 8.69600000000000 4.395534071150019E-013 + 8.69700000000000 4.395534071150019E-013 + 8.69800000000000 4.395534071150019E-013 + 8.69900000000000 4.395534071150019E-013 + 8.70000000000000 4.395534071150019E-013 + 8.70100000000000 4.395534071150019E-013 + 8.70200000000000 4.395534071150019E-013 + 8.70300000000000 4.395534071150019E-013 + 8.70400000000000 4.395534071150019E-013 + 8.70500000000000 4.395534071150019E-013 + 8.70600000000000 4.395534071150019E-013 + 8.70700000000000 4.395534071150019E-013 + 8.70800000000000 4.395534071150019E-013 + 8.70900000000000 4.395534071150019E-013 + 8.71000000000000 4.395534071150019E-013 + 8.71100000000000 4.395534071150019E-013 + 8.71200000000000 4.395534071150019E-013 + 8.71300000000000 4.395534071150019E-013 + 8.71400000000000 4.395534071150019E-013 + 8.71500000000000 4.395534071150019E-013 + 8.71600000000000 4.395534071150019E-013 + 8.71700000000000 4.395534071150019E-013 + 8.71800000000000 4.395534071150019E-013 + 8.71900000000000 4.395534071150019E-013 + 8.72000000000000 4.395534071150019E-013 + 8.72100000000000 4.395534071150019E-013 + 8.72200000000000 4.395534071150019E-013 + 8.72300000000000 4.395534071150019E-013 + 8.72400000000000 4.395534071150019E-013 + 8.72500000000000 4.395534071150019E-013 + 8.72600000000000 4.395534071150019E-013 + 8.72700000000000 4.395534071150019E-013 + 8.72800000000000 4.395534071150019E-013 + 8.72900000000000 4.395534071150019E-013 + 8.73000000000000 4.395534071150019E-013 + 8.73100000000000 4.395534071150019E-013 + 8.73200000000000 4.395534071150019E-013 + 8.73300000000000 4.395534071150019E-013 + 8.73400000000000 4.395534071150019E-013 + 8.73500000000000 4.395534071150019E-013 + 8.73600000000000 4.395534071150019E-013 + 8.73700000000000 4.395534071150019E-013 + 8.73800000000000 4.395534071150019E-013 + 8.73900000000000 4.395534071150019E-013 + 8.74000000000000 4.395534071150019E-013 + 8.74100000000000 4.395534071150019E-013 + 8.74200000000000 4.395534071150019E-013 + 8.74300000000000 4.395534071150019E-013 + 8.74400000000000 4.395534071150019E-013 + 8.74500000000000 4.395534071150019E-013 + 8.74600000000000 4.395534071150019E-013 + 8.74700000000000 4.395534071150019E-013 + 8.74800000000000 4.395534071150019E-013 + 8.74900000000000 4.395534071150019E-013 + 8.75000000000000 4.395534071150019E-013 + 8.75100000000000 4.395534071150019E-013 + 8.75200000000000 4.395534071150019E-013 + 8.75300000000000 4.395534071150019E-013 + 8.75400000000000 4.395534071150019E-013 + 8.75500000000000 4.395534071150019E-013 + 8.75600000000000 4.395534071150019E-013 + 8.75700000000000 4.395534071150019E-013 + 8.75800000000000 4.395534071150019E-013 + 8.75900000000000 4.395534071150019E-013 + 8.76000000000000 4.395534071150019E-013 + 8.76100000000000 4.395534071150019E-013 + 8.76200000000000 4.395534071150019E-013 + 8.76300000000000 4.395534071150019E-013 + 8.76400000000000 4.395534071150019E-013 + 8.76500000000000 4.395534071150019E-013 + 8.76600000000000 4.395534071150019E-013 + 8.76700000000000 4.395534071150019E-013 + 8.76800000000000 4.395534071150019E-013 + 8.76900000000000 4.395534071150019E-013 + 8.77000000000000 4.395534071150019E-013 + 8.77100000000000 4.395534071150019E-013 + 8.77200000000000 4.395534071150019E-013 + 8.77300000000000 4.395534071150019E-013 + 8.77400000000000 4.395534071150019E-013 + 8.77500000000000 4.395534071150019E-013 + 8.77600000000000 4.395534071150019E-013 + 8.77700000000000 4.395534071150019E-013 + 8.77800000000000 4.395534071150019E-013 + 8.77900000000000 4.395534071150019E-013 + 8.78000000000000 4.395534071150019E-013 + 8.78100000000000 4.395534071150019E-013 + 8.78200000000000 4.395534071150019E-013 + 8.78300000000000 4.395534071150019E-013 + 8.78400000000000 4.395534071150019E-013 + 8.78500000000000 4.395534071150019E-013 + 8.78600000000000 4.395534071150019E-013 + 8.78700000000000 4.395534071150019E-013 + 8.78800000000000 4.395534071150019E-013 + 8.78900000000000 4.395534071150019E-013 + 8.79000000000000 4.395534071150019E-013 + 8.79100000000000 4.395534071150019E-013 + 8.79200000000000 4.395534071150019E-013 + 8.79300000000000 4.395534071150019E-013 + 8.79400000000000 4.395534071150019E-013 + 8.79500000000000 4.395534071150019E-013 + 8.79600000000000 4.395534071150019E-013 + 8.79700000000000 4.395534071150019E-013 + 8.79800000000000 4.395534071150019E-013 + 8.79900000000000 4.395534071150019E-013 + 8.80000000000000 4.395534071150019E-013 + 8.80100000000000 4.395534071150019E-013 + 8.80200000000000 4.395534071150019E-013 + 8.80300000000000 4.395534071150019E-013 + 8.80400000000000 4.395534071150019E-013 + 8.80500000000000 4.395534071150019E-013 + 8.80600000000000 4.395534071150019E-013 + 8.80700000000000 4.395534071150019E-013 + 8.80800000000000 4.395534071150019E-013 + 8.80900000000000 4.395534071150019E-013 + 8.81000000000000 4.395534071150019E-013 + 8.81100000000000 4.395534071150019E-013 + 8.81200000000000 4.395534071150019E-013 + 8.81300000000000 4.395534071150019E-013 + 8.81400000000000 4.395534071150019E-013 + 8.81500000000000 4.395534071150019E-013 + 8.81600000000000 4.395534071150019E-013 + 8.81700000000000 4.395534071150019E-013 + 8.81800000000000 4.395534071150019E-013 + 8.81900000000000 4.395534071150019E-013 + 8.82000000000000 4.395534071150019E-013 + 8.82100000000000 4.395534071150019E-013 + 8.82200000000000 4.395534071150019E-013 + 8.82300000000000 4.395534071150019E-013 + 8.82400000000000 4.395534071150019E-013 + 8.82500000000000 4.395534071150019E-013 + 8.82600000000000 4.395534071150019E-013 + 8.82700000000000 4.395534071150019E-013 + 8.82800000000000 4.395534071150019E-013 + 8.82900000000000 4.395534071150019E-013 + 8.83000000000000 4.395534071150019E-013 + 8.83100000000000 4.395534071150019E-013 + 8.83200000000000 4.395534071150019E-013 + 8.83300000000000 4.395534071150019E-013 + 8.83400000000000 4.395534071150019E-013 + 8.83500000000000 4.395534071150019E-013 + 8.83600000000000 4.395534071150019E-013 + 8.83700000000000 4.395534071150019E-013 + 8.83800000000000 4.395534071150019E-013 + 8.83900000000000 4.395534071150019E-013 + 8.84000000000000 4.395534071150019E-013 + 8.84100000000000 4.395534071150019E-013 + 8.84200000000000 4.395534071150019E-013 + 8.84300000000000 4.395534071150019E-013 + 8.84400000000000 4.395534071150019E-013 + 8.84500000000000 4.395534071150019E-013 + 8.84600000000000 4.395534071150019E-013 + 8.84700000000000 4.395534071150019E-013 + 8.84800000000000 4.395534071150019E-013 + 8.84900000000000 4.395534071150019E-013 + 8.85000000000000 4.395534071150019E-013 + 8.85100000000000 4.395534071150019E-013 + 8.85200000000000 4.395534071150019E-013 + 8.85300000000000 4.395534071150019E-013 + 8.85400000000000 4.395534071150019E-013 + 8.85500000000000 4.395534071150019E-013 + 8.85600000000000 4.395534071150019E-013 + 8.85700000000000 4.395534071150019E-013 + 8.85800000000000 4.395534071150019E-013 + 8.85900000000000 4.395534071150019E-013 + 8.86000000000000 4.395534071150019E-013 + 8.86100000000000 4.395534071150019E-013 + 8.86200000000000 4.395534071150019E-013 + 8.86300000000000 4.395534071150019E-013 + 8.86400000000000 4.395534071150019E-013 + 8.86500000000000 4.395534071150019E-013 + 8.86600000000000 4.395534071150019E-013 + 8.86700000000000 4.395534071150019E-013 + 8.86800000000000 4.395534071150019E-013 + 8.86900000000000 4.395534071150019E-013 + 8.87000000000000 4.395534071150019E-013 + 8.87100000000000 4.395534071150019E-013 + 8.87200000000000 4.395534071150019E-013 + 8.87300000000000 4.395534071150019E-013 + 8.87400000000000 4.395534071150019E-013 + 8.87500000000000 4.395534071150019E-013 + 8.87600000000000 4.395534071150019E-013 + 8.87700000000000 4.395534071150019E-013 + 8.87800000000000 4.395534071150019E-013 + 8.87900000000000 4.395534071150019E-013 + 8.88000000000000 4.395534071150019E-013 + 8.88100000000000 4.395534071150019E-013 + 8.88200000000000 4.395534071150019E-013 + 8.88300000000000 4.395534071150019E-013 + 8.88400000000000 4.395534071150019E-013 + 8.88500000000000 4.395534071150019E-013 + 8.88600000000000 4.395534071150019E-013 + 8.88700000000000 4.395534071150019E-013 + 8.88800000000000 4.395534071150019E-013 + 8.88900000000000 4.395534071150019E-013 + 8.89000000000000 4.395534071150019E-013 + 8.89100000000000 4.395534071150019E-013 + 8.89200000000000 4.395534071150019E-013 + 8.89300000000000 4.395534071150019E-013 + 8.89400000000000 4.395534071150019E-013 + 8.89500000000000 4.395534071150019E-013 + 8.89600000000000 4.395534071150019E-013 + 8.89700000000000 4.395534071150019E-013 + 8.89800000000000 4.395534071150019E-013 + 8.89900000000000 4.395534071150019E-013 + 8.90000000000000 4.395534071150019E-013 + 8.90100000000000 4.395534071150019E-013 + 8.90200000000000 4.395534071150019E-013 + 8.90300000000000 4.395534071150019E-013 + 8.90400000000000 4.395534071150019E-013 + 8.90500000000000 4.395534071150019E-013 + 8.90600000000000 4.395534071150019E-013 + 8.90700000000000 4.395534071150019E-013 + 8.90800000000000 4.395534071150019E-013 + 8.90900000000000 4.395534071150019E-013 + 8.91000000000000 4.395534071150019E-013 + 8.91100000000000 4.395534071150019E-013 + 8.91200000000000 4.395534071150019E-013 + 8.91300000000000 4.395534071150019E-013 + 8.91400000000000 4.395534071150019E-013 + 8.91500000000000 4.395534071150019E-013 + 8.91600000000000 4.395534071150019E-013 + 8.91700000000000 4.395534071150019E-013 + 8.91800000000000 4.395534071150019E-013 + 8.91900000000000 4.395534071150019E-013 + 8.92000000000000 4.395534071150019E-013 + 8.92100000000000 4.395534071150019E-013 + 8.92200000000000 4.395534071150019E-013 + 8.92300000000000 4.395534071150019E-013 + 8.92400000000000 4.395534071150019E-013 + 8.92500000000000 4.395534071150019E-013 + 8.92600000000000 4.395534071150019E-013 + 8.92700000000000 4.395534071150019E-013 + 8.92800000000000 4.395534071150019E-013 + 8.92900000000000 4.395534071150019E-013 + 8.93000000000000 4.395534071150019E-013 + 8.93100000000000 4.395534071150019E-013 + 8.93200000000000 4.395534071150019E-013 + 8.93300000000000 4.395534071150019E-013 + 8.93400000000000 4.395534071150019E-013 + 8.93500000000000 4.395534071150019E-013 + 8.93600000000000 4.395534071150019E-013 + 8.93700000000000 4.395534071150019E-013 + 8.93800000000000 4.395534071150019E-013 + 8.93900000000000 4.395534071150019E-013 + 8.94000000000000 4.395534071150019E-013 + 8.94100000000000 4.395534071150019E-013 + 8.94200000000000 4.395534071150019E-013 + 8.94300000000000 4.395534071150019E-013 + 8.94400000000000 4.395534071150019E-013 + 8.94500000000000 4.395534071150019E-013 + 8.94600000000000 4.395534071150019E-013 + 8.94700000000000 4.395534071150019E-013 + 8.94800000000000 4.395534071150019E-013 + 8.94900000000000 4.395534071150019E-013 + 8.95000000000000 4.395534071150019E-013 + 8.95100000000000 4.395534071150019E-013 + 8.95200000000000 4.395534071150019E-013 + 8.95300000000000 4.395534071150019E-013 + 8.95400000000000 4.395534071150019E-013 + 8.95500000000000 4.395534071150019E-013 + 8.95600000000000 4.395534071150019E-013 + 8.95700000000000 4.395534071150019E-013 + 8.95800000000000 4.395534071150019E-013 + 8.95900000000000 4.395534071150019E-013 + 8.96000000000000 4.395534071150019E-013 + 8.96100000000000 4.395534071150019E-013 + 8.96200000000000 4.395534071150019E-013 + 8.96300000000000 4.395534071150019E-013 + 8.96400000000000 4.395534071150019E-013 + 8.96500000000000 4.395534071150019E-013 + 8.96600000000000 4.395534071150019E-013 + 8.96700000000000 4.395534071150019E-013 + 8.96800000000000 4.395534071150019E-013 + 8.96900000000000 4.395534071150019E-013 + 8.97000000000000 4.395534071150019E-013 + 8.97100000000000 4.395534071150019E-013 + 8.97200000000000 4.395534071150019E-013 + 8.97300000000000 4.395534071150019E-013 + 8.97400000000000 4.395534071150019E-013 + 8.97500000000000 4.395534071150019E-013 + 8.97600000000000 4.395534071150019E-013 + 8.97700000000000 4.395534071150019E-013 + 8.97800000000000 4.395534071150019E-013 + 8.97900000000000 4.395534071150019E-013 + 8.98000000000000 4.395534071150019E-013 + 8.98100000000000 4.395534071150019E-013 + 8.98200000000000 4.395534071150019E-013 + 8.98300000000000 4.395534071150019E-013 + 8.98400000000000 4.395534071150019E-013 + 8.98500000000000 4.395534071150019E-013 + 8.98600000000000 4.395534071150019E-013 + 8.98700000000000 4.395534071150019E-013 + 8.98800000000000 4.395534071150019E-013 + 8.98900000000000 4.395534071150019E-013 + 8.99000000000000 4.395534071150019E-013 + 8.99100000000000 4.395534071150019E-013 + 8.99200000000000 4.395534071150019E-013 + 8.99300000000000 4.395534071150019E-013 + 8.99400000000000 4.395534071150019E-013 + 8.99500000000000 4.395534071150019E-013 + 8.99600000000000 4.395534071150019E-013 + 8.99700000000000 4.395534071150019E-013 + 8.99800000000000 4.395534071150019E-013 + 8.99900000000000 4.395534071150019E-013 + 9.00000000000000 4.395534071150019E-013 + 9.00100000000000 4.395534071150019E-013 + 9.00200000000000 4.395534071150019E-013 + 9.00300000000000 4.395534071150019E-013 + 9.00400000000000 4.395534071150019E-013 + 9.00500000000000 4.395534071150019E-013 + 9.00600000000000 4.395534071150019E-013 + 9.00700000000000 4.395534071150019E-013 + 9.00800000000000 4.395534071150019E-013 + 9.00900000000000 4.395534071150019E-013 + 9.01000000000000 4.395534071150019E-013 + 9.01100000000000 4.395534071150019E-013 + 9.01200000000000 4.395534071150019E-013 + 9.01300000000000 4.395534071150019E-013 + 9.01400000000000 4.395534071150019E-013 + 9.01500000000000 4.395534071150019E-013 + 9.01600000000000 4.395534071150019E-013 + 9.01700000000000 4.395534071150019E-013 + 9.01800000000000 4.395534071150019E-013 + 9.01900000000000 4.395534071150019E-013 + 9.02000000000000 4.395534071150019E-013 + 9.02100000000000 4.395534071150019E-013 + 9.02200000000000 4.395534071150019E-013 + 9.02300000000000 4.395534071150019E-013 + 9.02400000000000 4.395534071150019E-013 + 9.02500000000000 4.395534071150019E-013 + 9.02600000000000 4.395534071150019E-013 + 9.02700000000000 4.395534071150019E-013 + 9.02800000000000 4.395534071150019E-013 + 9.02900000000000 4.395534071150019E-013 + 9.03000000000000 4.395534071150019E-013 + 9.03100000000000 4.395534071150019E-013 + 9.03200000000000 4.395534071150019E-013 + 9.03300000000000 4.395534071150019E-013 + 9.03400000000000 4.395534071150019E-013 + 9.03500000000000 4.395534071150019E-013 + 9.03600000000000 4.395534071150019E-013 + 9.03700000000000 4.395534071150019E-013 + 9.03800000000000 4.395534071150019E-013 + 9.03900000000000 4.395534071150019E-013 + 9.04000000000000 4.395534071150019E-013 + 9.04100000000000 4.395534071150019E-013 + 9.04200000000000 4.395534071150019E-013 + 9.04300000000000 4.395534071150019E-013 + 9.04400000000000 4.395534071150019E-013 + 9.04500000000000 4.395534071150019E-013 + 9.04600000000000 4.395534071150019E-013 + 9.04700000000000 4.395534071150019E-013 + 9.04800000000000 4.395534071150019E-013 + 9.04900000000000 4.395534071150019E-013 + 9.05000000000000 4.395534071150019E-013 + 9.05100000000000 4.395534071150019E-013 + 9.05200000000000 4.395534071150019E-013 + 9.05300000000000 4.395534071150019E-013 + 9.05400000000000 4.395534071150019E-013 + 9.05500000000000 4.395534071150019E-013 + 9.05600000000000 4.395534071150019E-013 + 9.05700000000000 4.395534071150019E-013 + 9.05800000000000 4.395534071150019E-013 + 9.05900000000000 4.395534071150019E-013 + 9.06000000000000 4.395534071150019E-013 + 9.06100000000000 4.395534071150019E-013 + 9.06200000000000 4.395534071150019E-013 + 9.06300000000000 4.395534071150019E-013 + 9.06400000000000 4.395534071150019E-013 + 9.06500000000000 4.395534071150019E-013 + 9.06600000000000 4.395534071150019E-013 + 9.06700000000000 4.395534071150019E-013 + 9.06800000000000 4.395534071150019E-013 + 9.06900000000000 4.395534071150019E-013 + 9.07000000000000 4.395534071150019E-013 + 9.07100000000000 4.395534071150019E-013 + 9.07200000000000 4.395534071150019E-013 + 9.07300000000000 4.395534071150019E-013 + 9.07400000000000 4.395534071150019E-013 + 9.07500000000000 4.395534071150019E-013 + 9.07600000000000 4.395534071150019E-013 + 9.07700000000000 4.395534071150019E-013 + 9.07800000000000 4.395534071150019E-013 + 9.07900000000000 4.395534071150019E-013 + 9.08000000000000 4.395534071150019E-013 + 9.08100000000000 4.395534071150019E-013 + 9.08200000000000 4.395534071150019E-013 + 9.08300000000000 4.395534071150019E-013 + 9.08400000000000 4.395534071150019E-013 + 9.08500000000000 4.395534071150019E-013 + 9.08600000000000 4.395534071150019E-013 + 9.08700000000000 4.395534071150019E-013 + 9.08800000000000 4.395534071150019E-013 + 9.08900000000000 4.395534071150019E-013 + 9.09000000000000 4.395534071150019E-013 + 9.09100000000000 4.395534071150019E-013 + 9.09200000000000 4.395534071150019E-013 + 9.09300000000000 4.395534071150019E-013 + 9.09400000000000 4.395534071150019E-013 + 9.09500000000000 4.395534071150019E-013 + 9.09600000000000 4.395534071150019E-013 + 9.09700000000000 4.395534071150019E-013 + 9.09800000000000 4.395534071150019E-013 + 9.09900000000000 4.395534071150019E-013 + 9.10000000000000 4.395534071150019E-013 + 9.10100000000000 4.395534071150019E-013 + 9.10200000000000 4.395534071150019E-013 + 9.10300000000000 4.395534071150019E-013 + 9.10400000000000 4.395534071150019E-013 + 9.10500000000000 4.395534071150019E-013 + 9.10600000000000 4.395534071150019E-013 + 9.10700000000000 4.395534071150019E-013 + 9.10800000000000 4.395534071150019E-013 + 9.10900000000000 4.395534071150019E-013 + 9.11000000000000 4.395534071150019E-013 + 9.11100000000000 4.395534071150019E-013 + 9.11200000000000 4.395534071150019E-013 + 9.11300000000000 4.395534071150019E-013 + 9.11400000000000 4.395534071150019E-013 + 9.11500000000000 4.395534071150019E-013 + 9.11600000000000 4.395534071150019E-013 + 9.11700000000000 4.395534071150019E-013 + 9.11800000000000 4.395534071150019E-013 + 9.11900000000000 4.395534071150019E-013 + 9.12000000000000 4.395534071150019E-013 + 9.12100000000000 4.395534071150019E-013 + 9.12200000000000 4.395534071150019E-013 + 9.12300000000000 4.395534071150019E-013 + 9.12400000000000 4.395534071150019E-013 + 9.12500000000000 4.395534071150019E-013 + 9.12600000000000 4.395534071150019E-013 + 9.12700000000000 4.395534071150019E-013 + 9.12800000000000 4.395534071150019E-013 + 9.12900000000000 4.395534071150019E-013 + 9.13000000000000 4.395534071150019E-013 + 9.13100000000000 4.395534071150019E-013 + 9.13200000000000 4.395534071150019E-013 + 9.13300000000000 4.395534071150019E-013 + 9.13400000000000 4.395534071150019E-013 + 9.13500000000000 4.395534071150019E-013 + 9.13600000000000 4.395534071150019E-013 + 9.13700000000000 4.395534071150019E-013 + 9.13800000000000 4.395534071150019E-013 + 9.13900000000000 4.395534071150019E-013 + 9.14000000000000 4.395534071150019E-013 + 9.14100000000000 4.395534071150019E-013 + 9.14200000000000 4.395534071150019E-013 + 9.14300000000000 4.395534071150019E-013 + 9.14400000000000 4.395534071150019E-013 + 9.14500000000000 4.395534071150019E-013 + 9.14600000000000 4.395534071150019E-013 + 9.14700000000000 4.395534071150019E-013 + 9.14800000000000 4.395534071150019E-013 + 9.14900000000000 4.395534071150019E-013 + 9.15000000000000 4.395534071150019E-013 + 9.15100000000000 4.395534071150019E-013 + 9.15200000000000 4.395534071150019E-013 + 9.15300000000000 4.395534071150019E-013 + 9.15400000000000 4.395534071150019E-013 + 9.15500000000000 4.395534071150019E-013 + 9.15600000000000 4.395534071150019E-013 + 9.15700000000000 4.395534071150019E-013 + 9.15800000000000 4.395534071150019E-013 + 9.15900000000000 4.395534071150019E-013 + 9.16000000000000 4.395534071150019E-013 + 9.16100000000000 4.395534071150019E-013 + 9.16200000000000 4.395534071150019E-013 + 9.16300000000000 4.395534071150019E-013 + 9.16400000000000 4.395534071150019E-013 + 9.16500000000000 4.395534071150019E-013 + 9.16600000000000 4.395534071150019E-013 + 9.16700000000000 4.395534071150019E-013 + 9.16800000000000 4.395534071150019E-013 + 9.16900000000000 4.395534071150019E-013 + 9.17000000000000 4.395534071150019E-013 + 9.17100000000000 4.395534071150019E-013 + 9.17200000000000 4.395534071150019E-013 + 9.17300000000000 4.395534071150019E-013 + 9.17400000000000 4.395534071150019E-013 + 9.17500000000000 4.395534071150019E-013 + 9.17600000000000 4.395534071150019E-013 + 9.17700000000000 4.395534071150019E-013 + 9.17800000000000 4.395534071150019E-013 + 9.17900000000000 4.395534071150019E-013 + 9.18000000000000 4.395534071150019E-013 + 9.18100000000000 4.395534071150019E-013 + 9.18200000000000 4.395534071150019E-013 + 9.18300000000000 4.395534071150019E-013 + 9.18400000000000 4.395534071150019E-013 + 9.18500000000000 4.395534071150019E-013 + 9.18600000000000 4.395534071150019E-013 + 9.18700000000000 4.395534071150019E-013 + 9.18800000000000 4.395534071150019E-013 + 9.18900000000000 4.395534071150019E-013 + 9.19000000000000 4.395534071150019E-013 + 9.19100000000000 4.395534071150019E-013 + 9.19200000000000 4.395534071150019E-013 + 9.19300000000000 4.395534071150019E-013 + 9.19400000000000 4.395534071150019E-013 + 9.19500000000000 4.395534071150019E-013 + 9.19600000000000 4.395534071150019E-013 + 9.19700000000000 4.395534071150019E-013 + 9.19800000000000 4.395534071150019E-013 + 9.19900000000000 4.395534071150019E-013 + 9.20000000000000 4.395534071150019E-013 + 9.20100000000000 4.395534071150019E-013 + 9.20200000000000 4.395534071150019E-013 + 9.20300000000000 4.395534071150019E-013 + 9.20400000000000 4.395534071150019E-013 + 9.20500000000000 4.395534071150019E-013 + 9.20600000000000 4.395534071150019E-013 + 9.20700000000000 4.395534071150019E-013 + 9.20800000000000 4.395534071150019E-013 + 9.20900000000000 4.395534071150019E-013 + 9.21000000000000 4.395534071150019E-013 + 9.21100000000000 4.395534071150019E-013 + 9.21200000000000 4.395534071150019E-013 + 9.21300000000000 4.395534071150019E-013 + 9.21400000000000 4.395534071150019E-013 + 9.21500000000000 4.395534071150019E-013 + 9.21600000000000 4.395534071150019E-013 + 9.21700000000000 4.395534071150019E-013 + 9.21800000000000 4.395534071150019E-013 + 9.21900000000000 4.395534071150019E-013 + 9.22000000000000 4.395534071150019E-013 + 9.22100000000000 4.395534071150019E-013 + 9.22200000000000 4.395534071150019E-013 + 9.22300000000000 4.395534071150019E-013 + 9.22400000000000 4.395534071150019E-013 + 9.22500000000000 4.395534071150019E-013 + 9.22600000000000 4.395534071150019E-013 + 9.22700000000000 4.395534071150019E-013 + 9.22800000000000 4.395534071150019E-013 + 9.22900000000000 4.395534071150019E-013 + 9.23000000000000 4.395534071150019E-013 + 9.23100000000000 4.395534071150019E-013 + 9.23200000000000 4.395534071150019E-013 + 9.23300000000000 4.395534071150019E-013 + 9.23400000000000 4.395534071150019E-013 + 9.23500000000000 4.395534071150019E-013 + 9.23600000000000 4.395534071150019E-013 + 9.23700000000000 4.395534071150019E-013 + 9.23800000000000 4.395534071150019E-013 + 9.23900000000000 4.395534071150019E-013 + 9.24000000000000 4.395534071150019E-013 + 9.24100000000000 4.395534071150019E-013 + 9.24200000000000 4.395534071150019E-013 + 9.24300000000000 4.395534071150019E-013 + 9.24400000000000 4.395534071150019E-013 + 9.24500000000000 4.395534071150019E-013 + 9.24600000000000 4.395534071150019E-013 + 9.24700000000000 4.395534071150019E-013 + 9.24800000000000 4.395534071150019E-013 + 9.24900000000000 4.395534071150019E-013 + 9.25000000000000 4.395534071150019E-013 + 9.25100000000000 4.395534071150019E-013 + 9.25200000000000 4.395534071150019E-013 + 9.25300000000000 4.395534071150019E-013 + 9.25400000000000 4.395534071150019E-013 + 9.25500000000000 4.395534071150019E-013 + 9.25600000000000 4.395534071150019E-013 + 9.25700000000000 4.395534071150019E-013 + 9.25800000000000 4.395534071150019E-013 + 9.25900000000000 4.395534071150019E-013 + 9.26000000000000 4.395534071150019E-013 + 9.26100000000000 4.395534071150019E-013 + 9.26200000000000 4.395534071150019E-013 + 9.26300000000000 4.395534071150019E-013 + 9.26400000000000 4.395534071150019E-013 + 9.26500000000000 4.395534071150019E-013 + 9.26600000000000 4.395534071150019E-013 + 9.26700000000000 4.395534071150019E-013 + 9.26800000000000 4.395534071150019E-013 + 9.26900000000000 4.395534071150019E-013 + 9.27000000000000 4.395534071150019E-013 + 9.27100000000000 4.395534071150019E-013 + 9.27200000000000 4.395534071150019E-013 + 9.27300000000000 4.395534071150019E-013 + 9.27400000000000 4.395534071150019E-013 + 9.27500000000000 4.395534071150019E-013 + 9.27600000000000 4.395534071150019E-013 + 9.27700000000000 4.395534071150019E-013 + 9.27800000000000 4.395534071150019E-013 + 9.27900000000000 4.395534071150019E-013 + 9.28000000000000 4.395534071150019E-013 + 9.28100000000000 4.395534071150019E-013 + 9.28200000000000 4.395534071150019E-013 + 9.28300000000000 4.395534071150019E-013 + 9.28400000000000 4.395534071150019E-013 + 9.28500000000000 4.395534071150019E-013 + 9.28600000000000 4.395534071150019E-013 + 9.28700000000000 4.395534071150019E-013 + 9.28800000000000 4.395534071150019E-013 + 9.28900000000000 4.395534071150019E-013 + 9.29000000000000 4.395534071150019E-013 + 9.29100000000000 4.395534071150019E-013 + 9.29200000000000 4.395534071150019E-013 + 9.29300000000000 4.395534071150019E-013 + 9.29400000000000 4.395534071150019E-013 + 9.29500000000000 4.395534071150019E-013 + 9.29600000000000 4.395534071150019E-013 + 9.29700000000000 4.395534071150019E-013 + 9.29800000000000 4.395534071150019E-013 + 9.29900000000000 4.395534071150019E-013 + 9.30000000000000 4.395534071150019E-013 + 9.30100000000000 4.395534071150019E-013 + 9.30200000000000 4.395534071150019E-013 + 9.30300000000000 4.395534071150019E-013 + 9.30400000000000 4.395534071150019E-013 + 9.30500000000000 4.395534071150019E-013 + 9.30600000000000 4.395534071150019E-013 + 9.30700000000000 4.395534071150019E-013 + 9.30800000000000 4.395534071150019E-013 + 9.30900000000000 4.395534071150019E-013 + 9.31000000000000 4.395534071150019E-013 + 9.31100000000000 4.395534071150019E-013 + 9.31200000000000 4.395534071150019E-013 + 9.31300000000000 4.395534071150019E-013 + 9.31400000000000 4.395534071150019E-013 + 9.31500000000000 4.395534071150019E-013 + 9.31600000000000 4.395534071150019E-013 + 9.31700000000000 4.395534071150019E-013 + 9.31800000000000 4.395534071150019E-013 + 9.31900000000000 4.395534071150019E-013 + 9.32000000000000 4.395534071150019E-013 + 9.32100000000000 4.395534071150019E-013 + 9.32200000000000 4.395534071150019E-013 + 9.32300000000000 4.395534071150019E-013 + 9.32400000000000 4.395534071150019E-013 + 9.32500000000000 4.395534071150019E-013 + 9.32600000000000 4.395534071150019E-013 + 9.32700000000000 4.395534071150019E-013 + 9.32800000000000 4.395534071150019E-013 + 9.32900000000000 4.395534071150019E-013 + 9.33000000000000 4.395534071150019E-013 + 9.33100000000000 4.395534071150019E-013 + 9.33200000000000 4.395534071150019E-013 + 9.33300000000000 4.395534071150019E-013 + 9.33400000000000 4.395534071150019E-013 + 9.33500000000000 4.395534071150019E-013 + 9.33600000000000 4.395534071150019E-013 + 9.33700000000000 4.395534071150019E-013 + 9.33800000000000 4.395534071150019E-013 + 9.33900000000000 4.395534071150019E-013 + 9.34000000000000 4.395534071150019E-013 + 9.34100000000000 4.395534071150019E-013 + 9.34200000000000 4.395534071150019E-013 + 9.34300000000000 4.395534071150019E-013 + 9.34400000000000 4.395534071150019E-013 + 9.34500000000000 4.395534071150019E-013 + 9.34600000000000 4.395534071150019E-013 + 9.34700000000000 4.395534071150019E-013 + 9.34800000000000 4.395534071150019E-013 + 9.34900000000000 4.395534071150019E-013 + 9.35000000000000 4.395534071150019E-013 + 9.35100000000000 4.395534071150019E-013 + 9.35200000000000 4.395534071150019E-013 + 9.35300000000000 4.395534071150019E-013 + 9.35400000000000 4.395534071150019E-013 + 9.35500000000000 4.395534071150019E-013 + 9.35600000000000 4.395534071150019E-013 + 9.35700000000000 4.395534071150019E-013 + 9.35800000000000 4.395534071150019E-013 + 9.35900000000000 4.395534071150019E-013 + 9.36000000000000 4.395534071150019E-013 + 9.36100000000000 4.395534071150019E-013 + 9.36200000000000 4.395534071150019E-013 + 9.36300000000000 4.395534071150019E-013 + 9.36400000000000 4.395534071150019E-013 + 9.36500000000000 4.395534071150019E-013 + 9.36600000000000 4.395534071150019E-013 + 9.36700000000000 4.395534071150019E-013 + 9.36800000000000 4.395534071150019E-013 + 9.36900000000000 4.395534071150019E-013 + 9.37000000000000 4.395534071150019E-013 + 9.37100000000000 4.395534071150019E-013 + 9.37200000000000 4.395534071150019E-013 + 9.37300000000000 4.395534071150019E-013 + 9.37400000000000 4.395534071150019E-013 + 9.37500000000000 4.395534071150019E-013 + 9.37600000000000 4.395534071150019E-013 + 9.37700000000000 4.395534071150019E-013 + 9.37800000000000 4.395534071150019E-013 + 9.37900000000000 4.395534071150019E-013 + 9.38000000000000 4.395534071150019E-013 + 9.38100000000000 4.395534071150019E-013 + 9.38200000000000 4.395534071150019E-013 + 9.38300000000000 4.395534071150019E-013 + 9.38400000000000 4.395534071150019E-013 + 9.38500000000000 4.395534071150019E-013 + 9.38600000000000 4.395534071150019E-013 + 9.38700000000000 4.395534071150019E-013 + 9.38800000000000 4.395534071150019E-013 + 9.38900000000000 4.395534071150019E-013 + 9.39000000000000 4.395534071150019E-013 + 9.39100000000000 4.395534071150019E-013 + 9.39200000000000 4.395534071150019E-013 + 9.39300000000000 4.395534071150019E-013 + 9.39400000000000 4.395534071150019E-013 + 9.39500000000000 4.395534071150019E-013 + 9.39600000000000 4.395534071150019E-013 + 9.39700000000000 4.395534071150019E-013 + 9.39800000000000 4.395534071150019E-013 + 9.39900000000000 4.395534071150019E-013 + 9.40000000000000 4.395534071150019E-013 + 9.40100000000000 4.395534071150019E-013 + 9.40200000000000 4.395534071150019E-013 + 9.40300000000000 4.395534071150019E-013 + 9.40400000000000 4.395534071150019E-013 + 9.40500000000000 4.395534071150019E-013 + 9.40600000000000 4.395534071150019E-013 + 9.40700000000000 4.395534071150019E-013 + 9.40800000000000 4.395534071150019E-013 + 9.40900000000000 4.395534071150019E-013 + 9.41000000000000 4.395534071150019E-013 + 9.41100000000000 4.395534071150019E-013 + 9.41200000000000 4.395534071150019E-013 + 9.41300000000000 4.395534071150019E-013 + 9.41400000000000 4.395534071150019E-013 + 9.41500000000000 4.395534071150019E-013 + 9.41600000000000 4.395534071150019E-013 + 9.41700000000000 4.395534071150019E-013 + 9.41800000000000 4.395534071150019E-013 + 9.41900000000000 4.395534071150019E-013 + 9.42000000000000 4.395534071150019E-013 + 9.42100000000000 4.395534071150019E-013 + 9.42200000000000 4.395534071150019E-013 + 9.42300000000000 4.395534071150019E-013 + 9.42400000000000 4.395534071150019E-013 + 9.42500000000000 4.395534071150019E-013 + 9.42600000000000 4.395534071150019E-013 + 9.42700000000000 4.395534071150019E-013 + 9.42800000000000 4.395534071150019E-013 + 9.42900000000000 4.395534071150019E-013 + 9.43000000000000 4.395534071150019E-013 + 9.43100000000000 4.395534071150019E-013 + 9.43200000000000 4.395534071150019E-013 + 9.43300000000000 4.395534071150019E-013 + 9.43400000000000 4.395534071150019E-013 + 9.43500000000000 4.395534071150019E-013 + 9.43600000000000 4.395534071150019E-013 + 9.43700000000000 4.395534071150019E-013 + 9.43800000000000 4.395534071150019E-013 + 9.43900000000000 4.395534071150019E-013 + 9.44000000000000 4.395534071150019E-013 + 9.44100000000000 4.395534071150019E-013 + 9.44200000000000 4.395534071150019E-013 + 9.44300000000000 4.395534071150019E-013 + 9.44400000000000 4.395534071150019E-013 + 9.44500000000000 4.395534071150019E-013 + 9.44600000000000 4.395534071150019E-013 + 9.44700000000000 4.395534071150019E-013 + 9.44800000000000 4.395534071150019E-013 + 9.44900000000000 4.395534071150019E-013 + 9.45000000000000 4.395534071150019E-013 + 9.45100000000000 4.395534071150019E-013 + 9.45200000000000 4.395534071150019E-013 + 9.45300000000000 4.395534071150019E-013 + 9.45400000000000 4.395534071150019E-013 + 9.45500000000000 4.395534071150019E-013 + 9.45600000000000 4.395534071150019E-013 + 9.45700000000000 4.395534071150019E-013 + 9.45800000000000 4.395534071150019E-013 + 9.45900000000000 4.395534071150019E-013 + 9.46000000000000 4.395534071150019E-013 + 9.46100000000000 4.395534071150019E-013 + 9.46200000000000 4.395534071150019E-013 + 9.46300000000000 4.395534071150019E-013 + 9.46400000000000 4.395534071150019E-013 + 9.46500000000000 4.395534071150019E-013 + 9.46600000000000 4.395534071150019E-013 + 9.46700000000000 4.395534071150019E-013 + 9.46800000000000 4.395534071150019E-013 + 9.46900000000000 4.395534071150019E-013 + 9.47000000000000 4.395534071150019E-013 + 9.47100000000000 4.395534071150019E-013 + 9.47200000000000 4.395534071150019E-013 + 9.47300000000000 4.395534071150019E-013 + 9.47400000000000 4.395534071150019E-013 + 9.47500000000000 4.395534071150019E-013 + 9.47600000000000 4.395534071150019E-013 + 9.47700000000000 4.395534071150019E-013 + 9.47800000000000 4.395534071150019E-013 + 9.47900000000000 4.395534071150019E-013 + 9.48000000000000 4.395534071150019E-013 + 9.48100000000000 4.395534071150019E-013 + 9.48200000000000 4.395534071150019E-013 + 9.48300000000000 4.395534071150019E-013 + 9.48400000000000 4.395534071150019E-013 + 9.48500000000000 4.395534071150019E-013 + 9.48600000000000 4.395534071150019E-013 + 9.48700000000000 4.395534071150019E-013 + 9.48800000000000 4.395534071150019E-013 + 9.48900000000000 4.395534071150019E-013 + 9.49000000000000 4.395534071150019E-013 + 9.49100000000000 4.395534071150019E-013 + 9.49200000000000 4.395534071150019E-013 + 9.49300000000000 4.395534071150019E-013 + 9.49400000000000 4.395534071150019E-013 + 9.49500000000000 4.395534071150019E-013 + 9.49600000000000 4.395534071150019E-013 + 9.49700000000000 4.395534071150019E-013 + 9.49800000000000 4.395534071150019E-013 + 9.49900000000000 4.395534071150019E-013 + 9.50000000000000 4.395534071150019E-013 + 9.50100000000000 4.395534071150019E-013 + 9.50200000000000 4.395534071150019E-013 + 9.50300000000000 4.395534071150019E-013 + 9.50400000000000 4.395534071150019E-013 + 9.50500000000000 4.395534071150019E-013 + 9.50600000000000 4.395534071150019E-013 + 9.50700000000000 4.395534071150019E-013 + 9.50800000000000 4.395534071150019E-013 + 9.50900000000000 4.395534071150019E-013 + 9.51000000000000 4.395534071150019E-013 + 9.51100000000000 4.395534071150019E-013 + 9.51200000000000 4.395534071150019E-013 + 9.51300000000000 4.395534071150019E-013 + 9.51400000000000 4.395534071150019E-013 + 9.51500000000000 4.395534071150019E-013 + 9.51600000000000 4.395534071150019E-013 + 9.51700000000000 4.395534071150019E-013 + 9.51800000000000 4.395534071150019E-013 + 9.51900000000000 4.395534071150019E-013 + 9.52000000000000 4.395534071150019E-013 + 9.52100000000000 4.395534071150019E-013 + 9.52200000000000 4.395534071150019E-013 + 9.52300000000000 4.395534071150019E-013 + 9.52400000000000 4.395534071150019E-013 + 9.52500000000000 4.395534071150019E-013 + 9.52600000000000 4.395534071150019E-013 + 9.52700000000000 4.395534071150019E-013 + 9.52800000000000 4.395534071150019E-013 + 9.52900000000000 4.395534071150019E-013 + 9.53000000000000 4.395534071150019E-013 + 9.53100000000000 4.395534071150019E-013 + 9.53200000000000 4.395534071150019E-013 + 9.53300000000000 4.395534071150019E-013 + 9.53400000000000 4.395534071150019E-013 + 9.53500000000000 4.395534071150019E-013 + 9.53600000000000 4.395534071150019E-013 + 9.53700000000000 4.395534071150019E-013 + 9.53800000000000 4.395534071150019E-013 + 9.53900000000000 4.395534071150019E-013 + 9.54000000000000 4.395534071150019E-013 + 9.54100000000000 4.395534071150019E-013 + 9.54200000000000 4.395534071150019E-013 + 9.54300000000000 4.395534071150019E-013 + 9.54400000000000 4.395534071150019E-013 + 9.54500000000000 4.395534071150019E-013 + 9.54600000000000 4.395534071150019E-013 + 9.54700000000000 4.395534071150019E-013 + 9.54800000000000 4.395534071150019E-013 + 9.54900000000000 4.395534071150019E-013 + 9.55000000000000 4.395534071150019E-013 + 9.55100000000000 4.395534071150019E-013 + 9.55200000000000 4.395534071150019E-013 + 9.55300000000000 4.395534071150019E-013 + 9.55400000000000 4.395534071150019E-013 + 9.55500000000000 4.395534071150019E-013 + 9.55600000000000 4.395534071150019E-013 + 9.55700000000000 4.395534071150019E-013 + 9.55800000000000 4.395534071150019E-013 + 9.55900000000000 4.395534071150019E-013 + 9.56000000000000 4.395534071150019E-013 + 9.56100000000000 4.395534071150019E-013 + 9.56200000000000 4.395534071150019E-013 + 9.56300000000000 4.395534071150019E-013 + 9.56400000000000 4.395534071150019E-013 + 9.56500000000000 4.395534071150019E-013 + 9.56600000000000 4.395534071150019E-013 + 9.56700000000000 4.395534071150019E-013 + 9.56800000000000 4.395534071150019E-013 + 9.56900000000000 4.395534071150019E-013 + 9.57000000000000 4.395534071150019E-013 + 9.57100000000000 4.395534071150019E-013 + 9.57200000000000 4.395534071150019E-013 + 9.57300000000000 4.395534071150019E-013 + 9.57400000000000 4.395534071150019E-013 + 9.57500000000000 4.395534071150019E-013 + 9.57600000000000 4.395534071150019E-013 + 9.57700000000000 4.395534071150019E-013 + 9.57800000000000 4.395534071150019E-013 + 9.57900000000000 4.395534071150019E-013 + 9.58000000000000 4.395534071150019E-013 + 9.58100000000000 4.395534071150019E-013 + 9.58200000000000 4.395534071150019E-013 + 9.58300000000000 4.395534071150019E-013 + 9.58400000000000 4.395534071150019E-013 + 9.58500000000000 4.395534071150019E-013 + 9.58600000000000 4.395534071150019E-013 + 9.58700000000000 4.395534071150019E-013 + 9.58800000000000 4.395534071150019E-013 + 9.58900000000000 4.395534071150019E-013 + 9.59000000000000 4.395534071150019E-013 + 9.59100000000000 4.395534071150019E-013 + 9.59200000000000 4.395534071150019E-013 + 9.59300000000000 4.395534071150019E-013 + 9.59400000000000 4.395534071150019E-013 + 9.59500000000000 4.395534071150019E-013 + 9.59600000000000 4.395534071150019E-013 + 9.59700000000000 4.395534071150019E-013 + 9.59800000000000 4.395534071150019E-013 + 9.59900000000000 4.395534071150019E-013 + 9.60000000000000 4.395534071150019E-013 + 9.60100000000000 4.395534071150019E-013 + 9.60200000000000 4.395534071150019E-013 + 9.60300000000000 4.395534071150019E-013 + 9.60400000000000 4.395534071150019E-013 + 9.60500000000000 4.395534071150019E-013 + 9.60600000000000 4.395534071150019E-013 + 9.60700000000000 4.395534071150019E-013 + 9.60800000000000 4.395534071150019E-013 + 9.60900000000000 4.395534071150019E-013 + 9.61000000000000 4.395534071150019E-013 + 9.61100000000000 4.395534071150019E-013 + 9.61200000000000 4.395534071150019E-013 + 9.61300000000000 4.395534071150019E-013 + 9.61400000000000 4.395534071150019E-013 + 9.61500000000000 4.395534071150019E-013 + 9.61600000000000 4.395534071150019E-013 + 9.61700000000000 4.395534071150019E-013 + 9.61800000000000 4.395534071150019E-013 + 9.61900000000000 4.395534071150019E-013 + 9.62000000000000 4.395534071150019E-013 + 9.62100000000000 4.395534071150019E-013 + 9.62200000000000 4.395534071150019E-013 + 9.62300000000000 4.395534071150019E-013 + 9.62400000000000 4.395534071150019E-013 + 9.62500000000000 4.395534071150019E-013 + 9.62600000000000 4.395534071150019E-013 + 9.62700000000000 4.395534071150019E-013 + 9.62800000000000 4.395534071150019E-013 + 9.62900000000000 4.395534071150019E-013 + 9.63000000000000 4.395534071150019E-013 + 9.63100000000000 4.395534071150019E-013 + 9.63200000000000 4.395534071150019E-013 + 9.63300000000000 4.395534071150019E-013 + 9.63400000000000 4.395534071150019E-013 + 9.63500000000000 4.395534071150019E-013 + 9.63600000000000 4.395534071150019E-013 + 9.63700000000000 4.395534071150019E-013 + 9.63800000000000 4.395534071150019E-013 + 9.63900000000000 4.395534071150019E-013 + 9.64000000000000 4.395534071150019E-013 + 9.64100000000000 4.395534071150019E-013 + 9.64200000000000 4.395534071150019E-013 + 9.64300000000000 4.395534071150019E-013 + 9.64400000000000 4.395534071150019E-013 + 9.64500000000000 4.395534071150019E-013 + 9.64600000000000 4.395534071150019E-013 + 9.64700000000000 4.395534071150019E-013 + 9.64800000000000 4.395534071150019E-013 + 9.64900000000000 4.395534071150019E-013 + 9.65000000000000 4.395534071150019E-013 + 9.65100000000000 4.395534071150019E-013 + 9.65200000000000 4.395534071150019E-013 + 9.65300000000000 4.395534071150019E-013 + 9.65400000000000 4.395534071150019E-013 + 9.65500000000000 4.395534071150019E-013 + 9.65600000000000 4.395534071150019E-013 + 9.65700000000000 4.395534071150019E-013 + 9.65800000000000 4.395534071150019E-013 + 9.65900000000000 4.395534071150019E-013 + 9.66000000000000 4.395534071150019E-013 + 9.66100000000000 4.395534071150019E-013 + 9.66200000000000 4.395534071150019E-013 + 9.66300000000000 4.395534071150019E-013 + 9.66400000000000 4.395534071150019E-013 + 9.66500000000000 4.395534071150019E-013 + 9.66600000000000 4.395534071150019E-013 + 9.66700000000000 4.395534071150019E-013 + 9.66800000000000 4.395534071150019E-013 + 9.66900000000000 4.395534071150019E-013 + 9.67000000000000 4.395534071150019E-013 + 9.67100000000000 4.395534071150019E-013 + 9.67200000000000 4.395534071150019E-013 + 9.67300000000000 4.395534071150019E-013 + 9.67400000000000 4.395534071150019E-013 + 9.67500000000000 4.395534071150019E-013 + 9.67600000000000 4.395534071150019E-013 + 9.67700000000000 4.395534071150019E-013 + 9.67800000000000 4.395534071150019E-013 + 9.67900000000000 4.395534071150019E-013 + 9.68000000000000 4.395534071150019E-013 + 9.68100000000000 4.395534071150019E-013 + 9.68200000000000 4.395534071150019E-013 + 9.68300000000000 4.395534071150019E-013 + 9.68400000000000 4.395534071150019E-013 + 9.68500000000000 4.395534071150019E-013 + 9.68600000000000 4.395534071150019E-013 + 9.68700000000000 4.395534071150019E-013 + 9.68800000000000 4.395534071150019E-013 + 9.68900000000000 4.395534071150019E-013 + 9.69000000000000 4.395534071150019E-013 + 9.69100000000000 4.395534071150019E-013 + 9.69200000000000 4.395534071150019E-013 + 9.69300000000000 4.395534071150019E-013 + 9.69400000000000 4.395534071150019E-013 + 9.69500000000000 4.395534071150019E-013 + 9.69600000000000 4.395534071150019E-013 + 9.69700000000000 4.395534071150019E-013 + 9.69800000000000 4.395534071150019E-013 + 9.69900000000000 4.395534071150019E-013 + 9.70000000000000 4.395534071150019E-013 + 9.70100000000000 4.395534071150019E-013 + 9.70200000000000 4.395534071150019E-013 + 9.70300000000000 4.395534071150019E-013 + 9.70400000000000 4.395534071150019E-013 + 9.70500000000000 4.395534071150019E-013 + 9.70600000000000 4.395534071150019E-013 + 9.70700000000000 4.395534071150019E-013 + 9.70800000000000 4.395534071150019E-013 + 9.70900000000000 4.395534071150019E-013 + 9.71000000000000 4.395534071150019E-013 + 9.71100000000000 4.395534071150019E-013 + 9.71200000000000 4.395534071150019E-013 + 9.71300000000000 4.395534071150019E-013 + 9.71400000000000 4.395534071150019E-013 + 9.71500000000000 4.395534071150019E-013 + 9.71600000000000 4.395534071150019E-013 + 9.71700000000000 4.395534071150019E-013 + 9.71800000000000 4.395534071150019E-013 + 9.71900000000000 4.395534071150019E-013 + 9.72000000000000 4.395534071150019E-013 + 9.72100000000000 4.395534071150019E-013 + 9.72200000000000 4.395534071150019E-013 + 9.72300000000000 4.395534071150019E-013 + 9.72400000000000 4.395534071150019E-013 + 9.72500000000000 4.395534071150019E-013 + 9.72600000000000 4.395534071150019E-013 + 9.72700000000000 4.395534071150019E-013 + 9.72800000000000 4.395534071150019E-013 + 9.72900000000000 4.395534071150019E-013 + 9.73000000000000 4.395534071150019E-013 + 9.73100000000000 4.395534071150019E-013 + 9.73200000000000 4.395534071150019E-013 + 9.73300000000000 4.395534071150019E-013 + 9.73400000000000 4.395534071150019E-013 + 9.73500000000000 4.395534071150019E-013 + 9.73600000000000 4.395534071150019E-013 + 9.73700000000000 4.395534071150019E-013 + 9.73800000000000 4.395534071150019E-013 + 9.73900000000000 4.395534071150019E-013 + 9.74000000000000 4.395534071150019E-013 + 9.74100000000000 4.395534071150019E-013 + 9.74200000000000 4.395534071150019E-013 + 9.74300000000000 4.395534071150019E-013 + 9.74400000000000 4.395534071150019E-013 + 9.74500000000000 4.395534071150019E-013 + 9.74600000000000 4.395534071150019E-013 + 9.74700000000000 4.395534071150019E-013 + 9.74800000000000 4.395534071150019E-013 + 9.74900000000000 4.395534071150019E-013 + 9.75000000000000 4.395534071150019E-013 + 9.75100000000000 4.395534071150019E-013 + 9.75200000000000 4.395534071150019E-013 + 9.75300000000000 4.395534071150019E-013 + 9.75400000000000 4.395534071150019E-013 + 9.75500000000000 4.395534071150019E-013 + 9.75600000000000 4.395534071150019E-013 + 9.75700000000000 4.395534071150019E-013 + 9.75800000000000 4.395534071150019E-013 + 9.75900000000000 4.395534071150019E-013 + 9.76000000000000 4.395534071150019E-013 + 9.76100000000000 4.395534071150019E-013 + 9.76200000000000 4.395534071150019E-013 + 9.76300000000000 4.395534071150019E-013 + 9.76400000000000 4.395534071150019E-013 + 9.76500000000000 4.395534071150019E-013 + 9.76600000000000 4.395534071150019E-013 + 9.76700000000000 4.395534071150019E-013 + 9.76800000000000 4.395534071150019E-013 + 9.76900000000000 4.395534071150019E-013 + 9.77000000000000 4.395534071150019E-013 + 9.77100000000000 4.395534071150019E-013 + 9.77200000000000 4.395534071150019E-013 + 9.77300000000000 4.395534071150019E-013 + 9.77400000000000 4.395534071150019E-013 + 9.77500000000000 4.395534071150019E-013 + 9.77600000000000 4.395534071150019E-013 + 9.77700000000000 4.395534071150019E-013 + 9.77800000000000 4.395534071150019E-013 + 9.77900000000000 4.395534071150019E-013 + 9.78000000000000 4.395534071150019E-013 + 9.78100000000000 4.395534071150019E-013 + 9.78200000000000 4.395534071150019E-013 + 9.78300000000000 4.395534071150019E-013 + 9.78400000000000 4.395534071150019E-013 + 9.78500000000000 4.395534071150019E-013 + 9.78600000000000 4.395534071150019E-013 + 9.78700000000000 4.395534071150019E-013 + 9.78800000000000 4.395534071150019E-013 + 9.78900000000000 4.395534071150019E-013 + 9.79000000000000 4.395534071150019E-013 + 9.79100000000000 4.395534071150019E-013 + 9.79200000000000 4.395534071150019E-013 + 9.79300000000000 4.395534071150019E-013 + 9.79400000000000 4.395534071150019E-013 + 9.79500000000000 4.395534071150019E-013 + 9.79600000000000 4.395534071150019E-013 + 9.79700000000000 4.395534071150019E-013 + 9.79800000000000 4.395534071150019E-013 + 9.79900000000000 4.395534071150019E-013 + 9.80000000000000 4.395534071150019E-013 + 9.80100000000000 4.395534071150019E-013 + 9.80200000000000 4.395534071150019E-013 + 9.80300000000000 4.395534071150019E-013 + 9.80400000000000 4.395534071150019E-013 + 9.80500000000000 4.395534071150019E-013 + 9.80600000000000 4.395534071150019E-013 + 9.80700000000000 4.395534071150019E-013 + 9.80800000000000 4.395534071150019E-013 + 9.80900000000000 4.395534071150019E-013 + 9.81000000000000 4.395534071150019E-013 + 9.81100000000000 4.395534071150019E-013 + 9.81200000000000 4.395534071150019E-013 + 9.81300000000000 4.395534071150019E-013 + 9.81400000000000 4.395534071150019E-013 + 9.81500000000000 4.395534071150019E-013 + 9.81600000000000 4.395534071150019E-013 + 9.81700000000000 4.395534071150019E-013 + 9.81800000000000 4.395534071150019E-013 + 9.81900000000000 4.395534071150019E-013 + 9.82000000000000 4.395534071150019E-013 + 9.82100000000000 4.395534071150019E-013 + 9.82200000000000 4.395534071150019E-013 + 9.82300000000000 4.395534071150019E-013 + 9.82400000000000 4.395534071150019E-013 + 9.82500000000000 4.395534071150019E-013 + 9.82600000000000 4.395534071150019E-013 + 9.82700000000000 4.395534071150019E-013 + 9.82800000000000 4.395534071150019E-013 + 9.82900000000000 4.395534071150019E-013 + 9.83000000000000 4.395534071150019E-013 + 9.83100000000000 4.395534071150019E-013 + 9.83200000000000 4.395534071150019E-013 + 9.83300000000000 4.395534071150019E-013 + 9.83400000000000 4.395534071150019E-013 + 9.83500000000000 4.395534071150019E-013 + 9.83600000000000 4.395534071150019E-013 + 9.83700000000000 4.395534071150019E-013 + 9.83800000000000 4.395534071150019E-013 + 9.83900000000000 4.395534071150019E-013 + 9.84000000000000 4.395534071150019E-013 + 9.84100000000000 4.395534071150019E-013 + 9.84200000000000 4.395534071150019E-013 + 9.84300000000000 4.395534071150019E-013 + 9.84400000000000 4.395534071150019E-013 + 9.84500000000000 4.395534071150019E-013 + 9.84600000000000 4.395534071150019E-013 + 9.84700000000000 4.395534071150019E-013 + 9.84800000000000 4.395534071150019E-013 + 9.84900000000000 4.395534071150019E-013 + 9.85000000000000 4.395534071150019E-013 + 9.85100000000000 4.395534071150019E-013 + 9.85200000000000 4.395534071150019E-013 + 9.85300000000000 4.395534071150019E-013 + 9.85400000000000 4.395534071150019E-013 + 9.85500000000000 4.395534071150019E-013 + 9.85600000000000 4.395534071150019E-013 + 9.85700000000000 4.395534071150019E-013 + 9.85800000000000 4.395534071150019E-013 + 9.85900000000000 4.395534071150019E-013 + 9.86000000000000 4.395534071150019E-013 + 9.86100000000000 4.395534071150019E-013 + 9.86200000000000 4.395534071150019E-013 + 9.86300000000000 4.395534071150019E-013 + 9.86400000000000 4.395534071150019E-013 + 9.86500000000000 4.395534071150019E-013 + 9.86600000000000 4.395534071150019E-013 + 9.86700000000000 4.395534071150019E-013 + 9.86800000000000 4.395534071150019E-013 + 9.86900000000000 4.395534071150019E-013 + 9.87000000000000 4.395534071150019E-013 + 9.87100000000000 4.395534071150019E-013 + 9.87200000000000 4.395534071150019E-013 + 9.87300000000000 4.395534071150019E-013 + 9.87400000000000 4.395534071150019E-013 + 9.87500000000000 4.395534071150019E-013 + 9.87600000000000 4.395534071150019E-013 + 9.87700000000000 4.395534071150019E-013 + 9.87800000000000 4.395534071150019E-013 + 9.87900000000000 4.395534071150019E-013 + 9.88000000000000 4.395534071150019E-013 + 9.88100000000000 4.395534071150019E-013 + 9.88200000000000 4.395534071150019E-013 + 9.88300000000000 4.395534071150019E-013 + 9.88400000000000 4.395534071150019E-013 + 9.88500000000000 4.395534071150019E-013 + 9.88600000000000 4.395534071150019E-013 + 9.88700000000000 4.395534071150019E-013 + 9.88800000000000 4.395534071150019E-013 + 9.88900000000000 4.395534071150019E-013 + 9.89000000000000 4.395534071150019E-013 + 9.89100000000000 4.395534071150019E-013 + 9.89200000000000 4.395534071150019E-013 + 9.89300000000000 4.395534071150019E-013 + 9.89400000000000 4.395534071150019E-013 + 9.89500000000000 4.395534071150019E-013 + 9.89600000000000 4.395534071150019E-013 + 9.89700000000000 4.395534071150019E-013 + 9.89800000000000 4.395534071150019E-013 + 9.89900000000000 4.395534071150019E-013 + 9.90000000000000 4.395534071150019E-013 + 9.90100000000000 4.395534071150019E-013 + 9.90200000000000 4.395534071150019E-013 + 9.90300000000000 4.395534071150019E-013 + 9.90400000000000 4.395534071150019E-013 + 9.90500000000000 4.395534071150019E-013 + 9.90600000000000 4.395534071150019E-013 + 9.90700000000000 4.395534071150019E-013 + 9.90800000000000 4.395534071150019E-013 + 9.90900000000000 4.395534071150019E-013 + 9.91000000000000 4.395534071150019E-013 + 9.91100000000000 4.395534071150019E-013 + 9.91200000000000 4.395534071150019E-013 + 9.91300000000000 4.395534071150019E-013 + 9.91400000000000 4.395534071150019E-013 + 9.91500000000000 4.395534071150019E-013 + 9.91600000000000 4.395534071150019E-013 + 9.91700000000000 4.395534071150019E-013 + 9.91800000000000 4.395534071150019E-013 + 9.91900000000000 4.395534071150019E-013 + 9.92000000000000 4.395534071150019E-013 + 9.92100000000000 4.395534071150019E-013 + 9.92200000000000 4.395534071150019E-013 + 9.92300000000000 4.395534071150019E-013 + 9.92400000000000 4.395534071150019E-013 + 9.92500000000000 4.395534071150019E-013 + 9.92600000000000 4.395534071150019E-013 + 9.92700000000000 4.395534071150019E-013 + 9.92800000000000 4.395534071150019E-013 + 9.92900000000000 4.395534071150019E-013 + 9.93000000000000 4.395534071150019E-013 + 9.93100000000000 4.395534071150019E-013 + 9.93200000000000 4.395534071150019E-013 + 9.93300000000000 4.395534071150019E-013 + 9.93400000000000 4.395534071150019E-013 + 9.93500000000000 4.395534071150019E-013 + 9.93600000000000 4.395534071150019E-013 + 9.93700000000000 4.395534071150019E-013 + 9.93800000000000 4.395534071150019E-013 + 9.93900000000000 4.395534071150019E-013 + 9.94000000000000 4.395534071150019E-013 + 9.94100000000000 4.395534071150019E-013 + 9.94200000000000 4.395534071150019E-013 + 9.94300000000000 4.395534071150019E-013 + 9.94400000000000 4.395534071150019E-013 + 9.94500000000000 4.395534071150019E-013 + 9.94600000000000 4.395534071150019E-013 + 9.94700000000000 4.395534071150019E-013 + 9.94800000000000 4.395534071150019E-013 + 9.94900000000000 4.395534071150019E-013 + 9.95000000000000 4.395534071150019E-013 + 9.95100000000000 4.395534071150019E-013 + 9.95200000000000 4.395534071150019E-013 + 9.95300000000000 4.395534071150019E-013 + 9.95400000000000 4.395534071150019E-013 + 9.95500000000000 4.395534071150019E-013 + 9.95600000000000 4.395534071150019E-013 + 9.95700000000000 4.395534071150019E-013 + 9.95800000000000 4.395534071150019E-013 + 9.95900000000000 4.395534071150019E-013 + 9.96000000000000 4.395534071150019E-013 + 9.96100000000000 4.395534071150019E-013 + 9.96200000000000 4.395534071150019E-013 + 9.96300000000000 4.395534071150019E-013 + 9.96400000000000 4.395534071150019E-013 + 9.96500000000000 4.395534071150019E-013 + 9.96600000000000 4.395534071150019E-013 + 9.96700000000000 4.395534071150019E-013 + 9.96800000000000 4.395534071150019E-013 + 9.96900000000000 4.395534071150019E-013 + 9.97000000000000 4.395534071150019E-013 + 9.97100000000000 4.395534071150019E-013 + 9.97200000000000 4.395534071150019E-013 + 9.97300000000000 4.395534071150019E-013 + 9.97400000000000 4.395534071150019E-013 + 9.97500000000000 4.395534071150019E-013 + 9.97600000000000 4.395534071150019E-013 + 9.97700000000000 4.395534071150019E-013 + 9.97800000000000 4.395534071150019E-013 + 9.97900000000000 4.395534071150019E-013 + 9.98000000000000 4.395534071150019E-013 + 9.98100000000000 4.395534071150019E-013 + 9.98200000000000 4.395534071150019E-013 + 9.98300000000000 4.395534071150019E-013 + 9.98400000000000 4.395534071150019E-013 + 9.98500000000000 4.395534071150019E-013 + 9.98600000000000 4.395534071150019E-013 + 9.98700000000000 4.395534071150019E-013 + 9.98800000000000 4.395534071150019E-013 + 9.98900000000000 4.395534071150019E-013 + 9.99000000000000 4.395534071150019E-013 + 9.99100000000000 4.395534071150019E-013 + 9.99200000000000 4.395534071150019E-013 + 9.99300000000000 4.395534071150019E-013 + 9.99400000000000 4.395534071150019E-013 + 9.99500000000000 4.395534071150019E-013 + 9.99600000000000 4.395534071150019E-013 + 9.99700000000000 4.395534071150019E-013 + 9.99800000000000 4.395534071150019E-013 + 9.99900000000000 4.395534071150019E-013 + 10.0000000000000 4.395534071150019E-013 diff --git a/example/test_problem/ELBDM/HaloMerger/clean.sh b/example/test_problem/ELBDM/HaloMerger/clean.sh new file mode 100644 index 0000000000..2c7ccfacf7 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/ELBDM/HaloMerger/download_ic.sh b/example/test_problem/ELBDM/HaloMerger/download_ic.sh new file mode 100644 index 0000000000..24b7398f2a --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/download_ic.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +LOCAL_FILENAME="HALO_IC_m22_1_Mh_4e9" +FILE_ID="677cc8db999605c485c8de83" +FILE_SHA256="acbd85842de65ff2360c7f3a1d1101c6f4f8939f430c3f61b8bc5f6f9a72fe94" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. link +ln -s ${LOCAL_FILENAME} HALO_IC_Halo1 +ln -s ${LOCAL_FILENAME} HALO_IC_Halo2 diff --git a/example/test_problem/ELBDM/HaloMerger/generate_make.sh b/example/test_problem/ELBDM/HaloMerger/generate_make.sh new file mode 100644 index 0000000000..3e16ee04f2 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true --particle=true --gsl=true "$@" diff --git a/example/test_problem/ELBDM/HaloMerger/plot_script/plot__density_profile.py b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__density_profile.py new file mode 100644 index 0000000000..de7e4bc900 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__density_profile.py @@ -0,0 +1,123 @@ +import argparse +import sys +import yt +import numpy as np +import matplotlib.pyplot as plt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Profiles' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +r_sphere = (100.0, 'kpc') +dpi = 150 +nbin = 32 + +Ref_DensProf_filename = '../HaloDensityProfile' + +yt.enable_parallelism() +ts = yt.DatasetSeries([ prefix+'Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ]) + +for ds in ts.piter(): + + fields_list = ['density'] + + if ds.parameters["Particle"] == 1: + if ds.parameters["Par_NPar"] > 0: + fields_list.append('particle_density_on_grid') + + for field in fields_list: + + # set the center as the position of the gravitational potential minimum + center_pos = ds.all_data().quantities.min_location(('gamer','Pote'))[1:] + sp = ds.sphere( center_pos, r_sphere ) + + # ProfilePlot + prof = yt.ProfilePlot( sp, 'radius', field, weight_field='cell_volume', n_bins=nbin ) + prof.set_unit( 'radius', 'kpc' ) + prof.set_xlim( 1.0e-1, 1.0e+2 ) + prof.set_ylim( field, 1.0e+2, 2.0e+7 ) + prof.set_unit( field, 'Msun/kpc**3' ) + prof.annotate_title( 't = %13.7e Gyr'%(ds.current_time.in_units('Gyr')) ) + + prof.save( 'fig_%s.png'%(ds), mpl_kwargs={'dpi':dpi} ) + + # create the arrays of profile + prof_dens = yt.create_profile( sp, 'radius', fields=field, + weight_field='cell_volume', n_bins=nbin, + units={'radius':'code_length', field:'code_density'} ) + + # save the profile to text file + np.savetxt( '%s_%s_profile'%(ds,field), + np.column_stack( (prof_dens.x.in_units('code_length').d, prof_dens[field].in_units('code_density').d) ), + fmt=' %9.8e', + header=' r (code_length) density (code_density)' ) + + # load the reference profiles + Ref_DensProf_r, Ref_DensProf_dens = np.loadtxt( Ref_DensProf_filename, skiprows=1, unpack=True ) + Ini_DensProf_r, Ini_DensProf_dens = np.loadtxt( '%s_%s_profile'%('Data_000000',field), skiprows=1, unpack=True ) + + # assign the units + Ref_DensProf_r = ds.arr( Ref_DensProf_r, 'code_length' ) + Ref_DensProf_dens = ds.arr( Ref_DensProf_dens, 'code_density' ) + Ini_DensProf_r = ds.arr( Ini_DensProf_r, 'code_length' ) + Ini_DensProf_dens = ds.arr( Ini_DensProf_dens, 'code_density' ) + + # decide the units for plotting + #UNIT_L_PLOT = 'code_length' + #UNIT_D_PLOT = 'code_density' + UNIT_L_PLOT = 'kpc' + UNIT_D_PLOT = 'Msun/kpc**3' + + # create the figure + fig = plt.figure() + ax = fig.add_subplot(111) + + # plot the profiles + ax.plot( Ref_DensProf_r.in_units(UNIT_L_PLOT).d, Ref_DensProf_dens.in_units(UNIT_D_PLOT).d, label='Reference' ) + ax.plot( Ini_DensProf_r.in_units(UNIT_L_PLOT).d, Ini_DensProf_dens.in_units(UNIT_D_PLOT).d, label='Data_000000' ) + ax.plot( prof_dens.x.in_units(UNIT_L_PLOT).d, prof_dens[field].in_units(UNIT_D_PLOT).d, label='%s'%ds ) + + # set the limits and scales + ax.set_xlim( 0.5*np.min(Ref_DensProf_r.in_units(UNIT_L_PLOT).d), 2.0*np.max(Ref_DensProf_r.in_units(UNIT_L_PLOT).d) ) + ax.set_ylim( 0.5*np.min(Ref_DensProf_dens.in_units(UNIT_D_PLOT).d), 20.0*np.max(Ref_DensProf_dens.in_units(UNIT_D_PLOT).d) ) + ax.set_xscale('log') + ax.set_yscale('log') + + # set the labels + ax.legend() + ax.set_xlabel( r'$r$'+' (%s)'%UNIT_L_PLOT ) + ax.set_ylabel( r'$\rho$'+' (%s)'%UNIT_D_PLOT ) + ax.set_title( '$t$ = %7.6e Gyr'%ds.current_time.in_units('Gyr') ) + + # set the grid and ticks + ax.grid() + ax.xaxis.set_ticks_position('both') + ax.yaxis.set_ticks_position('both') + ax.tick_params( which='both',direction='in' ) + + # save the figure + plt.tight_layout( pad=0.1, h_pad=0.1, w_pad=0.1 ) + fig.savefig( 'fig_%s_Profile_%s.png'%(ds, field), dpi=dpi ) + fig.clear() diff --git a/example/test_problem/ELBDM/HaloMerger/plot_script/plot__enclosed_mass.py b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__enclosed_mass.py new file mode 100644 index 0000000000..dd4b7642b8 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__enclosed_mass.py @@ -0,0 +1,115 @@ +import argparse +import sys +import yt +import numpy as np +import matplotlib.pyplot as plt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Enclosed mass profile' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +r_sphere = (100.0, 'kpc') +dpi = 150 +nbin = 32 + + +# add the total density field, including the fluid density and the particle density +def _TotDens(field, data): + if data.ds.parameters["Particle"] == 1: + return data['Dens']+data['ParDens'] + else: + return data['Dens'] + +yt.add_field( ('gamer', 'TotDens'), + function=_TotDens, units='code_mass/code_length**3', + sampling_type='cell' ) + +# add the total mass field, including the fluid mass and the particle mass +def _TotCellMass(field, data): + return data['TotDens']*data['cell_volume'] + +yt.add_field( ('gamer', 'TotCellMass'), + function=_TotCellMass, units='code_mass', + sampling_type='cell' ) + + +yt.enable_parallelism() +ts = yt.DatasetSeries([ prefix+'Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ]) + +for ds in ts.piter(): + for field_mass in [('gamer', 'TotCellMass')]: + + # set the center as the position of the gravitational potential minimum + center_pos = ds.all_data().quantities.min_location(('gamer', 'Pote'))[1:] + sp = ds.sphere( center_pos, r_sphere ) + + # create the arrays of profile + prof_mass = yt.create_profile( sp, 'radius', fields=field_mass, + weight_field=None, n_bins=nbin, accumulation=True, + units={'radius':'code_length', field_mass:'code_mass'} ) + + # save the profile to text file + np.savetxt( '%s_EnclosedTotalMass_profile'%(ds), + np.column_stack( (prof_mass.x.in_units('code_length').d, prof_mass[field_mass].in_units('code_mass').d) ), + fmt=' %9.8e', + header=' r (code_length) mass (code_mass)' ) + + # decide the units for plotting + #UNIT_L_PLOT = 'code_length' + #UNIT_M_PLOT = 'code_mass' + UNIT_L_PLOT = 'kpc' + UNIT_M_PLOT = 'Msun' + + # create the figure + fig = plt.figure() + ax = fig.add_subplot(111) + + # plot the profiles + ax.plot( prof_mass.x.in_units(UNIT_L_PLOT).d, prof_mass[field_mass].in_units(UNIT_M_PLOT).d, label='%s'%ds ) + + # set the limits and scales + ax.set_xlim( 1.0e-1, 1.0e+2 ) + ax.set_ylim( 1.0e+5, 1.0e10 ) + ax.set_xscale('log') + ax.set_yscale('log') + + # set the labels + ax.legend() + ax.set_xlabel( r'$r$'+' (%s)'%UNIT_L_PLOT ) + ax.set_ylabel( r'$M$'+' (%s)'%UNIT_M_PLOT ) + ax.set_title( '$t$ = %7.6e Gyr'%ds.current_time.in_units('Gyr') ) + ax.annotate( 'Enclosed Mass (at r = %7.6e %s)\n = %7.6e Msun'%(r_sphere[0], r_sphere[1], ds.sphere( center_pos, r_sphere ).quantities.total_quantity([field_mass]).in_units('Msun')), + xy=(0.3,0.03), xycoords='axes fraction' ) + + # set the grid and ticks + ax.grid() + ax.xaxis.set_ticks_position('both') + ax.yaxis.set_ticks_position('both') + ax.tick_params( which='both',direction='in' ) + + # save the figure + plt.tight_layout( pad=0.1, h_pad=0.1, w_pad=0.1 ) + fig.savefig( 'fig_%s_Profile_EnclosedTotalMass.png'%(ds), dpi=dpi ) + fig.clear() diff --git a/example/test_problem/ELBDM/HaloMerger/plot_script/plot__projection.py b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__projection.py new file mode 100644 index 0000000000..4a0fbe52f7 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__projection.py @@ -0,0 +1,98 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Projection of mass density' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap_dens = 'algae' +dpi = 150 + +yt.enable_parallelism() + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) +for ds in ts.piter(): + + fields_list = ['density'] + + if ds.parameters["Particle"] == 1: + if ds.parameters["Par_NPar"] > 0: + fields_list.append('particle_density_on_grid') + + for center_mode in ['c', 'm']: + for direction in ['y', 'z']: + for field in fields_list: + + # decide the center + if center_mode == 'm': + center = ds.all_data().quantities.min_location(('gamer','Pote'))[1:] + elif center_mode == 'c': + center = ds.domain_center + + # ProjectionPlot + p_dens = yt.ProjectionPlot( ds, direction, field, center=center, buff_size=(1024, 1024) ) + + # setting for the figure + p_dens.set_axes_unit( 'kpc' ) + p_dens.set_unit( field, 'Msun/kpc**2' ) + p_dens.set_zlim( field, 1.0e+3, 1.0e8 ) + p_dens.set_cmap( field, colormap_dens ) + p_dens.set_background_color( field ) + p_dens.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + + # zoom in + if center_mode == 'm': + p_dens.zoom(4) + + # save the figure + p_dens.save( 'fig_%s_%s_Projection_%s_%s.png'%(ds, center_mode, direction, field), mpl_kwargs={'dpi':dpi} ) + + # annotate the grids and save again + p_dens.annotate_grids() + p_dens.save( 'fig_%s_%s_Projection_%s_%s_withgrids.png'%(ds, center_mode, direction, field), mpl_kwargs={'dpi':dpi} ) + + # additionally, plot the particles + if field == 'particle_density_on_grid': + # decide the direction + if direction == 'z': + p_par = yt.ParticlePlot( ds, 'particle_position_x', 'particle_position_y', 'particle_mass', center=center ) + elif direction == 'y': + p_par = yt.ParticlePlot( ds, 'particle_position_z', 'particle_position_x', 'particle_mass', center=center ) + + # setting for the figure + p_par.set_axes_unit( 'kpc' ) + p_par.set_unit( 'particle_mass', 'Msun' ) + p_par.set_zlim( 'particle_mass', 1.0e+2, 1.0e7 ) + p_par.set_cmap( 'particle_mass', colormap_dens ) + p_par.set_background_color('particle_mass' ) + p_par.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + + # zoom in + if center_mode == 'm': + p_par.zoom(4) + + # save the figure + p_par.save( 'fig_%s_%s_Particle_%s_particle_mass.png'%(ds, center_mode, direction), mpl_kwargs={'dpi':dpi} ) diff --git a/example/test_problem/ELBDM/HaloMerger/plot_script/plot__slice.py b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__slice.py new file mode 100644 index 0000000000..330ab91ed4 --- /dev/null +++ b/example/test_problem/ELBDM/HaloMerger/plot_script/plot__slice.py @@ -0,0 +1,75 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Slice of mass density' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap_dens = 'algae' +dpi = 150 + +yt.enable_parallelism() + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) +for ds in ts.piter(): + + fields_list = ['density'] + + if ds.parameters["Particle"] == 1: + if ds.parameters["Par_NPar"] > 0: + fields_list.append('particle_density_on_grid') + + for center_mode in ['c', 'm']: + for direction in ['y', 'z']: + for field in fields_list: + + # decide the center + if center_mode == 'm': + center = ds.all_data().quantities.min_location(('gamer','Pote'))[1:] + elif center_mode == 'c': + center = ds.domain_center + + # SlicePlot + s_dens = yt.SlicePlot( ds, direction, field, center=center, buff_size=(1024, 1024) ) + + # setting for the figure + s_dens.set_axes_unit( 'kpc' ) + s_dens.set_unit( field, 'Msun/kpc**3' ) + s_dens.set_zlim( field, 4.0e1, 4.0e7 ) + s_dens.set_cmap( field, colormap_dens ) + s_dens.set_background_color( field ) + s_dens.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + + # zoom in + if center_mode == 'm': + s_dens.zoom(4) + + # save the figure + s_dens.save( 'fig_%s_%s_Slice_%s_%s.png'%(ds, center_mode, direction, field), mpl_kwargs={'dpi':dpi} ) + + # annotate the grids and save again + s_dens.annotate_grids() + s_dens.save( 'fig_%s_%s_Slice_%s_%s_withgrids.png'%(ds, center_mode, direction, field), mpl_kwargs={'dpi':dpi} ) diff --git a/example/test_problem/ELBDM/IsolatedHalo/Input__Flag_Rho b/example/test_problem/ELBDM/IsolatedHalo/Input__Flag_Rho new file mode 100644 index 0000000000..55b9c82ccc --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/Input__Flag_Rho @@ -0,0 +1,11 @@ +# Level Density + 0 1.0e3 + 1 4.0e3 + 2 1.0e20 + 3 1.0e20 + 4 1.0e20 + 5 1.0e20 + 6 1.0e20 + 7 1.0e20 + 8 1.0e20 + 9 1.0e20 diff --git a/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter b/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter new file mode 100644 index 0000000000..6a573c0a8d --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/Input__Parameter @@ -0,0 +1,239 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 0.175 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 512 # number of base-level cells along x +NX0_TOT_Y 512 # number of base-level cells along y +NX0_TOT_Z 512 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1007 # test problem ID [0] + # 0: none + # 1007: ELBDM halo extracted from a large-scale structure simulation (+GRAVITY) + + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L 4.43663203664989e+24 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V 1.00000000000000e+07 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D 2.57605095281615e-30 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 2 # gravity boundary condition: (1=periodic, 2=isolated) +GFUNC_COEFF0 -1.0 # Green's function coefficient at the origin for the isolated BC (<0=auto) [-1.0] + + +# particle (PARTICLE only) +PAR_NPAR 0 # total number of particles (must be set for PAR_INIT==1/3) +PAR_INIT 1 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") +PAR_IC_FORMAT 1 # data format of PAR_IC: (1=[attribute][id], 2=[id][attribute]; row-major) [1] +PAR_IC_MASS -1.0 # mass of all particles for PAR_INIT==3 (<0=off) [-1.0] +PAR_INTERP 3 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] +PAR_INTEG 2 # particle integration scheme: (1=Euler, 2=KDK) [2] +PAR_IMPROVE_ACC 1 # improve force accuracy at patch boundaries [1] ##STORE_POT_GHOST and PAR_INTERP=2/3 ONLY## +PAR_PREDICT_POS 1 # predict particle position during mass assignment [1] +PAR_REMOVE_CELL -1.0 # remove particles X-root-cells from the boundaries (non-periodic BC only; <0=auto) [-1.0] + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 2.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 8.0e-23 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST -1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 1 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G -1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +MG_MAX_ITER -1 # maximum number of iterations in multigrid: (<0=auto) [-1] +MG_NPRE_SMOOTH -1 # number of pre-smoothing steps in multigrid: (<0=auto) [-1] +MG_NPOST_SMOOTH -1 # number of post-smoothing steps in multigrid: (<0=auto) [-1] +MG_TOLERATED_ERROR -1.0 # maximum tolerated error in multigrid (<0=auto) [-1.0] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 3 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 256 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 0 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NVAR -1 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 256 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] +OPT__FFTW_STARTUP -1 # initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-1 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# yt inline analysis (SUPPORT_LIBYT only) +YT_SCRIPT libyt_script/inline_script_covering_grid # yt inline analysis script (do not include the ".py" file extension) +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 1 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_NEGATIVE 0 # check the negative values: (0=off, 1=density, 2=pressure and entropy, 3=both) [0] ##HYDRO ONLY## +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/IsolatedHalo/Input__TestProb b/example/test_problem/ELBDM/IsolatedHalo/Input__TestProb new file mode 100644 index 0000000000..c91dd1aaf3 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/Input__TestProb @@ -0,0 +1 @@ +# problem-specific runtime parameters diff --git a/example/test_problem/ELBDM/IsolatedHalo/README b/example/test_problem/ELBDM/IsolatedHalo/README new file mode 100644 index 0000000000..feb7c65c4b --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/README @@ -0,0 +1,69 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY +Disable: COMOVING + + +Default setup: +======================================== +1. Code units + (1) UNIT_L = Mpc/h, where h=0.6955 is the present dimensionless Hubble parameter + (2) UNIT_V = 100 km/s + (3) UNIT_D = rho_bg (background matter density at z=0) + --> Mass density and wavefunction are normalized to rho_bg + +2. ELBDM_MASS 8.0e-23 + ELBDM_REMOVE_MOTION_CM 1 + ELBDM_TAYLOR3_AUTO 0 + +3. OPT__BC_FLU_* 1 (periodic) + OPT__BC_POT 2 (isolated) + +4. MAX_LEVEL 0 + + +Libyt covering_grid setup: +======================================== +1. Code units + (1) UNIT_L = Mpc/h, where h=0.6955 is the present dimensionless Hubble parameter + (2) UNIT_V = 100 km/s + (3) UNIT_D = rho_bg (background matter density at z=0) + --> Mass density and wavefunction are normalized to rho_bg + +2. ELBDM_MASS 8.0e-23 + ELBDM_REMOVE_MOTION_CM 1 + ELBDM_TAYLOR3_AUTO 0 + +3. OPT__BC_FLU_* 1 (periodic) + OPT__BC_POT 2 (isolated) + +4. MAX_LEVEL 1 + OPT__FLAG_RHO 1 + +5. END_T 5.7116620e-03 + END_STEP 32 + +6. YT_SCRIPT libyt_script/inline_script_covering_grid + YT_VERBOSE 1 + + +Note: +======================================== +1. Download the IC file: sh download_ic.sh + +2. Some examples of yt visualization scripts are put in "yt_script" + +3. Simulate a single isolated halo extracted from a cosmological simulation + +4. About libyt covering_grid test + a. Use submit script "./libyt_script/submit_gamer.job" for job submission + + b. Put "./libyt_script/inline_script_covering_grid.py" under the same folder as gamer + + c. For determining the "left_edge" and "dims" in function "ds.covering_grid": + left_edge: LV1 resolution is 0.175/512/2 ; region covered by LV1 box (by "ds.covering_grid") is 0.175/512/2*512; 0.04375 = (0.175 - 0.175/512/2*512)/2 + dims: Plan to cover region with half of the simulation box length, i.e. will have 256X256X256 base level cells -> refine to MAX_LEVEL=1 -> LV1 cells is 512X512X512 + + d. Use "plot_slice-dens_covering_grid.py" to extract density slices from .npz files + + e. Use "make_movie.sh" to convert .png pictures into .mp4 diff --git a/example/test_problem/ELBDM/IsolatedHalo/clean.sh b/example/test_problem/ELBDM/IsolatedHalo/clean.sh new file mode 100644 index 0000000000..72cc1fb33f --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh b/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh new file mode 100644 index 0000000000..c417b94e6c --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/download_ic.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +LOCAL_FILENAME="UM_IC_run05-halo08-lv4" +FILE_ID="677cbad6999605c485c8de77" +FILE_SHA256="7ed91ba48a9aec139e0574629b689090ae43496fb957c6822c7ec1bd1217e22e" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}.tgz" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME}.tgz | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}.tgz" + +# 3. unzip and link +tar -zxvf ${LOCAL_FILENAME}.tgz +rm ${LOCAL_FILENAME}.tgz +ln -s ${LOCAL_FILENAME} UM_IC diff --git a/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh b/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh new file mode 100644 index 0000000000..fab2dfe0c6 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true "$@" diff --git a/example/test_problem/ELBDM/IsolatedHalo/libyt_script/inline_script_covering_grid.py b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/inline_script_covering_grid.py new file mode 100644 index 0000000000..adf501ebf0 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/inline_script_covering_grid.py @@ -0,0 +1,26 @@ +import yt_libyt +import yt +import numpy as np + +yt.enable_parallelism() + +def yt_inline(): +# ref: https://yt-project.org/doc/examining/low_level_inspection.html#examining-grid-data-in-a-fixed-resolution-array + ds = yt_libyt.libytDataset() + idx = int(str(ds).split("_")[0].split("g")[-1]) + + # target field + field = "Dens" + + # target amr level + lv = 1 + + # get unsmoothed/smoothed fixed resolution array + ad = ds.covering_grid( level=lv, left_edge=[0.04375,0.04375,0.04375], dims=512 ) + + density = ad[field] + + np.savez("covering-grid_test_Data_%06d_lv=%d.npz"%(idx,lv), Dens=np.array(density).astype(np.float32)) + +def yt_inline_inputArg( fields ): + pass diff --git a/example/test_problem/ELBDM/IsolatedHalo/libyt_script/make_movie.sh b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/make_movie.sh new file mode 100644 index 0000000000..7a83fb8eed --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/make_movie.sh @@ -0,0 +1,3 @@ +#!/usr/bin/bash + +ffmpeg -framerate 5/1 -i Fig%06d_Slice_x_Dens_mode_c_central_halo.png -c:v libx264 -preset slow -tune animation -pix_fmt yuv420p -s 1920x1200 Slice_x_Dens_mode_central_halo.mp4 diff --git a/example/test_problem/ELBDM/IsolatedHalo/libyt_script/plot_slice-dens_covering_grid.py b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/plot_slice-dens_covering_grid.py new file mode 100644 index 0000000000..2ce44fb402 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/plot_slice-dens_covering_grid.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3.7 + +#reference 1 uniform grid: https://yt-project.org/doc/examining/generic_array_data.html#Generic-Unigrid-Data +#reference 2 parallel : https://yt-project.org/doc/analyzing/parallel_computation.html#parallelizing-over-multiple-objects + +import argparse +import sys +import yt +import glob +import numpy as np + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Slice of mass density' ) + +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +num_procs = 4 +lv = 1 +colormap_dens = 'jet' +center_mode = 'c' +dpi = 512 +buff_size = 1024 +h_0 = 0.6955 +box_size = 0.0875 # Mpc/h +proj_axes = ['x'] +suffix = '_central_halo' +field = 'Dens' + +yt.enable_parallelism() +idx_range = np.arange(idx_start, idx_end+1, didx) +file_list = ( [ '%s/covering-grid_test_Data_%06d_lv=%d.npz'%(prefix,idx,lv) for idx in idx_range ] ) +my_storage = {} + +for sto, fn in yt.parallel_objects(file_list, num_procs, storage=my_storage): + dens = np.load(fn)[field] + idx = int(fn.split("_")[-2]) # get the data index + data = dict(Dens = (dens,"code_mass/code_length**3")) # in unit of background density + bbox = np.array([ [-box_size/2./h_0*1e3,box_size/2./h_0*1e3],\ + [-box_size/2./h_0*1e3,box_size/2./h_0*1e3],\ + [-box_size/2./h_0*1e3,box_size/2./h_0*1e3]]) # Mpc/h -> kpc + ds = yt.load_uniform_grid(data, dens.shape, length_unit = "kpc", bbox=bbox, nprocs = num_procs) + + for proj_axis in proj_axes: + sz_dens = yt.SlicePlot( ds, proj_axis, field, width = (50, 'kpc'), center=center_mode) + sz_dens.set_buff_size((buff_size,buff_size)) #for resolution increasing + sz_dens.set_zlim( field, 1.0e-2, 1e6 ) + sz_dens.set_cmap( field, colormap_dens ) + sz_dens.annotate_scale( pos=(0.1,0.9), coeff=5., corner='upper_left', unit = 'kpc', text_args={'size':16.0}, size_bar_args={'color':'black'}) + sz_dens.save( "Fig%06d_Slice_%s_Dens_mode_%s%s.png"%(idx,proj_axis,center_mode,suffix), mpl_kwargs={"dpi":dpi}) #for resolution increasing diff --git a/example/test_problem/ELBDM/IsolatedHalo/libyt_script/submit_gamer.job b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/submit_gamer.job new file mode 100644 index 0000000000..c5c94aae02 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/libyt_script/submit_gamer.job @@ -0,0 +1,25 @@ +#!/bin/bash + +#PBS -N gamer_isolatedhalo_test_libyt +##PBS -M YOUR_EMAIL +##PBS -m abe +#PBS -q workq +#PBS -k n +#PBS -l walltime=72:00:00:00 +#PBS -l nodes=1:ppn=16 +##PBS -o stdout +##PBS -e stderr +##PBS -W depend=afterok:JOB_ID +##PBS -W depend=afterany:JOB_ID + +export OMP_NUM_THREADS=4 + +LOG_FILE=log_gamer_libyt +EXE=gamer + +if [ "$PBS_ENVIRONMENT" != "PBS_INTERACTIVE" ]; then + cd $PBS_O_WORKDIR +fi + +export OMPI_MCA_osc=sm,pt2pt +mpirun -map-by ppr:4:socket:pe=4 --report-bindings --output-filename $LOG_FILE ./$EXE #for AMR, pe means how many threads you want to fork out diff --git a/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__profile.py b/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__profile.py new file mode 100644 index 0000000000..197f9af267 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__profile.py @@ -0,0 +1,48 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Density profile' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +field = 'density' +center_mode = 'max' +dpi = 150 +nbin = 32 + +yt.enable_parallelism() +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + sp = ds.sphere( center_mode, 0.5*ds.domain_width.to_value().max() ) + + prof = yt.ProfilePlot( sp, 'radius', field, weight_field='cell_volume', n_bins=nbin ) + prof.set_unit( 'radius', 'kpc' ) + prof.set_xlim( 5.0e-1, 1.0e2 ) +# prof.set_ylim( field, 1.0e-6, 1.0e0 ) + + prof.save( mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__proj-z.py b/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__proj-z.py new file mode 100644 index 0000000000..b36dc391f7 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__proj-z.py @@ -0,0 +1,47 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Projection of mass density' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +field = 'density' +colormap_dens = 'algae' +center_mode = 'c' +dpi = 150 + +yt.enable_parallelism() +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + pz_dens = yt.ProjectionPlot( ds, 'z', field, center=center_mode ) + + pz_dens.set_zlim( field, 1.0e-6, 2.0e-2 ) + pz_dens.set_cmap( field, colormap_dens ) + pz_dens.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + + pz_dens.save( mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__slice-z.py b/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__slice-z.py new file mode 100644 index 0000000000..174e3886a2 --- /dev/null +++ b/example/test_problem/ELBDM/IsolatedHalo/yt_script/plot__slice-z.py @@ -0,0 +1,48 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Slice of mass density' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +field = 'density' +colormap_dens = 'algae' +center_mode = 'c' +dpi = 150 + +yt.enable_parallelism() +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + sz_dens = yt.SlicePlot( ds, 'z', field, center=center_mode ) + + sz_dens.set_zlim( field, 1.0e-31, 1.0e-24 ) + sz_dens.set_cmap( field, colormap_dens ) + sz_dens.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + sz_dens.annotate_grids() + + sz_dens.save( mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter b/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter new file mode 100644 index 0000000000..64ca5be5f2 --- /dev/null +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/Input__Parameter @@ -0,0 +1,198 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 32 # number of base-level cells along x +NX0_TOT_Y 32 # number of base-level cells along y +NX0_TOT_Z 32 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1001 # test problem ID [0] + # 0: none + # 1000: ELBDM external potential (+GRAVITY) + # 1001: ELBDM Jeans instability in the comoving frame (+GRAVITY, +COMOVING) + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L -1.0 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 1 # gravity boundary condition: (1=periodic, 2=isolated) + + +# cosmology (COMOVING only) +A_INIT 1.0e-3 # initial scale factor +OMEGA_M0 1.0 # omega matter at the present time +HUBBLE0 0.70 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 2.5e-22 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 2.5e-2 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/Input__TestProb b/example/test_problem/ELBDM/JeansInstabilityComoving/Input__TestProb new file mode 100644 index 0000000000..ae233db8de --- /dev/null +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/Input__TestProb @@ -0,0 +1,3 @@ +# problem-specific runtime parameters +Jeans_RealAmp0 4.0e-10 # proportional coefficient of the real part of the wave function +Jeans_Phase0 0.0 # initial phase shift diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/README b/example/test_problem/ELBDM/JeansInstabilityComoving/README new file mode 100644 index 0000000000..b11b3e0fab --- /dev/null +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/README @@ -0,0 +1,40 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY, COMOVING +Disable: PARTICLE, UNSPLIT_GRAVITY + + +Default setup: +======================================== +1. 32^3 uniform resolution + --> No grid refinement is adopted in this test + +2. DT__MAX_DELTA_A is set an extremely large number so that the time-step will + be controlled by the fluid solver + +3. The default setup in Input__Parameter and Input__TestProb gives an UNSTABLE + solution, in which the solution grows exponentially. To test a STABLE solution, + one can try the following parameters: + + Input__Parameter: + BOX_SIZE = 0.5 + A_INIT = 1.0e-5 + OUTPUT_DT = 2.0e-6 + + Input__TestProb: + Jeans_RealAmp0 = 4.0e-8 + +** This setup requires further verification + + +Note: +======================================== +1. Analytical solution reference: Woo, T. & Chiueh, T. 2009, ApJ, 697, 850 + +** Note that the imaginary part (I) grows much faster than the real part + (R). Consequently, the accuracy of linear prediction will be deteriorated + when the assumption (2R >> I^2) starts to break down, especially in the + higher-resolution tests, and hence the 2nd-order accuracy may no longer + hold. + +** 2nd-order accuracy has NOT been verified for the UNSTABLE solution diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh b/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh new file mode 100644 index 0000000000..ae41070615 --- /dev/null +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f JeansInstabilityComoving_* diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh b/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh new file mode 100644 index 0000000000..8d1303f304 --- /dev/null +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --hdf5=true --gpu=true --fftw=FFTW3 --double=true \ + --model=ELBDM --gravity=true --comoving=true "$@" diff --git a/example/test_problem/ELBDM/JeansInstabilityComoving/plot.gpt b/example/test_problem/ELBDM/JeansInstabilityComoving/plot.gpt new file mode 100644 index 0000000000..f51dbad915 --- /dev/null +++ b/example/test_problem/ELBDM/JeansInstabilityComoving/plot.gpt @@ -0,0 +1,90 @@ +reset + + +# target files +# ----------------------------------------------------------- +FILE_IN_PREFIX = 'JeansInstabilityComoving_Dens' +FILE_IN_SUFFIX = '' +FILE_OUT_PREFIX = 'Fig__JeansInstabilityComoving_Dens' +START_ID = 0 +END_ID = 2 +DELTA_ID = 1 +PAUSE = -1.0 # <= 0.0 --> mouse + + +# terminal +# ----------------------------------------------------------- + set term x11 enhanced +#set term png enhanced crop size 1280,800 +#set term postscript eps enhanced color 'Helvetica' 16 + + +# plot style +# ----------------------------------------------------------- +#set log xy + set key reverse Left spacing 2 right +#set key reverse Left spacing 1 at first 1.5e2, 1e8 +#set xlabel "r (kpc)" +#set ylabel "Density" +#set format x "10^{%T}" +#set format y "10^{%T}" + set pointsize 1.0 + set size square +#set xrange [3.0e-2:1e2] + set yrange [1.0-5.0e-6:1.0+5.0e-6] +#set yrange [1.0-1.0e-7:1.0+1.0e-7] + + +# constants +# ----------------------------------------------------------- + + +# set the output file extension automatically +# ----------------------------------------------------------- +if ( GPVAL_TERM eq 'pngcairo' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'png' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'postscript' ) FILE_OUT_EXT='eps'; \ +else if ( GPVAL_TERM ne 'x11' ) print 'Unkown terminal for settting the output file extension !!'; quit + + + +# loop over all files +# ----------------------------------------------------------- +print "Start plotting ..." + +do for [ID=START_ID:END_ID:DELTA_ID] { + +# set the input and output filenames + FILE_IN = sprintf( '%s_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + + if ( GPVAL_TERM ne 'x11' ) { set output sprintf( '%s_%06d.%s', FILE_OUT_PREFIX, ID, FILE_OUT_EXT ) } + + +# load the physical time + DUMP_TABLE = './Record__Dump' + NHEADER = 1 + LOAD_TIME = sprintf( "awk '{if(NR==%d+%d) {print $2}}' %s", NHEADER, ID+1, DUMP_TABLE ) + TIME = system( LOAD_TIME )*1.0 # *1.0 --> convert string to number + + +# set title + set title sprintf( 'DataID %06d (t = %9.3e)', ID, TIME ) + print sprintf( ' Plotting DataID %06d (t = %9.3e) ...', ID, TIME ) + + +# plot + first = 0 + + plot FILE_IN u 1:2 w p pt 6 lc 7 title 'Simulation' \ + ,FILE_IN u 1:3 w l lc 8 title 'Analytical' + + + if ( GPVAL_TERM eq 'x11' ) { if ( PAUSE <= 0.0 ) { pause mouse } else { pause PAUSE } }; + +} #do for [ID=START_ID:END_ID:DELTA_ID] + + +print "Done"; +if ( GPVAL_TERM eq 'x11' ) { pause -1 }; + + diff --git a/example/test_problem/ELBDM/LSS/Input__DumpTable b/example/test_problem/ELBDM/LSS/Input__DumpTable new file mode 100644 index 0000000000..ed83f98be3 --- /dev/null +++ b/example/test_problem/ELBDM/LSS/Input__DumpTable @@ -0,0 +1,75 @@ +#Dump ID Dump Time + -6 0.0003124024000000 + -5 0.0005000000000000 + -4 0.0010000000000000 + -3 0.0050000000000000 + -2 0.0100000000000000 + -1 0.0500000000000000 + 0 0.0909090920000000 + 1 0.0965026241318910 + 2 0.1022642090403268 + 3 0.1081941087346143 + 4 0.1142926268126806 + 5 0.1205601122484320 + 6 0.1269969647105442 + 7 0.1336036403511835 + 8 0.1403806580959482 + 9 0.1473286064683999 + 10 0.1544481509848806 + 11 0.1617400421578968 + 12 0.1692051241492372 + 13 0.1768443441172066 + 14 0.1846587623059424 + 15 0.1926495629287682 + 16 0.2008180659019670 + 17 0.2091657394902689 + 18 0.2176942139307767 + 19 0.2264052961080286 + 20 0.2353009853594673 + 21 0.2443834904977440 + 22 0.2536552481440784 + 23 0.2631189424752950 + 24 0.2727775264961512 + 25 0.2826342449581185 + 26 0.2926926590557780 + 27 0.3029566730423398 + 28 0.3134305629162865 + 29 0.3241190073415501 + 30 0.3350271209736094 + 31 0.3461604903730460 + 32 0.3575252126958853 + 33 0.3691279373558860 + 34 0.3809759108571344 + 35 0.3930770249951319 + 36 0.4054398686204628 + 37 0.4180737831506303 + 38 0.4309889220031104 + 39 0.4441963141073136 + 40 0.4577079316383287 + 41 0.4715367621075627 + 42 0.4856968849564935 + 43 0.5002035528497360 + 44 0.5150732779850334 + 45 0.5303239239818458 + 46 0.5459748043551692 + 47 0.5620467893434200 + 48 0.5785624241065474 + 49 0.5955460632772550 + 50 0.6130240298474579 + 51 0.6310248107977570 + 52 0.6495793081783160 + 53 0.6687211729389841 + 54 0.6884872598419996 + 55 0.7089182546757654 + 56 0.7300595373040358 + 57 0.7519623492947621 + 58 0.7746853173110612 + 59 0.7982963071149658 + 60 0.8228743661061253 + 61 0.8485109691809872 + 62 0.8753084975593694 + 63 0.9033709686008084 + 64 0.9327759052183688 + 65 0.9635055660148353 + 66 0.9953073615712860 +***************END LINE*************** diff --git a/example/test_problem/ELBDM/LSS/Input__Flag_Lohner b/example/test_problem/ELBDM/LSS/Input__Flag_Lohner new file mode 100644 index 0000000000..be1ac371bb --- /dev/null +++ b/example/test_problem/ELBDM/LSS/Input__Flag_Lohner @@ -0,0 +1,13 @@ +# Level Threshold_Refine Threshold_Derefine Filter Soften MinDensity + 0 0.580 0.580 0.80 960.0 0.00 + 1 0.580 0.580 0.80 960.0 0.00 + 2 0.580 0.580 0.80 960.0 0.00 + 3 0.580 0.580 0.80 960.0 0.00 + 4 0.580 0.580 0.80 960.0 0.00 + 5 0.580 0.580 0.80 960.0 0.00 + 6 0.580 0.580 0.80 960.0 0.00 + 7 0.580 0.580 0.80 960.0 0.00 + 8 0.580 0.580 0.80 960.0 0.00 + 9 0.580 0.580 0.80 960.0 0.00 + 10 0.580 0.580 0.80 960.0 0.00 + 11 0.580 0.580 0.80 960.0 0.00 diff --git a/example/test_problem/ELBDM/LSS/Input__Flag_Rho b/example/test_problem/ELBDM/LSS/Input__Flag_Rho new file mode 100644 index 0000000000..1bd652dad0 --- /dev/null +++ b/example/test_problem/ELBDM/LSS/Input__Flag_Rho @@ -0,0 +1,13 @@ +# Level Density + 0 8.0 + 1 64.0 + 2 512.0 + 3 4096.0 + 4 32768.0 + 5 262144.0 + 6 2097152.0 + 7 16777216.0 + 8 134217728.0 + 9 1073741824.0 + 10 8589934592.0 + 11 68719476736.0 diff --git a/example/test_problem/ELBDM/LSS/Input__Parameter b/example/test_problem/ELBDM/LSS/Input__Parameter new file mode 100644 index 0000000000..1c4a252d3d --- /dev/null +++ b/example/test_problem/ELBDM/LSS/Input__Parameter @@ -0,0 +1,217 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.4 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 256 # number of base-level cells along x +NX0_TOT_Y 256 # number of base-level cells along y +NX0_TOT_Z 256 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1009 # test problem ID [0] + # 1009: ELBDM large-scale structure cosmological simulation + + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 1 # gravity boundary condition: (1=periodic, 2=isolated) + + +# cosmology (COMOVING only) +A_INIT 3.124024e-4 # initial scale factor +OMEGA_M0 0.2835 # omega matter at the present time +HUBBLE0 0.6955 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + + +# time-step +DT__MAX -1.0 # dt criterion: maximum allowed dt (<0=off) [-1.0] +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 3 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 1 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 1 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 8.0e-23 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 3 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 0 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NLEVEL 1 # number of AMR levels UM_IC [1] --> edit "Input__UM_IC_RefineRegion" if >1 +OPT__UM_IC_NVAR 1 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] +OPT__FFTW_STARTUP -1 # initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 1 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 0 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 3 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/LSS/Input__TestProb b/example/test_problem/ELBDM/LSS/Input__TestProb new file mode 100644 index 0000000000..649ad3909f --- /dev/null +++ b/example/test_problem/ELBDM/LSS/Input__TestProb @@ -0,0 +1,2 @@ +# problem-specific runtime parameters +LSS_InitMode 1 # initialization mode: (1=density-only with constant phase, 2=real and imaginary parts or density and phase) [1] diff --git a/example/test_problem/ELBDM/LSS/README b/example/test_problem/ELBDM/LSS/README new file mode 100644 index 0000000000..b103b45e74 --- /dev/null +++ b/example/test_problem/ELBDM/LSS/README @@ -0,0 +1,32 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY, COMOVING +Disable: PARTICLE + + +Default setup: +======================================== +1. ELBDM_MASS 8.0e-23 (eV/c^2) + A_INIT 3.124024e-4 + OMEGA_M0 0.2835 + HUBBLE0 0.6955 + BOX_SIZE 1.4 (Mpc/h) + +2. MAX_LEVEL 3 + OPT__FLAG_RHO 1 + OPT__FLAG_LOHNER_DENS 1 + --> Input__Flag_Rho = example/input/Input__Flag_Rho8 + Input__Flag_Lohner = example/input/Input__Flag_Lohner__FLASH1_LSS_DH3.0 + + +Note: +======================================== +1. Cosmological large-scale structure simulations + +2. Download the IC file: sh download_ic.sh + +3. Default maximum resolution is low + --> Only 1.4/(256*2^3) ~ 0.7 kpc/h (comoving) + --> Can only marginally resolve a central soliton + +4. Some yt visualization scripts are put in "plot_script" diff --git a/example/test_problem/ELBDM/LSS/clean.sh b/example/test_problem/ELBDM/LSS/clean.sh new file mode 100644 index 0000000000..72cc1fb33f --- /dev/null +++ b/example/test_problem/ELBDM/LSS/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/LSS/download_ic.sh b/example/test_problem/ELBDM/LSS/download_ic.sh new file mode 100644 index 0000000000..fa6c23f98d --- /dev/null +++ b/example/test_problem/ELBDM/LSS/download_ic.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +LOCAL_FILENAME="Music_InitCondition_z3200_L1.4_N0256_s1002" +FILE_ID="6780d8d6999605c485c8dea0" +FILE_SHA256="114fd2a0d37e70ba7bd06907c878bd1c752ea76882ad1833af165696eef8cf9d" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. link +ln -s ${LOCAL_FILENAME} UM_IC diff --git a/example/test_problem/ELBDM/LSS/generate_make.sh b/example/test_problem/ELBDM/LSS/generate_make.sh new file mode 100644 index 0000000000..2a102095a1 --- /dev/null +++ b/example/test_problem/ELBDM/LSS/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true --comoving=true "$@" diff --git a/example/test_problem/ELBDM/LSS/plot_script/plot__proj-z-dens.py b/example/test_problem/ELBDM/LSS/plot_script/plot__proj-z-dens.py new file mode 100644 index 0000000000..670924ac82 --- /dev/null +++ b/example/test_problem/ELBDM/LSS/plot_script/plot__proj-z-dens.py @@ -0,0 +1,47 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Projection of mass density' ) + +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +field = 'density' +colormap_dens = 'algae' +center_mode = 'c' +dpi = 150 + +yt.enable_parallelism() +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + pz_dens = yt.ProjectionPlot( ds, 'z', field, center=center_mode ) + + pz_dens.set_zlim( field, 1.0e-5, 1.0e-2 ) + pz_dens.set_cmap( field, colormap_dens ) + pz_dens.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + + pz_dens.save( mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/LSS/plot_script/plot__slice-z-real.py b/example/test_problem/ELBDM/LSS/plot_script/plot__slice-z-real.py new file mode 100644 index 0000000000..ed37df1f59 --- /dev/null +++ b/example/test_problem/ELBDM/LSS/plot_script/plot__slice-z-real.py @@ -0,0 +1,49 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Slice of mass density' ) + +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='../' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +field = 'Real' +colormap_dens = 'inferno' +center_mode = 'c' +dpi = 150 + +yt.enable_parallelism() +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + sz_dens = yt.SlicePlot( ds, 'z', field, center=center_mode ) + + sz_dens.set_zlim( field, -1.0e0, +1.0e0 ) + sz.set_log( field, False ) + sz_dens.set_cmap( field, colormap_dens ) + sz_dens.annotate_timestamp( time_unit='Gyr', corner='upper_right' ) + sz_dens.annotate_grids() + + sz_dens.save( mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__DumpTable b/example/test_problem/ELBDM/LSS_Hybrid/Input__DumpTable new file mode 100644 index 0000000000..ed83f98be3 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__DumpTable @@ -0,0 +1,75 @@ +#Dump ID Dump Time + -6 0.0003124024000000 + -5 0.0005000000000000 + -4 0.0010000000000000 + -3 0.0050000000000000 + -2 0.0100000000000000 + -1 0.0500000000000000 + 0 0.0909090920000000 + 1 0.0965026241318910 + 2 0.1022642090403268 + 3 0.1081941087346143 + 4 0.1142926268126806 + 5 0.1205601122484320 + 6 0.1269969647105442 + 7 0.1336036403511835 + 8 0.1403806580959482 + 9 0.1473286064683999 + 10 0.1544481509848806 + 11 0.1617400421578968 + 12 0.1692051241492372 + 13 0.1768443441172066 + 14 0.1846587623059424 + 15 0.1926495629287682 + 16 0.2008180659019670 + 17 0.2091657394902689 + 18 0.2176942139307767 + 19 0.2264052961080286 + 20 0.2353009853594673 + 21 0.2443834904977440 + 22 0.2536552481440784 + 23 0.2631189424752950 + 24 0.2727775264961512 + 25 0.2826342449581185 + 26 0.2926926590557780 + 27 0.3029566730423398 + 28 0.3134305629162865 + 29 0.3241190073415501 + 30 0.3350271209736094 + 31 0.3461604903730460 + 32 0.3575252126958853 + 33 0.3691279373558860 + 34 0.3809759108571344 + 35 0.3930770249951319 + 36 0.4054398686204628 + 37 0.4180737831506303 + 38 0.4309889220031104 + 39 0.4441963141073136 + 40 0.4577079316383287 + 41 0.4715367621075627 + 42 0.4856968849564935 + 43 0.5002035528497360 + 44 0.5150732779850334 + 45 0.5303239239818458 + 46 0.5459748043551692 + 47 0.5620467893434200 + 48 0.5785624241065474 + 49 0.5955460632772550 + 50 0.6130240298474579 + 51 0.6310248107977570 + 52 0.6495793081783160 + 53 0.6687211729389841 + 54 0.6884872598419996 + 55 0.7089182546757654 + 56 0.7300595373040358 + 57 0.7519623492947621 + 58 0.7746853173110612 + 59 0.7982963071149658 + 60 0.8228743661061253 + 61 0.8485109691809872 + 62 0.8753084975593694 + 63 0.9033709686008084 + 64 0.9327759052183688 + 65 0.9635055660148353 + 66 0.9953073615712860 +***************END LINE*************** diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Interference b/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Interference new file mode 100644 index 0000000000..2cdbf69876 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Interference @@ -0,0 +1,12 @@ +# Level QP Density PhaseLap OnlyAtExtrema + 0 0.03 0 1.0 0 + 1 0.03 0 1.0 0 + 2 0.03 0 1.0 0 + 3 0.03 0 1.0 0 + 4 0.03 0 1.0 0 + 5 0.03 0 1.0 0 + 6 0.03 0 1.0 0 + 7 0.03 0 1.0 0 + 8 0.03 0 1.0 0 + 9 0.03 0 1.0 0 + 10 0.03 0 1.0 0 diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Rho b/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Rho new file mode 100644 index 0000000000..1bd652dad0 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Rho @@ -0,0 +1,13 @@ +# Level Density + 0 8.0 + 1 64.0 + 2 512.0 + 3 4096.0 + 4 32768.0 + 5 262144.0 + 6 2097152.0 + 7 16777216.0 + 8 134217728.0 + 9 1073741824.0 + 10 8589934592.0 + 11 68719476736.0 diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Spectral b/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Spectral new file mode 100644 index 0000000000..95af8126fc --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__Flag_Spectral @@ -0,0 +1,13 @@ +# Level Refinement Derefinement (derefinement currently not functional) + 0 1.0 -1.0 + 1 1.0 -1.0 + 2 1.0 -1.0 + 3 1.0 -1.0 + 4 1.0 -1.0 + 5 1.0 -1.0 + 6 1.0 -1.0 + 7 1.0 -1.0 + 8 1.0 -1.0 + 9 1.0 -1.0 + 10 1.0 -1.0 + 11 1.0 -1.0 diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter b/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter new file mode 100644 index 0000000000..8bcd29b50e --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__Parameter @@ -0,0 +1,228 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + +# simulation scale +BOX_SIZE 2.8 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 64 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1009 # test problem ID [0] + # 1009: ELBDM large-scale structure cosmological simulation + + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_POT 1 # gravity boundary condition: (1=periodic, 2=isolated) + + +# cosmology (COMOVING only) +A_INIT 9.900990099e-3 # initial scale factor +OMEGA_M0 0.3158230904284232 # omega matter at the present time +HUBBLE0 0.6732117 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + + +# time-step +DT__MAX -1.0 # dt criterion: maximum allowed dt (<0=off) [-1.0] +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 0.8 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [0.8] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +REFINE_NLEVEL 1 # number of new AMR levels to be created at once during refinement [1] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 6 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 1 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 1 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL 1 # flag: spectral refinement (Input__Flag_Spectral) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL_N 2 # number of pol. coefficients to use for spectral refinement [2] ##ELBDM ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) +OPT__LB_EXCHANGE_FATHER 1 # exchange all cells of all father patches during load balancing (must enable for hybrid scheme + MPI) [0 usually, 1 for ELBDM_HYBRID] ## ELBDM_HYBRID ONLY### + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 2.0e-23 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 1 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL 4 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 3 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 2 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NLEVEL 1 # number of AMR levels UM_IC [1] --> edit "Input__UM_IC_RefineRegion" if >1 +OPT__UM_IC_NVAR 2 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 0 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_XY_INSTEAD_DEPHA 1 # interpolate x and y (real and imaginary parts in current implementation) + # around vortices instead of density and phase for the spectral interpolation, + # which has the advantage of being well-defined across vortices [1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_VORTEX_THRESHOLD 0.1 # vortex detection threshold for SPEC_INT_XY_INSTEAD_DEPHA [0.1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_GHOST_BOUNDARY 4 # ghost boundary size for spectral interpolation [4] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 1 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 3 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/LSS_Hybrid/Input__TestProb b/example/test_problem/ELBDM/LSS_Hybrid/Input__TestProb new file mode 100644 index 0000000000..65c99d8150 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/Input__TestProb @@ -0,0 +1,2 @@ +# problem-specific runtime parameters +LSS_InitMode 2 # initialization mode: (1=density-only with constant phase, 2=real and imaginary parts or density and phase) [1] diff --git a/example/test_problem/ELBDM/LSS_Hybrid/README b/example/test_problem/ELBDM/LSS_Hybrid/README new file mode 100644 index 0000000000..e39786c0d6 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/README @@ -0,0 +1,66 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, ELBDM_SCHEME=ELBDM_HYBRID, GRAVITY, COMOVING +Disable: PARTICLE + + +Default setup: +======================================== +1. ELBDM_MASS 2.0e-23 (eV/c^2) + A_INIT 9.900990099e-3 # initial scale factor + OMEGA_M0 0.3158230904284232 # omega matter at the present time + HUBBLE0 0.6732117 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + BOX_SIZE 2.8 (Mpc/h) + +2. MAX_LEVEL 6 + OPT__FLAG_SPECTRAL 1 + OPT__FLAG_INTERFERENCE 1 + --> Input__Flag_Rho = example/input/Input__Flag_Rho8 + Input__Flag_Spectral = example/input/Input__Flag_Spectral + Input__Flag_Interference = example/input/Input__Flag_Interference + + +Note: +======================================== +1. Cosmological large-scale structure simulations using hybrid scheme + +2. Quickstart: + 1. Download the IC file: "sh download_light_halo_ic.sh" or "sh download_heavy_halo_ic.sh" + 2. For spectral interpolation: + - Download spectral interpolation tables with "sh download_spectral_interpolation_tables.sh" + - Set OPT__FLU_INT_SCHEME and OPT__REF_FLU_INT_SCHEME to 8 + 3. Compile GAMER and run simulation to redshift 0 with default settings. + +3. Explanation: + 1. IC + The wave IC consisting of two blocks of real and imaginary parts are converted to hybrid IC + consisting of two blocks with the density and phase fields using the Python script "elbdm_wave_to_hybrid_IC.py" + + It can be used as follows: + ```python elbdm_wave_to_hybrid_IC.py -resolution 256 -input UM_IC_wave -output UM_IC_hybrid``` + to convert the input file "UM_IC_wave" with a resolution of 256 points in each dimension to the output hybrid IC "UM_IC_hybrid". Optionally, it accepts the keyword -float8 for double precision input data. + The conversion is only well-defined if the IC do not contain vortices, i.e. at high redshift for cosmological IC. + + In a second step, the initial conditions can be rescaled using the Python script "elbdm_rescale_periodic_ic.py". + It can be used as follows: + ```python elbdm_rescale_periodic_ic.py -n_in 256 -n_out 64 -input UM_IC_high_resolution -output UM_IC_low_resolution``` + and supports up- and downscaling periodic wave and hybrid IC. Optionally, it accepts the keyword -float8 for double precision input data. + 2. Interpolation tables + The tables can be recreated by calling "mpirun -n 16 python3 tool/table_maker/GramFE/compute_interpolation_tables.py". INT_SPEC_TABLE_PATH (default = "./") must be set to a folder containing the folders "interpolation_tables" and "boundary2extension_tables" + +3. The simulation uses a low base-level resolution of 2.8 Mpc/h / 64 ~ 44 kpc/h (comoving). + This corresponds to a maximum wave vector k ~ 72 h/Mpc well above the cutoff power in the initial conditions for m = 2.0e-23 eV. This initial resolution has shown very good agreement with higher resolution wave initial conditions. + +4. The simulation uses the fluid solver on levels 0 - 3 and switches to the wave solver in regions of interference on level 4. + The corresponding runtime parameter "ELBDM_FIRST_WAVE_LEVEL" is set to 4. + + The resolution for the first level using the wave solver is 2.8 Mpc/h /(64*2^4) ~ 2.75 kpc/h (comoving) with these settings. + This resolution has shown to be a good compromise for the starting resolution of the wave solver. + Note that increasing "ELBDM_FIRST_WAVE_LEVEL" will affect performance since it will likely lead to overrefinement. However, it should increase the accuracy of the hybrid scheme. + On the contrary, decreasing "ELBDM_FIRST_WAVE_LEVEL" will lead to a lower-resolution at the wave-fluid boundary (regardless of MAX_LEVEL and REFINE_NLEVEL) and will negatively affect the accuracy of the solver. + +3. Default maximum resolution is low + --> Only 2.8/(64*2^6) ~ 0.7 kpc/h (comoving) + --> Can only marginally resolve a central soliton + +4. Some yt visualization scripts are put in "plot_script" \ No newline at end of file diff --git a/example/test_problem/ELBDM/LSS_Hybrid/clean.sh b/example/test_problem/ELBDM/LSS_Hybrid/clean.sh new file mode 100644 index 0000000000..72cc1fb33f --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh b/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh new file mode 100644 index 0000000000..cdf8f8557f --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/download_heavy_halo_ic.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +LOCAL_FILENAME="Music_InitCondition_z100_L2.8_N0256_HeavyHalo" +FILE_ID="6780d9d2999605c485c8dea9" +FILE_SHA256="2f15920763e6189abd81b6f39fd283ebeeb6b6b90dbbce0eb898d098ef4b497d" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. link +ln -sf ${LOCAL_FILENAME} UM_IC_wave_heavy +python3 elbdm_wave_to_hybrid_IC.py -input UM_IC_wave_heavy -output UM_IC_hybrid_heavy -resolution 256 +ln -sf UM_IC_hybrid_heavy UM_IC diff --git a/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh b/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh new file mode 100644 index 0000000000..0143dd78d6 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/download_light_halo_ic.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +LOCAL_FILENAME="Music_InitCondition_z100_L2.8_N0064_LightHalo" +FILE_ID="6780d97e999605c485c8dea6" +FILE_SHA256="89e1626405e38e3bd756167e3c06719f193456aa8e7d210ddfd13246df0e1a91" + +# 1. clean +rm UM_IC* + +# 2. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 3. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 4. link +python3 elbdm_rescale_periodic_IC.py -input ${LOCAL_FILENAME} -output Music_InitCondition_z100_L2.8_N0256_LightHalo -n_in 64 -n_out 256 +ln -sf Music_InitCondition_z100_L2.8_N0256_LightHalo UM_IC_wave_light +python3 elbdm_wave_to_hybrid_IC.py -input UM_IC_wave_light -output UM_IC_hybrid_light -resolution 256 +ln -sf UM_IC_hybrid_light UM_IC diff --git a/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh b/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh new file mode 100644 index 0000000000..cc4b930d41 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/download_spectral_interpolation_tables.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +LOCAL_FILENAME="spectral_tables.zip" +FILE_ID="6780d950999605c485c8dea3" +FILE_SHA256="304fb4d098d6ad6f6533f137fc78a4d05d2abf7c239392be29f694503410247f" + +# 1. clean +rm -r spectral_tables* + +# 2. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 3. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 4. unzip +unzip ${LOCAL_FILENAME} +rm ${LOCAL_FILENAME} diff --git a/example/test_problem/ELBDM/LSS_Hybrid/elbdm_rescale_periodic_IC.py b/example/test_problem/ELBDM/LSS_Hybrid/elbdm_rescale_periodic_IC.py new file mode 100644 index 0000000000..7754686f60 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/elbdm_rescale_periodic_IC.py @@ -0,0 +1,128 @@ +from __future__ import print_function, division # Ensure Python 2/3 compatibility + +import numpy as np +import sys +import argparse + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Rescale periodic GAMER ELBDM initial conditions. \n\ + Example usage: ./elbdm_rescale_periodic_ic.py -n_in 256 -n_out 64 -input UM_IC_high_resolution -output UM_IC_low_resolution') + +# Define command-line arguments +parser.add_argument('-float8', action='store', required=False, type=bool, dest='float8', + help='assume double precision for input and output file', default=False) +parser.add_argument('-n_in', action='store', required=True, type=int, dest='n_in', + help='input file resolution') +parser.add_argument('-n_out', action='store', required=True, type=int, dest='n_out', + help='output file resolution') +parser.add_argument('-input', action='store', required=False, type=str, dest='input', + help='input file [%(default)s]', default='./UM_IC_lr') +parser.add_argument('-output', action='store', required=False, type=str, dest='output', + help='output file [%(default)s]', default='./UM_IC') + +# Parse the command-line arguments +args = parser.parse_args() + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t]), end=' ') +print('') +print('-------------------------------------------------------------------\n') + +# Set up interpolation parameters +input_file = args.input +output_file = args.output +n_in = args.n_in +n_out = args.n_out +float8 = args.float8 # Enable double precision + +if float8: + rprec = np.double + cprec = np.cdouble +else: + rprec = np.float32 + cprec = np.complex64 + +# Credit to stackoverflow user Bily for this unpadding function +def unpad(x, pad_width): + slices = [] + for c in pad_width: + e = None if c[1] == 0 else -c[1] + slices.append(slice(c[0], e)) + return x[tuple(slices)] + +def interp(psi, n_in, n_out): + if n_in == n_out: + print("n_in == n_out, no rescaling necessary!") + return psi + + n_total = np.prod(psi.shape) + + # Compute fft of array + print("Computing FFT... ", end="") + # Divide by n_total for forward normalisation + psihat = np.fft.fftn(psi) / n_total + print("done!") + + # Free input arrays to save memory + del psi + + # Shift zero frequencies to center of cube + psihat = np.fft.fftshift(psihat) + + # Upscale + if n_out > n_in: + # Pad cube from the outside + n_pad = int(np.floor(n_out / 2 - n_in / 2)) + psihat = np.pad(psihat, ((n_pad, n_pad), (n_pad, n_pad), (n_pad, n_pad)), mode="constant") + # Downscale + elif n_in > n_out: + # Unpad cube from the outside + n_pad = int(np.floor(n_in / 2 - n_out / 2)) + psihat = unpad(psihat, ((n_pad, n_pad), (n_pad, n_pad), (n_pad, n_pad))) + + # Shift zero frequencies back to outside of cube + psihat = np.fft.fftshift(psihat) + + print("Computing IFFT... ", end="") + + # Inverse FFT + psihr = np.fft.ifftn(psihat) + + # Multiply by new n_total to undo backward normalisation + psihr *= np.prod(psihr.shape) + + print("done!") + + # Delete large array in frequency domain to save memory + del psihat + + return psihr + +# Load binary from file +print("Loading input data... ", end="") +lr = np.fromfile(input_file, dtype=rprec).reshape((2, n_in, n_in, n_in)) +psi = lr[0, :, :, :] + 1j * lr[1, :, :, :] +psi = psi.astype(cprec) +del lr +print("done!") + +# Interpolate data +psihr = interp(psi, n_in, n_out).astype(cprec) + +# Write data to disk +print("Writing wave function to binary file... ", end="") + +# Overwrite output file with real part +with open(output_file, "wb") as f: + np.real(psihr).astype(rprec).tofile(f) + f.close() + +# Append imaginary part +with open(output_file, "ab") as f: + np.imag(psihr).astype(rprec).tofile(f) + f.close() + +print("done!") diff --git a/example/test_problem/ELBDM/LSS_Hybrid/elbdm_wave_to_hybrid_IC.py b/example/test_problem/ELBDM/LSS_Hybrid/elbdm_wave_to_hybrid_IC.py new file mode 100644 index 0000000000..c89eb336b3 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/elbdm_wave_to_hybrid_IC.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +import os +import h5py +import subprocess +import re +import sys +import numpy as np +import argparse + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Convert GAMER ELBDM wave (RE/IM) IC to hybrid (DENS/PHASE) IC. \n \ + Example usage: python elbdm_wave_to_hybrid_IC.py -resolution 256 -input UM_IC_wave -output UM_IC_hybrid.\n\ + Conversion is well-defined only if initial conditions do not contain vortices, i.e. at high redshift for cosmological IC.') + +# Define command-line arguments +parser.add_argument('-float8', action='store', required=False, type=bool, dest='float8', + help='assume double precision for input and output file', default=False) +parser.add_argument('-resolution', action='store', required=True, type=int, dest='resolution', + help='input file resolution') +parser.add_argument('-input', action='store', required=True, type=str, dest='input', + help='input file') +parser.add_argument('-output', action='store', required=True, type=str, dest='output', + help='output file') + +args = parser.parse_args() + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t]), end=' ') +print('') +print('-------------------------------------------------------------------\n') + +# Set up interpolation parameters +input_file = args.input +output_file = args.output +resolution = args.resolution +float8 = args.float8 # Enable double precision + +if float8: + dtype = np.double +else: + dtype = np.single + +print("Reading wave IC from input file...") +binary = np.fromfile(input_file, dtype=dtype) +binary = binary.reshape((2, resolution, resolution, resolution)) + +re = binary[0, :, :, :] +im = binary[1, :, :, :] +ph = np.arctan2(im, re) +de = re**2 + im**2 + +# Unwrap phase +ph = np.unwrap(ph, axis=0) +ph = np.unwrap(ph, axis=1) +ph = np.unwrap(ph, axis=2) +binary[0, :, :, :] = de +binary[1, :, :, :] = ph + +print("Writing hybrid IC to output file...") +with open(output_file, "wb") as f: + binary.tofile(f) + f.close() diff --git a/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh b/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh new file mode 100644 index 0000000000..81c9fba21b --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/generate_make.sh @@ -0,0 +1,7 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --wave_scheme=WAVE_GRAMFE --gramfe_scheme=GRAMFE_MATMUL \ + --gravity=true --comoving=true --gsl=true --spectral_interpolation=true "$@" diff --git a/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_power_spectrum.py b/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_power_spectrum.py new file mode 100644 index 0000000000..2d81385eb7 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_power_spectrum.py @@ -0,0 +1,141 @@ +import argparse +import sys +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import yt +import numpy as np + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Power Spectrum Analysis') + +# Define command-line arguments +parser.add_argument('-i', action='store', required=False, type=str, dest='data_path', + help='data path prefix [%(default)s]', default='./') +parser.add_argument('-s', action='store', required=True, type=int, dest='start_index', + help='start data index') +parser.add_argument('-e', action='store', required=True, type=int, dest='end_index', + help='end data index') +parser.add_argument('-d', action='store', required=False, type=int, dest='index_step', + help='index step [%(default)d]', default=1) +parser.add_argument('--compare', action='store_true', dest='compare_with_linear', + help='compare with linear evolution (requires data with index 0 in data path) [%(default)d]', default=False) + +args = parser.parse_args() + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t])) +print('') +print('-------------------------------------------------------------------\n') + +start_index = args.start_index +end_index = args.end_index +index_step = args.index_step +data_path = args.data_path +compare_with_linear = args.compare_with_linear +dpi = 200 + +if compare_with_linear: + ds0 = yt.load(data_path + '/Data_%06d' % 0) + z0 = ds0.current_redshift + a0 = 1 / (1 + z0) + + k0, P0 = np.loadtxt(data_path + '/PowerSpec_%06d' % 0, skiprows=3, unpack=True) + ds0.close() + +yt.enable_parallelism() +data_series = yt.DatasetSeries([data_path + '/Data_%06d' % idx for idx in range(start_index, end_index + 1, index_step)]) + +redshifts = [] +wave_numbers = [] +power_spectra = [] +linear_power_spectra = [] +relative_errors = [] + +for data_set in data_series.piter(): + current_index = int(str(data_set)[5:11]) + current_redshift = data_set.current_redshift + + k, P = np.loadtxt(data_path + '/PowerSpec_%06d' % current_index, skiprows=3, unpack=True) + scale_factor = 1 / (1 + current_redshift) + + redshifts.append(current_redshift) + wave_numbers.append(k) + power_spectra.append(P) + + if compare_with_linear: + + linear_power = (scale_factor / a0) ** 2 * P0 + linear_power_spectra.append(linear_power) + relative_error = (P - linear_power) / linear_power + relative_errors.append(relative_error) + + # Create and save comparison plots + fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, dpi=dpi, sharex=True) + plt.suptitle("Power spectra at z = %.2f" % current_redshift) + + ax1.plot(k, k ** 3 * P, label="Simulation") + ax1.plot(k, k ** 3 * linear_power, ls="dashed", lw=0.5, markersize=3, marker="o", markeredgecolor="k", label="Linear PT") + + ax2.plot(k, relative_error, marker="o", markeredgecolor="k", label="Simulation vs Linear PT") + + ax1.legend() + ax1.set_yscale("log") + ax1.set_xscale("log") + ax1.set_ylabel(r'$P(k) \cdot k^3') + + ax2.set_xscale("log") + ax2.set_yscale("symlog", linthreshy=1) + ax2.set_xlabel(r'$k$ in h/Mpc') + ax2.set_ylabel(r'$(P - P_{lin})/P_{lin}$') + ax2.legend() + plt.subplots_adjust(wspace=0, hspace=0) + + else: + # Create and save power spectrum plots without comparison + plt.figure(dpi=dpi) + plt.title("Power spectrum at z = %.2f" % current_redshift) + plt.plot(k, k ** 3 * P) + plt.yscale("log") + plt.xscale("log") + plt.ylabel(r'$P(k) \cdot k^3$') + plt.xlabel(r'$k$ in h/Mpc') + + # Save each power spectrum plot + output_file = 'Data_%06d_PS' % current_index + '.png' + plt.savefig(output_file) + plt.close() + +if compare_with_linear: + # Create and save a summary plot comparing power spectra with linear PT + fig, ax = plt.subplots(1, dpi=dpi) + plt.title("Power spectra (solid) vs linear PT (dashed)") + + for i in range(len(wave_numbers)): + color = next(ax._get_lines.prop_cycler)['color'] + ax.plot(wave_numbers[i], wave_numbers[i] ** 3 * power_spectra[i], color=color, label="z = %.2f" % redshifts[i]) + ax.plot(wave_numbers[i], wave_numbers[i] ** 3 * linear_power_spectra[i], color=color, lw=0.5, ls="dashed", + markersize=3, marker="o", markeredgecolor="k") + + ax.legend() + ax.set_yscale("log") + ax.set_xscale("log") + ax.set_ylabel(r'$P(k) \cdot k^3$') +else: + # Create and save a summary plot of power spectra without comparison + plt.figure(dpi=dpi) + plt.title("Power spectra") + for i in range(len(wave_numbers)): + plt.plot(wave_numbers[i], wave_numbers[i] ** 3 * power_spectra[i], label="z = %.2f" % redshifts[i]) + plt.yscale("log") + plt.xscale("log") + plt.ylabel(r'$P(k) \cdot k^3$') + plt.xlabel(r'$k$ in h/Mpc') + plt.legend() + +output_file = 'Data_%d_%d_%d_PS' % (start_index, end_index, index_step) + '.png' +plt.savefig(output_file) +plt.close() diff --git a/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_projection.py b/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_projection.py new file mode 100644 index 0000000000..6bac4e2622 --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_projection.py @@ -0,0 +1,60 @@ +import argparse +import sys +import yt + +# global parameter settings +field = ('gas', 'density') +axes = ["x", "y", "z"] # directions +lv = 10 # maximum level for sampling AMR grid +dpi = 300 +colormap_dens = 'viridis' +center_mode = 'c' + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Projection of mass density' ) + +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='./' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print(str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + + +yt.enable_parallelism() +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + num = '%s'%ds + num = int(num[5:11]) + for ax in axes: + ad = ds.all_data() + ad.max_level = lv + + pz_dens = yt.ProjectionPlot( ds, ax, field, center=center_mode, data_source=ad ) + + pz_dens.set_zlim( field, 1.0e-5, 1.0e-2 ) + pz_dens.set_cmap( field, colormap_dens ) + pz_dens.annotate_timestamp( time_unit='Gyr', redshift=True, corner='upper_right' ) + pz_dens.save('Data_%06d_Proj_%s_%s.png'%(num, ax, field[1]), mpl_kwargs={"dpi":dpi} ) + + pz_dens.annotate_grids() + pz_dens.save('Data_%06d_Proj_%s_%s_grid.png'%(num, ax, field[1]), mpl_kwargs={"dpi":dpi} ) diff --git a/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_slice.py b/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_slice.py new file mode 100644 index 0000000000..8f13675ffb --- /dev/null +++ b/example/test_problem/ELBDM/LSS_Hybrid/plot_script/plot_slice.py @@ -0,0 +1,83 @@ +import argparse +import sys +import yt +import numpy as np + +# Global parameter settings +fields = [("gas", "density"), ("gamer", "Phase")] # Fields to plot +axes = ["x", "y", "z"] # Directions +zoom_levels = [1, 3, 10] # Zoom levels +max_amr_level = 10 # Maximum level for sampling AMR grid +dpi = 300 +colormap = 'viridis' + + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Plot slices around halo') + +# Define command-line arguments +parser.add_argument('-i', action='store', required=False, type=str, dest='prefix', + help='path prefix [%(default)s]', default='./') +parser.add_argument('-s', action='store', required=True, type=int, dest='idx_start', + help='first data index') +parser.add_argument('-e', action='store', required=True, type=int, dest='idx_end', + help='last data index') +parser.add_argument('-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1) +parser.add_argument('-m', action='store', required=False, type=int, dest='plot_phase_mod_two_pi', + help='plot phase field modulo 2 pi [%(default)d]', default=0) + +args = parser.parse_args() + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t])) +print('') +print('-------------------------------------------------------------------\n') + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix +plot_phase_mod_two_pi = args.plot_phase_mod_two_pi + +if plot_phase_mod_two_pi: + + def calculate_phase_mod_two_pi(field, data): + return np.arctan2(np.sin(data["gamer", "Phase"]), np.cos(data["gamer", "Phase"])) + + yt.add_field(("gamer", "PhaseModTwoPi"), function=calculate_phase_mod_two_pi, sampling_type="local", units="") + fields[1] = ("gamer", "PhaseModTwoPi") + +yt.enable_parallelism() + +ts = yt.DatasetSeries([prefix + '/Data_%06d' % idx for idx in range(idx_start, idx_end + 1, didx)]) + +for ds in ts.piter(): + num = '%s' % ds + num = int(num[5:11]) + + ad = ds.all_data() + ad.max_level = max_amr_level + + loc = ad.quantities.max_location('density')[1:] + + for zoom in zoom_levels: + for ax in axes: + for field in fields: + sz = yt.SlicePlot(ds, ax, field, center=loc, data_source=ad) + sz.set_cmap(field, colormap) + if field[1] == "Phase": + sz.set_log(("gamer", "Phase"), False) + if field[1] == "PhaseModTwoPi": + sz.set_log(("gamer", "PhaseModTwoPi"), False) + sz.zoom(zoom) + sz.set_axes_unit('kpc') + sz.annotate_timestamp(time_unit='Gyr', redshift=True, corner='upper_right') + sz.save('Data_%06d_Lv_%02d_Slice_%s_%s_x%d.png' % (num, max_amr_level, ax, field[1], zoom), + mpl_kwargs={"dpi": dpi}) + sz.annotate_grids() + sz.save('Data_%06d_Lv_%02d_Slice_%s_%s_grid_x%d.png' % (num, max_amr_level, ax, field[1], zoom), + mpl_kwargs={"dpi": dpi}) diff --git a/example/test_problem/ELBDM/Perturbation/Input__Flag_Interference b/example/test_problem/ELBDM/Perturbation/Input__Flag_Interference new file mode 100644 index 0000000000..2cdbf69876 --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/Input__Flag_Interference @@ -0,0 +1,12 @@ +# Level QP Density PhaseLap OnlyAtExtrema + 0 0.03 0 1.0 0 + 1 0.03 0 1.0 0 + 2 0.03 0 1.0 0 + 3 0.03 0 1.0 0 + 4 0.03 0 1.0 0 + 5 0.03 0 1.0 0 + 6 0.03 0 1.0 0 + 7 0.03 0 1.0 0 + 8 0.03 0 1.0 0 + 9 0.03 0 1.0 0 + 10 0.03 0 1.0 0 diff --git a/example/test_problem/ELBDM/Perturbation/Input__Flag_Rho b/example/test_problem/ELBDM/Perturbation/Input__Flag_Rho new file mode 100644 index 0000000000..1bd652dad0 --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/Input__Flag_Rho @@ -0,0 +1,13 @@ +# Level Density + 0 8.0 + 1 64.0 + 2 512.0 + 3 4096.0 + 4 32768.0 + 5 262144.0 + 6 2097152.0 + 7 16777216.0 + 8 134217728.0 + 9 1073741824.0 + 10 8589934592.0 + 11 68719476736.0 diff --git a/example/test_problem/ELBDM/Perturbation/Input__Flag_Spectral b/example/test_problem/ELBDM/Perturbation/Input__Flag_Spectral new file mode 100644 index 0000000000..dc2692bf61 --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/Input__Flag_Spectral @@ -0,0 +1,13 @@ +# Level Refinement Derefinement (derefinement currently not functional) + 0 1.0 -1.0 + 1 1.0 -1.0 + 2 1.0 -1.0 + 3 1.0 -1.0 + 4 1.0 -1.0 + 5 1.0 -1.0 + 6 1.0 -1.0 + 7 1.0 -1.0 + 8 1.0 -1.0 + 9 1.0 -1.0 + 10 1.0 -1.0 + 11 1.0 -1.0 \ No newline at end of file diff --git a/example/test_problem/ELBDM/Perturbation/Input__Parameter b/example/test_problem/ELBDM/Perturbation/Input__Parameter new file mode 100644 index 0000000000..b57f4b133d --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/Input__Parameter @@ -0,0 +1,220 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + +# simulation scale +BOX_SIZE 30.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1011 # 1011: Perturbation on homogeneous background + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_POT 1 # gravity boundary condition: (1=periodic, 2=isolated) + + +# cosmology (COMOVING only) +A_INIT 9.900990099e-3 # initial scale factor +OMEGA_M0 0.3158230904284232 # omega matter at the present time +HUBBLE0 0.6732117 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + + +# time-step +DT__MAX -1.0 # dt criterion: maximum allowed dt (<0=off) [-1.0] +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 0.8 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [0.8] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +REFINE_NLEVEL 1 # number of new AMR levels to be created at once during refinement [1] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 3 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 1 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 1 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL 1 # flag: spectral refinement (Input__Flag_Spectral) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL_N 2 # number of pol. coefficients to use for spectral refinement [2] ##ELBDM ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) +OPT__LB_EXCHANGE_FATHER 1 # exchange all cells of all father patches during load balancing (must enable for hybrid scheme + MPI) [0 usually, 1 for ELBDM_HYBRID] ## ELBDM_HYBRID ONLY### + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 1 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL 3 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 2 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NVAR 2 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 0 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 0.1 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral b/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral new file mode 100644 index 0000000000..b4043c7c6a --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/Input__Parameter_BaseSpectral @@ -0,0 +1,219 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + +# simulation scale +BOX_SIZE 30.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 512 # number of base-level cells along x +NX0_TOT_Y 512 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1011 # 1011: Perturbation on homogeneous background + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) ##2/3 for HYDRO ONLY## +OPT__BC_POT 1 # gravity boundary condition: (1=periodic, 2=isolated) + + +# cosmology (COMOVING only) +A_INIT 9.900990099e-3 # initial scale factor +OMEGA_M0 0.3158230904284232 # omega matter at the present time +HUBBLE0 0.6732117 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + + +# time-step +DT__MAX -1.0 # dt criterion: maximum allowed dt (<0=off) [-1.0] +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 0.8 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [0.8] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +REFINE_NLEVEL 1 # number of new AMR levels to be created at once during refinement [1] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 3 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 1 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 1 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL 1 # flag: spectral refinement (Input__Flag_Spectral) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL_N 2 # number of pol. coefficients to use for spectral refinement [2] ##ELBDM ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) +OPT__LB_EXCHANGE_FATHER 1 # exchange all cells of all father patches during load balancing (must enable for hybrid scheme + MPI) [0 usually, 1 for ELBDM_HYBRID] ## ELBDM_HYBRID ONLY### + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 1 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 1 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL -1 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__UM_IC_LEVEL 2 # AMR level corresponding to UM_IC (must >= 0) [0] +OPT__UM_IC_NVAR 2 # number of variables in UM_IC: (1~NCOMP_TOTAL; <=0=auto) [HYDRO=5+passive/ELBDM=2] +OPT__UM_IC_FORMAT 1 # data format of UM_IC: (1=vzyx, 2=zyxv; row-major and v=field) [1] +OPT__UM_IC_DOWNGRADE 1 # downgrade UM_IC from level OPT__UM_IC_LEVEL to 0 [1] +OPT__UM_IC_REFINE 1 # refine UM_IC from level OPT__UM_IC_LEVEL to MAX_LEVEL [1] +OPT__UM_IC_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for loading UM_IC [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 0 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 0.1 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_RecordUser.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/ELBDM/Perturbation/Input__TestProb b/example/test_problem/ELBDM/Perturbation/Input__TestProb new file mode 100644 index 0000000000..98513c18ec --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/Input__TestProb @@ -0,0 +1,5 @@ +# problem-specific runtime parameters +Perturbation_BgAmp 1.0 # psi_perturbation(x,y,z) = BgAmp + sum_l,j,k Amp* exp(i k_x * l) exp (i k_y * j) exp(i k_z * k) +Perturbation_Amp 1e-2 # amplitude of perturbation +Perturbation_N 4 # number of Fourier modes in perturbation (Min: 1, Max: 4) [-1] +Perturbation_NDim 2 # switch between 1D, 2D and 3D problem; set amplitude of plane waves in other dimensions to zero (1=x-line, 2=x-y-plane, 3=x-y-z) [3] diff --git a/example/test_problem/ELBDM/Perturbation/README b/example/test_problem/ELBDM/Perturbation/README new file mode 100644 index 0000000000..4bf36e984c --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/README @@ -0,0 +1,18 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, HYBRID, GRAVITY +Disable: PARTICLE, COMOVING + +Default setup: +======================================== +1. Study gravitational collapse in one, two and three dimensions (2D by default) +2. Use periodic boundary conditions +3. Demonstrate refinement in hybrid scheme by using Input__Flag_Interference +4. Compared to JeansInstabilityComoving, this test also supports 1D, 2D and 3D collapse + +Note: +======================================== +1. Evolve small-amplitude plane waves on homogeneous background density +2. Perturbation_Amplitude is maximum amplitude of individual perturbations, Perturbation_BgAmplitude is amplitude of background density, Perturbation_N is number of Fourier modes in perturbation (maximum is 4) +3. Dimensionality of the problem can be set via Perturbation_NDim (set amplitude of plane waves in other dimensions to zero) +3. For reference simulation using base-level spectral method, use MODEL = WAVE and Input__Parameter_BaseSpectral and generate_make_BaseSpectral.sh diff --git a/example/test_problem/ELBDM/Perturbation/clean.sh b/example/test_problem/ELBDM/Perturbation/clean.sh new file mode 100644 index 0000000000..7d723b7e5a --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/clean.sh @@ -0,0 +1,8 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f Perturbation* diff --git a/example/test_problem/ELBDM/Perturbation/generate_make.sh b/example/test_problem/ELBDM/Perturbation/generate_make.sh new file mode 100644 index 0000000000..382fd3e78a --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/generate_make.sh @@ -0,0 +1,7 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --wave_scheme=WAVE_GRAMFE --gramfe_scheme=GRAMFE_MATMUL \ + --gravity=true --comoving=false --gsl=true --spectral_interpolation=true "$@" diff --git a/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh b/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh new file mode 100644 index 0000000000..18f8a3ea65 --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/generate_make_BaseSpectral.sh @@ -0,0 +1,7 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 \ + --model=ELBDM --elbdm_scheme=ELBDM_WAVE \ + --gravity=true --comoving=false \ No newline at end of file diff --git a/example/test_problem/ELBDM/Perturbation/plot_slice.py b/example/test_problem/ELBDM/Perturbation/plot_slice.py new file mode 100644 index 0000000000..67a191af3f --- /dev/null +++ b/example/test_problem/ELBDM/Perturbation/plot_slice.py @@ -0,0 +1,126 @@ +from __future__ import print_function, division, absolute_import + +import argparse +import sys +import yt +import matplotlib +matplotlib.use('Agg') # Use Agg backend for non-interactive plotting + +import matplotlib.pyplot as plt +import numpy as np + +from mpl_toolkits.axes_grid1 import AxesGrid + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Plot slices of wave function for the ELBDM test') + +# Define command-line arguments +parser.add_argument('-s', action='store', required=True, type=int, dest='idx_start', + help='first data index') +parser.add_argument('-e', action='store', required=True, type=int, dest='idx_end', + help='last data index') +parser.add_argument('-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1) +parser.add_argument('-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./') +parser.add_argument('-c', action='store', required=False, type=int, dest='convert_reim_to_phase', + help='convert real and imaginary part to phase for wave scheme [%(default)d]', default=0) + +args = parser.parse_args() # Parse the command-line arguments + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t]), end=' ') +print('') +print('-------------------------------------------------------------------\n') + +# Extract arguments from the parsed command-line arguments +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix +convert_reim_to_phase = args.convert_reim_to_phase + +if convert_reim_to_phase: + + def reim2phase(field, data): + return np.arctan2(data["gamer", "Imag"], data["gamer", "Real"]) + + yt.add_field(("gamer", "Phase"), function=reim2phase, sampling_type="local", units="") + +colormap = 'viridis' # Define the colormap for the plots +dpi = 150 # Define the DPI (dots per inch) for the saved plots + +# Create a series of datasets based on data files with indices in the specified range +dataset_series = yt.DatasetSeries([prefix + '/Data_%06d' % idx for idx in range(idx_start, idx_end + 1, didx)]) + +# Loop through each dataset in the series +for dataset in dataset_series.piter(): + axes = ["z"] # Specify the axes for slicing (e.g., "z" for z-axis slices) + + for current_axis in axes: + # Create a new figure for the current slice + fig = plt.figure(dpi=dpi, figsize=(24, 12)) + + # Create a grid of axes for multiple plots + grid = AxesGrid( + fig, + (0.075, 0.075, 0.85, 0.85), + nrows_ncols=(2, 2), + axes_pad=(0.2, 0.0), + label_mode="L", + share_all=True, + cbar_location="right", + cbar_mode="edge", + direction="row", + cbar_size="3%", + cbar_pad="0%", + ) + + # Define the fields to plot + fields_to_plot = [ + ("gas", "density"), + ("gamer", "Phase"), + ] + + # Create a slice plot for the current dataset and field + slice_plot = yt.SlicePlot(dataset, current_axis, fields_to_plot) + slice_plot.set_log(("gamer", "Phase"), False) + + slice_plot.annotate_grids(periodic=False) + + for field in fields_to_plot: + slice_plot.set_cmap(field, colormap) + + # For each plotted field, associate it with the corresponding AxesGrid axes + for i, field in enumerate(fields_to_plot): + plot = slice_plot.plots[field] + plot.figure = fig + plot.axes = grid[2 * i].axes + plot.cax = grid.cbar_axes[i] + + # Create a second slice plot for comparison + slice_plot_2 = yt.SlicePlot(dataset, current_axis, fields_to_plot) + slice_plot_2.set_log(("gamer", "Phase"), False) + + for field in fields_to_plot: + slice_plot_2.set_cmap(field, colormap) + + # Associate the second slice plot with the AxesGrid axes + for i, field in enumerate(fields_to_plot): + plot = slice_plot_2.plots[field] + plot.figure = fig + plot.axes = grid[2 * i + 1].axes + + # Redraw the plot on the AxesGrid axes + slice_plot._setup_plots() + slice_plot_2._setup_plots() + + # Get the DumpID from dataset parameters and save the plot + dump_id = dataset.parameters["DumpID"] + plt.savefig("Data_%06d_%s_axis.png" % (dump_id, current_axis)) + + # Close the current figure to release resources + plt.close() diff --git a/example/test_problem/ELBDM/PlaneWave/Input__Parameter b/example/test_problem/ELBDM/PlaneWave/Input__Parameter new file mode 100644 index 0000000000..906abcf034 --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/Input__Parameter @@ -0,0 +1,177 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 64 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1010 # test problem ID [0] + # 1010: ELBDM plane wave + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 2.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 2.0e-2 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 1 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/PlaneWave/Input__TestProb b/example/test_problem/ELBDM/PlaneWave/Input__TestProb new file mode 100644 index 0000000000..4a957dbebd --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/Input__TestProb @@ -0,0 +1,6 @@ +# problem-specific runtime parameters +PWave_NWavelength 2 # number of plane wave wavelength (will be reset to 3 times input value if PWave_XYZ == 3) [2] +PWave_Amp 1.0 # plane wave amplitude [1.0] +PWave_Phase0 0.0 # plane wave phase constant [0.0] +PWave_XYZ 0 # plane wave direction (0/1/2/3 --> x/y/z/diagonal) [0] +PWave_LSR 1 # plane wave direction (<0/0/>0 --> Left-moving/Standing/Right-moving) [1] diff --git a/example/test_problem/ELBDM/PlaneWave/README b/example/test_problem/ELBDM/PlaneWave/README new file mode 100644 index 0000000000..086d1d4dcc --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/README @@ -0,0 +1,16 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, FLOAT8, NCOMP_PASSIVE_USER=1 +Disable: GRAVITY, PARTICLE + + +Default setup: +======================================== +1. Evolve the plane wave for six periods +2. Apply the periodic BC + --> Set OPT__BC_FLU_* = 1 + + +Note: +======================================== +1. Only support 1D --> Use "PWave_XYZ" to control the propagation direction diff --git a/example/test_problem/ELBDM/PlaneWave/clean.sh b/example/test_problem/ELBDM/PlaneWave/clean.sh new file mode 100644 index 0000000000..852a524f5d --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f PlaneWave_* diff --git a/example/test_problem/ELBDM/PlaneWave/generate_make.sh b/example/test_problem/ELBDM/PlaneWave/generate_make.sh new file mode 100644 index 0000000000..7ab268371e --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM --double=True --passive=1 "$@" diff --git a/example/test_problem/ELBDM/PlaneWave/plot_Phase.gpt b/example/test_problem/ELBDM/PlaneWave/plot_Phase.gpt new file mode 100644 index 0000000000..8243f3de68 --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/plot_Phase.gpt @@ -0,0 +1,84 @@ +reset + + +# target files +# ----------------------------------------------------------- +FILE_IN_PREFIX = 'PlaneWave' +FILE_IN_SUFFIX = '' +FILE_OUT_PREFIX = 'Fig__PlaneWave' +START_ID = 0 +END_ID = 48 +DELTA_ID = 1 +PAUSE = -1.0 # <= 0.0 --> mouse + + +# terminal +# ----------------------------------------------------------- + set term x11 enhanced +#set term png enhanced crop size 1280,800 +#set term postscript eps enhanced color 'Helvetica' 16 + + +# plot style +# ----------------------------------------------------------- +#set log xy + set key reverse Left spacing 2 right +#set key reverse Left spacing 1 at first 1.5e2, 1e8 +set xlabel "r" +set ylabel "Phase" +#set format x "10^{%T}" +#set format y "10^{%T}" + set pointsize 1.0 + set size square + set yrange [-4.00:4.00] + set xrange [0.0:1.0] + + +# set the output file extension automatically +# ----------------------------------------------------------- +if ( GPVAL_TERM eq 'pngcairo' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'png' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'postscript' ) FILE_OUT_EXT='eps'; \ +else if ( GPVAL_TERM ne 'x11' ) print 'Unkown terminal for settting the output file extension !!'; quit + + + +# loop over all files +# ----------------------------------------------------------- +print "Start plotting ..." + +do for [ID=START_ID:END_ID:DELTA_ID] { + +# set the input and output filenames + FILE_IN_PHASE = sprintf( '%s_Passive00_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + + if ( GPVAL_TERM ne 'x11' ) { set output sprintf( '%s_%06d.%s', FILE_OUT_PREFIX, ID, FILE_OUT_EXT ) } + + +# load the physical time + DUMP_TABLE = './Record__Dump' + NHEADER = 1 + LOAD_TIME = sprintf( "awk '{if(NR==%d+%d) {print $2}}' %s", NHEADER, ID+1, DUMP_TABLE ) + TIME = system( LOAD_TIME )*1.0 # *1.0 --> convert string to number + + +# set title + set title sprintf( 'DataID %06d (t = %9.3e)', ID, TIME ) + print sprintf( ' Plotting DataID %06d (t = %9.3e) ...', ID, TIME ) + + +# plot + + plot FILE_IN_PHASE u ($1):($2) w p pt 6 lc 4 title 'Simulation Phase' \ + ,FILE_IN_PHASE u ($1):($3) w l lc 8 title 'Analytical Phase' + + + if ( GPVAL_TERM eq 'x11' ) { if ( PAUSE <= 0.0 ) { pause mouse } else { pause PAUSE } }; + +} #do for [ID=START_ID:END_ID:DELTA_ID] + + +print "Done"; +if ( GPVAL_TERM eq 'x11' ) { pause -1 }; + + diff --git a/example/test_problem/ELBDM/PlaneWave/plot_WaveFunc.gpt b/example/test_problem/ELBDM/PlaneWave/plot_WaveFunc.gpt new file mode 100644 index 0000000000..7547c741b9 --- /dev/null +++ b/example/test_problem/ELBDM/PlaneWave/plot_WaveFunc.gpt @@ -0,0 +1,90 @@ +reset + + +# target files +# ----------------------------------------------------------- +FILE_IN_PREFIX = 'PlaneWave' +FILE_IN_SUFFIX = '' +FILE_OUT_PREFIX = 'Fig__PlaneWave' +START_ID = 0 +END_ID = 48 +DELTA_ID = 1 +PAUSE = -1.0 # <= 0.0 --> mouse + + +# terminal +# ----------------------------------------------------------- + set term x11 enhanced +#set term png enhanced crop size 1280,800 +#set term postscript eps enhanced color 'Helvetica' 16 + + +# plot style +# ----------------------------------------------------------- +#set log xy + set key reverse Left spacing 2 right +#set key reverse Left spacing 1 at first 1.5e2, 1e8 +set xlabel "r" +set ylabel "Wave function" +#set format x "10^{%T}" +#set format y "10^{%T}" + set pointsize 1.0 + set size square + set yrange [-2.00:5.00] + set xrange [0.0:1.0] + + +# set the output file extension automatically +# ----------------------------------------------------------- +if ( GPVAL_TERM eq 'pngcairo' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'png' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'postscript' ) FILE_OUT_EXT='eps'; \ +else if ( GPVAL_TERM ne 'x11' ) print 'Unkown terminal for settting the output file extension !!'; quit + + + +# loop over all files +# ----------------------------------------------------------- +print "Start plotting ..." + +do for [ID=START_ID:END_ID:DELTA_ID] { + +# set the input and output filenames + FILE_IN_REAL = sprintf( '%s_Real_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + FILE_IN_IMAG = sprintf( '%s_Imag_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + FILE_IN_DENS = sprintf( '%s_Dens_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + + if ( GPVAL_TERM ne 'x11' ) { set output sprintf( '%s_%06d.%s', FILE_OUT_PREFIX, ID, FILE_OUT_EXT ) } + + +# load the physical time + DUMP_TABLE = './Record__Dump' + NHEADER = 1 + LOAD_TIME = sprintf( "awk '{if(NR==%d+%d) {print $2}}' %s", NHEADER, ID+1, DUMP_TABLE ) + TIME = system( LOAD_TIME )*1.0 # *1.0 --> convert string to number + + +# set title + set title sprintf( 'DataID %06d (t = %9.3e)', ID, TIME ) + print sprintf( ' Plotting DataID %06d (t = %9.3e) ...', ID, TIME ) + + +# plot + + plot FILE_IN_DENS u ($1):($2**0.5) w p pt 6 lc 4 title 'Simulation Dens^{1/2}' \ + ,FILE_IN_DENS u ($1):($3**0.5) w l lc 8 title 'Analytical Dens^{1/2}' \ + ,FILE_IN_REAL u ($1):($2 ) w p pt 7 lc 6 title 'Simulation Real' \ + ,FILE_IN_REAL u ($1):($3 ) w l dt 4 lc 8 title 'Analytical Real' \ + ,FILE_IN_IMAG u ($1):($2 ) w p pt 8 lc 7 title 'Simulation Imag' \ + ,FILE_IN_IMAG u ($1):($3 ) w l dt 5 lc 8 title 'Analytical Imag' + + + if ( GPVAL_TERM eq 'x11' ) { if ( PAUSE <= 0.0 ) { pause mouse } else { pause PAUSE } }; + +} #do for [ID=START_ID:END_ID:DELTA_ID] + + +print "Done"; +if ( GPVAL_TERM eq 'x11' ) { pause -1 }; + + diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Flag_Rho b/example/test_problem/ELBDM/RestrictionMismatch/Input__Flag_Rho new file mode 100644 index 0000000000..3719faf1e7 --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Flag_Rho @@ -0,0 +1,13 @@ + Level Density + 0 0.22 + 1 1.0 + 2 10. + 3 10. + 4 10. + 5 10. + 6 10. + 7 10. + 8 10. + 9 10. + 10 10. + 11 10. diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement new file mode 100644 index 0000000000..c469114071 --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_NoRefinement @@ -0,0 +1,181 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 8.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 128 # number of base-level cells along x +NX0_TOT_Y 128 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD 1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP 2 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1008 # test problem ID [0] + # 1008: ELBDM 1D Gaussian wave packet + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 1 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 1 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE 6 # number of buffer cells for the flag operation (0~PATCH_SIZE) [PATCH_SIZE] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> FLAG_BUFFER_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_INTERFERENCE 0 # flag: interference (Input_Flag_Interference) [0] ##ELBDM_HYBRID ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC 1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 1 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 0 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__RES_PHASE 0 # restriction on phase [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 5 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [5] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 5 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [5] +OPT__REF_POT_INT_SCHEME 5 # newly allocated potential during grid refinement [5] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-4 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 0 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 0 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_RecordUser.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff new file mode 100644 index 0000000000..dbc9b30f7d --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOff @@ -0,0 +1,181 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 8.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 128 # number of base-level cells along x +NX0_TOT_Y 128 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD 1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP 2 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1008 # test problem ID [0] + # 1008: ELBDM 1D Gaussian wave packet + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 1 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 1 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE 6 # number of buffer cells for the flag operation (0~PATCH_SIZE) [PATCH_SIZE] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> FLAG_BUFFER_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 1 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_INTERFERENCE 0 # flag: interference (Input_Flag_Interference) [0] ##ELBDM_HYBRID ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC 1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 2 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 1 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 0 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__RES_PHASE 0 # restriction on phase [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 5 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [5] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 5 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [5] +OPT__REF_POT_INT_SCHEME 5 # newly allocated potential during grid refinement [5] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-4 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 0 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 0 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_RecordUser.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn new file mode 100644 index 0000000000..1678a5946f --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOn @@ -0,0 +1,181 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 8.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 128 # number of base-level cells along x +NX0_TOT_Y 128 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD 1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP 2 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1008 # test problem ID [0] + # 1008: ELBDM 1D Gaussian wave packet + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 1 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 1 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE 6 # number of buffer cells for the flag operation (0~PATCH_SIZE) [PATCH_SIZE] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> FLAG_BUFFER_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 1 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_INTERFERENCE 0 # flag: interference (Input_Flag_Interference) [0] ##ELBDM_HYBRID ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC 1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 2 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 1 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 0 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__RES_PHASE 1 # restriction on phase [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 5 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [5] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 5 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [5] +OPT__REF_POT_INT_SCHEME 5 # newly allocated potential during grid refinement [5] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-4 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 0 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 0 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_RecordUser.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun new file mode 100644 index 0000000000..3f077bb214 --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__Parameter_PhaseResOnLongRun @@ -0,0 +1,181 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 8.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 128 # number of base-level cells along x +NX0_TOT_Y 128 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD 1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T 1e-2 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1008 # test problem ID [0] + # 1008: ELBDM 1D Gaussian wave packet + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user) + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 1 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 1 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE 6 # number of buffer cells for the flag operation (0~PATCH_SIZE) [PATCH_SIZE] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> FLAG_BUFFER_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 1 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_INTERFERENCE 0 # flag: interference (Input_Flag_Interference) [0] ##ELBDM_HYBRID ONLY## +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC 1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 2 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 1 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 0 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__RES_PHASE 1 # restriction on phase [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 5 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [5] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 5 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [5] +OPT__REF_POT_INT_SCHEME 5 # newly allocated potential during grid refinement [5] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 1 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e-2 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_NOTE 1 # take notes for the general simulation info [1] +OPT__RECORD_UNPHY 0 # record the number of cells with unphysical results being corrected [1] +OPT__RECORD_MEMORY 0 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 0 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_RecordUser.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/Input__TestProb b/example/test_problem/ELBDM/RestrictionMismatch/Input__TestProb new file mode 100644 index 0000000000..b580ff78fc --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/Input__TestProb @@ -0,0 +1,5 @@ +# problem-specific runtime parameters +Gau_v0 32 # mean velocity [1.0] +Gau_Width 2 # Gaussian width [0.1] +Gau_Center 4 # Gaussian center [box center] +Gau_XYZ 0 # wave propagation direction (0/1/2 --> x/y/z) [0] diff --git a/example/test_problem/ELBDM/RestrictionMismatch/README.md b/example/test_problem/ELBDM/RestrictionMismatch/README.md new file mode 100644 index 0000000000..12d57c9b5d --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/README.md @@ -0,0 +1,26 @@ +# Demonstration of phase mismatch after refinement and restriction + +## Explanation +This test problem demonstrates that refining and restricting the wave function in ELBDM leads to a mismatch of the phase on the coarse levels when the option `OPT__INT_PHASE` is on. +Further, it shows that the new option `OPT__RES_PHASE` remedies the mismatch immediately after restriction, but does not prevent the formation of artifacts at the coarse-fine boundary. +It uses the `GaussianWavePacket` test with suitable initial parameters and refines a region at the center of the Gaussian wave packet. + +## Execution +To run it, compile a version of GAMER with `MODEL = ELBDM` in `SERIAL` mode and put the executable in the test problem directory. +Execute `sh ./compare_restriction.sh`. + +## Output +The script first executes `4` runs in total: `3` runs for `2` time steps that contrast the cases without restriction, the old restriction and the new restriction option; +`1` run that underscores that the artifacts still appear at later times. In total, the script generates `6` plots. +The plot named `ComparisonOfRestrictionMethodsBeforeEvolution.png` compares the phase fields on level `0` immediately after refinement and restriction. +The refined fields are not evolved before creating this plot. +The plots show the phase field on level `0`, their laplacian and the mismatch between the fields from a run with refinement and a run without refinement. +The phase field after restriction with the standard restriction method in GAMER exhibits a significant mismatch with the run without refinement. +In other words, refinement and restriction alter the values of the phase field on level `0`. +The new restriction method does not cause a mismatch of the phase field on level `0`. +However, as the plot named `ComparisonOfRestrictionMethodsAfterEvolution.png` shows, the phase fields on levels `0` and `1` still evolve differently. +The resulting mismatch is bigger than the one caused by the old restriction method. +This is also shown in a series of four plots titled `Data_%06d_Slice_z_density.png` that are created from a run with the new option `OPT__RES_PHASE` turned on. +The grid is unrefined in timestep `0`, refinement and restriction are performed at the end of timestep `1` and the refined fields are evolved during timestep `2`. +Plot `3` that is created later during the run highlights that the artifacts are not remedied by the new restriction option. + diff --git a/example/test_problem/ELBDM/RestrictionMismatch/clean.sh b/example/test_problem/ELBDM/RestrictionMismatch/clean.sh new file mode 100644 index 0000000000..72cc1fb33f --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/RestrictionMismatch/compare_restriction.sh b/example/test_problem/ELBDM/RestrictionMismatch/compare_restriction.sh new file mode 100644 index 0000000000..26fce0cf1a --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/compare_restriction.sh @@ -0,0 +1,21 @@ +#Run three times to generate three runs (without refinement, with restriction, with new restriction) +#Plot differences between the three runs +cp Input__Parameter_NoRefinement Input__Parameter +./gamer +cp Data_000000 RESTART +cp Data_000001 Data_000001_NoRefinement +cp Data_000002 Data_000002_NoRefinement +cp Input__Parameter_PhaseResOff Input__Parameter +./gamer +cp Data_000001 Data_000001_OldRestriction +cp Data_000002 Data_000002_OldRestriction +cp Input__Parameter_PhaseResOn Input__Parameter +./gamer +cp Data_000001 Data_000001_NewRestriction +cp Data_000002 Data_000002_NewRestriction +python plot_comparison.py +python plot_slice.py -s 0 -e 2 +cp Input__Parameter_PhaseResOnLongRun Input__Parameter +./gamer +cp Data_000001 Data_000003 +python plot_slice.py -s 3 -e 3 diff --git a/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh b/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh new file mode 100644 index 0000000000..45dc152737 --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM --double=True --hdf5=true --fftw=FFTW3 "$@" diff --git a/example/test_problem/ELBDM/RestrictionMismatch/plot_comparison.py b/example/test_problem/ELBDM/RestrictionMismatch/plot_comparison.py new file mode 100644 index 0000000000..3c4c3c5ee4 --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/plot_comparison.py @@ -0,0 +1,199 @@ +import yt +import matplotlib +matplotlib.use('Agg') + +import matplotlib.pyplot as plt +import numpy as np + +from mpl_toolkits.axes_grid1 import AxesGrid +from mpl_toolkits.axes_grid1 import make_axes_locatable + + +def make_1d_continuous(f): + for i in range(len(f) - 1): + while (f[i] - f[i + 1]) > np.pi: + f[i + 1 :] += 2 * np.pi + while (f[i] - f[i + 1]) < -np.pi: + f[i + 1 :] -= 2 * np.pi + return f + + +def make_2d_continuous(f): + for i in range(f.shape[0]): + make_1d_continuous(f[i, :]) + for i in range(f.shape[1]): + make_1d_continuous(f[:, i]) + return f + + +def getLaplacian(field): + return (np.abs(np.roll(field,-1, 0) + np.roll(field,+1, 0) +np.roll(field,-1, 1) +np.roll(field,+1, 1) - 4*field))[3:-3, 3:-3] + + +def getSlice(field): + return field[:, :, int(field.shape[2]/2)] + + +ds1 = yt.load("Data_000001_NoRefinement") +ds2 = yt.load("Data_000001_OldRestriction") +ds3 = yt.load("Data_000001_NewRestriction") + +level = 0 +index = 1 +axis = 2 + +d1 = ds1.covering_grid( + level=level, left_edge=[0, 0.0, 0.0], dims=ds1.domain_dimensions * 2 ** level + ) + +d2 = ds2.covering_grid( + level=level, left_edge=[0, 0.0, 0.0], dims=ds2.domain_dimensions * 2 ** level + ) + +d3 = ds3.covering_grid( + level=level, left_edge=[0, 0.0, 0.0], dims=ds3.domain_dimensions * 2 ** level + ) + + + +phase1 = getSlice(np.arctan2(d1["gamer", "Imag"], d1["gamer", "Real"])) +phase2 = getSlice(np.arctan2(d2["gamer", "Imag"], d2["gamer", "Real"])) +phase3 = getSlice(np.arctan2(d3["gamer", "Imag"], d3["gamer", "Real"])) +phase1 = make_2d_continuous(phase1) +phase2 = make_2d_continuous(phase2) +phase3 = make_2d_continuous(phase3) + +fig, axes = plt.subplots(2, 3, dpi = 200, figsize=(18, 12)) +ax = axes.reshape(6) +fig.suptitle("Comparison of restriction methods (old/new) at timestep %d on level %d" % (index, level)) + +ax[0].set_title("Phase (old)") +im1 = ax[0].imshow(phase2) + +divider = make_axes_locatable(ax[0]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im1, cax=cax, orientation='vertical') + +ax[1].set_title("Laplacian of phase (old)") +im2 = ax[1].imshow(getLaplacian(phase2)) + +divider = make_axes_locatable(ax[1]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im2, cax=cax, orientation='vertical') + + +ax[2].set_title("Difference (With/Without refinement)") +im3 = ax[2].imshow(np.abs(phase1-phase2)) + +divider = make_axes_locatable(ax[2]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im3, cax=cax, orientation='vertical') + +ax[3].set_title("Phase (new)") +im4 = ax[3].imshow(phase3) + +divider = make_axes_locatable(ax[3]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im4, cax=cax, orientation='vertical') + +ax[4].set_title("Laplacian of phase (new)") +im5 = ax[4].imshow(getLaplacian(phase3)) + +divider = make_axes_locatable(ax[4]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im5, cax=cax, orientation='vertical') + + +ax[5].set_title("Difference (With/Without refinement)") +im6 = ax[5].imshow(np.abs(phase1-phase3)) + +divider = make_axes_locatable(ax[5]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im6, cax=cax, orientation='vertical') + + +plt.savefig("ComparisonOfRestrictionMethodsBeforeEvolution.png") +plt.close() + +ds1 = yt.load("Data_000002_NoRefinement") +ds2 = yt.load("Data_000002_OldRestriction") +ds3 = yt.load("Data_000002_NewRestriction") + +level = 0 +index = 2 +axis = 2 + +d1 = ds1.covering_grid( + level=level, left_edge=[0, 0.0, 0.0], dims=ds1.domain_dimensions * 2 ** level + ) + +d2 = ds2.covering_grid( + level=level, left_edge=[0, 0.0, 0.0], dims=ds2.domain_dimensions * 2 ** level + ) + +d3 = ds3.covering_grid( + level=level, left_edge=[0, 0.0, 0.0], dims=ds3.domain_dimensions * 2 ** level + ) + + + +phase1 = getSlice(np.arctan2(d1["gamer", "Imag"], d1["gamer", "Real"])) +phase2 = getSlice(np.arctan2(d2["gamer", "Imag"], d2["gamer", "Real"])) +phase3 = getSlice(np.arctan2(d3["gamer", "Imag"], d3["gamer", "Real"])) +phase1 = make_2d_continuous(phase1) +phase2 = make_2d_continuous(phase2) +phase3 = make_2d_continuous(phase3) + +fig, axes = plt.subplots(2, 3, dpi = 200, figsize=(18, 12)) +ax = axes.reshape(6) +fig.suptitle("Comparison of restriction methods (old/new) at timestep %d on level %d" % (index, level)) + +ax[0].set_title("Phase (old)") +im1 = ax[0].imshow(phase2) + +divider = make_axes_locatable(ax[0]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im1, cax=cax, orientation='vertical') + +ax[1].set_title("Laplacian of phase (old)") +im2 = ax[1].imshow(getLaplacian(phase2)) + +divider = make_axes_locatable(ax[1]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im2, cax=cax, orientation='vertical') + + +ax[2].set_title("Difference (With/Without refinement)") +im3 = ax[2].imshow(np.abs(phase1-phase2)) + +divider = make_axes_locatable(ax[2]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im3, cax=cax, orientation='vertical') + +ax[3].set_title("Phase (new)") +im4 = ax[3].imshow(phase3) + +divider = make_axes_locatable(ax[3]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im4, cax=cax, orientation='vertical') + +ax[4].set_title("Laplacian of phase (new)") +im5 = ax[4].imshow(getLaplacian(phase3)) + +divider = make_axes_locatable(ax[4]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im5, cax=cax, orientation='vertical') + + +ax[5].set_title("Difference (With/Without refinement)") +im6 = ax[5].imshow(np.abs(phase1-phase3)) + +divider = make_axes_locatable(ax[5]) +cax = divider.append_axes('right', size='5%', pad=0.05) +fig.colorbar(im6, cax=cax, orientation='vertical') + + +plt.savefig("ComparisonOfRestrictionMethodsAfterEvolution.png") +plt.close() + + diff --git a/example/test_problem/ELBDM/RestrictionMismatch/plot_slice.py b/example/test_problem/ELBDM/RestrictionMismatch/plot_slice.py new file mode 100644 index 0000000000..4e4d89829a --- /dev/null +++ b/example/test_problem/ELBDM/RestrictionMismatch/plot_slice.py @@ -0,0 +1,183 @@ +import argparse +import sys +import yt +import matplotlib +matplotlib.use('Agg') + +import matplotlib.pyplot as plt +import numpy as np + +from mpl_toolkits.axes_grid1 import AxesGrid + +def make_1d_continuous(f): + for i in range(len(f) - 1): + while (f[i] - f[i + 1]) > np.pi: + f[i + 1 :] += 2 * np.pi + while (f[i] - f[i + 1]) < -np.pi: + f[i + 1 :] -= 2 * np.pi + return f + + +def make_2d_continuous(f): + for i in range(f.shape[0]): + make_1d_continuous(f[i, :]) + for i in range(f.shape[1]): + make_1d_continuous(f[:, i]) + return f + + +def make_3d_continuous(f): + for i in range(f.shape[0]): + make_2d_continuous(f[i, :, :]) + for i in range(f.shape[1]): + make_2d_continuous(f[:, i, :]) + for i in range(f.shape[2]): + make_2d_continuous(f[:, :, i]) + return f + + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot slices of wave function for the ELBDM test' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./' ) +parser.add_argument( '--plot-grid', dest ="plot_grid", action="store_true") +parser.set_defaults( plot_grid = False) +parser.add_argument( '--use_phase', dest ="use_phase", action="store_true") +parser.set_defaults( use_phase = False) +parser.add_argument( '--3d', dest ="make_3d_plot", action="store_true") +parser.set_defaults( make_3d_plot = False) +parser.add_argument( '--reim', dest ="plot_reim", action="store_true") +parser.set_defaults( plot_reim = False) +### +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +plot_grid = args.plot_grid +use_phase = args.use_phase +make_3d_plot = args.make_3d_plot +make_reim_plot = args.plot_reim + +colormap = 'viridis' +dpi = 150 + +if use_phase: + def _phase(field, data): + return data["gamer", "Phase"] +else: + def _phase(field, data): + return np.arctan2(data["gamer", "Imag"], data["gamer", "Real"]) + + yt.add_field( + name=("gamer", "Phase"), + function=_phase, + sampling_type="local" + ) + +for idx in range(idx_start, idx_end+1, didx): + ds = yt.load("Data_%06d"%idx) + try: + ds.force_periodicity() + except: + ds.periodicity = (True, True, True) + + grad_fields = ds.add_gradient_fields(("gas", "density")) + grad_fields = ds.add_gradient_fields(("gamer", "Real")) + grad_fields = ds.add_gradient_fields(("gamer", "Imag")) + + + + if make_3d_plot: + axes = ["x", "y", "z"] + else: + axes = ["z"] + + for myax in axes: + fig = plt.figure(dpi = dpi, figsize=(24, 12)) + + # See https://matplotlib.org/mpl_toolkits/axes_grid/api/axes_grid_api.html + # These choices of keyword arguments produce a four panel plot that includes + # four narrow colorbars, one for each plot. Axes labels are only drawn on the + # bottom left hand plot to avoid repeating information and make the plot less + # cluttered. + grid = AxesGrid( + fig, + (0.075, 0.075, 0.85, 0.85), + nrows_ncols=(3, 2), + axes_pad=(0.2, 0.0), + label_mode="L", + share_all=True, + cbar_location="right", + cbar_mode="edge", + direction="row", + cbar_size="3%", + cbar_pad="0%", + ) + + + if make_reim_plot: + fields = [ + ("gamer", "Real"), + ("gamer", "Real_gradient_magnitude"), + ("gamer", "Imag_gradient_magnitude"), + ] + else: + fields = [ + ("gas", "density"), + ("gas", "density_gradient_magnitude"), + ("gamer", "Phase"), + ] + + + pz = yt.SlicePlot( ds, myax, fields) + if not make_reim_plot: + pz.set_log(("gamer", "Phase"), False) + + pz.annotate_grids( periodic=False ) + + for field in fields: + pz.set_cmap( field, colormap ) + + # For each plotted field, force the SlicePlot to redraw itself onto the AxesGrid + # axes. + for i, field in enumerate(fields): + plot = pz.plots[field] + plot.figure = fig + plot.axes = grid[2*i].axes + plot.cax = grid.cbar_axes[i] + + pz2 = yt.SlicePlot( ds, myax, fields) + if not make_reim_plot: + pz2.set_log(("gamer", "Phase"), False) + + for field in fields: + pz2.set_cmap( field, colormap ) + # For each plotted field, force the SlicePlot to redraw itself onto the AxesGrid + # axes. + for i, field in enumerate(fields): + plot = pz2.plots[field] + plot.figure = fig + plot.axes = grid[2*i+1].axes + + # Finally, redraw the plot on the AxesGrid axes. + pz._setup_plots() + pz2._setup_plots() + plt.savefig("Data_%06d_Slice_%s_density.png" % (idx, myax)) + plt.close() diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/Input__Flag_Rho b/example/test_problem/ELBDM/SelfSimilarHalo/Input__Flag_Rho new file mode 100644 index 0000000000..b984da7f43 --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/Input__Flag_Rho @@ -0,0 +1,13 @@ +# Level Density + 0 4.0 + 1 32.0 + 2 64.0 + 3 128.0 + 4 1024.0 + 5 4096.0 + 6 16384.0 + 7 65536.0 + 8 262144.0 + 9 1048576.0 + 10 4194304.0 + 11 16777216.0 diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter b/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter new file mode 100644 index 0000000000..81f858daca --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/Input__Parameter @@ -0,0 +1,193 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 0.5 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 256 # number of base-level cells along x +NX0_TOT_Y 256 # number of base-level cells along y +NX0_TOT_Z 256 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1004 # # 1004: ELBDM self-similar halo (+GRAVITY, +COMOVING) + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 1 # gravity boundary condition: (1=periodic, 2=isolated) +GFUNC_COEFF0 -1.0 # Green's function coefficient at the origin for the isolated BC (<0=auto) [-1.0] + + +# cosmology (COMOVING only) +A_INIT 0.10 # initial scale factor +OMEGA_M0 1.0 # omega matter at the present time +HUBBLE0 0.70 # dimensionless Hubble parameter (currently only for converting ELBDM_MASS to code units) + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__MAX_DELTA_A 0.01 # dt criterion: maximum variation of the cosmic scale factor [0.01] +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 4 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 8.1e-23 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST -1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 1 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G -1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 2 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 0 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 5.0e-4 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 0 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/Input__TestProb b/example/test_problem/ELBDM/SelfSimilarHalo/Input__TestProb new file mode 100644 index 0000000000..977a90c0a3 --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/Input__TestProb @@ -0,0 +1,3 @@ +# problem-specific runtime parameters +SelSimHalo_Filename soliton_a1000_b18.949319285066004.txt # name of the profile table + diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/README b/example/test_problem/ELBDM/SelfSimilarHalo/README new file mode 100644 index 0000000000..92c1b60c94 --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/README @@ -0,0 +1,14 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY, COMOVING +Disable: PARTICLE + + +Default setup: +======================================== + + +Note: +======================================== +1. Test the evolution of the self-similar solution of halos in the comoving frame + diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh b/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh new file mode 100644 index 0000000000..72cc1fb33f --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh b/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh new file mode 100644 index 0000000000..2a102095a1 --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true --comoving=true "$@" diff --git a/example/test_problem/ELBDM/SelfSimilarHalo/plot_slice.py b/example/test_problem/ELBDM/SelfSimilarHalo/plot_slice.py new file mode 100644 index 0000000000..4e25830dc5 --- /dev/null +++ b/example/test_problem/ELBDM/SelfSimilarHalo/plot_slice.py @@ -0,0 +1,50 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot slices of wave function for the ELBDM self-similar halo test' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./' ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap = 'arbre' +field = 'Dens' +center_mode = 'c' +dpi = 150 + + +yt.enable_parallelism() + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + sz = yt.SlicePlot( ds, 'z', field, center=center_mode ) + sz.set_zlim( field, 1.0e-1, 1.0e3 ) +# sz.set_log( field, False ) + sz.set_cmap( field, colormap ) + sz.annotate_timestamp( corner='upper_right', time_format='t = {time:.4f} {units}' ) + sz.annotate_grids( periodic=True ) + sz.save( mpl_kwargs={"dpi":dpi} ) + diff --git a/example/test_problem/ELBDM/Soliton/Input__Flag_Lohner b/example/test_problem/ELBDM/Soliton/Input__Flag_Lohner new file mode 100644 index 0000000000..63560479fa --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/Input__Flag_Lohner @@ -0,0 +1,13 @@ +# Level Threshold_Refine Threshold_Derefine Filter Soften MinDensity + 0 0.60 0.60 0.62 50.00 0.00 + 1 0.60 0.60 0.62 50.00 0.00 + 2 0.60 0.60 0.62 50.00 0.00 + 3 0.60 0.60 0.62 50.00 0.00 + 4 0.60 0.60 0.62 50.00 0.00 + 5 0.60 0.60 0.62 50.00 0.00 + 6 0.60 0.60 0.62 50.00 0.00 + 7 0.60 0.60 0.62 50.00 0.00 + 8 0.60 0.60 0.62 50.00 0.00 + 9 0.60 0.60 0.62 50.00 0.00 + 10 0.60 0.60 0.62 50.00 0.00 + 11 0.60 0.60 0.62 50.00 0.00 diff --git a/example/test_problem/ELBDM/Soliton/Input__Flag_Rho b/example/test_problem/ELBDM/Soliton/Input__Flag_Rho new file mode 100644 index 0000000000..3bd1c9fbbc --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/Input__Flag_Rho @@ -0,0 +1,13 @@ + Level Density + 0 2.50e-7 + 1 2.50e-7 + 2 2.50e-5 + 3 1.25e-4 + 4 1.0e-4 + 5 1.0e-4 + 6 1.0e-4 + 7 1.0e-4 + 8 1.0e-4 + 9 1.0e-4 + 10 1.0e-4 + 11 1.0e-4 diff --git a/example/test_problem/ELBDM/Soliton/Input__Parameter b/example/test_problem/ELBDM/Soliton/Input__Parameter new file mode 100644 index 0000000000..da0c0ff967 --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/Input__Parameter @@ -0,0 +1,192 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 384.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 96 # number of base-level cells along x +NX0_TOT_Y 96 # number of base-level cells along y +NX0_TOT_Z 96 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1003 # test problem ID [0] + # 1003: ELBDM soliton merger (+GRAVITY) + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L -1.0 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 4 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 4 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 4 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 4 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_POT 2 # gravity boundary condition: (1=periodic, 2=isolated) +GFUNC_COEFF0 -1.0 # Green's function coefficient at the origin for the isolated BC (<0=auto) [-1.0] + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 2 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 1 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 4 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# gravity solvers in all models +NEWTON_G 0.07957747 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Poisson solver (<=0=auto) [-1] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## + # --> 2 (table) is not supported yet +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + # --> for 2 (table), edit the corresponding parameters below too + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] +OPT__FFTW_STARTUP -1 # initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 20.0 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 192.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 192.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 192.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/Soliton/Input__TestProb b/example/test_problem/ELBDM/Soliton/Input__TestProb new file mode 100644 index 0000000000..889cb6ff5f --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/Input__TestProb @@ -0,0 +1,8 @@ +# problem-specific runtime parameters +Soliton_N 1 # total number of solitons +Soliton_RSeed -1 # random seed for setting the soliton centra (<0 -> hard coding if Soliton_N>1) [0] +Soliton_CoreRadiusAll 1.0e1 # core radius for ALL solitons (in code unit; <=0.0 -> hard coding) +Soliton_EmptyRegion 0.0 # soliton-free region [0.0] + # -> solitons only reside in [Soliton_EmptyRegion : BOX_SIZE-Soliton_EmptyRegion] + # -> useful only when Soliton_RSeed >= 0 +Soliton_DensProf_Filename SolitonDensityProfile_Lambda0.0 # filename of the input soliton density profile diff --git a/example/test_problem/ELBDM/Soliton/README b/example/test_problem/ELBDM/Soliton/README new file mode 100644 index 0000000000..74960f341b --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/README @@ -0,0 +1,20 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, GRAVITY +Disable: PARTICLE, UNSPLIT_GRAVITY, COMOVING + + +Default setup: +======================================== +1. NX0_TOT_X/Y/Z = 96 +2. MAX_LEVEL = 2 + + +Note: +======================================== +1. Soliton_N = 1: test a single soliton + --> Set Soliton_RSeed < 0 + Set Soliton_EmptyRegion = 0.0 + Soliton_N > 1: soliton merger + --> Set Soliton_RSeed >= 0 + Set Soliton_EmptyRegion > 0.0 (e.g., 1.0e2) diff --git a/example/test_problem/ELBDM/Soliton/SolitonDensityProfile_Lambda0.0 b/example/test_problem/ELBDM/Soliton/SolitonDensityProfile_Lambda0.0 new file mode 100644 index 0000000000..349523dd50 --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/SolitonDensityProfile_Lambda0.0 @@ -0,0 +1,10001 @@ +# r Dens + 1.000000000000000E-003 2.36390677531253 + 2.000000000000000E-003 2.36390656518805 + 3.000000000000000E-003 2.36390435387697 + 4.000000000000000E-003 2.36389968987204 + 5.000000000000000E-003 2.36389234772053 + 6.000000000000000E-003 2.36388219747012 + 7.000000000000000E-003 2.36386915697057 + 8.000000000000000E-003 2.36385317081308 + 9.000000000000001E-003 2.36383419978296 + 1.000000000000000E-002 2.36381221507562 + 1.100000000000000E-002 2.36378719489874 + 1.200000000000000E-002 2.36375912236474 + 1.300000000000000E-002 2.36372798412517 + 1.400000000000000E-002 2.36369376945284 + 1.500000000000000E-002 2.36365646960599 + 1.600000000000000E-002 2.36361607737598 + 1.700000000000000E-002 2.36357258675832 + 1.800000000000000E-002 2.36352599270853 + 1.900000000000000E-002 2.36347629095790 + 2.000000000000000E-002 2.36342347787217 + 2.100000000000000E-002 2.36336755034170 + 2.200000000000000E-002 2.36330850569505 + 2.300000000000000E-002 2.36324634163012 + 2.400000000000000E-002 2.36318105615885 + 2.500000000000000E-002 2.36311264756229 + 2.600000000000000E-002 2.36304111435386 + 2.700000000000000E-002 2.36296645524894 + 2.800000000000000E-002 2.36288866913971 + 2.900000000000000E-002 2.36280775507403 + 3.000000000000000E-002 2.36272371223766 + 3.100000000000000E-002 2.36263653993921 + 3.200000000000000E-002 2.36254623759732 + 3.300000000000000E-002 2.36245280472968 + 3.400000000000000E-002 2.36235624094362 + 3.500000000000000E-002 2.36225654592793 + 3.600000000000000E-002 2.36215371944577 + 3.700000000000000E-002 2.36204776132856 + 3.800000000000000E-002 2.36193867147053 + 3.900000000000000E-002 2.36182644982404 + 4.000000000000000E-002 2.36171109639537 + 4.100000000000000E-002 2.36159261124107 + 4.200000000000000E-002 2.36147099446472 + 4.300000000000000E-002 2.36134624621396 + 4.400000000000000E-002 2.36121836667798 + 4.500000000000000E-002 2.36108735608519 + 4.600000000000000E-002 2.36095321470112 + 4.700000000000000E-002 2.36081594282661 + 4.800000000000000E-002 2.36067554079611 + 4.900000000000000E-002 2.36053200897618 + 5.000000000000000E-002 2.36038534776414 + 5.100000000000000E-002 2.36023555758680 + 5.200000000000000E-002 2.36008263889936 + 5.300000000000000E-002 2.35992659218440 + 5.400000000000000E-002 2.35976741795093 + 5.500000000000000E-002 2.35960511673355 + 5.600000000000000E-002 2.35943968909166 + 5.700000000000000E-002 2.35927113560879 + 5.800000000000000E-002 2.35909945689189 + 5.900000000000000E-002 2.35892465357076 + 6.000000000000000E-002 2.35874672629751 + 6.100000000000000E-002 2.35856567574601 + 6.200000000000000E-002 2.35838150261146 + 6.300000000000000E-002 2.35819420760995 + 6.400000000000000E-002 2.35800379147802 + 6.500000000000000E-002 2.35781025497234 + 6.600000000000000E-002 2.35761359886932 + 6.700000000000000E-002 2.35741382396481 + 6.800000000000000E-002 2.35721093107380 + 6.900000000000001E-002 2.35700492103012 + 7.000000000000001E-002 2.35679579468621 + 7.100000000000001E-002 2.35658355291285 + 7.200000000000001E-002 2.35636819659894 + 7.300000000000000E-002 2.35614972665132 + 7.400000000000000E-002 2.35592814399448 + 7.500000000000000E-002 2.35570344957049 + 7.600000000000000E-002 2.35547564433873 + 7.700000000000000E-002 2.35524472927577 + 7.800000000000000E-002 2.35501070537519 + 7.900000000000000E-002 2.35477357364746 + 8.000000000000000E-002 2.35453333511977 + 8.100000000000000E-002 2.35428999083593 + 8.200000000000000E-002 2.35404354185621 + 8.300000000000000E-002 2.35379398925725 + 8.400000000000001E-002 2.35354133413193 + 8.500000000000001E-002 2.35328557758930 + 8.600000000000001E-002 2.35302672075441 + 8.700000000000001E-002 2.35276476476830 + 8.799999999999999E-002 2.35249971078784 + 8.900000000000000E-002 2.35223155998566 + 9.000000000000000E-002 2.35196031355010 + 9.100000000000000E-002 2.35168597268509 + 9.200000000000000E-002 2.35140853861010 + 9.300000000000000E-002 2.35112801256005 + 9.400000000000000E-002 2.35084439578525 + 9.500000000000000E-002 2.35055768955135 + 9.600000000000000E-002 2.35026789513923 + 9.700000000000000E-002 2.34997501384500 + 9.800000000000000E-002 2.34967904697987 + 9.900000000000000E-002 2.34937999587016 + 0.100000000000000 2.34907786185722 + 0.101000000000000 2.34877264629736 + 0.102000000000000 2.34846435056183 + 0.103000000000000 2.34815297603673 + 0.104000000000000 2.34783852412301 + 0.105000000000000 2.34752099623639 + 0.106000000000000 2.34720039380734 + 0.107000000000000 2.34687671828102 + 0.108000000000000 2.34654997111722 + 0.109000000000000 2.34622015379036 + 0.110000000000000 2.34588726778944 + 0.111000000000000 2.34555131461798 + 0.112000000000000 2.34521229579398 + 0.113000000000000 2.34487021284994 + 0.114000000000000 2.34452506733274 + 0.115000000000000 2.34417686080367 + 0.116000000000000 2.34382559483837 + 0.117000000000000 2.34347127102680 + 0.118000000000000 2.34311389097320 + 0.119000000000000 2.34275345629608 + 0.120000000000000 2.34238996862816 + 0.121000000000000 2.34202342961634 + 0.122000000000000 2.34165384092173 + 0.123000000000000 2.34128120421951 + 0.124000000000000 2.34090552119902 + 0.125000000000000 2.34052679356364 + 0.126000000000000 2.34014502303079 + 0.127000000000000 2.33976021133194 + 0.128000000000000 2.33937236021253 + 0.129000000000000 2.33898147143195 + 0.130000000000000 2.33858754676355 + 0.131000000000000 2.33819058799457 + 0.132000000000000 2.33779059692615 + 0.133000000000000 2.33738757537326 + 0.134000000000000 2.33698152516474 + 0.135000000000000 2.33657244814320 + 0.136000000000000 2.33616034616503 + 0.137000000000000 2.33574522110040 + 0.138000000000000 2.33532707483319 + 0.139000000000000 2.33490590926100 + 0.140000000000000 2.33448172629508 + 0.141000000000000 2.33405452786036 + 0.142000000000000 2.33362431589541 + 0.143000000000000 2.33319109235238 + 0.144000000000000 2.33275485919702 + 0.145000000000000 2.33231561840864 + 0.146000000000000 2.33187337198008 + 0.147000000000000 2.33142812191769 + 0.148000000000000 2.33097987024132 + 0.149000000000000 2.33052861898427 + 0.150000000000000 2.33007437019329 + 0.151000000000000 2.32961712592856 + 0.152000000000000 2.32915688826363 + 0.153000000000000 2.32869365928544 + 0.154000000000000 2.32822744109427 + 0.155000000000000 2.32775823580373 + 0.156000000000000 2.32728604554074 + 0.157000000000000 2.32681087244549 + 0.158000000000000 2.32633271867142 + 0.159000000000000 2.32585158638523 + 0.160000000000000 2.32536747776680 + 0.161000000000000 2.32488039500922 + 0.162000000000000 2.32439034031873 + 0.163000000000000 2.32389731591473 + 0.164000000000000 2.32340132402972 + 0.165000000000000 2.32290236690932 + 0.166000000000000 2.32240044681221 + 0.167000000000000 2.32189556601010 + 0.168000000000000 2.32138772678778 + 0.169000000000000 2.32087693144299 + 0.170000000000000 2.32036318228650 + 0.171000000000000 2.31984648164200 + 0.172000000000000 2.31932683184614 + 0.173000000000000 2.31880423524848 + 0.174000000000000 2.31827869421147 + 0.175000000000000 2.31775021111042 + 0.176000000000000 2.31721878833349 + 0.177000000000000 2.31668442828167 + 0.178000000000000 2.31614713336874 + 0.179000000000000 2.31560690602124 + 0.180000000000000 2.31506374867850 + 0.181000000000000 2.31451766379254 + 0.182000000000000 2.31396865382811 + 0.183000000000000 2.31341672126264 + 0.184000000000000 2.31286186858621 + 0.185000000000000 2.31230409830153 + 0.186000000000000 2.31174341292394 + 0.187000000000000 2.31117981498137 + 0.188000000000000 2.31061330701429 + 0.189000000000000 2.31004389157574 + 0.190000000000000 2.30947157123125 + 0.191000000000000 2.30889634855888 + 0.192000000000000 2.30831822614912 + 0.193000000000000 2.30773720660494 + 0.194000000000000 2.30715329254171 + 0.195000000000000 2.30656648658722 + 0.196000000000000 2.30597679138161 + 0.197000000000000 2.30538420957739 + 0.198000000000000 2.30478874383939 + 0.199000000000000 2.30419039684474 + 0.200000000000000 2.30358917128286 + 0.201000000000000 2.30298506985541 + 0.202000000000000 2.30237809527629 + 0.203000000000000 2.30176825027159 + 0.204000000000000 2.30115553757960 + 0.205000000000000 2.30053995995076 + 0.206000000000000 2.29992152014763 + 0.207000000000000 2.29930022094489 + 0.208000000000000 2.29867606512930 + 0.209000000000000 2.29804905549968 + 0.210000000000000 2.29741919486686 + 0.211000000000000 2.29678648605372 + 0.212000000000000 2.29615093189508 + 0.213000000000000 2.29551253523774 + 0.214000000000000 2.29487129894043 + 0.215000000000000 2.29422722587378 + 0.216000000000000 2.29358031892031 + 0.217000000000000 2.29293058097439 + 0.218000000000000 2.29227801494223 + 0.219000000000000 2.29162262374183 + 0.220000000000000 2.29096441030298 + 0.221000000000000 2.29030337756723 + 0.222000000000000 2.28963952848784 + 0.223000000000000 2.28897286602980 + 0.224000000000000 2.28830339316974 + 0.225000000000000 2.28763111289597 + 0.226000000000000 2.28695602820843 + 0.227000000000000 2.28627814211862 + 0.228000000000000 2.28559745764966 + 0.229000000000000 2.28491397783618 + 0.230000000000000 2.28422770572434 + 0.231000000000000 2.28353864437181 + 0.232000000000000 2.28284679684771 + 0.233000000000000 2.28215216623260 + 0.234000000000000 2.28145475561847 + 0.235000000000000 2.28075456810867 + 0.236000000000000 2.28005160681794 + 0.237000000000000 2.27934587487234 + 0.238000000000000 2.27863737540923 + 0.239000000000000 2.27792611157727 + 0.240000000000000 2.27721208653636 + 0.241000000000000 2.27649530345762 + 0.242000000000000 2.27577576552338 + 0.243000000000000 2.27505347592714 + 0.244000000000000 2.27432843787354 + 0.245000000000000 2.27360065457833 + 0.246000000000000 2.27287012926838 + 0.247000000000000 2.27213686518158 + 0.248000000000000 2.27140086556688 + 0.249000000000000 2.27066213368424 + 0.250000000000000 2.26992067280459 + 0.251000000000000 2.26917648620979 + 0.252000000000000 2.26842957719267 + 0.253000000000000 2.26767994905692 + 0.254000000000000 2.26692760511711 + 0.255000000000000 2.26617254869864 + 0.256000000000000 2.26541478313773 + 0.257000000000000 2.26465431178138 + 0.258000000000000 2.26389113798735 + 0.259000000000000 2.26312526512412 + 0.260000000000000 2.26235669657086 + 0.261000000000000 2.26158543571743 + 0.262000000000000 2.26081148596431 + 0.263000000000000 2.26003485072261 + 0.264000000000000 2.25925553341400 + 0.265000000000000 2.25847353747074 + 0.266000000000000 2.25768886633557 + 0.267000000000000 2.25690152346177 + 0.268000000000000 2.25611151231305 + 0.269000000000000 2.25531883636360 + 0.270000000000000 2.25452349909798 + 0.271000000000000 2.25372550401116 + 0.272000000000000 2.25292485460844 + 0.273000000000000 2.25212155440546 + 0.274000000000000 2.25131560692814 + 0.275000000000000 2.25050701571266 + 0.276000000000000 2.24969578430544 + 0.277000000000000 2.24888191626312 + 0.278000000000000 2.24806541515249 + 0.279000000000000 2.24724628455048 + 0.280000000000000 2.24642452804417 + 0.281000000000000 2.24560014923070 + 0.282000000000000 2.24477315171726 + 0.283000000000000 2.24394353912107 + 0.284000000000000 2.24311131506936 + 0.285000000000000 2.24227648319932 + 0.286000000000000 2.24143904715805 + 0.287000000000000 2.24059901060259 + 0.288000000000000 2.23975637719984 + 0.289000000000000 2.23891115062653 + 0.290000000000000 2.23806333456922 + 0.291000000000000 2.23721293272426 + 0.292000000000000 2.23635994879774 + 0.293000000000000 2.23550438650547 + 0.294000000000000 2.23464624957296 + 0.295000000000000 2.23378554173538 + 0.296000000000000 2.23292226673752 + 0.297000000000000 2.23205642833379 + 0.298000000000000 2.23118803028815 + 0.299000000000000 2.23031707637410 + 0.300000000000000 2.22944357037466 + 0.301000000000000 2.22856751608230 + 0.302000000000000 2.22768891729897 + 0.303000000000000 2.22680777783600 + 0.304000000000000 2.22592410151413 + 0.305000000000000 2.22503789216342 + 0.306000000000000 2.22414915362327 + 0.307000000000000 2.22325788974238 + 0.308000000000000 2.22236410437867 + 0.309000000000000 2.22146780139932 + 0.310000000000000 2.22056898468069 + 0.311000000000000 2.21966765810829 + 0.312000000000000 2.21876382557679 + 0.313000000000000 2.21785749098992 + 0.314000000000000 2.21694865826052 + 0.315000000000000 2.21603733131043 + 0.316000000000000 2.21512351407051 + 0.317000000000000 2.21420721048059 + 0.318000000000000 2.21328842448944 + 0.319000000000000 2.21236716005472 + 0.320000000000000 2.21144342114299 + 0.321000000000000 2.21051721172965 + 0.322000000000000 2.20958853579890 + 0.323000000000000 2.20865739734371 + 0.324000000000000 2.20772380036583 + 0.325000000000000 2.20678774887569 + 0.326000000000000 2.20584924689241 + 0.327000000000000 2.20490829844378 + 0.328000000000000 2.20396490756619 + 0.329000000000000 2.20301907830460 + 0.330000000000000 2.20207081471256 + 0.331000000000000 2.20112012085210 + 0.332000000000000 2.20016700079376 + 0.333000000000000 2.19921145861653 + 0.334000000000000 2.19825349840782 + 0.335000000000000 2.19729312426342 + 0.336000000000000 2.19633034028748 + 0.337000000000000 2.19536515059249 + 0.338000000000000 2.19439755929920 + 0.339000000000000 2.19342757053664 + 0.340000000000000 2.19245518844206 + 0.341000000000000 2.19148041716088 + 0.342000000000000 2.19050326084670 + 0.343000000000000 2.18952372366125 + 0.344000000000000 2.18854180977433 + 0.345000000000000 2.18755752336380 + 0.346000000000000 2.18657086861557 + 0.347000000000000 2.18558184972350 + 0.348000000000000 2.18459047088945 + 0.349000000000000 2.18359673632318 + 0.350000000000000 2.18260065024235 + 0.351000000000000 2.18160221687247 + 0.352000000000000 2.18060144044688 + 0.353000000000000 2.17959832520671 + 0.354000000000000 2.17859287540085 + 0.355000000000000 2.17758509528592 + 0.356000000000000 2.17657498912620 + 0.357000000000000 2.17556256119366 + 0.358000000000000 2.17454781576788 + 0.359000000000000 2.17353075713602 + 0.360000000000000 2.17251138959281 + 0.361000000000000 2.17148971744050 + 0.362000000000000 2.17046574498880 + 0.363000000000000 2.16943947655492 + 0.364000000000000 2.16841091646344 + 0.365000000000000 2.16738006904637 + 0.366000000000000 2.16634693864303 + 0.367000000000000 2.16531152960009 + 0.368000000000000 2.16427384627150 + 0.369000000000000 2.16323389301842 + 0.370000000000000 2.16219167420929 + 0.371000000000000 2.16114719421967 + 0.372000000000000 2.16010045743230 + 0.373000000000000 2.15905146823703 + 0.374000000000000 2.15800023103078 + 0.375000000000000 2.15694675021751 + 0.376000000000000 2.15589103020820 + 0.377000000000000 2.15483307542080 + 0.378000000000000 2.15377289028021 + 0.379000000000000 2.15271047921821 + 0.380000000000000 2.15164584667349 + 0.381000000000000 2.15057899709154 + 0.382000000000000 2.14950993492469 + 0.383000000000000 2.14843866463199 + 0.384000000000000 2.14736519067928 + 0.385000000000000 2.14628951753906 + 0.386000000000000 2.14521164969051 + 0.387000000000000 2.14413159161943 + 0.388000000000000 2.14304934781823 + 0.389000000000000 2.14196492278586 + 0.390000000000000 2.14087832102783 + 0.391000000000000 2.13978954705610 + 0.392000000000000 2.13869860538911 + 0.393000000000000 2.13760550055173 + 0.394000000000000 2.13651023707520 + 0.395000000000000 2.13541281949711 + 0.396000000000000 2.13431325236138 + 0.397000000000000 2.13321154021822 + 0.398000000000000 2.13210768762406 + 0.399000000000000 2.13100169914156 + 0.400000000000000 2.12989357933957 + 0.401000000000000 2.12878333279305 + 0.402000000000000 2.12767096408310 + 0.403000000000000 2.12655647779688 + 0.404000000000000 2.12543987852758 + 0.405000000000000 2.12432117087441 + 0.406000000000000 2.12320035944254 + 0.407000000000000 2.12207744884306 + 0.408000000000000 2.12095244369298 + 0.409000000000000 2.11982534861517 + 0.410000000000000 2.11869616823831 + 0.411000000000000 2.11756490719689 + 0.412000000000000 2.11643157013115 + 0.413000000000000 2.11529616168705 + 0.414000000000000 2.11415868651625 + 0.415000000000000 2.11301914927604 + 0.416000000000000 2.11187755462935 + 0.417000000000000 2.11073390724468 + 0.418000000000000 2.10958821179608 + 0.419000000000000 2.10844047296310 + 0.420000000000000 2.10729069543079 + 0.421000000000000 2.10613888388962 + 0.422000000000000 2.10498504303547 + 0.423000000000000 2.10382917756960 + 0.424000000000000 2.10267129219859 + 0.425000000000000 2.10151139163434 + 0.426000000000000 2.10034948059398 + 0.427000000000000 2.09918556379992 + 0.428000000000000 2.09801964597971 + 0.429000000000000 2.09685173186610 + 0.430000000000000 2.09568182619694 + 0.431000000000000 2.09450993371518 + 0.432000000000000 2.09333605916881 + 0.433000000000000 2.09216020731086 + 0.434000000000000 2.09098238289932 + 0.435000000000000 2.08980259069712 + 0.436000000000000 2.08862083547214 + 0.437000000000000 2.08743712199709 + 0.438000000000000 2.08625145504956 + 0.439000000000000 2.08506383941191 + 0.440000000000000 2.08387427987129 + 0.441000000000000 2.08268278121958 + 0.442000000000000 2.08148934825337 + 0.443000000000000 2.08029398577389 + 0.444000000000000 2.07909669858702 + 0.445000000000000 2.07789749150322 + 0.446000000000000 2.07669636933752 + 0.447000000000000 2.07549333690945 + 0.448000000000000 2.07428839904304 + 0.449000000000000 2.07308156056678 + 0.450000000000000 2.07187282631356 + 0.451000000000000 2.07066220112067 + 0.452000000000000 2.06944968982971 + 0.453000000000000 2.06823529728663 + 0.454000000000000 2.06701902834164 + 0.455000000000000 2.06580088784916 + 0.456000000000000 2.06458088066786 + 0.457000000000000 2.06335901166055 + 0.458000000000000 2.06213528569418 + 0.459000000000000 2.06090970763980 + 0.460000000000000 2.05968228237250 + 0.461000000000000 2.05845301477143 + 0.462000000000000 2.05722190971972 + 0.463000000000000 2.05598897210443 + 0.464000000000000 2.05475420681658 + 0.465000000000000 2.05351761875106 + 0.466000000000000 2.05227921280659 + 0.467000000000000 2.05103899388572 + 0.468000000000000 2.04979696689480 + 0.469000000000000 2.04855313674388 + 0.470000000000000 2.04730750834676 + 0.471000000000000 2.04606008662088 + 0.472000000000000 2.04481087648735 + 0.473000000000000 2.04355988287084 + 0.474000000000000 2.04230711069963 + 0.475000000000000 2.04105256490551 + 0.476000000000000 2.03979625042377 + 0.477000000000000 2.03853817219316 + 0.478000000000000 2.03727833515586 + 0.479000000000000 2.03601674425743 + 0.480000000000000 2.03475340444680 + 0.481000000000000 2.03348832067622 + 0.482000000000000 2.03222149790121 + 0.483000000000000 2.03095294108055 + 0.484000000000000 2.02968265517624 + 0.485000000000000 2.02841064515346 + 0.486000000000000 2.02713691598051 + 0.487000000000000 2.02586147262883 + 0.488000000000000 2.02458432007292 + 0.489000000000000 2.02330546329031 + 0.490000000000000 2.02202490726157 + 0.491000000000000 2.02074265697019 + 0.492000000000000 2.01945871740263 + 0.493000000000000 2.01817309354823 + 0.494000000000000 2.01688579039921 + 0.495000000000000 2.01559681295060 + 0.496000000000000 2.01430616620023 + 0.497000000000000 2.01301385514871 + 0.498000000000000 2.01171988479934 + 0.499000000000000 2.01042426015812 + 0.500000000000000 2.00912698623372 + 0.501000000000000 2.00782806803741 + 0.502000000000000 2.00652751058306 + 0.503000000000000 2.00522531888708 + 0.504000000000000 2.00392149796838 + 0.505000000000000 2.00261605284838 + 0.506000000000000 2.00130898855093 + 0.507000000000000 2.00000031010228 + 0.508000000000000 1.99869002253107 + 0.509000000000000 1.99737813086828 + 0.510000000000000 1.99606464014718 + 0.511000000000000 1.99474955540333 + 0.512000000000000 1.99343288167452 + 0.513000000000000 1.99211462400074 + 0.514000000000000 1.99079478742414 + 0.515000000000000 1.98947337698902 + 0.516000000000000 1.98815039774176 + 0.517000000000000 1.98682585473081 + 0.518000000000000 1.98549975300666 + 0.519000000000000 1.98417209762177 + 0.520000000000000 1.98284289363059 + 0.521000000000000 1.98151214608947 + 0.522000000000000 1.98017986005666 + 0.523000000000000 1.97884604059227 + 0.524000000000000 1.97751069275823 + 0.525000000000000 1.97617382161825 + 0.526000000000000 1.97483543223781 + 0.527000000000000 1.97349552968409 + 0.528000000000000 1.97215411902598 + 0.529000000000000 1.97081120533398 + 0.530000000000000 1.96946679368026 + 0.531000000000000 1.96812088913852 + 0.532000000000000 1.96677349678404 + 0.533000000000000 1.96542462169362 + 0.534000000000000 1.96407426894550 + 0.535000000000000 1.96272244361941 + 0.536000000000000 1.96136915079647 + 0.537000000000000 1.96001439555918 + 0.538000000000000 1.95865818299138 + 0.539000000000000 1.95730051817823 + 0.540000000000000 1.95594140620617 + 0.541000000000000 1.95458085216285 + 0.542000000000000 1.95321886113717 + 0.543000000000000 1.95185543821919 + 0.544000000000000 1.95049058850009 + 0.545000000000000 1.94912431707218 + 0.546000000000000 1.94775662902884 + 0.547000000000000 1.94638752946449 + 0.548000000000000 1.94501702347454 + 0.549000000000000 1.94364511615539 + 0.550000000000000 1.94227181260438 + 0.551000000000000 1.94089711791974 + 0.552000000000000 1.93952103720059 + 0.553000000000000 1.93814357554686 + 0.554000000000000 1.93676473805933 + 0.555000000000000 1.93538452983950 + 0.556000000000000 1.93400295598966 + 0.557000000000000 1.93262002161275 + 0.558000000000000 1.93123573181243 + 0.559000000000000 1.92985009169296 + 0.560000000000000 1.92846310635924 + 0.561000000000000 1.92707478091672 + 0.562000000000000 1.92568512047139 + 0.563000000000000 1.92429413012975 + 0.564000000000000 1.92290181499878 + 0.565000000000000 1.92150818018588 + 0.566000000000000 1.92011323079888 + 0.567000000000000 1.91871697194597 + 0.568000000000000 1.91731940873568 + 0.569000000000000 1.91592054627685 + 0.570000000000000 1.91452038967860 + 0.571000000000000 1.91311894405029 + 0.572000000000000 1.91171621450150 + 0.573000000000000 1.91031220614196 + 0.574000000000000 1.90890692408156 + 0.575000000000000 1.90750037343032 + 0.576000000000000 1.90609255929831 + 0.577000000000000 1.90468348679566 + 0.578000000000000 1.90327316103253 + 0.579000000000000 1.90186158711902 + 0.580000000000000 1.90044877016523 + 0.581000000000000 1.89903471528113 + 0.582000000000000 1.89761942757662 + 0.583000000000000 1.89620291216142 + 0.584000000000000 1.89478517414509 + 0.585000000000000 1.89336621863695 + 0.586000000000000 1.89194605074612 + 0.587000000000000 1.89052467558142 + 0.588000000000000 1.88910209825135 + 0.589000000000000 1.88767832386409 + 0.590000000000000 1.88625335752744 + 0.591000000000000 1.88482720434881 + 0.592000000000000 1.88339986943515 + 0.593000000000000 1.88197135789297 + 0.594000000000000 1.88054167482825 + 0.595000000000000 1.87911082534648 + 0.596000000000000 1.87767881455256 + 0.597000000000000 1.87624564755079 + 0.598000000000000 1.87481132944488 + 0.599000000000000 1.87337586533784 + 0.600000000000000 1.87193926033202 + 0.601000000000000 1.87050151952905 + 0.602000000000000 1.86906264802980 + 0.603000000000000 1.86762265093436 + 0.604000000000000 1.86618153334201 + 0.605000000000000 1.86473930035119 + 0.606000000000000 1.86329595705944 + 0.607000000000000 1.86185150856343 + 0.608000000000000 1.86040595995887 + 0.609000000000000 1.85895931634051 + 0.610000000000000 1.85751158280209 + 0.611000000000000 1.85606276443633 + 0.612000000000000 1.85461286633489 + 0.613000000000000 1.85316189358832 + 0.614000000000000 1.85170985128607 + 0.615000000000000 1.85025674451644 + 0.616000000000000 1.84880257836651 + 0.617000000000000 1.84734735792219 + 0.618000000000000 1.84589108826812 + 0.619000000000000 1.84443377448767 + 0.620000000000000 1.84297542166290 + 0.621000000000000 1.84151603487454 + 0.622000000000000 1.84005561920196 + 0.623000000000000 1.83859417972312 + 0.624000000000000 1.83713172151456 + 0.625000000000000 1.83566824965136 + 0.626000000000000 1.83420376920713 + 0.627000000000000 1.83273828525393 + 0.628000000000000 1.83127180286231 + 0.629000000000000 1.82980432710122 + 0.630000000000000 1.82833586303801 + 0.631000000000000 1.82686641573839 + 0.632000000000000 1.82539599026642 + 0.633000000000000 1.82392459168444 + 0.634000000000000 1.82245222505309 + 0.635000000000000 1.82097889543123 + 0.636000000000000 1.81950460787597 + 0.637000000000000 1.81802936744257 + 0.638000000000000 1.81655317918447 + 0.639000000000000 1.81507604815323 + 0.640000000000000 1.81359797939851 + 0.641000000000000 1.81211897796804 + 0.642000000000000 1.81063904890759 + 0.643000000000000 1.80915819726095 + 0.644000000000000 1.80767642806987 + 0.645000000000000 1.80619374637408 + 0.646000000000000 1.80471015721122 + 0.647000000000000 1.80322566561682 + 0.648000000000000 1.80174027662429 + 0.649000000000000 1.80025399526488 + 0.650000000000000 1.79876682656764 + 0.651000000000000 1.79727877555939 + 0.652000000000000 1.79578984726474 + 0.653000000000000 1.79430004670599 + 0.654000000000000 1.79280937890315 + 0.655000000000000 1.79131784887389 + 0.656000000000000 1.78982546163352 + 0.657000000000000 1.78833222219498 + 0.658000000000000 1.78683813556877 + 0.659000000000000 1.78534320676295 + 0.660000000000000 1.78384744078311 + 0.661000000000000 1.78235084263234 + 0.662000000000000 1.78085341731120 + 0.663000000000000 1.77935516981769 + 0.664000000000000 1.77785610514723 + 0.665000000000000 1.77635622829263 + 0.666000000000000 1.77485554424405 + 0.667000000000000 1.77335405798899 + 0.668000000000000 1.77185177451226 + 0.669000000000000 1.77034869879594 + 0.670000000000000 1.76884483581935 + 0.671000000000000 1.76734019055906 + 0.672000000000000 1.76583476798881 + 0.673000000000000 1.76432857307953 + 0.674000000000000 1.76282161079927 + 0.675000000000000 1.76131388611322 + 0.676000000000000 1.75980540398363 + 0.677000000000000 1.75829616936983 + 0.678000000000000 1.75678618722817 + 0.679000000000000 1.75527546251202 + 0.680000000000000 1.75376400017173 + 0.681000000000000 1.75225180515460 + 0.682000000000000 1.75073888240485 + 0.683000000000000 1.74922523686360 + 0.684000000000000 1.74771087346886 + 0.685000000000000 1.74619579715548 + 0.686000000000000 1.74468001285513 + 0.687000000000000 1.74316352549628 + 0.688000000000000 1.74164634000415 + 0.689000000000000 1.74012846130073 + 0.690000000000000 1.73860989430471 + 0.691000000000000 1.73709064393149 + 0.692000000000000 1.73557071509310 + 0.693000000000000 1.73405011269825 + 0.694000000000000 1.73252884165224 + 0.695000000000000 1.73100690685695 + 0.696000000000000 1.72948431321086 + 0.697000000000000 1.72796106560894 + 0.698000000000000 1.72643716894271 + 0.699000000000000 1.72491262810015 + 0.700000000000000 1.72338744796572 + 0.701000000000000 1.72186163342030 + 0.702000000000000 1.72033518934118 + 0.703000000000000 1.71880812060206 + 0.704000000000000 1.71728043207297 + 0.705000000000000 1.71575212862029 + 0.706000000000000 1.71422321510670 + 0.707000000000000 1.71269369639119 + 0.708000000000000 1.71116357732897 + 0.709000000000000 1.70963286277154 + 0.710000000000000 1.70810155756655 + 0.711000000000000 1.70656966655789 + 0.712000000000000 1.70503719458558 + 0.713000000000000 1.70350414648580 + 0.714000000000000 1.70197052709081 + 0.715000000000000 1.70043634122900 + 0.716000000000000 1.69890159372481 + 0.717000000000000 1.69736628939870 + 0.718000000000000 1.69583043306718 + 0.719000000000000 1.69429402954273 + 0.720000000000000 1.69275708363381 + 0.721000000000000 1.69121960014482 + 0.722000000000000 1.68968158387608 + 0.723000000000000 1.68814303962383 + 0.724000000000000 1.68660397218015 + 0.725000000000000 1.68506438633300 + 0.726000000000000 1.68352428686614 + 0.727000000000000 1.68198367855916 + 0.728000000000000 1.68044256618742 + 0.729000000000000 1.67890095452203 + 0.730000000000000 1.67735884832985 + 0.731000000000000 1.67581625237343 + 0.732000000000000 1.67427317141103 + 0.733000000000000 1.67272961019657 + 0.734000000000000 1.67118557347960 + 0.735000000000000 1.66964106600531 + 0.736000000000000 1.66809609251446 + 0.737000000000000 1.66655065774341 + 0.738000000000000 1.66500476642405 + 0.739000000000000 1.66345842328383 + 0.740000000000000 1.66191163304567 + 0.741000000000000 1.66036440042800 + 0.742000000000000 1.65881673014470 + 0.743000000000000 1.65726862690510 + 0.744000000000000 1.65572009541394 + 0.745000000000000 1.65417114037136 + 0.746000000000000 1.65262176647286 + 0.747000000000000 1.65107197840932 + 0.748000000000000 1.64952178086692 + 0.749000000000000 1.64797117852717 + 0.750000000000000 1.64642017606687 + 0.751000000000000 1.64486877815806 + 0.752000000000000 1.64331698946804 + 0.753000000000000 1.64176481465933 + 0.754000000000000 1.64021225838966 + 0.755000000000000 1.63865932531193 + 0.756000000000000 1.63710602007420 + 0.757000000000000 1.63555234731966 + 0.758000000000000 1.63399831168664 + 0.759000000000000 1.63244391780853 + 0.760000000000000 1.63088917031383 + 0.761000000000000 1.62933407382606 + 0.762000000000000 1.62777863296381 + 0.763000000000000 1.62622285234065 + 0.764000000000000 1.62466673656515 + 0.765000000000000 1.62311029024087 + 0.766000000000000 1.62155351796630 + 0.767000000000000 1.61999642433486 + 0.768000000000000 1.61843901393489 + 0.769000000000000 1.61688129134962 + 0.770000000000000 1.61532326115715 + 0.771000000000000 1.61376492793041 + 0.772000000000000 1.61220629623719 + 0.773000000000000 1.61064737064007 + 0.774000000000000 1.60908815569643 + 0.775000000000000 1.60752865595840 + 0.776000000000000 1.60596887597290 + 0.777000000000000 1.60440882028154 + 0.778000000000000 1.60284849342066 + 0.779000000000000 1.60128789992130 + 0.780000000000000 1.59972704430916 + 0.781000000000000 1.59816593110459 + 0.782000000000000 1.59660456482260 + 0.783000000000000 1.59504294997277 + 0.784000000000000 1.59348109105932 + 0.785000000000000 1.59191899258103 + 0.786000000000000 1.59035665903124 + 0.787000000000000 1.58879409489782 + 0.788000000000000 1.58723130466317 + 0.789000000000000 1.58566829280420 + 0.790000000000000 1.58410506379228 + 0.791000000000000 1.58254162209328 + 0.792000000000000 1.58097797216747 + 0.793000000000000 1.57941411846960 + 0.794000000000000 1.57785006544878 + 0.795000000000000 1.57628581754856 + 0.796000000000000 1.57472137920683 + 0.797000000000000 1.57315675485585 + 0.798000000000000 1.57159194892220 + 0.799000000000000 1.57002696582681 + 0.800000000000000 1.56846180998490 + 0.801000000000000 1.56689648580596 + 0.802000000000000 1.56533099769375 + 0.803000000000000 1.56376535004631 + 0.804000000000000 1.56219954725588 + 0.805000000000000 1.56063359370891 + 0.806000000000000 1.55906749378608 + 0.807000000000000 1.55750125186222 + 0.808000000000000 1.55593487230634 + 0.809000000000000 1.55436835948159 + 0.810000000000000 1.55280171774524 + 0.811000000000000 1.55123495144869 + 0.812000000000000 1.54966806493742 + 0.813000000000000 1.54810106255099 + 0.814000000000000 1.54653394862303 + 0.815000000000000 1.54496672748122 + 0.816000000000000 1.54339940344724 + 0.817000000000000 1.54183198083681 + 0.818000000000000 1.54026446395963 + 0.819000000000000 1.53869685711940 + 0.820000000000000 1.53712916461376 + 0.821000000000000 1.53556139073430 + 0.822000000000000 1.53399353976655 + 0.823000000000000 1.53242561598997 + 0.824000000000000 1.53085762367787 + 0.825000000000000 1.52928956709750 + 0.826000000000000 1.52772145050995 + 0.827000000000000 1.52615327817015 + 0.828000000000000 1.52458505432689 + 0.829000000000000 1.52301678322277 + 0.830000000000000 1.52144846909420 + 0.831000000000000 1.51988011617137 + 0.832000000000000 1.51831172867827 + 0.833000000000000 1.51674331083261 + 0.834000000000000 1.51517486684588 + 0.835000000000000 1.51360640092328 + 0.836000000000000 1.51203791726373 + 0.837000000000000 1.51046942005987 + 0.838000000000000 1.50890091349798 + 0.839000000000000 1.50733240175805 + 0.840000000000000 1.50576388901372 + 0.841000000000000 1.50419537943224 + 0.842000000000000 1.50262687717454 + 0.843000000000000 1.50105838639511 + 0.844000000000000 1.49948991124207 + 0.845000000000000 1.49792145585711 + 0.846000000000000 1.49635302437550 + 0.847000000000000 1.49478462092605 + 0.848000000000000 1.49321624963114 + 0.849000000000000 1.49164791460665 + 0.850000000000000 1.49007961996197 + 0.851000000000000 1.48851136980003 + 0.852000000000000 1.48694316821720 + 0.853000000000000 1.48537501930334 + 0.854000000000000 1.48380692714179 + 0.855000000000000 1.48223889580931 + 0.856000000000000 1.48067092937610 + 0.857000000000000 1.47910303190577 + 0.858000000000000 1.47753520745537 + 0.859000000000000 1.47596746007530 + 0.860000000000000 1.47439979380936 + 0.861000000000000 1.47283221269472 + 0.862000000000000 1.47126472076191 + 0.863000000000000 1.46969732203477 + 0.864000000000000 1.46813002053051 + 0.865000000000000 1.46656282025963 + 0.866000000000000 1.46499572522593 + 0.867000000000000 1.46342873942652 + 0.868000000000000 1.46186186685178 + 0.869000000000000 1.46029511148534 + 0.870000000000000 1.45872847730412 + 0.871000000000000 1.45716196827824 + 0.872000000000000 1.45559558837108 + 0.873000000000000 1.45402934153922 + 0.874000000000000 1.45246323173247 + 0.875000000000000 1.45089726289379 + 0.876000000000000 1.44933143895937 + 0.877000000000000 1.44776576385853 + 0.878000000000000 1.44620024151378 + 0.879000000000000 1.44463487584076 + 0.880000000000000 1.44306967074825 + 0.881000000000000 1.44150463013815 + 0.882000000000000 1.43993975790548 + 0.883000000000000 1.43837505793836 + 0.884000000000000 1.43681053411799 + 0.885000000000000 1.43524619031866 + 0.886000000000000 1.43368203040772 + 0.887000000000000 1.43211805824560 + 0.888000000000000 1.43055427768575 + 0.889000000000000 1.42899069257466 + 0.890000000000000 1.42742730675185 + 0.891000000000000 1.42586412404986 + 0.892000000000000 1.42430114829422 + 0.893000000000000 1.42273838330348 + 0.894000000000000 1.42117583288913 + 0.895000000000000 1.41961350085567 + 0.896000000000000 1.41805139100055 + 0.897000000000000 1.41648950711416 + 0.898000000000000 1.41492785297986 + 0.899000000000000 1.41336643237391 + 0.900000000000000 1.41180524906552 + 0.901000000000000 1.41024430681679 + 0.902000000000000 1.40868360938273 + 0.903000000000000 1.40712316051126 + 0.904000000000000 1.40556296394316 + 0.905000000000000 1.40400302341209 + 0.906000000000000 1.40244334264457 + 0.907000000000000 1.40088392536000 + 0.908000000000000 1.39932477527059 + 0.909000000000000 1.39776589608140 + 0.910000000000000 1.39620729149033 + 0.911000000000000 1.39464896518808 + 0.912000000000000 1.39309092085817 + 0.913000000000000 1.39153316217691 + 0.914000000000000 1.38997569281342 + 0.915000000000000 1.38841851642957 + 0.916000000000000 1.38686163668004 + 0.917000000000000 1.38530505721224 + 0.918000000000000 1.38374878166637 + 0.919000000000000 1.38219281367535 + 0.920000000000000 1.38063715686486 + 0.921000000000000 1.37908181485329 + 0.922000000000000 1.37752679125177 + 0.923000000000000 1.37597208966415 + 0.924000000000000 1.37441771368696 + 0.925000000000000 1.37286366690945 + 0.926000000000000 1.37130995291355 + 0.927000000000000 1.36975657527388 + 0.928000000000000 1.36820353755774 + 0.929000000000000 1.36665084332507 + 0.930000000000000 1.36509849612851 + 0.931000000000000 1.36354649951331 + 0.932000000000000 1.36199485701739 + 0.933000000000000 1.36044357217130 + 0.934000000000000 1.35889264849823 + 0.935000000000000 1.35734208951397 + 0.936000000000000 1.35579189872693 + 0.937000000000000 1.35424207963815 + 0.938000000000000 1.35269263574125 + 0.939000000000000 1.35114357052244 + 0.940000000000000 1.34959488746053 + 0.941000000000000 1.34804659002691 + 0.942000000000000 1.34649868168553 + 0.943000000000000 1.34495116589291 + 0.944000000000000 1.34340404609814 + 0.945000000000000 1.34185732574286 + 0.946000000000000 1.34031100826124 + 0.947000000000000 1.33876509708001 + 0.948000000000000 1.33721959561843 + 0.949000000000000 1.33567450728828 + 0.950000000000000 1.33412983549387 + 0.951000000000000 1.33258558363201 + 0.952000000000000 1.33104175509203 + 0.953000000000000 1.32949835325577 + 0.954000000000000 1.32795538149756 + 0.955000000000000 1.32641284318421 + 0.956000000000000 1.32487074167504 + 0.957000000000000 1.32332908032183 + 0.958000000000000 1.32178786246884 + 0.959000000000000 1.32024709145279 + 0.960000000000000 1.31870677060289 + 0.961000000000000 1.31716690324077 + 0.962000000000000 1.31562749268055 + 0.963000000000000 1.31408854222876 + 0.964000000000000 1.31255005518441 + 0.965000000000000 1.31101203483891 + 0.966000000000000 1.30947448447613 + 0.967000000000000 1.30793740737236 + 0.968000000000000 1.30640080679629 + 0.969000000000000 1.30486468600906 + 0.970000000000000 1.30332904826420 + 0.971000000000000 1.30179389680766 + 0.972000000000000 1.30025923487777 + 0.973000000000000 1.29872506570530 + 0.974000000000000 1.29719139251336 + 0.975000000000000 1.29565821851750 + 0.976000000000000 1.29412554692562 + 0.977000000000000 1.29259338093802 + 0.978000000000000 1.29106172374736 + 0.979000000000000 1.28953057853869 + 0.980000000000000 1.28799994848941 + 0.981000000000000 1.28646983676930 + 0.982000000000000 1.28494024654050 + 0.983000000000000 1.28341118095748 + 0.984000000000000 1.28188264316710 + 0.985000000000000 1.28035463630855 + 0.986000000000000 1.27882716351335 + 0.987000000000000 1.27730022790539 + 0.988000000000000 1.27577383260089 + 0.989000000000000 1.27424798070838 + 0.990000000000000 1.27272267532875 + 0.991000000000000 1.27119791955521 + 0.992000000000000 1.26967371647329 + 0.993000000000000 1.26815006916083 + 0.994000000000000 1.26662698068803 + 0.995000000000000 1.26510445411734 + 0.996000000000000 1.26358249250359 + 0.997000000000000 1.26206109889387 + 0.998000000000000 1.26054027632759 + 0.999000000000000 1.25902002783647 + 1.00000000000000 1.25750035644453 + 1.00100000000000 1.25598126516807 + 1.00200000000000 1.25446275701572 + 1.00300000000000 1.25294483498837 + 1.00400000000000 1.25142750207921 + 1.00500000000000 1.24991076127373 + 1.00600000000000 1.24839461554968 + 1.00700000000000 1.24687906787713 + 1.00800000000000 1.24536412121839 + 1.00900000000000 1.24384977852808 + 1.01000000000000 1.24233604275308 + 1.01100000000000 1.24082291683256 + 1.01200000000000 1.23931040369794 + 1.01300000000000 1.23779850627293 + 1.01400000000000 1.23628722747350 + 1.01500000000000 1.23477657020789 + 1.01600000000000 1.23326653737661 + 1.01700000000000 1.23175713187243 + 1.01800000000000 1.23024835658038 + 1.01900000000000 1.22874021437775 + 1.02000000000000 1.22723270813410 + 1.02100000000000 1.22572584071123 + 1.02200000000000 1.22421961496322 + 1.02300000000000 1.22271403373639 + 1.02400000000000 1.22120909986931 + 1.02500000000000 1.21970481619282 + 1.02600000000000 1.21820118553000 + 1.02700000000000 1.21669821069619 + 1.02800000000000 1.21519589449896 + 1.02900000000000 1.21369423973815 + 1.03000000000000 1.21219324920585 + 1.03100000000000 1.21069292568639 + 1.03200000000000 1.20919327195633 + 1.03300000000000 1.20769429078452 + 1.03400000000000 1.20619598493201 + 1.03500000000000 1.20469835715212 + 1.03600000000000 1.20320141019042 + 1.03700000000000 1.20170514678470 + 1.03800000000000 1.20020956966502 + 1.03900000000000 1.19871468155367 + 1.04000000000000 1.19722048516519 + 1.04100000000000 1.19572698320637 + 1.04200000000000 1.19423417837621 + 1.04300000000000 1.19274207336600 + 1.04400000000000 1.19125067085925 + 1.04500000000000 1.18975997353170 + 1.04600000000000 1.18826998405137 + 1.04700000000000 1.18678070507850 + 1.04800000000000 1.18529213926557 + 1.04900000000000 1.18380428925732 + 1.05000000000000 1.18231715769073 + 1.05100000000000 1.18083074719503 + 1.05200000000000 1.17934506039167 + 1.05300000000000 1.17786009989439 + 1.05400000000000 1.17637586830915 + 1.05500000000000 1.17489236823415 + 1.05600000000000 1.17340960225987 + 1.05700000000000 1.17192757296902 + 1.05800000000000 1.17044628293655 + 1.05900000000000 1.16896573472968 + 1.06000000000000 1.16748593090788 + 1.06100000000000 1.16600687402287 + 1.06200000000000 1.16452856661863 + 1.06300000000000 1.16305101123138 + 1.06400000000000 1.16157421038962 + 1.06500000000000 1.16009816661408 + 1.06600000000000 1.15862288241778 + 1.06700000000000 1.15714836030599 + 1.06800000000000 1.15567460277622 + 1.06900000000000 1.15420161231829 + 1.07000000000000 1.15272939141424 + 1.07100000000000 1.15125794253840 + 1.07200000000000 1.14978726815737 + 1.07300000000000 1.14831737073001 + 1.07400000000000 1.14684825270747 + 1.07500000000000 1.14537991653315 + 1.07600000000000 1.14391236464275 + 1.07700000000000 1.14244559946422 + 1.07800000000000 1.14097962341783 + 1.07900000000000 1.13951443891609 + 1.08000000000000 1.13805004836382 + 1.08100000000000 1.13658645415812 + 1.08200000000000 1.13512365868838 + 1.08300000000000 1.13366166433628 + 1.08400000000000 1.13220047347578 + 1.08500000000000 1.13074008847317 + 1.08600000000000 1.12928051168700 + 1.08700000000000 1.12782174546813 + 1.08800000000000 1.12636379215975 + 1.08900000000000 1.12490665409733 + 1.09000000000000 1.12345033360865 + 1.09100000000000 1.12199483301380 + 1.09200000000000 1.12054015462520 + 1.09300000000000 1.11908630074756 + 1.09400000000000 1.11763327367794 + 1.09500000000000 1.11618107570570 + 1.09600000000000 1.11472970911254 + 1.09700000000000 1.11327917617247 + 1.09800000000000 1.11182947915185 + 1.09900000000000 1.11038062030936 + 1.10000000000000 1.10893260189603 + 1.10100000000000 1.10748542615523 + 1.10200000000000 1.10603909532266 + 1.10300000000000 1.10459361162639 + 1.10400000000000 1.10314897728681 + 1.10500000000000 1.10170519451670 + 1.10600000000000 1.10026226552117 + 1.10700000000000 1.09882019249772 + 1.10800000000000 1.09737897763617 + 1.10900000000000 1.09593862311875 + 1.11000000000000 1.09449913112005 + 1.11100000000000 1.09306050380704 + 1.11200000000000 1.09162274333904 + 1.11300000000000 1.09018585186780 + 1.11400000000000 1.08874983153742 + 1.11500000000000 1.08731468448442 + 1.11600000000000 1.08588041283769 + 1.11700000000000 1.08444701871854 + 1.11800000000000 1.08301450424066 + 1.11900000000000 1.08158287151017 + 1.12000000000000 1.08015212262560 + 1.12100000000000 1.07872225967789 + 1.12200000000000 1.07729328475038 + 1.12300000000000 1.07586519991888 + 1.12400000000000 1.07443800725158 + 1.12500000000000 1.07301170880914 + 1.12600000000000 1.07158630664465 + 1.12700000000000 1.07016180280362 + 1.12800000000000 1.06873819932403 + 1.12900000000000 1.06731549823631 + 1.13000000000000 1.06589370156333 + 1.13100000000000 1.06447281132045 + 1.13200000000000 1.06305282951545 + 1.13300000000000 1.06163375814863 + 1.13400000000000 1.06021559921273 + 1.13500000000000 1.05879835469299 + 1.13600000000000 1.05738202656711 + 1.13700000000000 1.05596661680532 + 1.13800000000000 1.05455212737030 + 1.13900000000000 1.05313856021727 + 1.14000000000000 1.05172591729392 + 1.14100000000000 1.05031420054047 + 1.14200000000000 1.04890341188965 + 1.14300000000000 1.04749355326673 + 1.14400000000000 1.04608462658946 + 1.14500000000000 1.04467663376816 + 1.14600000000000 1.04326957670568 + 1.14700000000000 1.04186345729741 + 1.14800000000000 1.04045827743127 + 1.14900000000000 1.03905403898775 + 1.15000000000000 1.03765074383991 + 1.15100000000000 1.03624839385334 + 1.15200000000000 1.03484699088622 + 1.15300000000000 1.03344653678932 + 1.15400000000000 1.03204703340596 + 1.15500000000000 1.03064848257206 + 1.15600000000000 1.02925088611615 + 1.15700000000000 1.02785424585932 + 1.15800000000000 1.02645856361530 + 1.15900000000000 1.02506384119041 + 1.16000000000000 1.02367008038360 + 1.16100000000000 1.02227728298642 + 1.16200000000000 1.02088545078307 + 1.16300000000000 1.01949458555037 + 1.16400000000000 1.01810468905779 + 1.16500000000000 1.01671576306744 + 1.16600000000000 1.01532780933409 + 1.16700000000000 1.01394082960516 + 1.16800000000000 1.01255482562074 + 1.16900000000000 1.01116979911359 + 1.17000000000000 1.00978575180914 + 1.17100000000000 1.00840268542552 + 1.17200000000000 1.00702060167355 + 1.17300000000000 1.00563950225672 + 1.17400000000000 1.00425938887125 + 1.17500000000000 1.00288026320607 + 1.17600000000000 1.00150212694282 + 1.17700000000000 1.00012498175585 + 1.17800000000000 0.998748829312270 + 1.17900000000000 0.997373671271900 + 1.18000000000000 0.995999509287316 + 1.18100000000000 0.994626345003842 + 1.18200000000000 0.993254180059558 + 1.18300000000000 0.991883016085310 + 1.18400000000000 0.990512854704714 + 1.18500000000000 0.989143697534162 + 1.18600000000000 0.987775546182834 + 1.18700000000000 0.986408402252698 + 1.18800000000000 0.985042267338525 + 1.18900000000000 0.983677143027889 + 1.19000000000000 0.982313030901178 + 1.19100000000000 0.980949932531600 + 1.19200000000000 0.979587849485190 + 1.19300000000000 0.978226783320819 + 1.19400000000000 0.976866735590199 + 1.19500000000000 0.975507707837889 + 1.19600000000000 0.974149701601310 + 1.19700000000000 0.972792718410740 + 1.19800000000000 0.971436759789335 + 1.19900000000000 0.970081827253123 + 1.20000000000000 0.968727922311025 + 1.20100000000000 0.967375046464850 + 1.20200000000000 0.966023201209313 + 1.20300000000000 0.964672388032033 + 1.20400000000000 0.963322608413550 + 1.20500000000000 0.961973863827325 + 1.20600000000000 0.960626155739751 + 1.20700000000000 0.959279485610162 + 1.20800000000000 0.957933854890840 + 1.20900000000000 0.956589265027018 + 1.21000000000000 0.955245717456897 + 1.21100000000000 0.953903213611643 + 1.21200000000000 0.952561754915406 + 1.21300000000000 0.951221342785319 + 1.21400000000000 0.949881978631510 + 1.21500000000000 0.948543663857110 + 1.21600000000000 0.947206399858261 + 1.21700000000000 0.945870188024121 + 1.21800000000000 0.944535029736878 + 1.21900000000000 0.943200926371751 + 1.22000000000000 0.941867879297004 + 1.22100000000000 0.940535889873951 + 1.22200000000000 0.939204959456967 + 1.22300000000000 0.937875089393491 + 1.22400000000000 0.936546281024040 + 1.22500000000000 0.935218535682213 + 1.22600000000000 0.933891854694704 + 1.22700000000000 0.932566239381306 + 1.22800000000000 0.931241691054920 + 1.22900000000000 0.929918211021565 + 1.23000000000000 0.928595800580387 + 1.23100000000000 0.927274461023664 + 1.23200000000000 0.925954193636820 + 1.23300000000000 0.924634999698425 + 1.23400000000000 0.923316880480216 + 1.23500000000000 0.921999837247091 + 1.23600000000000 0.920683871257130 + 1.23700000000000 0.919368983761597 + 1.23800000000000 0.918055176004952 + 1.23900000000000 0.916742449224853 + 1.24000000000000 0.915430804652178 + 1.24100000000000 0.914120243511017 + 1.24200000000000 0.912810767018695 + 1.24300000000000 0.911502376385773 + 1.24400000000000 0.910195072816060 + 1.24500000000000 0.908888857506620 + 1.24600000000000 0.907583731647781 + 1.24700000000000 0.906279696423146 + 1.24800000000000 0.904976753009601 + 1.24900000000000 0.903674902577321 + 1.25000000000000 0.902374146289786 + 1.25100000000000 0.901074485303781 + 1.25200000000000 0.899775920769411 + 1.25300000000000 0.898478453830112 + 1.25400000000000 0.897182085622652 + 1.25500000000000 0.895886817277149 + 1.25600000000000 0.894592649917073 + 1.25700000000000 0.893299584659260 + 1.25800000000000 0.892007622613919 + 1.25900000000000 0.890716764884643 + 1.26000000000000 0.889427012568416 + 1.26100000000000 0.888138366755622 + 1.26200000000000 0.886850828530059 + 1.26300000000000 0.885564398968942 + 1.26400000000000 0.884279079142916 + 1.26500000000000 0.882994870116065 + 1.26600000000000 0.881711772945922 + 1.26700000000000 0.880429788683476 + 1.26800000000000 0.879148918373183 + 1.26900000000000 0.877869163052977 + 1.27000000000000 0.876590523754277 + 1.27100000000000 0.875313001501997 + 1.27200000000000 0.874036597314557 + 1.27300000000000 0.872761312203892 + 1.27400000000000 0.871487147175459 + 1.27500000000000 0.870214103228250 + 1.27600000000000 0.868942181354802 + 1.27700000000000 0.867671382541202 + 1.27800000000000 0.866401707767104 + 1.27900000000000 0.865133158005730 + 1.28000000000000 0.863865734223887 + 1.28100000000000 0.862599437381974 + 1.28200000000000 0.861334268433989 + 1.28300000000000 0.860070228327545 + 1.28400000000000 0.858807318003874 + 1.28500000000000 0.857545538397842 + 1.28600000000000 0.856284890437951 + 1.28700000000000 0.855025375046359 + 1.28800000000000 0.853766993138882 + 1.28900000000000 0.852509745625009 + 1.29000000000000 0.851253633407906 + 1.29100000000000 0.849998657384433 + 1.29200000000000 0.848744818445149 + 1.29300000000000 0.847492117474324 + 1.29400000000000 0.846240555349948 + 1.29500000000000 0.844990132943743 + 1.29600000000000 0.843740851121170 + 1.29700000000000 0.842492710741442 + 1.29800000000000 0.841245712657533 + 1.29900000000000 0.839999857716187 + 1.30000000000000 0.838755146757928 + 1.30100000000000 0.837511580617075 + 1.30200000000000 0.836269160121746 + 1.30300000000000 0.835027886093870 + 1.30400000000000 0.833787759349198 + 1.30500000000000 0.832548780697316 + 1.30600000000000 0.831310950941647 + 1.30700000000000 0.830074270879472 + 1.30800000000000 0.828838741301931 + 1.30900000000000 0.827604362994039 + 1.31000000000000 0.826371136734693 + 1.31100000000000 0.825139063296686 + 1.31200000000000 0.823908143446712 + 1.31300000000000 0.822678377945383 + 1.31400000000000 0.821449767547232 + 1.31500000000000 0.820222313000731 + 1.31600000000000 0.818996015048295 + 1.31700000000000 0.817770874426297 + 1.31800000000000 0.816546891865074 + 1.31900000000000 0.815324068088943 + 1.32000000000000 0.814102403816206 + 1.32100000000000 0.812881899759165 + 1.32200000000000 0.811662556624128 + 1.32300000000000 0.810444375111424 + 1.32400000000000 0.809227355915412 + 1.32500000000000 0.808011499724489 + 1.32600000000000 0.806796807221103 + 1.32700000000000 0.805583279081766 + 1.32800000000000 0.804370915977059 + 1.32900000000000 0.803159718571645 + 1.33000000000000 0.801949687524283 + 1.33100000000000 0.800740823487833 + 1.33200000000000 0.799533127109272 + 1.33300000000000 0.798326599029700 + 1.33400000000000 0.797121239884352 + 1.33500000000000 0.795917050302613 + 1.33600000000000 0.794714030908022 + 1.33700000000000 0.793512182318286 + 1.33800000000000 0.792311505145293 + 1.33900000000000 0.791111999995118 + 1.34000000000000 0.789913667468037 + 1.34100000000000 0.788716508158537 + 1.34200000000000 0.787520522655328 + 1.34300000000000 0.786325711541350 + 1.34400000000000 0.785132075393788 + 1.34500000000000 0.783939614784081 + 1.34600000000000 0.782748330277932 + 1.34700000000000 0.781558222435322 + 1.34800000000000 0.780369291810516 + 1.34900000000000 0.779181538952080 + 1.35000000000000 0.777994964402885 + 1.35100000000000 0.776809568700124 + 1.35200000000000 0.775625352375319 + 1.35300000000000 0.774442315954334 + 1.35400000000000 0.773260459957383 + 1.35500000000000 0.772079784899048 + 1.35600000000000 0.770900291288280 + 1.35700000000000 0.769721979628418 + 1.35800000000000 0.768544850417196 + 1.35900000000000 0.767368904146756 + 1.36000000000000 0.766194141303656 + 1.36100000000000 0.765020562368885 + 1.36200000000000 0.763848167817872 + 1.36300000000000 0.762676958120496 + 1.36400000000000 0.761506933741098 + 1.36500000000000 0.760338095138494 + 1.36600000000000 0.759170442765983 + 1.36700000000000 0.758003977071360 + 1.36800000000000 0.756838698496924 + 1.36900000000000 0.755674607479496 + 1.37000000000000 0.754511704450421 + 1.37100000000000 0.753349989835587 + 1.37200000000000 0.752189464055431 + 1.37300000000000 0.751030127524952 + 1.37400000000000 0.749871980653723 + 1.37500000000000 0.748715023845902 + 1.37600000000000 0.747559257500239 + 1.37700000000000 0.746404682010094 + 1.37800000000000 0.745251297763444 + 1.37900000000000 0.744099105142894 + 1.38000000000000 0.742948104525688 + 1.38100000000000 0.741798296283724 + 1.38200000000000 0.740649680783561 + 1.38300000000000 0.739502258386431 + 1.38400000000000 0.738356029448252 + 1.38500000000000 0.737210994319637 + 1.38600000000000 0.736067153345908 + 1.38700000000000 0.734924506867104 + 1.38800000000000 0.733783055217994 + 1.38900000000000 0.732642798728089 + 1.39000000000000 0.731503737721651 + 1.39100000000000 0.730365872517707 + 1.39200000000000 0.729229203430057 + 1.39300000000000 0.728093730767288 + 1.39400000000000 0.726959454832785 + 1.39500000000000 0.725826375924740 + 1.39600000000000 0.724694494336168 + 1.39700000000000 0.723563810354912 + 1.39800000000000 0.722434324263658 + 1.39900000000000 0.721306036339949 + 1.40000000000000 0.720178946856188 + 1.40100000000000 0.719053056079660 + 1.40200000000000 0.717928364272533 + 1.40300000000000 0.716804871691878 + 1.40400000000000 0.715682578589673 + 1.40500000000000 0.714561485212821 + 1.40600000000000 0.713441591803156 + 1.40700000000000 0.712322898597457 + 1.40800000000000 0.711205405827460 + 1.40900000000000 0.710089113719866 + 1.41000000000000 0.708974022496358 + 1.41100000000000 0.707860132373604 + 1.41200000000000 0.706747443563278 + 1.41300000000000 0.705635956272065 + 1.41400000000000 0.704525670701673 + 1.41500000000000 0.703416587048846 + 1.41600000000000 0.702308705505377 + 1.41700000000000 0.701202026258113 + 1.41800000000000 0.700096549488975 + 1.41900000000000 0.698992275374961 + 1.42000000000000 0.697889204088166 + 1.42100000000000 0.696787335795784 + 1.42200000000000 0.695686670660128 + 1.42300000000000 0.694587208838634 + 1.42400000000000 0.693488950483881 + 1.42500000000000 0.692391895743592 + 1.42600000000000 0.691296044760654 + 1.42700000000000 0.690201397673126 + 1.42800000000000 0.689107954614250 + 1.42900000000000 0.688015715712464 + 1.43000000000000 0.686924681091411 + 1.43100000000000 0.685834850869953 + 1.43200000000000 0.684746225162183 + 1.43300000000000 0.683658804077431 + 1.43400000000000 0.682572587720282 + 1.43500000000000 0.681487576190584 + 1.43600000000000 0.680403769583460 + 1.43700000000000 0.679321167989320 + 1.43800000000000 0.678239771493872 + 1.43900000000000 0.677159580178132 + 1.44000000000000 0.676080594118438 + 1.44100000000000 0.675002813386461 + 1.44200000000000 0.673926238049214 + 1.44300000000000 0.672850868169066 + 1.44400000000000 0.671776703803754 + 1.44500000000000 0.670703745006390 + 1.44600000000000 0.669631991825479 + 1.44700000000000 0.668561444304923 + 1.44800000000000 0.667492102484040 + 1.44900000000000 0.666423966397569 + 1.45000000000000 0.665357036075687 + 1.45100000000000 0.664291311544015 + 1.45200000000000 0.663226792823634 + 1.45300000000000 0.662163479931094 + 1.45400000000000 0.661101372878425 + 1.45500000000000 0.660040471673151 + 1.45600000000000 0.658980776318299 + 1.45700000000000 0.657922286812411 + 1.45800000000000 0.656865003149559 + 1.45900000000000 0.655808925319347 + 1.46000000000000 0.654754053306934 + 1.46100000000000 0.653700387093038 + 1.46200000000000 0.652647926653949 + 1.46300000000000 0.651596671961542 + 1.46400000000000 0.650546622983288 + 1.46500000000000 0.649497779682262 + 1.46600000000000 0.648450142017161 + 1.46700000000000 0.647403709942307 + 1.46800000000000 0.646358483407668 + 1.46900000000000 0.645314462358861 + 1.47000000000000 0.644271646737167 + 1.47100000000000 0.643230036479545 + 1.47200000000000 0.642189631518639 + 1.47300000000000 0.641150431782790 + 1.47400000000000 0.640112437196050 + 1.47500000000000 0.639075647678192 + 1.47600000000000 0.638040063144721 + 1.47700000000000 0.637005683506886 + 1.47800000000000 0.635972508671690 + 1.47900000000000 0.634940538541903 + 1.48000000000000 0.633909773016076 + 1.48100000000000 0.632880211988544 + 1.48200000000000 0.631851855349446 + 1.48300000000000 0.630824702984734 + 1.48400000000000 0.629798754776180 + 1.48500000000000 0.628774010601394 + 1.48600000000000 0.627750470333830 + 1.48700000000000 0.626728133842802 + 1.48800000000000 0.625707000993491 + 1.48900000000000 0.624687071646959 + 1.49000000000000 0.623668345660159 + 1.49100000000000 0.622650822885948 + 1.49200000000000 0.621634503173098 + 1.49300000000000 0.620619386366304 + 1.49400000000000 0.619605472306200 + 1.49500000000000 0.618592760829370 + 1.49600000000000 0.617581251768354 + 1.49700000000000 0.616570944951666 + 1.49800000000000 0.615561840203802 + 1.49900000000000 0.614553937345249 + 1.50000000000000 0.613547236192502 + 1.50100000000000 0.612541736558073 + 1.50200000000000 0.611537438250498 + 1.50300000000000 0.610534341074355 + 1.50400000000000 0.609532444830270 + 1.50500000000000 0.608531749314934 + 1.50600000000000 0.607532254321106 + 1.50700000000000 0.606533959637634 + 1.50800000000000 0.605536865049457 + 1.50900000000000 0.604540970337623 + 1.51000000000000 0.603546275279298 + 1.51100000000000 0.602552779647777 + 1.51200000000000 0.601560483212493 + 1.51300000000000 0.600569385739034 + 1.51400000000000 0.599579486989150 + 1.51500000000000 0.598590786720763 + 1.51600000000000 0.597603284687983 + 1.51700000000000 0.596616980641115 + 1.51800000000000 0.595631874326672 + 1.51900000000000 0.594647965487387 + 1.52000000000000 0.593665253862221 + 1.52100000000000 0.592683739186378 + 1.52200000000000 0.591703421191316 + 1.52300000000000 0.590724299604752 + 1.52400000000000 0.589746374150683 + 1.52500000000000 0.588769644549389 + 1.52600000000000 0.587794110517449 + 1.52700000000000 0.586819771767748 + 1.52800000000000 0.585846628009494 + 1.52900000000000 0.584874678948223 + 1.53000000000000 0.583903924285813 + 1.53100000000000 0.582934363720496 + 1.53200000000000 0.581965996946869 + 1.53300000000000 0.580998823655900 + 1.53400000000000 0.580032843534949 + 1.53500000000000 0.579068056267768 + 1.53600000000000 0.578104461534522 + 1.53700000000000 0.577142059011792 + 1.53800000000000 0.576180848372591 + 1.53900000000000 0.575220829286375 + 1.54000000000000 0.574262001419051 + 1.54100000000000 0.573304364432990 + 1.54200000000000 0.572347917987038 + 1.54300000000000 0.571392661736527 + 1.54400000000000 0.570438595333286 + 1.54500000000000 0.569485718425653 + 1.54600000000000 0.568534030658482 + 1.54700000000000 0.567583531673159 + 1.54800000000000 0.566634221107611 + 1.54900000000000 0.565686098596317 + 1.55000000000000 0.564739163770318 + 1.55100000000000 0.563793416257229 + 1.55200000000000 0.562848855681250 + 1.55300000000000 0.561905481663177 + 1.55400000000000 0.560963293820412 + 1.55500000000000 0.560022291766976 + 1.55600000000000 0.559082475113516 + 1.55700000000000 0.558143843467322 + 1.55800000000000 0.557206396432331 + 1.55900000000000 0.556270133609144 + 1.56000000000000 0.555335054595032 + 1.56100000000000 0.554401158983950 + 1.56200000000000 0.553468446366547 + 1.56300000000000 0.552536916330177 + 1.56400000000000 0.551606568458908 + 1.56500000000000 0.550677402333536 + 1.56600000000000 0.549749417531594 + 1.56700000000000 0.548822613627364 + 1.56800000000000 0.547896990191885 + 1.56900000000000 0.546972546792966 + 1.57000000000000 0.546049282995198 + 1.57100000000000 0.545127198359962 + 1.57200000000000 0.544206292445441 + 1.57300000000000 0.543286564806632 + 1.57400000000000 0.542368014995354 + 1.57500000000000 0.541450642560262 + 1.57600000000000 0.540534447046853 + 1.57700000000000 0.539619427997485 + 1.57800000000000 0.538705584951376 + 1.57900000000000 0.537792917444627 + 1.58000000000000 0.536881425010223 + 1.58100000000000 0.535971107178050 + 1.58200000000000 0.535061963474900 + 1.58300000000000 0.534153993424489 + 1.58400000000000 0.533247196547460 + 1.58500000000000 0.532341572361399 + 1.58600000000000 0.531437120380843 + 1.58700000000000 0.530533840117292 + 1.58800000000000 0.529631731079218 + 1.58900000000000 0.528730792772079 + 1.59000000000000 0.527831024698323 + 1.59100000000000 0.526932426357406 + 1.59200000000000 0.526034997245799 + 1.59300000000000 0.525138736856997 + 1.59400000000000 0.524243644681534 + 1.59500000000000 0.523349720206988 + 1.59600000000000 0.522456962917997 + 1.59700000000000 0.521565372296265 + 1.59800000000000 0.520674947820575 + 1.59900000000000 0.519785688966800 + 1.60000000000000 0.518897595207910 + 1.60100000000000 0.518010666013988 + 1.60200000000000 0.517124900852234 + 1.60300000000000 0.516240299186981 + 1.60400000000000 0.515356860479702 + 1.60500000000000 0.514474584189021 + 1.60600000000000 0.513593469770726 + 1.60700000000000 0.512713516677775 + 1.60800000000000 0.511834724360310 + 1.60900000000000 0.510957092265666 + 1.61000000000000 0.510080619838381 + 1.61100000000000 0.509205306520206 + 1.61200000000000 0.508331151750118 + 1.61300000000000 0.507458154964326 + 1.61400000000000 0.506586315596287 + 1.61500000000000 0.505715633076708 + 1.61600000000000 0.504846106833567 + 1.61700000000000 0.503977736292113 + 1.61800000000000 0.503110520874883 + 1.61900000000000 0.502244460001708 + 1.62000000000000 0.501379553089728 + 1.62100000000000 0.500515799553398 + 1.62200000000000 0.499653198804499 + 1.62300000000000 0.498791750252150 + 1.62400000000000 0.497931453302816 + 1.62500000000000 0.497072307360321 + 1.62600000000000 0.496214311825853 + 1.62700000000000 0.495357466097980 + 1.62800000000000 0.494501769572658 + 1.62900000000000 0.493647221643239 + 1.63000000000000 0.492793821700483 + 1.63100000000000 0.491941569132569 + 1.63200000000000 0.491090463325104 + 1.63300000000000 0.490240503661131 + 1.63400000000000 0.489391689521143 + 1.63500000000000 0.488544020283091 + 1.63600000000000 0.487697495322393 + 1.63700000000000 0.486852114011946 + 1.63800000000000 0.486007875722134 + 1.63900000000000 0.485164779820842 + 1.64000000000000 0.484322825673459 + 1.64100000000000 0.483482012642895 + 1.64200000000000 0.482642340089588 + 1.64300000000000 0.481803807371511 + 1.64400000000000 0.480966413844188 + 1.64500000000000 0.480130158860699 + 1.64600000000000 0.479295041771692 + 1.64700000000000 0.478461061925392 + 1.64800000000000 0.477628218667613 + 1.64900000000000 0.476796511341765 + 1.65000000000000 0.475965939288864 + 1.65100000000000 0.475136501847544 + 1.65200000000000 0.474308198354065 + 1.65300000000000 0.473481028142326 + 1.65400000000000 0.472654990543867 + 1.65500000000000 0.471830084887890 + 1.65600000000000 0.471006310501258 + 1.65700000000000 0.470183666708511 + 1.65800000000000 0.469362152831875 + 1.65900000000000 0.468541768191269 + 1.66000000000000 0.467722512104320 + 1.66100000000000 0.466904383886364 + 1.66200000000000 0.466087382850467 + 1.66300000000000 0.465271508307422 + 1.66400000000000 0.464456759565772 + 1.66500000000000 0.463643135931807 + 1.66600000000000 0.462830636709582 + 1.66700000000000 0.462019261200924 + 1.66800000000000 0.461209008705443 + 1.66900000000000 0.460399878520537 + 1.67000000000000 0.459591869941406 + 1.67100000000000 0.458784982261060 + 1.67200000000000 0.457979214770331 + 1.67300000000000 0.457174566757877 + 1.67400000000000 0.456371037510197 + 1.67500000000000 0.455568626311637 + 1.67600000000000 0.454767332444401 + 1.67700000000000 0.453967155188561 + 1.67800000000000 0.453168093822064 + 1.67900000000000 0.452370147620743 + 1.68000000000000 0.451573315858329 + 1.68100000000000 0.450777597806454 + 1.68200000000000 0.449982992734668 + 1.68300000000000 0.449189499910441 + 1.68400000000000 0.448397118599179 + 1.68500000000000 0.447605848064227 + 1.68600000000000 0.446815687566884 + 1.68700000000000 0.446026636366408 + 1.68800000000000 0.445238693720029 + 1.68900000000000 0.444451858882955 + 1.69000000000000 0.443666131108383 + 1.69100000000000 0.442881509647507 + 1.69200000000000 0.442097993749530 + 1.69300000000000 0.441315582661668 + 1.69400000000000 0.440534275629167 + 1.69500000000000 0.439754071895303 + 1.69600000000000 0.438974970701400 + 1.69700000000000 0.438196971286831 + 1.69800000000000 0.437420072889034 + 1.69900000000000 0.436644274743516 + 1.70000000000000 0.435869576083867 + 1.70100000000000 0.435095976141765 + 1.70200000000000 0.434323474146985 + 1.70300000000000 0.433552069327411 + 1.70400000000000 0.432781760909045 + 1.70500000000000 0.432012548116011 + 1.70600000000000 0.431244430170570 + 1.70700000000000 0.430477406293127 + 1.70800000000000 0.429711475702238 + 1.70900000000000 0.428946637614622 + 1.71000000000000 0.428182891245167 + 1.71100000000000 0.427420235806941 + 1.71200000000000 0.426658670511202 + 1.71300000000000 0.425898194567401 + 1.71400000000000 0.425138807183200 + 1.71500000000000 0.424380507564473 + 1.71600000000000 0.423623294915319 + 1.71700000000000 0.422867168438068 + 1.71800000000000 0.422112127333295 + 1.71900000000000 0.421358170799821 + 1.72000000000000 0.420605298034729 + 1.72100000000000 0.419853508233369 + 1.72200000000000 0.419102800589368 + 1.72300000000000 0.418353174294638 + 1.72400000000000 0.417604628539385 + 1.72500000000000 0.416857162512117 + 1.72600000000000 0.416110775399657 + 1.72700000000000 0.415365466387143 + 1.72800000000000 0.414621234658046 + 1.72900000000000 0.413878079394173 + 1.73000000000000 0.413135999775678 + 1.73100000000000 0.412394994981067 + 1.73200000000000 0.411655064187212 + 1.73300000000000 0.410916206569358 + 1.73400000000000 0.410178421301126 + 1.73500000000000 0.409441707554531 + 1.73600000000000 0.408706064499983 + 1.73700000000000 0.407971491306298 + 1.73800000000000 0.407237987140708 + 1.73900000000000 0.406505551168867 + 1.74000000000000 0.405774182554860 + 1.74100000000000 0.405043880461215 + 1.74200000000000 0.404314644048905 + 1.74300000000000 0.403586472477362 + 1.74400000000000 0.402859364904483 + 1.74500000000000 0.402133320486638 + 1.74600000000000 0.401408338378680 + 1.74700000000000 0.400684417733952 + 1.74800000000000 0.399961557704295 + 1.74900000000000 0.399239757440059 + 1.75000000000000 0.398519016090107 + 1.75100000000000 0.397799332801829 + 1.75200000000000 0.397080706721145 + 1.75300000000000 0.396363136992514 + 1.75400000000000 0.395646622758946 + 1.75500000000000 0.394931163162007 + 1.75600000000000 0.394216757341827 + 1.75700000000000 0.393503404437110 + 1.75800000000000 0.392791103585141 + 1.75900000000000 0.392079853921796 + 1.76000000000000 0.391369654581546 + 1.76100000000000 0.390660504697470 + 1.76200000000000 0.389952403401261 + 1.76300000000000 0.389245349823231 + 1.76400000000000 0.388539343092326 + 1.76500000000000 0.387834382336127 + 1.76600000000000 0.387130466680864 + 1.76700000000000 0.386427595251419 + 1.76800000000000 0.385725767171338 + 1.76900000000000 0.385024981562836 + 1.77000000000000 0.384325237546807 + 1.77100000000000 0.383626534242830 + 1.77200000000000 0.382928870769180 + 1.77300000000000 0.382232246242833 + 1.77400000000000 0.381536659779476 + 1.77500000000000 0.380842110493512 + 1.77600000000000 0.380148597498071 + 1.77700000000000 0.379456119905017 + 1.77800000000000 0.378764676824957 + 1.77900000000000 0.378074267367243 + 1.78000000000000 0.377384890639988 + 1.78100000000000 0.376696545750069 + 1.78200000000000 0.376009231803136 + 1.78300000000000 0.375322947903618 + 1.78400000000000 0.374637693154735 + 1.78500000000000 0.373953466658501 + 1.78600000000000 0.373270267515735 + 1.78700000000000 0.372588094826065 + 1.78800000000000 0.371906947687943 + 1.78900000000000 0.371226825198643 + 1.79000000000000 0.370547726454275 + 1.79100000000000 0.369869650549793 + 1.79200000000000 0.369192596578999 + 1.79300000000000 0.368516563634552 + 1.79400000000000 0.367841550807977 + 1.79500000000000 0.367167557189672 + 1.79600000000000 0.366494581868914 + 1.79700000000000 0.365822623933867 + 1.79800000000000 0.365151682471592 + 1.79900000000000 0.364481756568051 + 1.80000000000000 0.363812845308118 + 1.80100000000000 0.363144947775582 + 1.80200000000000 0.362478063053160 + 1.80300000000000 0.361812190222499 + 1.80400000000000 0.361147328364188 + 1.80500000000000 0.360483476557762 + 1.80600000000000 0.359820633881711 + 1.80700000000000 0.359158799413488 + 1.80800000000000 0.358497972229513 + 1.80900000000000 0.357838151405186 + 1.81000000000000 0.357179336014889 + 1.81100000000000 0.356521525131996 + 1.81200000000000 0.355864717828880 + 1.81300000000000 0.355208913176921 + 1.81400000000000 0.354554110246508 + 1.81500000000000 0.353900308107057 + 1.81600000000000 0.353247505827006 + 1.81700000000000 0.352595702473831 + 1.81800000000000 0.351944897114049 + 1.81900000000000 0.351295088813226 + 1.82000000000000 0.350646276635987 + 1.82100000000000 0.349998459646017 + 1.82200000000000 0.349351636906074 + 1.82300000000000 0.348705807477993 + 1.82400000000000 0.348060970422694 + 1.82500000000000 0.347417124800189 + 1.82600000000000 0.346774269669589 + 1.82700000000000 0.346132404089112 + 1.82800000000000 0.345491527116088 + 1.82900000000000 0.344851637806967 + 1.83000000000000 0.344212735217327 + 1.83100000000000 0.343574818401880 + 1.83200000000000 0.342937886414477 + 1.83300000000000 0.342301938308120 + 1.83400000000000 0.341666973134965 + 1.83500000000000 0.341032989946328 + 1.83600000000000 0.340399987792696 + 1.83700000000000 0.339767965723730 + 1.83800000000000 0.339136922788274 + 1.83900000000000 0.338506858034363 + 1.84000000000000 0.337877770509224 + 1.84100000000000 0.337249659259292 + 1.84200000000000 0.336622523330207 + 1.84300000000000 0.335996361766828 + 1.84400000000000 0.335371173613238 + 1.84500000000000 0.334746957912747 + 1.84600000000000 0.334123713707905 + 1.84700000000000 0.333501440040503 + 1.84800000000000 0.332880135951583 + 1.84900000000000 0.332259800481445 + 1.85000000000000 0.331640432669650 + 1.85100000000000 0.331022031555030 + 1.85200000000000 0.330404596175695 + 1.85300000000000 0.329788125569037 + 1.85400000000000 0.329172618771739 + 1.85500000000000 0.328558074819778 + 1.85600000000000 0.327944492748438 + 1.85700000000000 0.327331871592309 + 1.85800000000000 0.326720210385299 + 1.85900000000000 0.326109508160638 + 1.86000000000000 0.325499763950885 + 1.86100000000000 0.324890976787935 + 1.86200000000000 0.324283145703026 + 1.86300000000000 0.323676269726742 + 1.86400000000000 0.323070347889025 + 1.86500000000000 0.322465379219175 + 1.86600000000000 0.321861362745863 + 1.86700000000000 0.321258297497132 + 1.86800000000000 0.320656182500406 + 1.86900000000000 0.320055016782497 + 1.87000000000000 0.319454799369607 + 1.87100000000000 0.318855529287342 + 1.87200000000000 0.318257205560710 + 1.87300000000000 0.317659827214133 + 1.87400000000000 0.317063393271450 + 1.87500000000000 0.316467902755926 + 1.87600000000000 0.315873354690256 + 1.87700000000000 0.315279748096572 + 1.87800000000000 0.314687081996449 + 1.87900000000000 0.314095355410913 + 1.88000000000000 0.313504567360443 + 1.88100000000000 0.312914716864982 + 1.88200000000000 0.312325802943939 + 1.88300000000000 0.311737824616198 + 1.88400000000000 0.311150780900124 + 1.88500000000000 0.310564670813565 + 1.88600000000000 0.309979493373864 + 1.88700000000000 0.309395247597863 + 1.88800000000000 0.308811932501904 + 1.88900000000000 0.308229547101845 + 1.89000000000000 0.307648090413055 + 1.89100000000000 0.307067561450429 + 1.89200000000000 0.306487959228389 + 1.89300000000000 0.305909282760891 + 1.89400000000000 0.305331531061432 + 1.89500000000000 0.304754703143054 + 1.89600000000000 0.304178798018351 + 1.89700000000000 0.303603814699475 + 1.89800000000000 0.303029752198144 + 1.89900000000000 0.302456609525643 + 1.90000000000000 0.301884385692833 + 1.90100000000000 0.301313079710156 + 1.90200000000000 0.300742690587643 + 1.90300000000000 0.300173217334915 + 1.90400000000000 0.299604658961194 + 1.90500000000000 0.299037014475306 + 1.90600000000000 0.298470282885686 + 1.90700000000000 0.297904463200385 + 1.90800000000000 0.297339554427078 + 1.90900000000000 0.296775555573065 + 1.91000000000000 0.296212465645278 + 1.91100000000000 0.295650283650292 + 1.91200000000000 0.295089008594321 + 1.91300000000000 0.294528639483232 + 1.91400000000000 0.293969175322548 + 1.91500000000000 0.293410615117452 + 1.91600000000000 0.292852957872792 + 1.91700000000000 0.292296202593093 + 1.91800000000000 0.291740348282553 + 1.91900000000000 0.291185393945056 + 1.92000000000000 0.290631338584174 + 1.92100000000000 0.290078181203175 + 1.92200000000000 0.289525920805024 + 1.92300000000000 0.288974556392394 + 1.92400000000000 0.288424086967667 + 1.92500000000000 0.287874511532943 + 1.92600000000000 0.287325829090043 + 1.92700000000000 0.286778038640515 + 1.92800000000000 0.286231139185638 + 1.92900000000000 0.285685129726432 + 1.93000000000000 0.285140009263658 + 1.93100000000000 0.284595776797826 + 1.93200000000000 0.284052431329201 + 1.93300000000000 0.283509971857805 + 1.93400000000000 0.282968397383427 + 1.93500000000000 0.282427706905624 + 1.93600000000000 0.281887899423729 + 1.93700000000000 0.281348973936856 + 1.93800000000000 0.280810929443903 + 1.93900000000000 0.280273764943559 + 1.94000000000000 0.279737479434311 + 1.94100000000000 0.279202071914446 + 1.94200000000000 0.278667541382055 + 1.94300000000000 0.278133886835044 + 1.94400000000000 0.277601107271135 + 1.94500000000000 0.277069201687871 + 1.94600000000000 0.276538169082621 + 1.94700000000000 0.276008008452588 + 1.94800000000000 0.275478718794811 + 1.94900000000000 0.274950299106172 + 1.95000000000000 0.274422748383399 + 1.95100000000000 0.273896065623073 + 1.95200000000000 0.273370249821632 + 1.95300000000000 0.272845299975377 + 1.95400000000000 0.272321215080475 + 1.95500000000000 0.271797994132966 + 1.95600000000000 0.271275636128768 + 1.95700000000000 0.270754140063680 + 1.95800000000000 0.270233504933388 + 1.95900000000000 0.269713729733470 + 1.96000000000000 0.269194813459401 + 1.96100000000000 0.268676755106560 + 1.96200000000000 0.268159553670228 + 1.96300000000000 0.267643208145602 + 1.96400000000000 0.267127717527793 + 1.96500000000000 0.266613080811832 + 1.96600000000000 0.266099296992680 + 1.96700000000000 0.265586365065224 + 1.96800000000000 0.265074284024290 + 1.96900000000000 0.264563052864643 + 1.97000000000000 0.264052670580992 + 1.97100000000000 0.263543136167997 + 1.97200000000000 0.263034448620273 + 1.97300000000000 0.262526606932393 + 1.97400000000000 0.262019610098895 + 1.97500000000000 0.261513457114282 + 1.97600000000000 0.261008146973036 + 1.97700000000000 0.260503678669612 + 1.97800000000000 0.260000051198450 + 1.97900000000000 0.259497263553976 + 1.98000000000000 0.258995314730607 + 1.98100000000000 0.258494203722758 + 1.98200000000000 0.257993929524843 + 1.98300000000000 0.257494491131283 + 1.98400000000000 0.256995887536507 + 1.98500000000000 0.256498117734961 + 1.98600000000000 0.256001180721107 + 1.98700000000000 0.255505075489432 + 1.98800000000000 0.255009801034451 + 1.98900000000000 0.254515356350710 + 1.99000000000000 0.254021740432794 + 1.99100000000000 0.253528952275326 + 1.99200000000000 0.253036990872979 + 1.99300000000000 0.252545855220471 + 1.99400000000000 0.252055544312579 + 1.99500000000000 0.251566057144135 + 1.99600000000000 0.251077392710037 + 1.99700000000000 0.250589550005249 + 1.99800000000000 0.250102528024808 + 1.99900000000000 0.249616325763825 + 2.00000000000000 0.249130942217493 + 2.00100000000000 0.248646376381090 + 2.00200000000000 0.248162627249982 + 2.00300000000000 0.247679693819630 + 2.00400000000000 0.247197575085589 + 2.00500000000000 0.246716270043520 + 2.00600000000000 0.246235777689186 + 2.00700000000000 0.245756097018464 + 2.00800000000000 0.245277227027342 + 2.00900000000000 0.244799166711928 + 2.01000000000000 0.244321915068452 + 2.01100000000000 0.243845471093272 + 2.01200000000000 0.243369833782876 + 2.01300000000000 0.242895002133887 + 2.01400000000000 0.242420975143068 + 2.01500000000000 0.241947751807323 + 2.01600000000000 0.241475331123706 + 2.01700000000000 0.241003712089420 + 2.01800000000000 0.240532893701826 + 2.01900000000000 0.240062874958442 + 2.02000000000000 0.239593654856950 + 2.02100000000000 0.239125232395200 + 2.02200000000000 0.238657606571213 + 2.02300000000000 0.238190776383187 + 2.02400000000000 0.237724740829495 + 2.02500000000000 0.237259498908699 + 2.02600000000000 0.236795049619543 + 2.02700000000000 0.236331391960967 + 2.02800000000000 0.235868524932101 + 2.02900000000000 0.235406447532277 + 2.03000000000000 0.234945158761029 + 2.03100000000000 0.234484657618099 + 2.03200000000000 0.234024943103437 + 2.03300000000000 0.233566014217210 + 2.03400000000000 0.233107869959800 + 2.03500000000000 0.232650509331813 + 2.03600000000000 0.232193931334082 + 2.03700000000000 0.231738134967666 + 2.03800000000000 0.231283119233860 + 2.03900000000000 0.230828883134195 + 2.04000000000000 0.230375425670443 + 2.04100000000000 0.229922745844621 + 2.04200000000000 0.229470842658992 + 2.04300000000000 0.229019715116074 + 2.04400000000000 0.228569362218639 + 2.04500000000000 0.228119782969717 + 2.04600000000000 0.227670976372603 + 2.04700000000000 0.227222941430858 + 2.04800000000000 0.226775677148312 + 2.04900000000000 0.226329182529069 + 2.05000000000000 0.225883456577513 + 2.05100000000000 0.225438498298304 + 2.05200000000000 0.224994306696392 + 2.05300000000000 0.224550880777010 + 2.05400000000000 0.224108219545687 + 2.05500000000000 0.223666322008244 + 2.05600000000000 0.223225187170802 + 2.05700000000000 0.222784814039784 + 2.05800000000000 0.222345201621919 + 2.05900000000000 0.221906348924244 + 2.06000000000000 0.221468254954110 + 2.06100000000000 0.221030918719184 + 2.06200000000000 0.220594339227451 + 2.06300000000000 0.220158515487220 + 2.06400000000000 0.219723446507126 + 2.06500000000000 0.219289131296135 + 2.06600000000000 0.218855568863544 + 2.06700000000000 0.218422758218987 + 2.06800000000000 0.217990698372440 + 2.06900000000000 0.217559388334220 + 2.07000000000000 0.217128827114991 + 2.07100000000000 0.216699013725766 + 2.07200000000000 0.216269947177913 + 2.07300000000000 0.215841626483156 + 2.07400000000000 0.215414050653577 + 2.07500000000000 0.214987218701624 + 2.07600000000000 0.214561129640108 + 2.07700000000000 0.214135782482212 + 2.07800000000000 0.213711176241490 + 2.07900000000000 0.213287309931874 + 2.08000000000000 0.212864182567673 + 2.08100000000000 0.212441793163579 + 2.08200000000000 0.212020140734671 + 2.08300000000000 0.211599224296414 + 2.08400000000000 0.211179042864666 + 2.08500000000000 0.210759595455682 + 2.08600000000000 0.210340881086113 + 2.08700000000000 0.209922898773011 + 2.08800000000000 0.209505647533832 + 2.08900000000000 0.209089126386443 + 2.09000000000000 0.208673334349116 + 2.09100000000000 0.208258270440541 + 2.09200000000000 0.207843933679823 + 2.09300000000000 0.207430323086486 + 2.09400000000000 0.207017437680477 + 2.09500000000000 0.206605276482171 + 2.09600000000000 0.206193838512367 + 2.09700000000000 0.205783122792301 + 2.09800000000000 0.205373128343639 + 2.09900000000000 0.204963854188488 + 2.10000000000000 0.204555299349394 + 2.10100000000000 0.204147462849346 + 2.10200000000000 0.203740343711782 + 2.10300000000000 0.203333940960585 + 2.10400000000000 0.202928253620095 + 2.10500000000000 0.202523280715104 + 2.10600000000000 0.202119021270864 + 2.10700000000000 0.201715474313086 + 2.10800000000000 0.201312638867945 + 2.10900000000000 0.200910513962086 + 2.11000000000000 0.200509098622617 + 2.11100000000000 0.200108391877125 + 2.11200000000000 0.199708392753668 + 2.11300000000000 0.199309100280783 + 2.11400000000000 0.198910513487486 + 2.11500000000000 0.198512631403280 + 2.11600000000000 0.198115453058151 + 2.11700000000000 0.197718977482576 + 2.11800000000000 0.197323203707521 + 2.11900000000000 0.196928130764448 + 2.12000000000000 0.196533757685317 + 2.12100000000000 0.196140083502586 + 2.12200000000000 0.195747107249217 + 2.12300000000000 0.195354827958675 + 2.12400000000000 0.194963244664936 + 2.12500000000000 0.194572356402483 + 2.12600000000000 0.194182162206313 + 2.12700000000000 0.193792661111942 + 2.12800000000000 0.193403852155399 + 2.12900000000000 0.193015734373237 + 2.13000000000000 0.192628306802534 + 2.13100000000000 0.192241568480890 + 2.13200000000000 0.191855518446436 + 2.13300000000000 0.191470155737836 + 2.13400000000000 0.191085479394283 + 2.13500000000000 0.190701488455512 + 2.13600000000000 0.190318181961792 + 2.13700000000000 0.189935558953936 + 2.13800000000000 0.189553618473299 + 2.13900000000000 0.189172359561785 + 2.14000000000000 0.188791781261845 + 2.14100000000000 0.188411882616481 + 2.14200000000000 0.188032662669250 + 2.14300000000000 0.187654120464263 + 2.14400000000000 0.187276255046192 + 2.14500000000000 0.186899065460269 + 2.14600000000000 0.186522550752289 + 2.14700000000000 0.186146709968613 + 2.14800000000000 0.185771542156172 + 2.14900000000000 0.185397046362465 + 2.15000000000000 0.185023221635565 + 2.15100000000000 0.184650067024120 + 2.15200000000000 0.184277581577357 + 2.15300000000000 0.183905764345081 + 2.15400000000000 0.183534614377681 + 2.15500000000000 0.183164130726129 + 2.15600000000000 0.182794312441985 + 2.15700000000000 0.182425158577398 + 2.15800000000000 0.182056668185109 + 2.15900000000000 0.181688840318451 + 2.16000000000000 0.181321674031355 + 2.16100000000000 0.180955168378349 + 2.16200000000000 0.180589322414561 + 2.16300000000000 0.180224135195724 + 2.16400000000000 0.179859605778173 + 2.16500000000000 0.179495733218852 + 2.16600000000000 0.179132516575313 + 2.16700000000000 0.178769954905722 + 2.16800000000000 0.178408047268854 + 2.16900000000000 0.178046792724105 + 2.17000000000000 0.177686190331486 + 2.17100000000000 0.177326239151627 + 2.17200000000000 0.176966938245783 + 2.17300000000000 0.176608286675832 + 2.17400000000000 0.176250283504278 + 2.17500000000000 0.175892927794253 + 2.17600000000000 0.175536218609522 + 2.17700000000000 0.175180155014481 + 2.17800000000000 0.174824736074160 + 2.17900000000000 0.174469960854226 + 2.18000000000000 0.174115828420987 + 2.18100000000000 0.173762337841389 + 2.18200000000000 0.173409488183022 + 2.18300000000000 0.173057278514121 + 2.18400000000000 0.172705707903568 + 2.18500000000000 0.172354775420893 + 2.18600000000000 0.172004480136278 + 2.18700000000000 0.171654821120556 + 2.18800000000000 0.171305797445217 + 2.18900000000000 0.170957408182406 + 2.19000000000000 0.170609652404927 + 2.19100000000000 0.170262529186245 + 2.19200000000000 0.169916037600486 + 2.19300000000000 0.169570176722444 + 2.19400000000000 0.169224945627575 + 2.19500000000000 0.168880343392004 + 2.19600000000000 0.168536369092530 + 2.19700000000000 0.168193021806618 + 2.19800000000000 0.167850300612410 + 2.19900000000000 0.167508204588725 + 2.20000000000000 0.167166732815055 + 2.20100000000000 0.166825884371576 + 2.20200000000000 0.166485658339143 + 2.20300000000000 0.166146053799292 + 2.20400000000000 0.165807069834246 + 2.20500000000000 0.165468705526915 + 2.20600000000000 0.165130959960895 + 2.20700000000000 0.164793832220474 + 2.20800000000000 0.164457321390630 + 2.20900000000000 0.164121426557036 + 2.21000000000000 0.163786146806060 + 2.21100000000000 0.163451481224765 + 2.21200000000000 0.163117428900916 + 2.21300000000000 0.162783988922976 + 2.21400000000000 0.162451160380111 + 2.21500000000000 0.162118942362190 + 2.21600000000000 0.161787333959788 + 2.21700000000000 0.161456334264188 + 2.21800000000000 0.161125942367380 + 2.21900000000000 0.160796157362066 + 2.22000000000000 0.160466978341658 + 2.22100000000000 0.160138404400285 + 2.22200000000000 0.159810434632788 + 2.22300000000000 0.159483068134727 + 2.22400000000000 0.159156304002379 + 2.22500000000000 0.158830141332744 + 2.22600000000000 0.158504579223540 + 2.22700000000000 0.158179616773211 + 2.22800000000000 0.157855253080924 + 2.22900000000000 0.157531487246574 + 2.23000000000000 0.157208318370783 + 2.23100000000000 0.156885745554903 + 2.23200000000000 0.156563767901017 + 2.23300000000000 0.156242384511941 + 2.23400000000000 0.155921594491223 + 2.23500000000000 0.155601396943148 + 2.23600000000000 0.155281790972739 + 2.23700000000000 0.154962775685756 + 2.23800000000000 0.154644350188700 + 2.23900000000000 0.154326513588813 + 2.24000000000000 0.154009264994080 + 2.24100000000000 0.153692603513230 + 2.24200000000000 0.153376528255738 + 2.24300000000000 0.153061038331827 + 2.24400000000000 0.152746132852468 + 2.24500000000000 0.152431810929382 + 2.24600000000000 0.152118071675041 + 2.24700000000000 0.151804914202671 + 2.24800000000000 0.151492337626252 + 2.24900000000000 0.151180341060519 + 2.25000000000000 0.150868923620964 + 2.25100000000000 0.150558084423838 + 2.25200000000000 0.150247822586151 + 2.25300000000000 0.149938137225675 + 2.25400000000000 0.149629027460943 + 2.25500000000000 0.149320492411254 + 2.25600000000000 0.149012531196668 + 2.25700000000000 0.148705142938016 + 2.25800000000000 0.148398326756893 + 2.25900000000000 0.148092081775664 + 2.26000000000000 0.147786407117465 + 2.26100000000000 0.147481301906203 + 2.26200000000000 0.147176765266558 + 2.26300000000000 0.146872796323982 + 2.26400000000000 0.146569394204705 + 2.26500000000000 0.146266558035731 + 2.26600000000000 0.145964286944844 + 2.26700000000000 0.145662580060605 + 2.26800000000000 0.145361436512356 + 2.26900000000000 0.145060855430219 + 2.27000000000000 0.144760835945102 + 2.27100000000000 0.144461377188692 + 2.27200000000000 0.144162478293464 + 2.27300000000000 0.143864138392678 + 2.27400000000000 0.143566356620381 + 2.27500000000000 0.143269132111409 + 2.27600000000000 0.142972464001388 + 2.27700000000000 0.142676351426732 + 2.27800000000000 0.142380793524650 + 2.27900000000000 0.142085789433142 + 2.28000000000000 0.141791338291002 + 2.28100000000000 0.141497439237820 + 2.28200000000000 0.141204091413981 + 2.28300000000000 0.140911293960669 + 2.28400000000000 0.140619046019865 + 2.28500000000000 0.140327346734349 + 2.28600000000000 0.140036195247703 + 2.28700000000000 0.139745590704309 + 2.28800000000000 0.139455532249354 + 2.28900000000000 0.139166019028825 + 2.29000000000000 0.138877050189516 + 2.29100000000000 0.138588624879028 + 2.29200000000000 0.138300742245765 + 2.29300000000000 0.138013401438943 + 2.29400000000000 0.137726601608582 + 2.29500000000000 0.137440341905517 + 2.29600000000000 0.137154621481388 + 2.29700000000000 0.136869439488652 + 2.29800000000000 0.136584795080575 + 2.29900000000000 0.136300687411239 + 2.30000000000000 0.136017115635538 + 2.30100000000000 0.135734078909183 + 2.30200000000000 0.135451576388703 + 2.30300000000000 0.135169607231441 + 2.30400000000000 0.134888170595561 + 2.30500000000000 0.134607265640045 + 2.30600000000000 0.134326891524695 + 2.30700000000000 0.134047047410135 + 2.30800000000000 0.133767732457811 + 2.30900000000000 0.133488945829990 + 2.31000000000000 0.133210686689764 + 2.31100000000000 0.132932954201050 + 2.31200000000000 0.132655747528589 + 2.31300000000000 0.132379065837950 + 2.31400000000000 0.132102908295528 + 2.31500000000000 0.131827274068546 + 2.31600000000000 0.131552162325057 + 2.31700000000000 0.131277572233941 + 2.31800000000000 0.131003502964911 + 2.31900000000000 0.130729953688511 + 2.32000000000000 0.130456923576116 + 2.32100000000000 0.130184411799933 + 2.32200000000000 0.129912417533007 + 2.32300000000000 0.129640939949211 + 2.32400000000000 0.129369978223259 + 2.32500000000000 0.129099531530699 + 2.32600000000000 0.128829599047913 + 2.32700000000000 0.128560179952125 + 2.32800000000000 0.128291273421395 + 2.32900000000000 0.128022878634621 + 2.33000000000000 0.127754994771543 + 2.33100000000000 0.127487621012739 + 2.33200000000000 0.127220756539632 + 2.33300000000000 0.126954400534482 + 2.33400000000000 0.126688552180395 + 2.33500000000000 0.126423210661320 + 2.33600000000000 0.126158375162049 + 2.33700000000000 0.125894044868218 + 2.33800000000000 0.125630218966310 + 2.33900000000000 0.125366896643654 + 2.34000000000000 0.125104077088425 + 2.34100000000000 0.124841759489644 + 2.34200000000000 0.124579943037183 + 2.34300000000000 0.124318626921761 + 2.34400000000000 0.124057810334946 + 2.34500000000000 0.123797492469155 + 2.34600000000000 0.123537672517659 + 2.34700000000000 0.123278349674577 + 2.34800000000000 0.123019523134880 + 2.34900000000000 0.122761192094394 + 2.35000000000000 0.122503355749794 + 2.35100000000000 0.122246013298612 + 2.35200000000000 0.121989163939233 + 2.35300000000000 0.121732806870895 + 2.35400000000000 0.121476941293694 + 2.35500000000000 0.121221566408581 + 2.35600000000000 0.120966681417363 + 2.35700000000000 0.120712285522703 + 2.35800000000000 0.120458377928123 + 2.35900000000000 0.120204957838003 + 2.36000000000000 0.119952024457582 + 2.36100000000000 0.119699576992956 + 2.36200000000000 0.119447614651082 + 2.36300000000000 0.119196136639779 + 2.36400000000000 0.118945142167722 + 2.36500000000000 0.118694630444453 + 2.36600000000000 0.118444600680370 + 2.36700000000000 0.118195052086737 + 2.36800000000000 0.117945983875680 + 2.36900000000000 0.117697395260186 + 2.37000000000000 0.117449285454109 + 2.37100000000000 0.117201653672163 + 2.37200000000000 0.116954499129930 + 2.37300000000000 0.116707821043854 + 2.37400000000000 0.116461618631248 + 2.37500000000000 0.116215891110288 + 2.37600000000000 0.115970637700016 + 2.37700000000000 0.115725857620343 + 2.37800000000000 0.115481550092045 + 2.37900000000000 0.115237714336767 + 2.38000000000000 0.114994349577021 + 2.38100000000000 0.114751455036187 + 2.38200000000000 0.114509029938515 + 2.38300000000000 0.114267073509124 + 2.38400000000000 0.114025584974001 + 2.38500000000000 0.113784563560004 + 2.38600000000000 0.113544008494862 + 2.38700000000000 0.113303919007172 + 2.38800000000000 0.113064294326406 + 2.38900000000000 0.112825133682903 + 2.39000000000000 0.112586436307877 + 2.39100000000000 0.112348201433413 + 2.39200000000000 0.112110428292468 + 2.39300000000000 0.111873116118871 + 2.39400000000000 0.111636264147326 + 2.39500000000000 0.111399871613409 + 2.39600000000000 0.111163937753570 + 2.39700000000000 0.110928461805133 + 2.39800000000000 0.110693443006297 + 2.39900000000000 0.110458880596133 + 2.40000000000000 0.110224773814591 + 2.40100000000000 0.109991121902492 + 2.40200000000000 0.109757924101536 + 2.40300000000000 0.109525179654296 + 2.40400000000000 0.109292887804222 + 2.40500000000000 0.109061047795641 + 2.40600000000000 0.108829658873755 + 2.40700000000000 0.108598720284645 + 2.40800000000000 0.108368231275267 + 2.40900000000000 0.108138191093455 + 2.41000000000000 0.107908598987920 + 2.41100000000000 0.107679454208252 + 2.41200000000000 0.107450756004917 + 2.41300000000000 0.107222503629261 + 2.41400000000000 0.106994696333508 + 2.41500000000000 0.106767333370760 + 2.41600000000000 0.106540413994999 + 2.41700000000000 0.106313937461084 + 2.41800000000000 0.106087903024754 + 2.41900000000000 0.105862309942630 + 2.42000000000000 0.105637157472208 + 2.42100000000000 0.105412444871868 + 2.42200000000000 0.105188171400867 + 2.42300000000000 0.104964336319344 + 2.42400000000000 0.104740938888317 + 2.42500000000000 0.104517978369685 + 2.42600000000000 0.104295454026227 + 2.42700000000000 0.104073365121605 + 2.42800000000000 0.103851710920358 + 2.42900000000000 0.103630490687909 + 2.43000000000000 0.103409703690562 + 2.43100000000000 0.103189349195500 + 2.43200000000000 0.102969426470791 + 2.43300000000000 0.102749934785381 + 2.43400000000000 0.102530873409099 + 2.43500000000000 0.102312241612657 + 2.43600000000000 0.102094038667647 + 2.43700000000000 0.101876263846544 + 2.43800000000000 0.101658916422705 + 2.43900000000000 0.101441995670367 + 2.44000000000000 0.101225500864653 + 2.44100000000000 0.101009431281566 + 2.44200000000000 0.100793786197991 + 2.44300000000000 0.100578564891696 + 2.44400000000000 0.100363766641333 + 2.44500000000000 0.100149390726433 + 2.44600000000000 9.993543642741350E-002 + 2.44700000000000 9.972190302557207E-002 + 2.44800000000000 9.950878980309003E-002 + 2.44900000000000 9.929609604303119E-002 + 2.45000000000000 9.908382102934214E-002 + 2.45100000000000 9.887196404685245E-002 + 2.45200000000000 9.866052438127429E-002 + 2.45300000000000 9.844950131920278E-002 + 2.45400000000000 9.823889414811587E-002 + 2.45500000000000 9.802870215637458E-002 + 2.45600000000000 9.781892463322261E-002 + 2.45700000000000 9.760956086878665E-002 + 2.45800000000000 9.740061015407625E-002 + 2.45900000000000 9.719207178098392E-002 + 2.46000000000000 9.698394504228498E-002 + 2.46100000000000 9.677622923163764E-002 + 2.46200000000000 9.656892364358294E-002 + 2.46300000000000 9.636202757354477E-002 + 2.46400000000000 9.615554031782983E-002 + 2.46500000000000 9.594946117362753E-002 + 2.46600000000000 9.574378943900999E-002 + 2.46700000000000 9.553852441293210E-002 + 2.46800000000000 9.533366539523133E-002 + 2.46900000000000 9.512921168662772E-002 + 2.47000000000000 9.492516258872387E-002 + 2.47100000000000 9.472151740400490E-002 + 2.47200000000000 9.451827543583821E-002 + 2.47300000000000 9.431543598847368E-002 + 2.47400000000000 9.411299836704330E-002 + 2.47500000000000 9.391096187756144E-002 + 2.47600000000000 9.370932582692450E-002 + 2.47700000000000 9.350808952291084E-002 + 2.47800000000000 9.330725227418080E-002 + 2.47900000000000 9.310681339027667E-002 + 2.48000000000000 9.290677218162233E-002 + 2.48100000000000 9.270712795952341E-002 + 2.48200000000000 9.250788003616703E-002 + 2.48300000000000 9.230902772462177E-002 + 2.48400000000000 9.211057033883753E-002 + 2.48500000000000 9.191250719364540E-002 + 2.48600000000000 9.171483760475749E-002 + 2.48700000000000 9.151756088876700E-002 + 2.48800000000000 9.132067636314782E-002 + 2.48900000000000 9.112418334625459E-002 + 2.49000000000000 9.092808115732241E-002 + 2.49100000000000 9.073236911646695E-002 + 2.49200000000000 9.053704654468400E-002 + 2.49300000000000 9.034211276384946E-002 + 2.49400000000000 9.014756709671924E-002 + 2.49500000000000 8.995340886692907E-002 + 2.49600000000000 8.975963739899426E-002 + 2.49700000000000 8.956625201830959E-002 + 2.49800000000000 8.937325205114911E-002 + 2.49900000000000 8.918063682466609E-002 + 2.50000000000000 8.898840566689266E-002 + 2.50100000000000 8.879655790673971E-002 + 2.50200000000000 8.860509287399673E-002 + 2.50300000000000 8.841400989933168E-002 + 2.50400000000000 8.822330831429064E-002 + 2.50500000000000 8.803298745129760E-002 + 2.50600000000000 8.784304664365444E-002 + 2.50700000000000 8.765348522554071E-002 + 2.50800000000000 8.746430253201323E-002 + 2.50900000000000 8.727549789900599E-002 + 2.51000000000000 8.708707066333000E-002 + 2.51100000000000 8.689902016267305E-002 + 2.51200000000000 8.671134573559930E-002 + 2.51300000000000 8.652404672154924E-002 + 2.51400000000000 8.633712246083951E-002 + 2.51500000000000 8.615057229466254E-002 + 2.51600000000000 8.596439556508628E-002 + 2.51700000000000 8.577859161505409E-002 + 2.51800000000000 8.559315978838436E-002 + 2.51900000000000 8.540809942977044E-002 + 2.52000000000000 8.522340988478018E-002 + 2.52100000000000 8.503909049985588E-002 + 2.52200000000000 8.485514062231374E-002 + 2.52300000000000 8.467155960034398E-002 + 2.52400000000000 8.448834678301030E-002 + 2.52500000000000 8.430550152024967E-002 + 2.52600000000000 8.412302316287201E-002 + 2.52700000000000 8.394091106256019E-002 + 2.52800000000000 8.375916457186934E-002 + 2.52900000000000 8.357778304422678E-002 + 2.53000000000000 8.339676583393178E-002 + 2.53100000000000 8.321611229615523E-002 + 2.53200000000000 8.303582178693927E-002 + 2.53300000000000 8.285589366319704E-002 + 2.53400000000000 8.267632728271238E-002 + 2.53500000000000 8.249712200413958E-002 + 2.53600000000000 8.231827718700302E-002 + 2.53700000000000 8.213979219169680E-002 + 2.53800000000000 8.196166637948454E-002 + 2.53900000000000 8.178389911249909E-002 + 2.54000000000000 8.160648975374199E-002 + 2.54100000000000 8.142943766708333E-002 + 2.54200000000000 8.125274221726145E-002 + 2.54300000000000 8.107640276988251E-002 + 2.54400000000000 8.090041869142017E-002 + 2.54500000000000 8.072478934921531E-002 + 2.54600000000000 8.054951411147561E-002 + 2.54700000000000 8.037459234727529E-002 + 2.54800000000000 8.020002342655473E-002 + 2.54900000000000 8.002580672012012E-002 + 2.55000000000000 7.985194159964304E-002 + 2.55100000000000 7.967842743766031E-002 + 2.55200000000000 7.950526360757335E-002 + 2.55300000000000 7.933244948364807E-002 + 2.55400000000000 7.915998444101426E-002 + 2.55500000000000 7.898786785566551E-002 + 2.55600000000000 7.881609910445864E-002 + 2.55700000000000 7.864467756511331E-002 + 2.55800000000000 7.847360261621178E-002 + 2.55900000000000 7.830287363719850E-002 + 2.56000000000000 7.813249000837960E-002 + 2.56100000000000 7.796245111092261E-002 + 2.56200000000000 7.779275632685606E-002 + 2.56300000000000 7.762340503906910E-002 + 2.56400000000000 7.745439663131107E-002 + 2.56500000000000 7.728573048819116E-002 + 2.56600000000000 7.711740599517793E-002 + 2.56700000000000 7.694942253859889E-002 + 2.56800000000000 7.678177950564036E-002 + 2.56900000000000 7.661447628434655E-002 + 2.57000000000000 7.644751226361973E-002 + 2.57100000000000 7.628088683321935E-002 + 2.57200000000000 7.611459938376192E-002 + 2.57300000000000 7.594864930672041E-002 + 2.57400000000000 7.578303599442397E-002 + 2.57500000000000 7.561775884005732E-002 + 2.57600000000000 7.545281723766058E-002 + 2.57700000000000 7.528821058212855E-002 + 2.57800000000000 7.512393826921049E-002 + 2.57900000000000 7.495999969550957E-002 + 2.58000000000000 7.479639425848256E-002 + 2.58100000000000 7.463312135643921E-002 + 2.58200000000000 7.447018038854192E-002 + 2.58300000000000 7.430757075480525E-002 + 2.58400000000000 7.414529185609556E-002 + 2.58500000000000 7.398334309413040E-002 + 2.58600000000000 7.382172387147819E-002 + 2.58700000000000 7.366043359155765E-002 + 2.58800000000000 7.349947165863749E-002 + 2.58900000000000 7.333883747783579E-002 + 2.59000000000000 7.317853045511960E-002 + 2.59100000000000 7.301854999730450E-002 + 2.59200000000000 7.285889551205410E-002 + 2.59300000000000 7.269956640787953E-002 + 2.59400000000000 7.254056209413910E-002 + 2.59500000000000 7.238188198103757E-002 + 2.59600000000000 7.222352547962595E-002 + 2.59700000000000 7.206549200180085E-002 + 2.59800000000000 7.190778096030399E-002 + 2.59900000000000 7.175039176872183E-002 + 2.60000000000000 7.159332384148494E-002 + 2.60100000000000 7.143657659386762E-002 + 2.60200000000000 7.128014944198729E-002 + 2.60300000000000 7.112404180280407E-002 + 2.60400000000000 7.096825309412036E-002 + 2.60500000000000 7.081278273458011E-002 + 2.60600000000000 7.065763014366849E-002 + 2.60700000000000 7.050279474171138E-002 + 2.60800000000000 7.034827594987476E-002 + 2.60900000000000 7.019407319016430E-002 + 2.61000000000000 7.004018588542478E-002 + 2.61100000000000 6.988661345933952E-002 + 2.61200000000000 6.973335533643010E-002 + 2.61300000000000 6.958041094205553E-002 + 2.61400000000000 6.942777970241189E-002 + 2.61500000000000 6.927546104453176E-002 + 2.61600000000000 6.912345439628384E-002 + 2.61700000000000 6.897175918637215E-002 + 2.61800000000000 6.882037484433567E-002 + 2.61900000000000 6.866930080054774E-002 + 2.62000000000000 6.851853648621568E-002 + 2.62100000000000 6.836808133338002E-002 + 2.62200000000000 6.821793477491406E-002 + 2.62300000000000 6.806809624452330E-002 + 2.62400000000000 6.791856517674504E-002 + 2.62500000000000 6.776934100694761E-002 + 2.62600000000000 6.762042317132992E-002 + 2.62700000000000 6.747181110692096E-002 + 2.62800000000000 6.732350425157919E-002 + 2.62900000000000 6.717550204399193E-002 + 2.63000000000000 6.702780392367488E-002 + 2.63100000000000 6.688040933097152E-002 + 2.63200000000000 6.673331770705264E-002 + 2.63300000000000 6.658652849391558E-002 + 2.63400000000000 6.644004113438387E-002 + 2.63500000000000 6.629385507210650E-002 + 2.63600000000000 6.614796975155747E-002 + 2.63700000000000 6.600238461803513E-002 + 2.63800000000000 6.585709911766165E-002 + 2.63900000000000 6.571211269738238E-002 + 2.64000000000000 6.556742480496543E-002 + 2.64100000000000 6.542303488900085E-002 + 2.64200000000000 6.527894239890027E-002 + 2.64300000000000 6.513514678489613E-002 + 2.64400000000000 6.499164749804127E-002 + 2.64500000000000 6.484844399020818E-002 + 2.64600000000000 6.470553571408857E-002 + 2.64700000000000 6.456292212319255E-002 + 2.64800000000000 6.442060267184828E-002 + 2.64900000000000 6.427857681520122E-002 + 2.65000000000000 6.413684400921359E-002 + 2.65100000000000 6.399540371066370E-002 + 2.65200000000000 6.385425537714549E-002 + 2.65300000000000 6.371339846706779E-002 + 2.65400000000000 6.357283243965370E-002 + 2.65500000000000 6.343255675494013E-002 + 2.65600000000000 6.329257087377708E-002 + 2.65700000000000 6.315287425782705E-002 + 2.65800000000000 6.301346636956437E-002 + 2.65900000000000 6.287434667227466E-002 + 2.66000000000000 6.273551463005426E-002 + 2.66100000000000 6.259696970780949E-002 + 2.66200000000000 6.245871137125607E-002 + 2.66300000000000 6.232073908691847E-002 + 2.66400000000000 6.218305232212946E-002 + 2.66500000000000 6.204565054502923E-002 + 2.66600000000000 6.190853322456494E-002 + 2.66700000000000 6.177169983048995E-002 + 2.66800000000000 6.163514983336339E-002 + 2.66900000000000 6.149888270454932E-002 + 2.67000000000000 6.136289791621623E-002 + 2.67100000000000 6.122719494133626E-002 + 2.67200000000000 6.109177325368483E-002 + 2.67300000000000 6.095663232783968E-002 + 2.67400000000000 6.082177163918043E-002 + 2.67500000000000 6.068719066388790E-002 + 2.67600000000000 6.055288887894345E-002 + 2.67700000000000 6.041886576212834E-002 + 2.67800000000000 6.028512079202302E-002 + 2.67900000000000 6.015165344800656E-002 + 2.68000000000000 6.001846321025604E-002 + 2.68100000000000 5.988554955974582E-002 + 2.68200000000000 5.975291197824679E-002 + 2.68300000000000 5.962054994832596E-002 + 2.68400000000000 5.948846295334562E-002 + 2.68500000000000 5.935665047746275E-002 + 2.68600000000000 5.922511200562827E-002 + 2.68700000000000 5.909384702358652E-002 + 2.68800000000000 5.896285501787453E-002 + 2.68900000000000 5.883213547582133E-002 + 2.69000000000000 5.870168788554731E-002 + 2.69100000000000 5.857151173596353E-002 + 2.69200000000000 5.844160651677108E-002 + 2.69300000000000 5.831197171846044E-002 + 2.69400000000000 5.818260683231072E-002 + 2.69500000000000 5.805351135038907E-002 + 2.69600000000000 5.792468476554993E-002 + 2.69700000000000 5.779612657143444E-002 + 2.69800000000000 5.766783626246969E-002 + 2.69900000000000 5.753981333386806E-002 + 2.70000000000000 5.741205728162658E-002 + 2.70100000000000 5.728456760252622E-002 + 2.70200000000000 5.715734379413116E-002 + 2.70300000000000 5.703038535478819E-002 + 2.70400000000000 5.690369178362597E-002 + 2.70500000000000 5.677726258055438E-002 + 2.70600000000000 5.665109724626380E-002 + 2.70700000000000 5.652519528222438E-002 + 2.70800000000000 5.639955619068548E-002 + 2.70900000000000 5.627417947467486E-002 + 2.71000000000000 5.614906463799803E-002 + 2.71100000000000 5.602421118523754E-002 + 2.71200000000000 5.589961862175225E-002 + 2.71300000000000 5.577528645367679E-002 + 2.71400000000000 5.565121418792069E-002 + 2.71500000000000 5.552740133216771E-002 + 2.71600000000000 5.540384739487517E-002 + 2.71700000000000 5.528055188527332E-002 + 2.71800000000000 5.515751431336449E-002 + 2.71900000000000 5.503473418992248E-002 + 2.72000000000000 5.491221102649181E-002 + 2.72100000000000 5.478994433538711E-002 + 2.72200000000000 5.466793362969224E-002 + 2.72300000000000 5.454617842325975E-002 + 2.72400000000000 5.442467823071005E-002 + 2.72500000000000 5.430343256743078E-002 + 2.72600000000000 5.418244094957604E-002 + 2.72700000000000 5.406170289406572E-002 + 2.72800000000000 5.394121791858475E-002 + 2.72900000000000 5.382098554158242E-002 + 2.73000000000000 5.370100528227163E-002 + 2.73100000000000 5.358127666062817E-002 + 2.73200000000000 5.346179919738995E-002 + 2.73300000000000 5.334257241405652E-002 + 2.73400000000000 5.322359583288802E-002 + 2.73500000000000 5.310486897690466E-002 + 2.73600000000000 5.298639136988593E-002 + 2.73700000000000 5.286816253636993E-002 + 2.73800000000000 5.275018200165257E-002 + 2.73900000000000 5.263244929178685E-002 + 2.74000000000000 5.251496393358217E-002 + 2.74100000000000 5.239772545460371E-002 + 2.74200000000000 5.228073338317143E-002 + 2.74300000000000 5.216398724835954E-002 + 2.74400000000000 5.204748657999571E-002 + 2.74500000000000 5.193123090866041E-002 + 2.74600000000000 5.181521976568603E-002 + 2.74700000000000 5.169945268315627E-002 + 2.74800000000000 5.158392919390533E-002 + 2.74900000000000 5.146864883151726E-002 + 2.75000000000000 5.135361113032513E-002 + 2.75100000000000 5.123881562541030E-002 + 2.75200000000000 5.112426185260175E-002 + 2.75300000000000 5.100994934847529E-002 + 2.75400000000000 5.089587765035283E-002 + 2.75500000000000 5.078204629630164E-002 + 2.75600000000000 5.066845482513354E-002 + 2.75700000000000 5.055510277640433E-002 + 2.75800000000000 5.044198969041281E-002 + 2.75900000000000 5.032911510820025E-002 + 2.76000000000000 5.021647857154951E-002 + 2.76100000000000 5.010407962298435E-002 + 2.76200000000000 4.999191780576864E-002 + 2.76300000000000 4.987999266390564E-002 + 2.76400000000000 4.976830374213727E-002 + 2.76500000000000 4.965685058594330E-002 + 2.76600000000000 4.954563274154066E-002 + 2.76700000000000 4.943464975588265E-002 + 2.76800000000000 4.932390117665815E-002 + 2.76900000000000 4.921338655229102E-002 + 2.77000000000000 4.910310543193912E-002 + 2.77100000000000 4.899305736549377E-002 + 2.77200000000000 4.888324190357879E-002 + 2.77300000000000 4.877365859754995E-002 + 2.77400000000000 4.866430699949404E-002 + 2.77500000000000 4.855518666222824E-002 + 2.77600000000000 4.844629713929923E-002 + 2.77700000000000 4.833763798498256E-002 + 2.77800000000000 4.822920875428179E-002 + 2.77900000000000 4.812100900292780E-002 + 2.78000000000000 4.801303828737797E-002 + 2.78100000000000 4.790529616481547E-002 + 2.78200000000000 4.779778219314846E-002 + 2.78300000000000 4.769049593100929E-002 + 2.78400000000000 4.758343693775382E-002 + 2.78500000000000 4.747660477346063E-002 + 2.78600000000000 4.736999899893023E-002 + 2.78700000000000 4.726361917568426E-002 + 2.78800000000000 4.715746486596476E-002 + 2.78900000000000 4.705153563273351E-002 + 2.79000000000000 4.694583103967099E-002 + 2.79100000000000 4.684035065117590E-002 + 2.79200000000000 4.673509403236419E-002 + 2.79300000000000 4.663006074906844E-002 + 2.79400000000000 4.652525036783690E-002 + 2.79500000000000 4.642066245593292E-002 + 2.79600000000000 4.631629658133404E-002 + 2.79700000000000 4.621215231273131E-002 + 2.79800000000000 4.610822921952838E-002 + 2.79900000000000 4.600452687184090E-002 + 2.80000000000000 4.590104484049563E-002 + 2.80100000000000 4.579778269702963E-002 + 2.80200000000000 4.569474001368965E-002 + 2.80300000000000 4.559191636343116E-002 + 2.80400000000000 4.548931131991774E-002 + 2.80500000000000 4.538692445752014E-002 + 2.80600000000000 4.528475535131563E-002 + 2.80700000000000 4.518280357708717E-002 + 2.80800000000000 4.508106871132263E-002 + 2.80900000000000 4.497955033121404E-002 + 2.81000000000000 4.487824801465670E-002 + 2.81100000000000 4.477716134024860E-002 + 2.81200000000000 4.467628988728941E-002 + 2.81300000000000 4.457563323577990E-002 + 2.81400000000000 4.447519096642102E-002 + 2.81500000000000 4.437496266061316E-002 + 2.81600000000000 4.427494790045539E-002 + 2.81700000000000 4.417514626874462E-002 + 2.81800000000000 4.407555734897491E-002 + 2.81900000000000 4.397618072533656E-002 + 2.82000000000000 4.387701598271544E-002 + 2.82100000000000 4.377806270669209E-002 + 2.82200000000000 4.367932048354108E-002 + 2.82300000000000 4.358078890023009E-002 + 2.82400000000000 4.348246754441918E-002 + 2.82500000000000 4.338435600445999E-002 + 2.82600000000000 4.328645386939500E-002 + 2.82700000000000 4.318876072895663E-002 + 2.82800000000000 4.309127617356658E-002 + 2.82900000000000 4.299399979433494E-002 + 2.83000000000000 4.289693118305948E-002 + 2.83100000000000 4.280006993222480E-002 + 2.83200000000000 4.270341563500154E-002 + 2.83300000000000 4.260696788524565E-002 + 2.83400000000000 4.251072627749757E-002 + 2.83500000000000 4.241469040698137E-002 + 2.83600000000000 4.231885986960404E-002 + 2.83700000000000 4.222323426195469E-002 + 2.83800000000000 4.212781318130375E-002 + 2.83900000000000 4.203259622560211E-002 + 2.84000000000000 4.193758299348046E-002 + 2.84100000000000 4.184277308424836E-002 + 2.84200000000000 4.174816609789357E-002 + 2.84300000000000 4.165376163508114E-002 + 2.84400000000000 4.155955929715272E-002 + 2.84500000000000 4.146555868612563E-002 + 2.84600000000000 4.137175940469225E-002 + 2.84700000000000 4.127816105621907E-002 + 2.84800000000000 4.118476324474594E-002 + 2.84900000000000 4.109156557498532E-002 + 2.85000000000000 4.099856765232143E-002 + 2.85100000000000 4.090576908280943E-002 + 2.85200000000000 4.081316947317477E-002 + 2.85300000000000 4.072076843081215E-002 + 2.85400000000000 4.062856556378500E-002 + 2.85500000000000 4.053656048082443E-002 + 2.85600000000000 4.044475279132859E-002 + 2.85700000000000 4.035314210536182E-002 + 2.85800000000000 4.026172803365391E-002 + 2.85900000000000 4.017051018759917E-002 + 2.86000000000000 4.007948817925574E-002 + 2.86100000000000 3.998866162134477E-002 + 2.86200000000000 3.989803012724964E-002 + 2.86300000000000 3.980759331101509E-002 + 2.86400000000000 3.971735078734651E-002 + 2.86500000000000 3.962730217160906E-002 + 2.86600000000000 3.953744707982692E-002 + 2.86700000000000 3.944778512868249E-002 + 2.86800000000000 3.935831593551555E-002 + 2.86900000000000 3.926903911832251E-002 + 2.87000000000000 3.917995429575558E-002 + 2.87100000000000 3.909106108712197E-002 + 2.87200000000000 3.900235911238310E-002 + 2.87300000000000 3.891384799215378E-002 + 2.87400000000000 3.882552734770150E-002 + 2.87500000000000 3.873739680094544E-002 + 2.87600000000000 3.864945597445583E-002 + 2.87700000000000 3.856170449145312E-002 + 2.87800000000000 3.847414197580714E-002 + 2.87900000000000 3.838676805203631E-002 + 2.88000000000000 3.829958234530686E-002 + 2.88100000000000 3.821258448143198E-002 + 2.88200000000000 3.812577408687112E-002 + 2.88300000000000 3.803915078872906E-002 + 2.88400000000000 3.795271421475521E-002 + 2.88500000000000 3.786646399334266E-002 + 2.88600000000000 3.778039975352764E-002 + 2.88700000000000 3.769452112498844E-002 + 2.88800000000000 3.760882773804480E-002 + 2.88900000000000 3.752331922365699E-002 + 2.89000000000000 3.743799521342508E-002 + 2.89100000000000 3.735285533958809E-002 + 2.89200000000000 3.726789923502323E-002 + 2.89300000000000 3.718312653324504E-002 + 2.89400000000000 3.709853686840467E-002 + 2.89500000000000 3.701412987528901E-002 + 2.89600000000000 3.692990518931988E-002 + 2.89700000000000 3.684586244655327E-002 + 2.89800000000000 3.676200128367855E-002 + 2.89900000000000 3.667832133801761E-002 + 2.90000000000000 3.659482224752408E-002 + 2.90100000000000 3.651150365078255E-002 + 2.90200000000000 3.642836518700775E-002 + 2.90300000000000 3.634540649604373E-002 + 2.90400000000000 3.626262721836308E-002 + 2.90500000000000 3.618002699506612E-002 + 2.90600000000000 3.609760546788011E-002 + 2.90700000000000 3.601536227915843E-002 + 2.90800000000000 3.593329707187975E-002 + 2.90900000000000 3.585140948964732E-002 + 2.91000000000000 3.576969917668806E-002 + 2.91100000000000 3.568816577785184E-002 + 2.91200000000000 3.560680893861060E-002 + 2.91300000000000 3.552562830505759E-002 + 2.91400000000000 3.544462352390661E-002 + 2.91500000000000 3.536379424249113E-002 + 2.91600000000000 3.528314010876350E-002 + 2.91700000000000 3.520266077129421E-002 + 2.91800000000000 3.512235587927104E-002 + 2.91900000000000 3.504222508249825E-002 + 2.92000000000000 3.496226803139579E-002 + 2.92100000000000 3.488248437699849E-002 + 2.92200000000000 3.480287377095530E-002 + 2.92300000000000 3.472343586552841E-002 + 2.92400000000000 3.464417031359254E-002 + 2.92500000000000 3.456507676863405E-002 + 2.92600000000000 3.448615488475022E-002 + 2.92700000000000 3.440740431664836E-002 + 2.92800000000000 3.432882471964509E-002 + 2.92900000000000 3.425041574966549E-002 + 2.93000000000000 3.417217706324235E-002 + 2.93100000000000 3.409410831751526E-002 + 2.93200000000000 3.401620917022991E-002 + 2.93300000000000 3.393847927973729E-002 + 2.93400000000000 3.386091830499288E-002 + 2.93500000000000 3.378352590555575E-002 + 2.93600000000000 3.370630174158788E-002 + 2.93700000000000 3.362924547385331E-002 + 2.93800000000000 3.355235676371735E-002 + 2.93900000000000 3.347563527314580E-002 + 2.94000000000000 3.339908066470411E-002 + 2.94100000000000 3.332269260155656E-002 + 2.94200000000000 3.324647074746556E-002 + 2.94300000000000 3.317041476679076E-002 + 2.94400000000000 3.309452432448828E-002 + 2.94500000000000 3.301879908610990E-002 + 2.94600000000000 3.294323871780230E-002 + 2.94700000000000 3.286784288630621E-002 + 2.94800000000000 3.279261125895561E-002 + 2.94900000000000 3.271754350367703E-002 + 2.95000000000000 3.264263928898859E-002 + 2.95100000000000 3.256789828399936E-002 + 2.95200000000000 3.249332015840845E-002 + 2.95300000000000 3.241890458250427E-002 + 2.95400000000000 3.234465122716369E-002 + 2.95500000000000 3.227055976385133E-002 + 2.95600000000000 3.219662986461866E-002 + 2.95700000000000 3.212286120210322E-002 + 2.95800000000000 3.204925344952788E-002 + 2.95900000000000 3.197580628070005E-002 + 2.96000000000000 3.190251937001078E-002 + 2.96100000000000 3.182939239243407E-002 + 2.96200000000000 3.175642502352603E-002 + 2.96300000000000 3.168361693942408E-002 + 2.96400000000000 3.161096781684616E-002 + 2.96500000000000 3.153847733308998E-002 + 2.96600000000000 3.146614516603213E-002 + 2.96700000000000 3.139397099412736E-002 + 2.96800000000000 3.132195449640779E-002 + 2.96900000000000 3.125009535248208E-002 + 2.97000000000000 3.117839324253465E-002 + 2.97100000000000 3.110684784732487E-002 + 2.97200000000000 3.103545884818631E-002 + 2.97300000000000 3.096422592702590E-002 + 2.97400000000000 3.089314876632316E-002 + 2.97500000000000 3.082222704912941E-002 + 2.97600000000000 3.075146045906699E-002 + 2.97700000000000 3.068084868032840E-002 + 2.97800000000000 3.061039139767564E-002 + 2.97900000000000 3.054008829643927E-002 + 2.98000000000000 3.046993906251771E-002 + 2.98100000000000 3.039994338237646E-002 + 2.98200000000000 3.033010094304721E-002 + 2.98300000000000 3.026041143212720E-002 + 2.98400000000000 3.019087453777830E-002 + 2.98500000000000 3.012148994872626E-002 + 2.98600000000000 3.005225735425996E-002 + 2.98700000000000 2.998317644423059E-002 + 2.98800000000000 2.991424690905083E-002 + 2.98900000000000 2.984546843969414E-002 + 2.99000000000000 2.977684072769390E-002 + 2.99100000000000 2.970836346514266E-002 + 2.99200000000000 2.964003634469134E-002 + 2.99300000000000 2.957185905954846E-002 + 2.99400000000000 2.950383130347931E-002 + 2.99500000000000 2.943595277080525E-002 + 2.99600000000000 2.936822315640281E-002 + 2.99700000000000 2.930064215570299E-002 + 2.99800000000000 2.923320946469045E-002 + 2.99900000000000 2.916592477990272E-002 + 3.00000000000000 2.909878779842943E-002 + 3.00100000000000 2.903179821791152E-002 + 3.00200000000000 2.896495573654042E-002 + 3.00300000000000 2.889826005305733E-002 + 3.00400000000000 2.883171086675240E-002 + 3.00500000000000 2.876530787746396E-002 + 3.00600000000000 2.869905078557771E-002 + 3.00700000000000 2.863293929202600E-002 + 3.00800000000000 2.856697309828698E-002 + 3.00900000000000 2.850115190638388E-002 + 3.01000000000000 2.843547541888413E-002 + 3.01100000000000 2.836994333889873E-002 + 3.01200000000000 2.830455537008134E-002 + 3.01300000000000 2.823931121662758E-002 + 3.01400000000000 2.817421058327418E-002 + 3.01500000000000 2.810925317529829E-002 + 3.01600000000000 2.804443869851662E-002 + 3.01700000000000 2.797976685928471E-002 + 3.01800000000000 2.791523736449614E-002 + 3.01900000000000 2.785084992158176E-002 + 3.02000000000000 2.778660423850888E-002 + 3.02100000000000 2.772250002378053E-002 + 3.02200000000000 2.765853698643470E-002 + 3.02300000000000 2.759471483604351E-002 + 3.02400000000000 2.753103328271246E-002 + 3.02500000000000 2.746749203707971E-002 + 3.02600000000000 2.740409081031518E-002 + 3.02700000000000 2.734082931411992E-002 + 3.02800000000000 2.727770726072525E-002 + 3.02900000000000 2.721472436289196E-002 + 3.03000000000000 2.715188033390963E-002 + 3.03100000000000 2.708917488759583E-002 + 3.03200000000000 2.702660773829532E-002 + 3.03300000000000 2.696417860087925E-002 + 3.03400000000000 2.690188719074447E-002 + 3.03500000000000 2.683973322381272E-002 + 3.03600000000000 2.677771641652984E-002 + 3.03700000000000 2.671583648586505E-002 + 3.03800000000000 2.665409314931011E-002 + 3.03900000000000 2.659248612487866E-002 + 3.04000000000000 2.653101513110532E-002 + 3.04100000000000 2.646967988704505E-002 + 3.04200000000000 2.640848011227228E-002 + 3.04300000000000 2.634741552688020E-002 + 3.04400000000000 2.628648585148000E-002 + 3.04500000000000 2.622569080720007E-002 + 3.04600000000000 2.616503011568524E-002 + 3.04700000000000 2.610450349909606E-002 + 3.04800000000000 2.604411068010798E-002 + 3.04900000000000 2.598385138191062E-002 + 3.05000000000000 2.592372532820698E-002 + 3.05100000000000 2.586373224321273E-002 + 3.05200000000000 2.580387185165537E-002 + 3.05300000000000 2.574414387877356E-002 + 3.05400000000000 2.568454805031626E-002 + 3.05500000000000 2.562508409254206E-002 + 3.05600000000000 2.556575173221836E-002 + 3.05700000000000 2.550655069662065E-002 + 3.05800000000000 2.544748071353169E-002 + 3.05900000000000 2.538854151124086E-002 + 3.06000000000000 2.532973281854327E-002 + 3.06100000000000 2.527105436473912E-002 + 3.06200000000000 2.521250587963284E-002 + 3.06300000000000 2.515408709353245E-002 + 3.06400000000000 2.509579773724869E-002 + 3.06500000000000 2.503763754209433E-002 + 3.06600000000000 2.497960623988339E-002 + 3.06700000000000 2.492170356293043E-002 + 3.06800000000000 2.486392924404971E-002 + 3.06900000000000 2.480628301655453E-002 + 3.07000000000000 2.474876461425640E-002 + 3.07100000000000 2.469137377146435E-002 + 3.07200000000000 2.463411022298417E-002 + 3.07300000000000 2.457697370411758E-002 + 3.07400000000000 2.451996395066160E-002 + 3.07500000000000 2.446308069890770E-002 + 3.07600000000000 2.440632368564113E-002 + 3.07700000000000 2.434969264814008E-002 + 3.07800000000000 2.429318732417503E-002 + 3.07900000000000 2.423680745200793E-002 + 3.08000000000000 2.418055277039150E-002 + 3.08100000000000 2.412442301856844E-002 + 3.08200000000000 2.406841793627072E-002 + 3.08300000000000 2.401253726371879E-002 + 3.08400000000000 2.395678074162092E-002 + 3.08500000000000 2.390114811117235E-002 + 3.08600000000000 2.384563911405462E-002 + 3.08700000000000 2.379025349243480E-002 + 3.08800000000000 2.373499098896474E-002 + 3.08900000000000 2.367985134678036E-002 + 3.09000000000000 2.362483430950086E-002 + 3.09100000000000 2.356993962122801E-002 + 3.09200000000000 2.351516702654544E-002 + 3.09300000000000 2.346051627051781E-002 + 3.09400000000000 2.340598709869017E-002 + 3.09500000000000 2.335157925708715E-002 + 3.09600000000000 2.329729249221226E-002 + 3.09700000000000 2.324312655104713E-002 + 3.09800000000000 2.318908118105081E-002 + 3.09900000000000 2.313515613015895E-002 + 3.10000000000000 2.308135114678319E-002 + 3.10100000000000 2.302766597981033E-002 + 3.10200000000000 2.297410037860159E-002 + 3.10300000000000 2.292065409299193E-002 + 3.10400000000000 2.286732687328932E-002 + 3.10500000000000 2.281411847027394E-002 + 3.10600000000000 2.276102863519752E-002 + 3.10700000000000 2.270805711978253E-002 + 3.10800000000000 2.265520367622154E-002 + 3.10900000000000 2.260246805717643E-002 + 3.11000000000000 2.254985001577767E-002 + 3.11100000000000 2.249734930562360E-002 + 3.11200000000000 2.244496568077969E-002 + 3.11300000000000 2.239269889577783E-002 + 3.11400000000000 2.234054870561558E-002 + 3.11500000000000 2.228851486575545E-002 + 3.11600000000000 2.223659713212419E-002 + 3.11700000000000 2.218479526111205E-002 + 3.11800000000000 2.213310900957205E-002 + 3.11900000000000 2.208153813481925E-002 + 3.12000000000000 2.203008239463007E-002 + 3.12100000000000 2.197874154724151E-002 + 3.12200000000000 2.192751535135044E-002 + 3.12300000000000 2.187640356611293E-002 + 3.12400000000000 2.182540595114346E-002 + 3.12500000000000 2.177452226651425E-002 + 3.12600000000000 2.172375227275448E-002 + 3.12700000000000 2.167309573084965E-002 + 3.12800000000000 2.162255240224079E-002 + 3.12900000000000 2.157212204882378E-002 + 3.13000000000000 2.152180443294864E-002 + 3.13100000000000 2.147159931741875E-002 + 3.13200000000000 2.142150646549024E-002 + 3.13300000000000 2.137152564087118E-002 + 3.13400000000000 2.132165660772090E-002 + 3.13500000000000 2.127189913064928E-002 + 3.13600000000000 2.122225297471603E-002 + 3.13700000000000 2.117271790542999E-002 + 3.13800000000000 2.112329368874837E-002 + 3.13900000000000 2.107398009107610E-002 + 3.14000000000000 2.102477687926511E-002 + 3.14100000000000 2.097568382061357E-002 + 3.14200000000000 2.092670068286520E-002 + 3.14300000000000 2.087782723420862E-002 + 3.14400000000000 2.082906324327656E-002 + 3.14500000000000 2.078040847914519E-002 + 3.14600000000000 2.073186271133339E-002 + 3.14700000000000 2.068342570980211E-002 + 3.14800000000000 2.063509724495357E-002 + 3.14900000000000 2.058687708763062E-002 + 3.15000000000000 2.053876500911600E-002 + 3.15100000000000 2.049076078113168E-002 + 3.15200000000000 2.044286417583809E-002 + 3.15300000000000 2.039507496583349E-002 + 3.15400000000000 2.034739292415320E-002 + 3.15500000000000 2.029981782426895E-002 + 3.15600000000000 2.025234944008818E-002 + 3.15700000000000 2.020498754595326E-002 + 3.15800000000000 2.015773191664091E-002 + 3.15900000000000 2.011058232736140E-002 + 3.16000000000000 2.006353855375794E-002 + 3.16100000000000 2.001660037190589E-002 + 3.16200000000000 1.996976755831214E-002 + 3.16300000000000 1.992303988991435E-002 + 3.16400000000000 1.987641714408033E-002 + 3.16500000000000 1.982989909860728E-002 + 3.16600000000000 1.978348553172111E-002 + 3.16700000000000 1.973717622207576E-002 + 3.16800000000000 1.969097094875254E-002 + 3.16900000000000 1.964486949125934E-002 + 3.17000000000000 1.959887162953004E-002 + 3.17100000000000 1.955297714392376E-002 + 3.17200000000000 1.950718581522421E-002 + 3.17300000000000 1.946149742463895E-002 + 3.17400000000000 1.941591175379874E-002 + 3.17500000000000 1.937042858475686E-002 + 3.17600000000000 1.932504769998839E-002 + 3.17700000000000 1.927976888238954E-002 + 3.17800000000000 1.923459191527695E-002 + 3.17900000000000 1.918951658238702E-002 + 3.18000000000000 1.914454266787527E-002 + 3.18100000000000 1.909966995631553E-002 + 3.18200000000000 1.905489823269940E-002 + 3.18300000000000 1.901022728243546E-002 + 3.18400000000000 1.896565689134866E-002 + 3.18500000000000 1.892118684567961E-002 + 3.18600000000000 1.887681693208386E-002 + 3.18700000000000 1.883254693763130E-002 + 3.18800000000000 1.878837664980543E-002 + 3.18900000000000 1.874430585650270E-002 + 3.19000000000000 1.870033434603180E-002 + 3.19100000000000 1.865646190711303E-002 + 3.19200000000000 1.861268832887759E-002 + 3.19300000000000 1.856901340086692E-002 + 3.19400000000000 1.852543691303202E-002 + 3.19500000000000 1.848195865573279E-002 + 3.19600000000000 1.843857841973731E-002 + 3.19700000000000 1.839529599622123E-002 + 3.19800000000000 1.835211117676706E-002 + 3.19900000000000 1.830902375336350E-002 + 3.20000000000000 1.826603351840479E-002 + 3.20100000000000 1.822314026469002E-002 + 3.20200000000000 1.818034378542246E-002 + 3.20300000000000 1.813764387420891E-002 + 3.20400000000000 1.809504032505901E-002 + 3.20500000000000 1.805253293238461E-002 + 3.20600000000000 1.801012149099902E-002 + 3.20700000000000 1.796780579611647E-002 + 3.20800000000000 1.792558564335132E-002 + 3.20900000000000 1.788346082871748E-002 + 3.21000000000000 1.784143114862774E-002 + 3.21100000000000 1.779949639989304E-002 + 3.21200000000000 1.775765637972188E-002 + 3.21300000000000 1.771591088571962E-002 + 3.21400000000000 1.767425971588786E-002 + 3.21500000000000 1.763270266862370E-002 + 3.21600000000000 1.759123954271918E-002 + 3.21700000000000 1.754987013736055E-002 + 3.21800000000000 1.750859425212764E-002 + 3.21900000000000 1.746741168699321E-002 + 3.22000000000000 1.742632224232225E-002 + 3.22100000000000 1.738532571887141E-002 + 3.22200000000000 1.734442191778823E-002 + 3.22300000000000 1.730361064061059E-002 + 3.22400000000000 1.726289168926599E-002 + 3.22500000000000 1.722226486607095E-002 + 3.22600000000000 1.718172997373029E-002 + 3.22700000000000 1.714128681533655E-002 + 3.22800000000000 1.710093519436928E-002 + 3.22900000000000 1.706067491469445E-002 + 3.23000000000000 1.702050578056374E-002 + 3.23100000000000 1.698042759661392E-002 + 3.23200000000000 1.694044016786621E-002 + 3.23300000000000 1.690054329972562E-002 + 3.23400000000000 1.686073679798031E-002 + 3.23500000000000 1.682102046880095E-002 + 3.23600000000000 1.678139411874004E-002 + 3.23700000000000 1.674185755473134E-002 + 3.23800000000000 1.670241058408913E-002 + 3.23900000000000 1.666305301450765E-002 + 3.24000000000000 1.662378465406040E-002 + 3.24100000000000 1.658460531119955E-002 + 3.24200000000000 1.654551479475526E-002 + 3.24300000000000 1.650651291393506E-002 + 3.24400000000000 1.646759947832318E-002 + 3.24500000000000 1.642877429787997E-002 + 3.24600000000000 1.639003718294123E-002 + 3.24700000000000 1.635138794421753E-002 + 3.24800000000000 1.631282639279365E-002 + 3.24900000000000 1.627435234012791E-002 + 3.25000000000000 1.623596559805153E-002 + 3.25100000000000 1.619766597876800E-002 + 3.25200000000000 1.615945329485243E-002 + 3.25300000000000 1.612132735925098E-002 + 3.25400000000000 1.608328798528015E-002 + 3.25500000000000 1.604533498662620E-002 + 3.25600000000000 1.600746817734448E-002 + 3.25700000000000 1.596968737185886E-002 + 3.25800000000000 1.593199238496103E-002 + 3.25900000000000 1.589438303180994E-002 + 3.26000000000000 1.585685912793111E-002 + 3.26100000000000 1.581942048921605E-002 + 3.26200000000000 1.578206693192162E-002 + 3.26300000000000 1.574479827266939E-002 + 3.26400000000000 1.570761432844502E-002 + 3.26500000000000 1.567051491659769E-002 + 3.26600000000000 1.563349985483936E-002 + 3.26700000000000 1.559656896124430E-002 + 3.26800000000000 1.555972205424832E-002 + 3.26900000000000 1.552295895264826E-002 + 3.27000000000000 1.548627947560130E-002 + 3.27100000000000 1.544968344262439E-002 + 3.27200000000000 1.541317067359360E-002 + 3.27300000000000 1.537674098874351E-002 + 3.27400000000000 1.534039420866661E-002 + 3.27500000000000 1.530413015431265E-002 + 3.27600000000000 1.526794864698804E-002 + 3.27700000000000 1.523184950835526E-002 + 3.27800000000000 1.519583256043223E-002 + 3.27900000000000 1.515989762559166E-002 + 3.28000000000000 1.512404452656048E-002 + 3.28100000000000 1.508827308641925E-002 + 3.28200000000000 1.505258312860147E-002 + 3.28300000000000 1.501697447689306E-002 + 3.28400000000000 1.498144695543165E-002 + 3.28500000000000 1.494600038870610E-002 + 3.28600000000000 1.491063460155577E-002 + 3.28700000000000 1.487534941916997E-002 + 3.28800000000000 1.484014466708735E-002 + 3.28900000000000 1.480502017119530E-002 + 3.29000000000000 1.476997575772933E-002 + 3.29100000000000 1.473501125327247E-002 + 3.29200000000000 1.470012648475466E-002 + 3.29300000000000 1.466532127945218E-002 + 3.29400000000000 1.463059546498699E-002 + 3.29500000000000 1.459594886932617E-002 + 3.29600000000000 1.456138132078134E-002 + 3.29700000000000 1.452689264800800E-002 + 3.29800000000000 1.449248268000497E-002 + 3.29900000000000 1.445815124611379E-002 + 3.30000000000000 1.442389817601811E-002 + 3.30100000000000 1.438972329974311E-002 + 3.30200000000000 1.435562644765486E-002 + 3.30300000000000 1.432160745045981E-002 + 3.30400000000000 1.428766613920410E-002 + 3.30500000000000 1.425380234527303E-002 + 3.30600000000000 1.422001590039045E-002 + 3.30700000000000 1.418630663661815E-002 + 3.30800000000000 1.415267438635529E-002 + 3.30900000000000 1.411911898233780E-002 + 3.31000000000000 1.408564025763781E-002 + 3.31100000000000 1.405223804566300E-002 + 3.31200000000000 1.401891218015610E-002 + 3.31300000000000 1.398566249519423E-002 + 3.31400000000000 1.395248882518835E-002 + 3.31500000000000 1.391939100488264E-002 + 3.31600000000000 1.388636886935397E-002 + 3.31700000000000 1.385342225401125E-002 + 3.31800000000000 1.382055099459491E-002 + 3.31900000000000 1.378775492717627E-002 + 3.32000000000000 1.375503388815695E-002 + 3.32100000000000 1.372238771426834E-002 + 3.32200000000000 1.368981624257099E-002 + 3.32300000000000 1.365731931045401E-002 + 3.32400000000000 1.362489675563451E-002 + 3.32500000000000 1.359254841615705E-002 + 3.32600000000000 1.356027413039300E-002 + 3.32700000000000 1.352807373703999E-002 + 3.32800000000000 1.349594707512136E-002 + 3.32900000000000 1.346389398398556E-002 + 3.33000000000000 1.343191430330558E-002 + 3.33100000000000 1.340000787307835E-002 + 3.33200000000000 1.336817453362420E-002 + 3.33300000000000 1.333641412558629E-002 + 3.33400000000000 1.330472648993002E-002 + 3.33500000000000 1.327311146794244E-002 + 3.33600000000000 1.324156890123173E-002 + 3.33700000000000 1.321009863172658E-002 + 3.33800000000000 1.317870050167567E-002 + 3.33900000000000 1.314737435364706E-002 + 3.34000000000000 1.311612003052762E-002 + 3.34100000000000 1.308493737552250E-002 + 3.34200000000000 1.305382623215455E-002 + 3.34300000000000 1.302278644426373E-002 + 3.34400000000000 1.299181785600659E-002 + 3.34500000000000 1.296092031185564E-002 + 3.34600000000000 1.293009365659886E-002 + 3.34700000000000 1.289933773533909E-002 + 3.34800000000000 1.286865239349350E-002 + 3.34900000000000 1.283803747679299E-002 + 3.35000000000000 1.280749283128167E-002 + 3.35100000000000 1.277701830331627E-002 + 3.35200000000000 1.274661373956559E-002 + 3.35300000000000 1.271627898700997E-002 + 3.35400000000000 1.268601389294068E-002 + 3.35500000000000 1.265581830495942E-002 + 3.35600000000000 1.262569207097770E-002 + 3.35700000000000 1.259563503921636E-002 + 3.35800000000000 1.256564705820497E-002 + 3.35900000000000 1.253572797678126E-002 + 3.36000000000000 1.250587764409061E-002 + 3.36100000000000 1.247609590958547E-002 + 3.36200000000000 1.244638262302485E-002 + 3.36300000000000 1.241673763447369E-002 + 3.36400000000000 1.238716079430239E-002 + 3.36500000000000 1.235765195318622E-002 + 3.36600000000000 1.232821096210478E-002 + 3.36700000000000 1.229883767234147E-002 + 3.36800000000000 1.226953193548290E-002 + 3.36900000000000 1.224029360341838E-002 + 3.37000000000000 1.221112252833938E-002 + 3.37100000000000 1.218201856273895E-002 + 3.37200000000000 1.215298155941122E-002 + 3.37300000000000 1.212401137145081E-002 + 3.37400000000000 1.209510785225234E-002 + 3.37500000000000 1.206627085550984E-002 + 3.37600000000000 1.203750023521624E-002 + 3.37700000000000 1.200879584566281E-002 + 3.37800000000000 1.198015754143863E-002 + 3.37900000000000 1.195158517743008E-002 + 3.38000000000000 1.192307860882024E-002 + 3.38100000000000 1.189463769108841E-002 + 3.38200000000000 1.186626228000954E-002 + 3.38300000000000 1.183795223165370E-002 + 3.38400000000000 1.180970740238557E-002 + 3.38500000000000 1.178152764886387E-002 + 3.38600000000000 1.175341282804085E-002 + 3.38700000000000 1.172536279716176E-002 + 3.38800000000000 1.169737741376429E-002 + 3.38900000000000 1.166945653567806E-002 + 3.39000000000000 1.164160002102411E-002 + 3.39100000000000 1.161380772821433E-002 + 3.39200000000000 1.158607951595095E-002 + 3.39300000000000 1.155841524322601E-002 + 3.39400000000000 1.153081476932084E-002 + 3.39500000000000 1.150327795380552E-002 + 3.39600000000000 1.147580465653837E-002 + 3.39700000000000 1.144839473766540E-002 + 3.39800000000000 1.142104805761982E-002 + 3.39900000000000 1.139376447712149E-002 + 3.40000000000000 1.136654385717640E-002 + 3.40100000000000 1.133938605907615E-002 + 3.40200000000000 1.131229094439746E-002 + 3.40300000000000 1.128525837500157E-002 + 3.40400000000000 1.125828821303381E-002 + 3.40500000000000 1.123138032092303E-002 + 3.40600000000000 1.120453456138108E-002 + 3.40700000000000 1.117775079740234E-002 + 3.40800000000000 1.115102889226312E-002 + 3.40900000000000 1.112436870952121E-002 + 3.41000000000000 1.109777011301538E-002 + 3.41100000000000 1.107123296686477E-002 + 3.41200000000000 1.104475713546848E-002 + 3.41300000000000 1.101834248350501E-002 + 3.41400000000000 1.099198887593172E-002 + 3.41500000000000 1.096569617798438E-002 + 3.41600000000000 1.093946425517662E-002 + 3.41700000000000 1.091329297329942E-002 + 3.41800000000000 1.088718219842061E-002 + 3.41900000000000 1.086113179688436E-002 + 3.42000000000000 1.083514163531068E-002 + 3.42100000000000 1.080921158059487E-002 + 3.42200000000000 1.078334149990710E-002 + 3.42300000000000 1.075753126069179E-002 + 3.42400000000000 1.073178073066719E-002 + 3.42500000000000 1.070608977782487E-002 + 3.42600000000000 1.068045827042918E-002 + 3.42700000000000 1.065488607701674E-002 + 3.42800000000000 1.062937306639598E-002 + 3.42900000000000 1.060391910764664E-002 + 3.43000000000000 1.057852407011921E-002 + 3.43100000000000 1.055318782343449E-002 + 3.43200000000000 1.052791023748306E-002 + 3.43300000000000 1.050269118242480E-002 + 3.43400000000000 1.047753052868835E-002 + 3.43500000000000 1.045242814697069E-002 + 3.43600000000000 1.042738390823656E-002 + 3.43700000000000 1.040239768371800E-002 + 3.43800000000000 1.037746934491391E-002 + 3.43900000000000 1.035259876358943E-002 + 3.44000000000000 1.032778581177556E-002 + 3.44100000000000 1.030303036176861E-002 + 3.44200000000000 1.027833228612974E-002 + 3.44300000000000 1.025369145768443E-002 + 3.44400000000000 1.022910774952202E-002 + 3.44500000000000 1.020458103499522E-002 + 3.44600000000000 1.018011118771959E-002 + 3.44700000000000 1.015569808157309E-002 + 3.44800000000000 1.013134159069558E-002 + 3.44900000000000 1.010704158948829E-002 + 3.45000000000000 1.008279795261343E-002 + 3.45100000000000 1.005861055499358E-002 + 3.45200000000000 1.003447927181133E-002 + 3.45300000000000 1.001040397850869E-002 + 3.45400000000000 9.986384550786683E-003 + 3.45500000000000 9.962420864604813E-003 + 3.45600000000000 9.938512796180609E-003 + 3.45700000000000 9.914660221989138E-003 + 3.45800000000000 9.890863018762516E-003 + 3.45900000000000 9.867121063489435E-003 + 3.46000000000000 9.843434233414695E-003 + 3.46100000000000 9.819802406038690E-003 + 3.46200000000000 9.796225459116974E-003 + 3.46300000000000 9.772703270659756E-003 + 3.46400000000000 9.749235718931430E-003 + 3.46500000000000 9.725822682450104E-003 + 3.46600000000000 9.702464039987117E-003 + 3.46700000000000 9.679159670566569E-003 + 3.46800000000000 9.655909453464855E-003 + 3.46900000000000 9.632713268210170E-003 + 3.47000000000000 9.609570994582064E-003 + 3.47100000000000 9.586482512610959E-003 + 3.47200000000000 9.563447702577667E-003 + 3.47300000000000 9.540466445012932E-003 + 3.47400000000000 9.517538620696972E-003 + 3.47500000000000 9.494664110658985E-003 + 3.47600000000000 9.471842796176695E-003 + 3.47700000000000 9.449074558775888E-003 + 3.47800000000000 9.426359280229933E-003 + 3.47900000000000 9.403696842559340E-003 + 3.48000000000000 9.381087128031257E-003 + 3.48100000000000 9.358530019159046E-003 + 3.48200000000000 9.336025398701786E-003 + 3.48300000000000 9.313573149663844E-003 + 3.48400000000000 9.291173155294378E-003 + 3.48500000000000 9.268825299086902E-003 + 3.48600000000000 9.246529464778802E-003 + 3.48700000000000 9.224285536350907E-003 + 3.48800000000000 9.202093398026995E-003 + 3.48900000000000 9.179952934273358E-003 + 3.49000000000000 9.157864029798330E-003 + 3.49100000000000 9.135826569551848E-003 + 3.49200000000000 9.113840438724973E-003 + 3.49300000000000 9.091905522749445E-003 + 3.49400000000000 9.070021707297239E-003 + 3.49500000000000 9.048188878280086E-003 + 3.49600000000000 9.026406921849039E-003 + 3.49700000000000 9.004675724394010E-003 + 3.49800000000000 8.982995172543319E-003 + 3.49900000000000 8.961365153163254E-003 + 3.50000000000000 8.939785553357605E-003 + 3.50100000000000 8.918256260467210E-003 + 3.50200000000000 8.896777162069524E-003 + 3.50300000000000 8.875348145978162E-003 + 3.50400000000000 8.853969100242436E-003 + 3.50500000000000 8.832639913146935E-003 + 3.50600000000000 8.811360473211049E-003 + 3.50700000000000 8.790130669188557E-003 + 3.50800000000000 8.768950390067146E-003 + 3.50900000000000 8.747819525067988E-003 + 3.51000000000000 8.726737963645289E-003 + 3.51100000000000 8.705705595485849E-003 + 3.51200000000000 8.684722310508619E-003 + 3.51300000000000 8.663787998864247E-003 + 3.51400000000000 8.642902550934662E-003 + 3.51500000000000 8.622065857332602E-003 + 3.51600000000000 8.601277808901207E-003 + 3.51700000000000 8.580538296713552E-003 + 3.51800000000000 8.559847212072218E-003 + 3.51900000000000 8.539204446508864E-003 + 3.52000000000000 8.518609891783780E-003 + 3.52100000000000 8.498063439885449E-003 + 3.52200000000000 8.477564983030109E-003 + 3.52300000000000 8.457114413661338E-003 + 3.52400000000000 8.436711624449589E-003 + 3.52500000000000 8.416356508291785E-003 + 3.52600000000000 8.396048958310864E-003 + 3.52700000000000 8.375788867855363E-003 + 3.52800000000000 8.355576130498974E-003 + 3.52900000000000 8.335410640040113E-003 + 3.53000000000000 8.315292290501501E-003 + 3.53100000000000 8.295220976129733E-003 + 3.53200000000000 8.275196591394829E-003 + 3.53300000000000 8.255219030989837E-003 + 3.53400000000000 8.235288189830374E-003 + 3.53500000000000 8.215403963054226E-003 + 3.53600000000000 8.195566246020903E-003 + 3.53700000000000 8.175774934311224E-003 + 3.53800000000000 8.156029923726880E-003 + 3.53900000000000 8.136331110290031E-003 + 3.54000000000000 8.116678390242859E-003 + 3.54100000000000 8.097071660047157E-003 + 3.54200000000000 8.077510816383906E-003 + 3.54300000000000 8.057995756152857E-003 + 3.54400000000000 8.038526376472106E-003 + 3.54500000000000 8.019102574677665E-003 + 3.54600000000000 7.999724248323053E-003 + 3.54700000000000 7.980391295178888E-003 + 3.54800000000000 7.961103613232439E-003 + 3.54900000000000 7.941861100687236E-003 + 3.55000000000000 7.922663655962637E-003 + 3.55100000000000 7.903511177693424E-003 + 3.55200000000000 7.884403564729378E-003 + 3.55300000000000 7.865340716134867E-003 + 3.55400000000000 7.846322531188424E-003 + 3.55500000000000 7.827348909382354E-003 + 3.55600000000000 7.808419750422305E-003 + 3.55700000000000 7.789534954226854E-003 + 3.55800000000000 7.770694420927107E-003 + 3.55900000000000 7.751898050866284E-003 + 3.56000000000000 7.733145744599294E-003 + 3.56100000000000 7.714437402892350E-003 + 3.56200000000000 7.695772926722544E-003 + 3.56300000000000 7.677152217277447E-003 + 3.56400000000000 7.658575175954695E-003 + 3.56500000000000 7.640041704361585E-003 + 3.56600000000000 7.621551704314659E-003 + 3.56700000000000 7.603105077839328E-003 + 3.56800000000000 7.584701727169435E-003 + 3.56900000000000 7.566341554746861E-003 + 3.57000000000000 7.548024463221126E-003 + 3.57100000000000 7.529750355448984E-003 + 3.57200000000000 7.511519134494018E-003 + 3.57300000000000 7.493330703626239E-003 + 3.57400000000000 7.475184966321690E-003 + 3.57500000000000 7.457081826262046E-003 + 3.57600000000000 7.439021187334198E-003 + 3.57700000000000 7.421002953629877E-003 + 3.57800000000000 7.403027029445234E-003 + 3.57900000000000 7.385093319280466E-003 + 3.58000000000000 7.367201727839402E-003 + 3.58100000000000 7.349352160029103E-003 + 3.58200000000000 7.331544520959478E-003 + 3.58300000000000 7.313778715942891E-003 + 3.58400000000000 7.296054650493754E-003 + 3.58500000000000 7.278372230328139E-003 + 3.58600000000000 7.260731361363391E-003 + 3.58700000000000 7.243131949717721E-003 + 3.58800000000000 7.225573901709827E-003 + 3.58900000000000 7.208057123858500E-003 + 3.59000000000000 7.190581522882234E-003 + 3.59100000000000 7.173147005698823E-003 + 3.59200000000000 7.155753479424997E-003 + 3.59300000000000 7.138400851376008E-003 + 3.59400000000000 7.121089029065261E-003 + 3.59500000000000 7.103817920203910E-003 + 3.59600000000000 7.086587432700487E-003 + 3.59700000000000 7.069397474660503E-003 + 3.59800000000000 7.052247954386075E-003 + 3.59900000000000 7.035138780375526E-003 + 3.60000000000000 7.018069861323017E-003 + 3.60100000000000 7.001041106118149E-003 + 3.60200000000000 6.984052423845591E-003 + 3.60300000000000 6.967103723784688E-003 + 3.60400000000000 6.950194915409091E-003 + 3.60500000000000 6.933325908386363E-003 + 3.60600000000000 6.916496612577614E-003 + 3.60700000000000 6.899706938037100E-003 + 3.60800000000000 6.882956795011870E-003 + 3.60900000000000 6.866246093941366E-003 + 3.61000000000000 6.849574745457053E-003 + 3.61100000000000 6.832942660382038E-003 + 3.61200000000000 6.816349749730707E-003 + 3.61300000000000 6.799795924708330E-003 + 3.61400000000000 6.783281096710699E-003 + 3.61500000000000 6.766805177323748E-003 + 3.61600000000000 6.750368078323177E-003 + 3.61700000000000 6.733969711674091E-003 + 3.61800000000000 6.717609989530602E-003 + 3.61900000000000 6.701288824235484E-003 + 3.62000000000000 6.685006128319791E-003 + 3.62100000000000 6.668761814502475E-003 + 3.62200000000000 6.652555795690033E-003 + 3.62300000000000 6.636387984976125E-003 + 3.62400000000000 6.620258295641214E-003 + 3.62500000000000 6.604166641152188E-003 + 3.62600000000000 6.588112935162000E-003 + 3.62700000000000 6.572097091509297E-003 + 3.62800000000000 6.556119024218056E-003 + 3.62900000000000 6.540178647497212E-003 + 3.63000000000000 6.524275875740299E-003 + 3.63100000000000 6.508410623525085E-003 + 3.63200000000000 6.492582805613206E-003 + 3.63300000000000 6.476792336949797E-003 + 3.63400000000000 6.461039132663136E-003 + 3.63500000000000 6.445323108064282E-003 + 3.63600000000000 6.429644178646715E-003 + 3.63700000000000 6.414002260085965E-003 + 3.63800000000000 6.398397268239260E-003 + 3.63900000000000 6.382829119145159E-003 + 3.64000000000000 6.367297729023206E-003 + 3.64100000000000 6.351803014273557E-003 + 3.64200000000000 6.336344891476628E-003 + 3.64300000000000 6.320923277392740E-003 + 3.64400000000000 6.305538088961758E-003 + 3.64500000000000 6.290189243302735E-003 + 3.64600000000000 6.274876657713559E-003 + 3.64700000000000 6.259600249670597E-003 + 3.64800000000000 6.244359936828345E-003 + 3.64900000000000 6.229155637019057E-003 + 3.65000000000000 6.213987268252412E-003 + 3.65100000000000 6.198854748715153E-003 + 3.65200000000000 6.183757996770740E-003 + 3.65300000000000 6.168696930958989E-003 + 3.65400000000000 6.153671469995721E-003 + 3.65500000000000 6.138681532772427E-003 + 3.65600000000000 6.123727038355909E-003 + 3.65700000000000 6.108807905987919E-003 + 3.65800000000000 6.093924055084833E-003 + 3.65900000000000 6.079075405237285E-003 + 3.66000000000000 6.064261876209838E-003 + 3.66100000000000 6.049483387940615E-003 + 3.66200000000000 6.034739860540969E-003 + 3.66300000000000 6.020031214295130E-003 + 3.66400000000000 6.005357369659872E-003 + 3.66500000000000 5.990718247264153E-003 + 3.66600000000000 5.976113767908780E-003 + 3.66700000000000 5.961543852566057E-003 + 3.66800000000000 5.947008422379466E-003 + 3.66900000000000 5.932507398663294E-003 + 3.67000000000000 5.918040702902311E-003 + 3.67100000000000 5.903608256751431E-003 + 3.67200000000000 5.889209982035360E-003 + 3.67300000000000 5.874845800748261E-003 + 3.67400000000000 5.860515635053421E-003 + 3.67500000000000 5.846219407282907E-003 + 3.67600000000000 5.831957039937225E-003 + 3.67700000000000 5.817728455684996E-003 + 3.67800000000000 5.803533577362600E-003 + 3.67900000000000 5.789372327973856E-003 + 3.68000000000000 5.775244630689679E-003 + 3.68100000000000 5.761150408847753E-003 + 3.68200000000000 5.747089585952184E-003 + 3.68300000000000 5.733062085673174E-003 + 3.68400000000000 5.719067831846695E-003 + 3.68500000000000 5.705106748474137E-003 + 3.68600000000000 5.691178759721996E-003 + 3.68700000000000 5.677283789921529E-003 + 3.68800000000000 5.663421763568435E-003 + 3.68900000000000 5.649592605322509E-003 + 3.69000000000000 5.635796240007335E-003 + 3.69100000000000 5.622032592609928E-003 + 3.69200000000000 5.608301588280430E-003 + 3.69300000000000 5.594603152331777E-003 + 3.69400000000000 5.580937210239358E-003 + 3.69500000000000 5.567303687640706E-003 + 3.69600000000000 5.553702510335158E-003 + 3.69700000000000 5.540133604283536E-003 + 3.69800000000000 5.526596895607827E-003 + 3.69900000000000 5.513092310590845E-003 + 3.70000000000000 5.499619775675921E-003 + 3.70100000000000 5.486179217466571E-003 + 3.70200000000000 5.472770562726172E-003 + 3.70300000000000 5.459393738377649E-003 + 3.70400000000000 5.446048671503141E-003 + 3.70500000000000 5.432735289343695E-003 + 3.70600000000000 5.419453519298931E-003 + 3.70700000000000 5.406203288926729E-003 + 3.70800000000000 5.392984525942910E-003 + 3.70900000000000 5.379797158220913E-003 + 3.71000000000000 5.366641113791484E-003 + 3.71100000000000 5.353516320842347E-003 + 3.71200000000000 5.340422707717900E-003 + 3.71300000000000 5.327360202918891E-003 + 3.71400000000000 5.314328735102100E-003 + 3.71500000000000 5.301328233080030E-003 + 3.71600000000000 5.288358625820584E-003 + 3.71700000000000 5.275419842446758E-003 + 3.71800000000000 5.262511812236329E-003 + 3.71900000000000 5.249634464621528E-003 + 3.72000000000000 5.236787729188740E-003 + 3.72100000000000 5.223971535678189E-003 + 3.72200000000000 5.211185813983628E-003 + 3.72300000000000 5.198430494152021E-003 + 3.72400000000000 5.185705506383236E-003 + 3.72500000000000 5.173010781029741E-003 + 3.72600000000000 5.160346248596287E-003 + 3.72700000000000 5.147711839739607E-003 + 3.72800000000000 5.135107485268091E-003 + 3.72900000000000 5.122533116141503E-003 + 3.73000000000000 5.109988663470646E-003 + 3.73100000000000 5.097474058517085E-003 + 3.73200000000000 5.084989232692814E-003 + 3.73300000000000 5.072534117559971E-003 + 3.73400000000000 5.060108644830520E-003 + 3.73500000000000 5.047712746365948E-003 + 3.73600000000000 5.035346354176965E-003 + 3.73700000000000 5.023009400423204E-003 + 3.73800000000000 5.010701817412911E-003 + 3.73900000000000 4.998423537602640E-003 + 3.74000000000000 4.986174493596963E-003 + 3.74100000000000 4.973954618148159E-003 + 3.74200000000000 4.961763844155919E-003 + 3.74300000000000 4.949602104667041E-003 + 3.74400000000000 4.937469332875128E-003 + 3.74500000000000 4.925365462120305E-003 + 3.74600000000000 4.913290425888903E-003 + 3.74700000000000 4.901244157813162E-003 + 3.74800000000000 4.889226591670943E-003 + 3.74900000000000 4.877237661385432E-003 + 3.75000000000000 4.865277301024826E-003 + 3.75100000000000 4.853345444802060E-003 + 3.75200000000000 4.841442027074494E-003 + 3.75300000000000 4.829566982343630E-003 + 3.75400000000000 4.817720245254807E-003 + 3.75500000000000 4.805901750596923E-003 + 3.75600000000000 4.794111433302115E-003 + 3.75700000000000 4.782349228445502E-003 + 3.75800000000000 4.770615071244859E-003 + 3.75900000000000 4.758908897060351E-003 + 3.76000000000000 4.747230641394221E-003 + 3.76100000000000 4.735580239890519E-003 + 3.76200000000000 4.723957628334795E-003 + 3.76300000000000 4.712362742653820E-003 + 3.76400000000000 4.700795518915293E-003 + 3.76500000000000 4.689255893327558E-003 + 3.76600000000000 4.677743802239301E-003 + 3.76700000000000 4.666259182139282E-003 + 3.76800000000000 4.654801969656033E-003 + 3.76900000000000 4.643372101557585E-003 + 3.77000000000000 4.631969514751164E-003 + 3.77100000000000 4.620594146282922E-003 + 3.77200000000000 4.609245933337648E-003 + 3.77300000000000 4.597924813238476E-003 + 3.77400000000000 4.586630723446616E-003 + 3.77500000000000 4.575363601561052E-003 + 3.77600000000000 4.564123385318274E-003 + 3.77700000000000 4.552910012591989E-003 + 3.77800000000000 4.541723421392842E-003 + 3.77900000000000 4.530563549868134E-003 + 3.78000000000000 4.519430336301535E-003 + 3.78100000000000 4.508323719112819E-003 + 3.78200000000000 4.497243636857567E-003 + 3.78300000000000 4.486190028226900E-003 + 3.78400000000000 4.475162832047191E-003 + 3.78500000000000 4.464161987279797E-003 + 3.78600000000000 4.453187433020772E-003 + 3.78700000000000 4.442239108500595E-003 + 3.78800000000000 4.431316953083892E-003 + 3.78900000000000 4.420420906269158E-003 + 3.79000000000000 4.409550907688484E-003 + 3.79100000000000 4.398706897107284E-003 + 3.79200000000000 4.387888814424012E-003 + 3.79300000000000 4.377096599669897E-003 + 3.79400000000000 4.366330193008659E-003 + 3.79500000000000 4.355589534736251E-003 + 3.79600000000000 4.344874565280572E-003 + 3.79700000000000 4.334185225201202E-003 + 3.79800000000000 4.323521455189128E-003 + 3.79900000000000 4.312883196066470E-003 + 3.80000000000000 4.302270388786220E-003 + 3.80100000000000 4.291682974431963E-003 + 3.80200000000000 4.281120894217607E-003 + 3.80300000000000 4.270584089487119E-003 + 3.80400000000000 4.260072501714255E-003 + 3.80500000000000 4.249586072502287E-003 + 3.80600000000000 4.239124743583742E-003 + 3.80700000000000 4.228688456820133E-003 + 3.80800000000000 4.218277154201687E-003 + 3.80900000000000 4.207890777847086E-003 + 3.81000000000000 4.197529270003197E-003 + 3.81100000000000 4.187192573044808E-003 + 3.81200000000000 4.176880629474360E-003 + 3.81300000000000 4.166593381921690E-003 + 3.81400000000000 4.156330773143763E-003 + 3.81500000000000 4.146092746024404E-003 + 3.81600000000000 4.135879243574043E-003 + 3.81700000000000 4.125690208929451E-003 + 3.81800000000000 4.115525585353473E-003 + 3.81900000000000 4.105385316234772E-003 + 3.82000000000000 4.095269345087567E-003 + 3.82100000000000 4.085177615551369E-003 + 3.82200000000000 4.075110071390729E-003 + 3.82300000000000 4.065066656494969E-003 + 3.82400000000000 4.055047314877927E-003 + 3.82500000000000 4.045051990677705E-003 + 3.82600000000000 4.035080628156399E-003 + 3.82700000000000 4.025133171699851E-003 + 3.82800000000000 4.015209565817386E-003 + 3.82900000000000 4.005309755141563E-003 + 3.83000000000000 3.995433684427908E-003 + 3.83100000000000 3.985581298554666E-003 + 3.83200000000000 3.975752542522547E-003 + 3.83300000000000 3.965947361454464E-003 + 3.83400000000000 3.956165700595286E-003 + 3.83500000000000 3.946407505311582E-003 + 3.83600000000000 3.936672721091366E-003 + 3.83700000000000 3.926961293543846E-003 + 3.83800000000000 3.917273168399172E-003 + 3.83900000000000 3.907608291508182E-003 + 3.84000000000000 3.897966608842151E-003 + 3.84100000000000 3.888348066492542E-003 + 3.84200000000000 3.878752610670760E-003 + 3.84300000000000 3.869180187707888E-003 + 3.84400000000000 3.859630744054451E-003 + 3.84500000000000 3.850104226280161E-003 + 3.84600000000000 3.840600581073673E-003 + 3.84700000000000 3.831119755242328E-003 + 3.84800000000000 3.821661695711913E-003 + 3.84900000000000 3.812226349526414E-003 + 3.85000000000000 3.802813663847767E-003 + 3.85100000000000 3.793423585955606E-003 + 3.85200000000000 3.784056063247030E-003 + 3.85300000000000 3.774711043236346E-003 + 3.85400000000000 3.765388473554831E-003 + 3.85500000000000 3.756088301950487E-003 + 3.85600000000000 3.746810476287790E-003 + 3.85700000000000 3.737554944547456E-003 + 3.85800000000000 3.728321654826196E-003 + 3.85900000000000 3.719110555336467E-003 + 3.86000000000000 3.709921594406234E-003 + 3.86100000000000 3.700754720478731E-003 + 3.86200000000000 3.691609882112218E-003 + 3.86300000000000 3.682487027979738E-003 + 3.86400000000000 3.673386106868877E-003 + 3.86500000000000 3.664307067681528E-003 + 3.86600000000000 3.655249859433647E-003 + 3.86700000000000 3.646214431255017E-003 + 3.86800000000000 3.637200732389009E-003 + 3.86900000000000 3.628208712192342E-003 + 3.87000000000000 3.619238320134850E-003 + 3.87100000000000 3.610289505799236E-003 + 3.87200000000000 3.601362218880848E-003 + 3.87300000000000 3.592456409187430E-003 + 3.87400000000000 3.583572026638895E-003 + 3.87500000000000 3.574709021267086E-003 + 3.87600000000000 3.565867343215543E-003 + 3.87700000000000 3.557046942739262E-003 + 3.87800000000000 3.548247770204474E-003 + 3.87900000000000 3.539469776088397E-003 + 3.88000000000000 3.530712910979011E-003 + 3.88100000000000 3.521977125574828E-003 + 3.88200000000000 3.513262370684648E-003 + 3.88300000000000 3.504568597227341E-003 + 3.88400000000000 3.495895756231605E-003 + 3.88500000000000 3.487243798835741E-003 + 3.88600000000000 3.478612676287423E-003 + 3.88700000000000 3.470002339943461E-003 + 3.88800000000000 3.461412741269577E-003 + 3.88900000000000 3.452843831840180E-003 + 3.89000000000000 3.444295563338125E-003 + 3.89100000000000 3.435767887554497E-003 + 3.89200000000000 3.427260756388374E-003 + 3.89300000000000 3.418774121846604E-003 + 3.89400000000000 3.410307936043581E-003 + 3.89500000000000 3.401862151201009E-003 + 3.89600000000000 3.393436719647686E-003 + 3.89700000000000 3.385031593819273E-003 + 3.89800000000000 3.376646726258067E-003 + 3.89900000000000 3.368282069612782E-003 + 3.90000000000000 3.359937576638318E-003 + 3.90100000000000 3.351613200195541E-003 + 3.90200000000000 3.343308893251061E-003 + 3.90300000000000 3.335024608877003E-003 + 3.90400000000000 3.326760300250791E-003 + 3.90500000000000 3.318515920654915E-003 + 3.90600000000000 3.310291423476728E-003 + 3.90700000000000 3.302086762208204E-003 + 3.90800000000000 3.293901890445728E-003 + 3.90900000000000 3.285736761889874E-003 + 3.91000000000000 3.277591330345183E-003 + 3.91100000000000 3.269465549719948E-003 + 3.91200000000000 3.261359374025983E-003 + 3.91300000000000 3.253272757378420E-003 + 3.91400000000000 3.245205653995479E-003 + 3.91500000000000 3.237158018198254E-003 + 3.91600000000000 3.229129804410495E-003 + 3.91700000000000 3.221120967158386E-003 + 3.91800000000000 3.213131461070340E-003 + 3.91900000000000 3.205161240876770E-003 + 3.92000000000000 3.197210261409879E-003 + 3.92100000000000 3.189278477603443E-003 + 3.92200000000000 3.181365844492599E-003 + 3.92300000000000 3.173472317213625E-003 + 3.92400000000000 3.165597851003729E-003 + 3.92500000000000 3.157742401200832E-003 + 3.92600000000000 3.149905923243362E-003 + 3.92700000000000 3.142088372670029E-003 + 3.92800000000000 3.134289705119625E-003 + 3.92900000000000 3.126509876330800E-003 + 3.93000000000000 3.118748842141859E-003 + 3.93100000000000 3.111006558490547E-003 + 3.93200000000000 3.103282981413837E-003 + 3.93300000000000 3.095578067047718E-003 + 3.93400000000000 3.087891771626992E-003 + 3.93500000000000 3.080224051485058E-003 + 3.93600000000000 3.072574863053700E-003 + 3.93700000000000 3.064944162862884E-003 + 3.93800000000000 3.057331907540550E-003 + 3.93900000000000 3.049738053812396E-003 + 3.94000000000000 3.042162558501678E-003 + 3.94100000000000 3.034605378528997E-003 + 3.94200000000000 3.027066470912098E-003 + 3.94300000000000 3.019545792765657E-003 + 3.94400000000000 3.012043301301078E-003 + 3.94500000000000 3.004558953826285E-003 + 3.94600000000000 2.997092707745526E-003 + 3.94700000000000 2.989644520559149E-003 + 3.94800000000000 2.982214349863416E-003 + 3.94900000000000 2.974802153350289E-003 + 3.95000000000000 2.967407888807230E-003 + 3.95100000000000 2.960031514116993E-003 + 3.95200000000000 2.952672987257429E-003 + 3.95300000000000 2.945332266301272E-003 + 3.95400000000000 2.938009309415946E-003 + 3.95500000000000 2.930704074863363E-003 + 3.95600000000000 2.923416520999713E-003 + 3.95700000000000 2.916146606275271E-003 + 3.95800000000000 2.908894289234196E-003 + 3.95900000000000 2.901659528514325E-003 + 3.96000000000000 2.894442282846978E-003 + 3.96100000000000 2.887242511056755E-003 + 3.96200000000000 2.880060172061345E-003 + 3.96300000000000 2.872895224871314E-003 + 3.96400000000000 2.865747628589917E-003 + 3.96500000000000 2.858617342412895E-003 + 3.96600000000000 2.851504325628282E-003 + 3.96700000000000 2.844408537616200E-003 + 3.96800000000000 2.837329937848674E-003 + 3.96900000000000 2.830268485889422E-003 + 3.97000000000000 2.823224141393667E-003 + 3.97100000000000 2.816196864107943E-003 + 3.97200000000000 2.809186613869892E-003 + 3.97300000000000 2.802193350608078E-003 + 3.97400000000000 2.795217034341785E-003 + 3.97500000000000 2.788257625180826E-003 + 3.97600000000000 2.781315083325350E-003 + 3.97700000000000 2.774389369065648E-003 + 3.97800000000000 2.767480442781957E-003 + 3.97900000000000 2.760588264944273E-003 + 3.98000000000000 2.753712796112156E-003 + 3.98100000000000 2.746853996934534E-003 + 3.98200000000000 2.740011828149518E-003 + 3.98300000000000 2.733186250584209E-003 + 3.98400000000000 2.726377225154506E-003 + 3.98500000000000 2.719584712864913E-003 + 3.98600000000000 2.712808674808356E-003 + 3.98700000000000 2.706049072165985E-003 + 3.98800000000000 2.699305866206994E-003 + 3.98900000000000 2.692579018288422E-003 + 3.99000000000000 2.685868489854974E-003 + 3.99100000000000 2.679174242438825E-003 + 3.99200000000000 2.672496237659439E-003 + 3.99300000000000 2.665834437223375E-003 + 3.99400000000000 2.659188802924104E-003 + 3.99500000000000 2.652559296641824E-003 + 3.99600000000000 2.645945880343266E-003 + 3.99700000000000 2.639348516081518E-003 + 3.99800000000000 2.632767165995832E-003 + 3.99900000000000 2.626201792311444E-003 + 4.00000000000000 2.619652357339382E-003 + 4.00100000000000 2.613118823476289E-003 + 4.00200000000000 2.606601153204237E-003 + 4.00300000000000 2.600099309090538E-003 + 4.00400000000000 2.593613253787568E-003 + 4.00500000000000 2.587142950032582E-003 + 4.00600000000000 2.580688360647524E-003 + 4.00700000000000 2.574249448538857E-003 + 4.00800000000000 2.567826176697370E-003 + 4.00900000000000 2.561418508198004E-003 + 4.01000000000000 2.555026406199669E-003 + 4.01100000000000 2.548649833945055E-003 + 4.01200000000000 2.542288754760466E-003 + 4.01300000000000 2.535943132055630E-003 + 4.01400000000000 2.529612929323518E-003 + 4.01500000000000 2.523298110140175E-003 + 4.01600000000000 2.516998638164525E-003 + 4.01700000000000 2.510714477138208E-003 + 4.01800000000000 2.504445590885392E-003 + 4.01900000000000 2.498191943312598E-003 + 4.02000000000000 2.491953498408519E-003 + 4.02100000000000 2.485730220243853E-003 + 4.02200000000000 2.479522072971111E-003 + 4.02300000000000 2.473329020824453E-003 + 4.02400000000000 2.467151028119503E-003 + 4.02500000000000 2.460988059253179E-003 + 4.02600000000000 2.454840078703517E-003 + 4.02700000000000 2.448707051029487E-003 + 4.02800000000000 2.442588940870833E-003 + 4.02900000000000 2.436485712947886E-003 + 4.03000000000000 2.430397332061395E-003 + 4.03100000000000 2.424323763092356E-003 + 4.03200000000000 2.418264971001828E-003 + 4.03300000000000 2.412220920830770E-003 + 4.03400000000000 2.406191577699870E-003 + 4.03500000000000 2.400176906809359E-003 + 4.03600000000000 2.394176873438853E-003 + 4.03700000000000 2.388191442947175E-003 + 4.03800000000000 2.382220580772181E-003 + 4.03900000000000 2.376264252430596E-003 + 4.04000000000000 2.370322423517836E-003 + 4.04100000000000 2.364395059707843E-003 + 4.04200000000000 2.358482126752914E-003 + 4.04300000000000 2.352583590483525E-003 + 4.04400000000000 2.346699416808172E-003 + 4.04500000000000 2.340829571713194E-003 + 4.04600000000000 2.334974021262606E-003 + 4.04700000000000 2.329132731597934E-003 + 4.04800000000000 2.323305668938042E-003 + 4.04900000000000 2.317492799578967E-003 + 4.05000000000000 2.311694089893755E-003 + 4.05100000000000 2.305909506332284E-003 + 4.05200000000000 2.300139015421108E-003 + 4.05300000000000 2.294382583763286E-003 + 4.05400000000000 2.288640178038214E-003 + 4.05500000000000 2.282911765001462E-003 + 4.05600000000000 2.277197311484608E-003 + 4.05700000000000 2.271496784395075E-003 + 4.05800000000000 2.265810150715962E-003 + 4.05900000000000 2.260137377505881E-003 + 4.06000000000000 2.254478431898797E-003 + 4.06100000000000 2.248833281103859E-003 + 4.06200000000000 2.243201892405238E-003 + 4.06300000000000 2.237584233161965E-003 + 4.06400000000000 2.231980270807769E-003 + 4.06500000000000 2.226389972850913E-003 + 4.06600000000000 2.220813306874032E-003 + 4.06700000000000 2.215250240533970E-003 + 4.06800000000000 2.209700741561620E-003 + 4.06900000000000 2.204164777761770E-003 + 4.07000000000000 2.198642317012923E-003 + 4.07100000000000 2.193133327267160E-003 + 4.07200000000000 2.187637776549959E-003 + 4.07300000000000 2.182155632960053E-003 + 4.07400000000000 2.176686864669258E-003 + 4.07500000000000 2.171231439922316E-003 + 4.07600000000000 2.165789327036742E-003 + 4.07700000000000 2.160360494402660E-003 + 4.07800000000000 2.154944910482645E-003 + 4.07900000000000 2.149542543811572E-003 + 4.08000000000000 2.144153362996443E-003 + 4.08100000000000 2.138777336716248E-003 + 4.08200000000000 2.133414433721797E-003 + 4.08300000000000 2.128064622835565E-003 + 4.08400000000000 2.122727872951536E-003 + 4.08500000000000 2.117404153035051E-003 + 4.08600000000000 2.112093432122645E-003 + 4.08700000000000 2.106795679321899E-003 + 4.08800000000000 2.101510863811278E-003 + 4.08900000000000 2.096238954839982E-003 + 4.09000000000000 2.090979921727789E-003 + 4.09100000000000 2.085733733864899E-003 + 4.09200000000000 2.080500360711786E-003 + 4.09300000000000 2.075279771799039E-003 + 4.09400000000000 2.070071936727209E-003 + 4.09500000000000 2.064876825166660E-003 + 4.09600000000000 2.059694406857414E-003 + 4.09700000000000 2.054524651608997E-003 + 4.09800000000000 2.049367529300290E-003 + 4.09900000000000 2.044223009879377E-003 + 4.10000000000000 2.039091063363393E-003 + 4.10100000000000 2.033971659838371E-003 + 4.10200000000000 2.028864769459094E-003 + 4.10300000000000 2.023770362448946E-003 + 4.10400000000000 2.018688409099756E-003 + 4.10500000000000 2.013618879771652E-003 + 4.10600000000000 2.008561744892916E-003 + 4.10700000000000 2.003516974959824E-003 + 4.10800000000000 1.998484540536507E-003 + 4.10900000000000 1.993464412254797E-003 + 4.11000000000000 1.988456560814080E-003 + 4.11100000000000 1.983460956981151E-003 + 4.11200000000000 1.978477571590058E-003 + 4.11300000000000 1.973506375541965E-003 + 4.11400000000000 1.968547339805000E-003 + 4.11500000000000 1.963600435414105E-003 + 4.11600000000000 1.958665633470895E-003 + 4.11700000000000 1.953742905143508E-003 + 4.11800000000000 1.948832221666462E-003 + 4.11900000000000 1.943933554340509E-003 + 4.12000000000000 1.939046874532484E-003 + 4.12100000000000 1.934172153675171E-003 + 4.12200000000000 1.929309363267148E-003 + 4.12300000000000 1.924458474872645E-003 + 4.12400000000000 1.919619460121407E-003 + 4.12500000000000 1.914792290708540E-003 + 4.12600000000000 1.909976938394371E-003 + 4.12700000000000 1.905173375004312E-003 + 4.12800000000000 1.900381572428703E-003 + 4.12900000000000 1.895601502622682E-003 + 4.13000000000000 1.890833137606038E-003 + 4.13100000000000 1.886076449463065E-003 + 4.13200000000000 1.881331410342426E-003 + 4.13300000000000 1.876597992457011E-003 + 4.13400000000000 1.871876168083790E-003 + 4.13500000000000 1.867165909563682E-003 + 4.13600000000000 1.862467189301402E-003 + 4.13700000000000 1.857779979765330E-003 + 4.13800000000000 1.853104253487372E-003 + 4.13900000000000 1.848439983062809E-003 + 4.14000000000000 1.843787141150170E-003 + 4.14100000000000 1.839145700471085E-003 + 4.14200000000000 1.834515633810151E-003 + 4.14300000000000 1.829896914014790E-003 + 4.14400000000000 1.825289513995111E-003 + 4.14500000000000 1.820693406723773E-003 + 4.14600000000000 1.816108565235847E-003 + 4.14700000000000 1.811534962628680E-003 + 4.14800000000000 1.806972572061752E-003 + 4.14900000000000 1.802421366756546E-003 + 4.15000000000000 1.797881319996410E-003 + 4.15100000000000 1.793352405126415E-003 + 4.15200000000000 1.788834595553227E-003 + 4.15300000000000 1.784327864744963E-003 + 4.15400000000000 1.779832186231065E-003 + 4.15500000000000 1.775347533602154E-003 + 4.15600000000000 1.770873880509905E-003 + 4.15700000000000 1.766411200666903E-003 + 4.15800000000000 1.761959467846517E-003 + 4.15900000000000 1.757518655882761E-003 + 4.16000000000000 1.753088738670160E-003 + 4.16100000000000 1.748669690163619E-003 + 4.16200000000000 1.744261484378289E-003 + 4.16300000000000 1.739864095389430E-003 + 4.16400000000000 1.735477497332285E-003 + 4.16500000000000 1.731101664401940E-003 + 4.16600000000000 1.726736570853200E-003 + 4.16700000000000 1.722382191000451E-003 + 4.16800000000000 1.718038499217528E-003 + 4.16900000000000 1.713705469937589E-003 + 4.17000000000000 1.709383077652978E-003 + 4.17100000000000 1.705071296915097E-003 + 4.17200000000000 1.700770102334275E-003 + 4.17300000000000 1.696479468579638E-003 + 4.17400000000000 1.692199370378978E-003 + 4.17500000000000 1.687929782518627E-003 + 4.17600000000000 1.683670679843317E-003 + 4.17700000000000 1.679422037256065E-003 + 4.17800000000000 1.675183829718033E-003 + 4.17900000000000 1.670956032248404E-003 + 4.18000000000000 1.666738619924255E-003 + 4.18100000000000 1.662531567880423E-003 + 4.18200000000000 1.658334851309382E-003 + 4.18300000000000 1.654148445461114E-003 + 4.18400000000000 1.649972325642982E-003 + 4.18500000000000 1.645806467219602E-003 + 4.18600000000000 1.641650845612716E-003 + 4.18700000000000 1.637505436301065E-003 + 4.18800000000000 1.633370214820268E-003 + 4.18900000000000 1.629245156762683E-003 + 4.19000000000000 1.625130237777299E-003 + 4.19100000000000 1.621025433569595E-003 + 4.19200000000000 1.616930719901421E-003 + 4.19300000000000 1.612846072590875E-003 + 4.19400000000000 1.608771467512176E-003 + 4.19500000000000 1.604706880595536E-003 + 4.19600000000000 1.600652287827041E-003 + 4.19700000000000 1.596607665248525E-003 + 4.19800000000000 1.592572988957445E-003 + 4.19900000000000 1.588548235106762E-003 + 4.20000000000000 1.584533379904811E-003 + 4.20100000000000 1.580528399615182E-003 + 4.20200000000000 1.576533270556599E-003 + 4.20300000000000 1.572547969102792E-003 + 4.20400000000000 1.568572471682380E-003 + 4.20500000000000 1.564606754778746E-003 + 4.20600000000000 1.560650794929917E-003 + 4.20700000000000 1.556704568728443E-003 + 4.20800000000000 1.552768052821272E-003 + 4.20900000000000 1.548841223909634E-003 + 4.21000000000000 1.544924058748916E-003 + 4.21100000000000 1.541016534148543E-003 + 4.21200000000000 1.537118626971863E-003 + 4.21300000000000 1.533230314136015E-003 + 4.21400000000000 1.529351572611823E-003 + 4.21500000000000 1.525482379423666E-003 + 4.21600000000000 1.521622711649366E-003 + 4.21700000000000 1.517772546420063E-003 + 4.21800000000000 1.513931860920102E-003 + 4.21900000000000 1.510100632386909E-003 + 4.22000000000000 1.506278838110878E-003 + 4.22100000000000 1.502466455435249E-003 + 4.22200000000000 1.498663461755991E-003 + 4.22300000000000 1.494869834521690E-003 + 4.22400000000000 1.491085551233420E-003 + 4.22500000000000 1.487310589444639E-003 + 4.22600000000000 1.483544926761064E-003 + 4.22700000000000 1.479788540840556E-003 + 4.22800000000000 1.476041409393007E-003 + 4.22900000000000 1.472303510180218E-003 + 4.23000000000000 1.468574821015791E-003 + 4.23100000000000 1.464855319765007E-003 + 4.23200000000000 1.461144984344712E-003 + 4.23300000000000 1.457443792723205E-003 + 4.23400000000000 1.453751722920120E-003 + 4.23500000000000 1.450068753006312E-003 + 4.23600000000000 1.446394861103746E-003 + 4.23700000000000 1.442730025385375E-003 + 4.23800000000000 1.439074224075035E-003 + 4.23900000000000 1.435427435447330E-003 + 4.24000000000000 1.431789637827509E-003 + 4.24100000000000 1.428160809591366E-003 + 4.24200000000000 1.424540929165119E-003 + 4.24300000000000 1.420929975025299E-003 + 4.24400000000000 1.417327925698642E-003 + 4.24500000000000 1.413734759761966E-003 + 4.24600000000000 1.410150455842073E-003 + 4.24700000000000 1.406574992615626E-003 + 4.24800000000000 1.403008348809041E-003 + 4.24900000000000 1.399450503198382E-003 + 4.25000000000000 1.395901434609237E-003 + 4.25100000000000 1.392361121916621E-003 + 4.25200000000000 1.388829544044855E-003 + 4.25300000000000 1.385306679967462E-003 + 4.25400000000000 1.381792508707054E-003 + 4.25500000000000 1.378287009335222E-003 + 4.25600000000000 1.374790160972428E-003 + 4.25700000000000 1.371301942787897E-003 + 4.25800000000000 1.367822333999500E-003 + 4.25900000000000 1.364351313873655E-003 + 4.26000000000000 1.360888861725215E-003 + 4.26100000000000 1.357434956917353E-003 + 4.26200000000000 1.353989578861466E-003 + 4.26300000000000 1.350552707017055E-003 + 4.26400000000000 1.347124320891625E-003 + 4.26500000000000 1.343704400040574E-003 + 4.26600000000000 1.340292924067086E-003 + 4.26700000000000 1.336889872622024E-003 + 4.26800000000000 1.333495225403827E-003 + 4.26900000000000 1.330108962158394E-003 + 4.27000000000000 1.326731062678990E-003 + 4.27100000000000 1.323361506806127E-003 + 4.27200000000000 1.320000274427468E-003 + 4.27300000000000 1.316647345477714E-003 + 4.27400000000000 1.313302699938506E-003 + 4.27500000000000 1.309966317838312E-003 + 4.27600000000000 1.306638179252329E-003 + 4.27700000000000 1.303318264302369E-003 + 4.27800000000000 1.300006553156764E-003 + 4.27900000000000 1.296703026030258E-003 + 4.28000000000000 1.293407663183898E-003 + 4.28100000000000 1.290120444924939E-003 + 4.28200000000000 1.286841351606731E-003 + 4.28300000000000 1.283570363628623E-003 + 4.28400000000000 1.280307461435856E-003 + 4.28500000000000 1.277052625519457E-003 + 4.28600000000000 1.273805836416144E-003 + 4.28700000000000 1.270567074708219E-003 + 4.28800000000000 1.267336321023459E-003 + 4.28900000000000 1.264113556035027E-003 + 4.29000000000000 1.260898760461359E-003 + 4.29100000000000 1.257691915066067E-003 + 4.29200000000000 1.254493000657838E-003 + 4.29300000000000 1.251301998090329E-003 + 4.29400000000000 1.248118888262069E-003 + 4.29500000000000 1.244943652116358E-003 + 4.29600000000000 1.241776270641164E-003 + 4.29700000000000 1.238616724869025E-003 + 4.29800000000000 1.235464995876944E-003 + 4.29900000000000 1.232321064786297E-003 + 4.30000000000000 1.229184912762726E-003 + 4.30100000000000 1.226056521016041E-003 + 4.30200000000000 1.222935870800124E-003 + 4.30300000000000 1.219822943412824E-003 + 4.30400000000000 1.216717720195862E-003 + 4.30500000000000 1.213620182534732E-003 + 4.30600000000000 1.210530311858600E-003 + 4.30700000000000 1.207448089640209E-003 + 4.30800000000000 1.204373497395777E-003 + 4.30900000000000 1.201306516684902E-003 + 4.31000000000000 1.198247129110462E-003 + 4.31100000000000 1.195195316318520E-003 + 4.31200000000000 1.192151059998223E-003 + 4.31300000000000 1.189114341881708E-003 + 4.31400000000000 1.186085143744004E-003 + 4.31500000000000 1.183063447402936E-003 + 4.31600000000000 1.180049234719026E-003 + 4.31700000000000 1.177042487595399E-003 + 4.31800000000000 1.174043187977685E-003 + 4.31900000000000 1.171051317853928E-003 + 4.32000000000000 1.168066859254481E-003 + 4.32100000000000 1.165089794251920E-003 + 4.32200000000000 1.162120104960942E-003 + 4.32300000000000 1.159157773538275E-003 + 4.32400000000000 1.156202782182579E-003 + 4.32500000000000 1.153255113134353E-003 + 4.32600000000000 1.150314748675839E-003 + 4.32700000000000 1.147381671130931E-003 + 4.32800000000000 1.144455862865079E-003 + 4.32900000000000 1.141537306285193E-003 + 4.33000000000000 1.138625983839552E-003 + 4.33100000000000 1.135721878017711E-003 + 4.33200000000000 1.132824971350406E-003 + 4.33300000000000 1.129935246409459E-003 + 4.33400000000000 1.127052685807690E-003 + 4.33500000000000 1.124177272198821E-003 + 4.33600000000000 1.121308988277382E-003 + 4.33700000000000 1.118447816778625E-003 + 4.33800000000000 1.115593740478424E-003 + 4.33900000000000 1.112746742193188E-003 + 4.34000000000000 1.109906804779769E-003 + 4.34100000000000 1.107073911135367E-003 + 4.34200000000000 1.104248044197444E-003 + 4.34300000000000 1.101429186943629E-003 + 4.34400000000000 1.098617322391626E-003 + 4.34500000000000 1.095812433599129E-003 + 4.34600000000000 1.093014503663724E-003 + 4.34700000000000 1.090223515722804E-003 + 4.34800000000000 1.087439452953479E-003 + 4.34900000000000 1.084662298572481E-003 + 4.35000000000000 1.081892035836079E-003 + 4.35100000000000 1.079128648039988E-003 + 4.35200000000000 1.076372118519279E-003 + 4.35300000000000 1.073622430648290E-003 + 4.35400000000000 1.070879567840537E-003 + 4.35500000000000 1.068143513548626E-003 + 4.35600000000000 1.065414251264164E-003 + 4.35700000000000 1.062691764517669E-003 + 4.35800000000000 1.059976036878484E-003 + 4.35900000000000 1.057267051954688E-003 + 4.36000000000000 1.054564793393006E-003 + 4.36100000000000 1.051869244878727E-003 + 4.36200000000000 1.049180390135609E-003 + 4.36300000000000 1.046498212925797E-003 + 4.36400000000000 1.043822697049736E-003 + 4.36500000000000 1.041153826346081E-003 + 4.36600000000000 1.038491584691611E-003 + 4.36700000000000 1.035835956001143E-003 + 4.36800000000000 1.033186924227449E-003 + 4.36900000000000 1.030544473361162E-003 + 4.37000000000000 1.027908587430697E-003 + 4.37100000000000 1.025279250502162E-003 + 4.37200000000000 1.022656446679275E-003 + 4.37300000000000 1.020040160103272E-003 + 4.37400000000000 1.017430374952831E-003 + 4.37500000000000 1.014827075443979E-003 + 4.37600000000000 1.012230245830014E-003 + 4.37700000000000 1.009639870401412E-003 + 4.37800000000000 1.007055933485749E-003 + 4.37900000000000 1.004478419447616E-003 + 4.38000000000000 1.001907312688533E-003 + 4.38100000000000 9.993425976468624E-004 + 4.38200000000000 9.967842587977332E-004 + 4.38300000000000 9.942322806529480E-004 + 4.38400000000000 9.916866477609066E-004 + 4.38500000000000 9.891473447065195E-004 + 4.38600000000000 9.866143561111243E-004 + 4.38700000000000 9.840876666324056E-004 + 4.38800000000000 9.815672609643094E-004 + 4.38900000000000 9.790531238369614E-004 + 4.39000000000000 9.765452400165862E-004 + 4.39100000000000 9.740435943054219E-004 + 4.39200000000000 9.715481715416416E-004 + 4.39300000000000 9.690589565992695E-004 + 4.39400000000000 9.665759343880986E-004 + 4.39500000000000 9.640990898536110E-004 + 4.39600000000000 9.616284079768969E-004 + 4.39700000000000 9.591638737745699E-004 + 4.39800000000000 9.567054722986907E-004 + 4.39900000000000 9.542531886366822E-004 + 4.40000000000000 9.518070079112520E-004 + 4.40100000000000 9.493669152803105E-004 + 4.40200000000000 9.469328959368907E-004 + 4.40300000000000 9.445049351090676E-004 + 4.40400000000000 9.420830180598804E-004 + 4.40500000000000 9.396671300872495E-004 + 4.40600000000000 9.372572565238997E-004 + 4.40700000000000 9.348533827372798E-004 + 4.40800000000000 9.324554941294827E-004 + 4.40900000000000 9.300635761371674E-004 + 4.41000000000000 9.276776142314792E-004 + 4.41100000000000 9.252975939179717E-004 + 4.41200000000000 9.229235007365286E-004 + 4.41300000000000 9.205553202612832E-004 + 4.41400000000000 9.181930381005435E-004 + 4.41500000000000 9.158366398967101E-004 + 4.41600000000000 9.134861113262024E-004 + 4.41700000000000 9.111414380993784E-004 + 4.41800000000000 9.088026059604574E-004 + 4.41900000000000 9.064696006874437E-004 + 4.42000000000000 9.041424080920488E-004 + 4.42100000000000 9.018210140196135E-004 + 4.42200000000000 8.995054043490327E-004 + 4.42300000000000 8.971955649926762E-004 + 4.42400000000000 8.948914818963155E-004 + 4.42500000000000 8.925931410390459E-004 + 4.42600000000000 8.903005284332083E-004 + 4.42700000000000 8.880136301243167E-004 + 4.42800000000000 8.857324321909796E-004 + 4.42900000000000 8.834569207448250E-004 + 4.43000000000000 8.811870819304273E-004 + 4.43100000000000 8.789229019252266E-004 + 4.43200000000000 8.766643669394595E-004 + 4.43300000000000 8.744114632160796E-004 + 4.43400000000000 8.721641770306842E-004 + 4.43500000000000 8.699224946914403E-004 + 4.43600000000000 8.676864025390087E-004 + 4.43700000000000 8.654558869464708E-004 + 4.43800000000000 8.632309343192535E-004 + 4.43900000000000 8.610115310950549E-004 + 4.44000000000000 8.587976637437720E-004 + 4.44100000000000 8.565893187674254E-004 + 4.44200000000000 8.543864827000850E-004 + 4.44300000000000 8.521891421077996E-004 + 4.44400000000000 8.499972835885206E-004 + 4.44500000000000 8.478108937720292E-004 + 4.44600000000000 8.456299593198665E-004 + 4.44700000000000 8.434544669252562E-004 + 4.44800000000000 8.412844033130356E-004 + 4.44900000000000 8.391197552395816E-004 + 4.45000000000000 8.369605094927375E-004 + 4.45100000000000 8.348066528917433E-004 + 4.45200000000000 8.326581722871614E-004 + 4.45300000000000 8.305150545608057E-004 + 4.45400000000000 8.283772866256695E-004 + 4.45500000000000 8.262448554258551E-004 + 4.45600000000000 8.241177479365005E-004 + 4.45700000000000 8.219959511637101E-004 + 4.45800000000000 8.198794521444821E-004 + 4.45900000000000 8.177682379466390E-004 + 4.46000000000000 8.156622956687564E-004 + 4.46100000000000 8.135616124400905E-004 + 4.46200000000000 8.114661754205109E-004 + 4.46300000000000 8.093759718004270E-004 + 4.46400000000000 8.072909888007212E-004 + 4.46500000000000 8.052112136726761E-004 + 4.46600000000000 8.031366336979065E-004 + 4.46700000000000 8.010672361882883E-004 + 4.46800000000000 7.990030084858904E-004 + 4.46900000000000 7.969439379629038E-004 + 4.47000000000000 7.948900120215741E-004 + 4.47100000000000 7.928412180941303E-004 + 4.47200000000000 7.907975436427180E-004 + 4.47300000000000 7.887589761593292E-004 + 4.47400000000000 7.867255031657345E-004 + 4.47500000000000 7.846971122134137E-004 + 4.47600000000000 7.826737908834892E-004 + 4.47700000000000 7.806555267866553E-004 + 4.47800000000000 7.786423075631120E-004 + 4.47900000000000 7.766341208824967E-004 + 4.48000000000000 7.746309544438168E-004 + 4.48100000000000 7.726327959753819E-004 + 4.48200000000000 7.706396332347351E-004 + 4.48300000000000 7.686514540085882E-004 + 4.48400000000000 7.666682461127519E-004 + 4.48500000000000 7.646899973920712E-004 + 4.48600000000000 7.627166957203576E-004 + 4.48700000000000 7.607483290003207E-004 + 4.48800000000000 7.587848851635049E-004 + 4.48900000000000 7.568263521702209E-004 + 4.49000000000000 7.548727180094790E-004 + 4.49100000000000 7.529239706989253E-004 + 4.49200000000000 7.509800982847727E-004 + 4.49300000000000 7.490410888417380E-004 + 4.49400000000000 7.471069304729747E-004 + 4.49500000000000 7.451776113100066E-004 + 4.49600000000000 7.432531195126646E-004 + 4.49700000000000 7.413334432690201E-004 + 4.49800000000000 7.394185707953194E-004 + 4.49900000000000 7.375084903359204E-004 + 4.50000000000000 7.356031901632261E-004 + 4.50100000000000 7.337026585776210E-004 + 4.50200000000000 7.318068839074067E-004 + 4.50300000000000 7.299158545087357E-004 + 4.50400000000000 7.280295587655500E-004 + 4.50500000000000 7.261479850895147E-004 + 4.50600000000000 7.242711219199549E-004 + 4.50700000000000 7.223989577237918E-004 + 4.50800000000000 7.205314809954786E-004 + 4.50900000000000 7.186686802569381E-004 + 4.51000000000000 7.168105440574985E-004 + 4.51100000000000 7.149570609738295E-004 + 4.51200000000000 7.131082196098803E-004 + 4.51300000000000 7.112640085968165E-004 + 4.51400000000000 7.094244165929562E-004 + 4.51500000000000 7.075894322837085E-004 + 4.51600000000000 7.057590443815099E-004 + 4.51700000000000 7.039332416257632E-004 + 4.51800000000000 7.021120127827741E-004 + 4.51900000000000 7.002953466456890E-004 + 4.52000000000000 6.984832320344334E-004 + 4.52100000000000 6.966756577956507E-004 + 4.52200000000000 6.948726128026384E-004 + 4.52300000000000 6.930740859552894E-004 + 4.52400000000000 6.912800661800271E-004 + 4.52500000000000 6.894905424297471E-004 + 4.52600000000000 6.877055036837544E-004 + 4.52700000000000 6.859249389477022E-004 + 4.52800000000000 6.841488372535324E-004 + 4.52900000000000 6.823771876594134E-004 + 4.53000000000000 6.806099792496795E-004 + 4.53100000000000 6.788472011347714E-004 + 4.53200000000000 6.770888424511743E-004 + 4.53300000000000 6.753348923613592E-004 + 4.53400000000000 6.735853400537219E-004 + 4.53500000000000 6.718401747425225E-004 + 4.53600000000000 6.700993856678274E-004 + 4.53700000000000 6.683629620954474E-004 + 4.53800000000000 6.666308933168788E-004 + 4.53900000000000 6.649031686492455E-004 + 4.54000000000000 6.631797774352366E-004 + 4.54100000000000 6.614607090430501E-004 + 4.54200000000000 6.597459528663324E-004 + 4.54300000000000 6.580354983241191E-004 + 4.54400000000000 6.563293348607771E-004 + 4.54500000000000 6.546274519459456E-004 + 4.54600000000000 6.529298390744770E-004 + 4.54700000000000 6.512364857663794E-004 + 4.54800000000000 6.495473815667570E-004 + 4.54900000000000 6.478625160457536E-004 + 4.55000000000000 6.461818787984934E-004 + 4.55100000000000 6.445054594450228E-004 + 4.55200000000000 6.428332476302541E-004 + 4.55300000000000 6.411652330239066E-004 + 4.55400000000000 6.395014053204489E-004 + 4.55500000000000 6.378417542390430E-004 + 4.55600000000000 6.361862695234849E-004 + 4.55700000000000 6.345349409421495E-004 + 4.55800000000000 6.328877582879323E-004 + 4.55900000000000 6.312447113781926E-004 + 4.56000000000000 6.296057900546976E-004 + 4.56100000000000 6.279709841835651E-004 + 4.56200000000000 6.263402836552064E-004 + 4.56300000000000 6.247136783842713E-004 + 4.56400000000000 6.230911583095907E-004 + 4.56500000000000 6.214727133941209E-004 + 4.56600000000000 6.198583336248881E-004 + 4.56700000000000 6.182480090129309E-004 + 4.56800000000000 6.166417295932462E-004 + 4.56900000000000 6.150394854247336E-004 + 4.57000000000000 6.134412665901375E-004 + 4.57100000000000 6.118470631959955E-004 + 4.57200000000000 6.102568653725796E-004 + 4.57300000000000 6.086706632738426E-004 + 4.57400000000000 6.070884470773644E-004 + 4.57500000000000 6.055102069842935E-004 + 4.57600000000000 6.039359332192960E-004 + 4.57700000000000 6.023656160304991E-004 + 4.57800000000000 6.007992456894362E-004 + 4.57900000000000 5.992368124909937E-004 + 4.58000000000000 5.976783067533554E-004 + 4.58100000000000 5.961237188179498E-004 + 4.58200000000000 5.945730390493948E-004 + 4.58300000000000 5.930262578354443E-004 + 4.58400000000000 5.914833655869342E-004 + 4.58500000000000 5.899443527377292E-004 + 4.58600000000000 5.884092097446681E-004 + 4.58700000000000 5.868779270875120E-004 + 4.58800000000000 5.853504952688888E-004 + 4.58900000000000 5.838269048142425E-004 + 4.59000000000000 5.823071462717784E-004 + 4.59100000000000 5.807912102124098E-004 + 4.59200000000000 5.792790872297069E-004 + 4.59300000000000 5.777707679398428E-004 + 4.59400000000000 5.762662429815401E-004 + 4.59500000000000 5.747655030160213E-004 + 4.59600000000000 5.732685387269522E-004 + 4.59700000000000 5.717753408203937E-004 + 4.59800000000000 5.702859000247472E-004 + 4.59900000000000 5.688002070907029E-004 + 4.60000000000000 5.673182527911887E-004 + 4.60100000000000 5.658400279213180E-004 + 4.60200000000000 5.643655232983369E-004 + 4.60300000000000 5.628947297615750E-004 + 4.60400000000000 5.614276381723910E-004 + 4.60500000000000 5.599642394141238E-004 + 4.60600000000000 5.585045243920406E-004 + 4.60700000000000 5.570484840332845E-004 + 4.60800000000000 5.555961092868252E-004 + 4.60900000000000 5.541473911234079E-004 + 4.61000000000000 5.527023205355008E-004 + 4.61100000000000 5.512608885372465E-004 + 4.61200000000000 5.498230861644102E-004 + 4.61300000000000 5.483889044743298E-004 + 4.61400000000000 5.469583345458660E-004 + 4.61500000000000 5.455313674793505E-004 + 4.61600000000000 5.441079943965376E-004 + 4.61700000000000 5.426882064405535E-004 + 4.61800000000000 5.412719947758461E-004 + 4.61900000000000 5.398593505881362E-004 + 4.62000000000000 5.384502650843661E-004 + 4.62100000000000 5.370447294926526E-004 + 4.62200000000000 5.356427350622355E-004 + 4.62300000000000 5.342442730634284E-004 + 4.62400000000000 5.328493347875711E-004 + 4.62500000000000 5.314579115469781E-004 + 4.62600000000000 5.300699946748920E-004 + 4.62700000000000 5.286855755254332E-004 + 4.62800000000000 5.273046454735511E-004 + 4.62900000000000 5.259271959149764E-004 + 4.63000000000000 5.245532182661718E-004 + 4.63100000000000 5.231827039642830E-004 + 4.63200000000000 5.218156444670922E-004 + 4.63300000000000 5.204520312529674E-004 + 4.63400000000000 5.190918558208166E-004 + 4.63500000000000 5.177351096900388E-004 + 4.63600000000000 5.163817844004751E-004 + 4.63700000000000 5.150318715123629E-004 + 4.63800000000000 5.136853626062872E-004 + 4.63900000000000 5.123422492831317E-004 + 4.64000000000000 5.110025231640345E-004 + 4.64100000000000 5.096661758903372E-004 + 4.64200000000000 5.083331991235404E-004 + 4.64300000000000 5.070035845452549E-004 + 4.64400000000000 5.056773238571551E-004 + 4.64500000000000 5.043544087809324E-004 + 4.64600000000000 5.030348310582484E-004 + 4.64700000000000 5.017185824506868E-004 + 4.64800000000000 5.004056547397089E-004 + 4.64900000000000 4.990960397266052E-004 + 4.65000000000000 4.977897292324506E-004 + 4.65100000000000 4.964867150980566E-004 + 4.65200000000000 4.951869891839256E-004 + 4.65300000000000 4.938905433702056E-004 + 4.65400000000000 4.925973695566430E-004 + 4.65500000000000 4.913074596625372E-004 + 4.65600000000000 4.900208056266952E-004 + 4.65700000000000 4.887373994073851E-004 + 4.65800000000000 4.874572329822912E-004 + 4.65900000000000 4.861802983484682E-004 + 4.66000000000000 4.849065875222956E-004 + 4.66100000000000 4.836360925394327E-004 + 4.66200000000000 4.823688054547740E-004 + 4.66300000000000 4.811047183424024E-004 + 4.66400000000000 4.798438232955461E-004 + 4.66500000000000 4.785861124265325E-004 + 4.66600000000000 4.773315778667441E-004 + 4.66700000000000 4.760802117665737E-004 + 4.66800000000000 4.748320062953791E-004 + 4.66900000000000 4.735869536414398E-004 + 4.67000000000000 4.723450460119119E-004 + 4.67100000000000 4.711062756327833E-004 + 4.67200000000000 4.698706347488310E-004 + 4.67300000000000 4.686381156235757E-004 + 4.67400000000000 4.674087105392387E-004 + 4.67500000000000 4.661824117966975E-004 + 4.67600000000000 4.649592117154418E-004 + 4.67700000000000 4.637391026335304E-004 + 4.67800000000000 4.625220769075477E-004 + 4.67900000000000 4.613081269125592E-004 + 4.68000000000000 4.600972450420694E-004 + 4.68100000000000 4.588894237079775E-004 + 4.68200000000000 4.576846553405351E-004 + 4.68300000000000 4.564829323883025E-004 + 4.68400000000000 4.552842473181052E-004 + 4.68500000000000 4.540885926149921E-004 + 4.68600000000000 4.528959607821929E-004 + 4.68700000000000 4.517063443410734E-004 + 4.68800000000000 4.505197358310952E-004 + 4.68900000000000 4.493361278097717E-004 + 4.69000000000000 4.481555128526263E-004 + 4.69100000000000 4.469778835531503E-004 + 4.69200000000000 4.458032325227596E-004 + 4.69300000000000 4.446315523907540E-004 + 4.69400000000000 4.434628358042741E-004 + 4.69500000000000 4.422970754282596E-004 + 4.69600000000000 4.411342639454082E-004 + 4.69700000000000 4.399743940561322E-004 + 4.69800000000000 4.388174584785187E-004 + 4.69900000000000 4.376634499482872E-004 + 4.70000000000000 4.365123612187473E-004 + 4.70100000000000 4.353641850607591E-004 + 4.70200000000000 4.342189142626906E-004 + 4.70300000000000 4.330765416303765E-004 + 4.70400000000000 4.319370599870784E-004 + 4.70500000000000 4.308004621734416E-004 + 4.70600000000000 4.296667410474566E-004 + 4.70700000000000 4.285358894844170E-004 + 4.70800000000000 4.274079003768782E-004 + 4.70900000000000 4.262827666346181E-004 + 4.71000000000000 4.251604811845960E-004 + 4.71100000000000 4.240410369709117E-004 + 4.71200000000000 4.229244269547663E-004 + 4.71300000000000 4.218106441144201E-004 + 4.71400000000000 4.206996814451542E-004 + 4.71500000000000 4.195915319592301E-004 + 4.71600000000000 4.184861886858483E-004 + 4.71700000000000 4.173836446711103E-004 + 4.71800000000000 4.162838929779777E-004 + 4.71900000000000 4.151869266862324E-004 + 4.72000000000000 4.140927388924377E-004 + 4.72100000000000 4.130013227098977E-004 + 4.72200000000000 4.119126712686195E-004 + 4.72300000000000 4.108267777152720E-004 + 4.72400000000000 4.097436352131473E-004 + 4.72500000000000 4.086632369421224E-004 + 4.72600000000000 4.075855760986192E-004 + 4.72700000000000 4.065106458955648E-004 + 4.72800000000000 4.054384395623547E-004 + 4.72900000000000 4.043689503448117E-004 + 4.73000000000000 4.033021715051486E-004 + 4.73100000000000 4.022380963219291E-004 + 4.73200000000000 4.011767180900294E-004 + 4.73300000000000 4.001180301205991E-004 + 4.73400000000000 3.990620257410239E-004 + 4.73500000000000 3.980086982948863E-004 + 4.73600000000000 3.969580411419276E-004 + 4.73700000000000 3.959100476580104E-004 + 4.73800000000000 3.948647112350795E-004 + 4.73900000000000 3.938220252811255E-004 + 4.74000000000000 3.927819832201448E-004 + 4.74100000000000 3.917445784921040E-004 + 4.74200000000000 3.907098045529000E-004 + 4.74300000000000 3.896776548743247E-004 + 4.74400000000000 3.886481229440262E-004 + 4.74500000000000 3.876212022654709E-004 + 4.74600000000000 3.865968863579071E-004 + 4.74700000000000 3.855751687563275E-004 + 4.74800000000000 3.845560430114315E-004 + 4.74900000000000 3.835395026895890E-004 + 4.75000000000000 3.825255413728022E-004 + 4.75100000000000 3.815141526586700E-004 + 4.75200000000000 3.805053301603504E-004 + 4.75300000000000 3.794990675065230E-004 + 4.75400000000000 3.784953583413542E-004 + 4.75500000000000 3.774941963244593E-004 + 4.75600000000000 3.764955751308655E-004 + 4.75700000000000 3.754994884509773E-004 + 4.75800000000000 3.745059299905379E-004 + 4.75900000000000 3.735148934705951E-004 + 4.76000000000000 3.725263726274634E-004 + 4.76100000000000 3.715403612126891E-004 + 4.76200000000000 3.705568529930130E-004 + 4.76300000000000 3.695758417503365E-004 + 4.76400000000000 3.685973212816832E-004 + 4.76500000000000 3.676212853991653E-004 + 4.76600000000000 3.666477279299462E-004 + 4.76700000000000 3.656766427162065E-004 + 4.76800000000000 3.647080236151077E-004 + 4.76900000000000 3.637418644987561E-004 + 4.77000000000000 3.627781592541682E-004 + 4.77100000000000 3.618169017832361E-004 + 4.77200000000000 3.608580860026903E-004 + 4.77300000000000 3.599017058440666E-004 + 4.77400000000000 3.589477552536697E-004 + 4.77500000000000 3.579962281925392E-004 + 4.77600000000000 3.570471186364139E-004 + 4.77700000000000 3.561004205756975E-004 + 4.77800000000000 3.551561280154239E-004 + 4.77900000000000 3.542142349752219E-004 + 4.78000000000000 3.532747354892816E-004 + 4.78100000000000 3.523376236063195E-004 + 4.78200000000000 3.514028933895432E-004 + 4.78300000000000 3.504705389166189E-004 + 4.78400000000000 3.495405542796357E-004 + 4.78500000000000 3.486129335850714E-004 + 4.78600000000000 3.476876709537597E-004 + 4.78700000000000 3.467647605208548E-004 + 4.78800000000000 3.458441964357981E-004 + 4.78900000000000 3.449259728622844E-004 + 4.79000000000000 3.440100839782278E-004 + 4.79100000000000 3.430965239757281E-004 + 4.79200000000000 3.421852870610376E-004 + 4.79300000000000 3.412763674545266E-004 + 4.79400000000000 3.403697593906507E-004 + 4.79500000000000 3.394654571179177E-004 + 4.79600000000000 3.385634548988527E-004 + 4.79700000000000 3.376637470099670E-004 + 4.79800000000000 3.367663277417230E-004 + 4.79900000000000 3.358711913985025E-004 + 4.80000000000000 3.349783322985730E-004 + 4.80100000000000 3.340877447740546E-004 + 4.80200000000000 3.331994231708876E-004 + 4.80300000000000 3.323133618487996E-004 + 4.80400000000000 3.314295551812725E-004 + 4.80500000000000 3.305479975555105E-004 + 4.80600000000000 3.296686833724062E-004 + 4.80700000000000 3.287916070465100E-004 + 4.80800000000000 3.279167630059962E-004 + 4.80900000000000 3.270441456926308E-004 + 4.81000000000000 3.261737495617401E-004 + 4.81100000000000 3.253055690821779E-004 + 4.81200000000000 3.244395987362928E-004 + 4.81300000000000 3.235758330198977E-004 + 4.81400000000000 3.227142664422360E-004 + 4.81500000000000 3.218548935259513E-004 + 4.81600000000000 3.209977088070547E-004 + 4.81700000000000 3.201427068348928E-004 + 4.81800000000000 3.192898821721170E-004 + 4.81900000000000 3.184392293946512E-004 + 4.82000000000000 3.175907430916599E-004 + 4.82100000000000 3.167444178655179E-004 + 4.82200000000000 3.159002483317776E-004 + 4.82300000000000 3.150582291191387E-004 + 4.82400000000000 3.142183548694163E-004 + 4.82500000000000 3.133806202375100E-004 + 4.82600000000000 3.125450198913731E-004 + 4.82700000000000 3.117115485119808E-004 + 4.82800000000000 3.108802007932998E-004 + 4.82900000000000 3.100509714422573E-004 + 4.83000000000000 3.092238551787101E-004 + 4.83100000000000 3.083988467354138E-004 + 4.83200000000000 3.075759408579926E-004 + 4.83300000000000 3.067551323049076E-004 + 4.83400000000000 3.059364158474277E-004 + 4.83500000000000 3.051197862695979E-004 + 4.83600000000000 3.043052383682095E-004 + 4.83700000000000 3.034927669527701E-004 + 4.83800000000000 3.026823668454719E-004 + 4.83900000000000 3.018740328811635E-004 + 4.84000000000000 3.010677599073186E-004 + 4.84100000000000 3.002635427840054E-004 + 4.84200000000000 2.994613763838584E-004 + 4.84300000000000 2.986612555920467E-004 + 4.84400000000000 2.978631753062452E-004 + 4.84500000000000 2.970671304366044E-004 + 4.84600000000000 2.962731159057208E-004 + 4.84700000000000 2.954811266486076E-004 + 4.84800000000000 2.946911576126644E-004 + 4.84900000000000 2.939032037576479E-004 + 4.85000000000000 2.931172600556436E-004 + 4.85100000000000 2.923333214910347E-004 + 4.85200000000000 2.915513830604736E-004 + 4.85300000000000 2.907714397728530E-004 + 4.85400000000000 2.899934866492763E-004 + 4.85500000000000 2.892175187230285E-004 + 4.85600000000000 2.884435310395476E-004 + 4.85700000000000 2.876715186563947E-004 + 4.85800000000000 2.869014766432263E-004 + 4.85900000000000 2.861334000817646E-004 + 4.86000000000000 2.853672840657690E-004 + 4.86100000000000 2.846031237010076E-004 + 4.86200000000000 2.838409141052282E-004 + 4.86300000000000 2.830806504081300E-004 + 4.86400000000000 2.823223277513351E-004 + 4.86500000000000 2.815659412883598E-004 + 4.86600000000000 2.808114861845868E-004 + 4.86700000000000 2.800589576172360E-004 + 4.86800000000000 2.793083507753372E-004 + 4.86900000000000 2.785596608597015E-004 + 4.87000000000000 2.778128830828927E-004 + 4.87100000000000 2.770680126692004E-004 + 4.87200000000000 2.763250448546112E-004 + 4.87300000000000 2.755839748867807E-004 + 4.87400000000000 2.748447980250063E-004 + 4.87500000000000 2.741075095401986E-004 + 4.87600000000000 2.733721047148545E-004 + 4.87700000000000 2.726385788430292E-004 + 4.87800000000000 2.719069272303082E-004 + 4.87900000000000 2.711771451937805E-004 + 4.88000000000000 2.704492280620108E-004 + 4.88100000000000 2.697231711750114E-004 + 4.88200000000000 2.689989698842166E-004 + 4.88300000000000 2.682766195524534E-004 + 4.88400000000000 2.675561155539159E-004 + 4.88500000000000 2.668374532741372E-004 + 4.88600000000000 2.661206281099625E-004 + 4.88700000000000 2.654056354695228E-004 + 4.88800000000000 2.646924707722068E-004 + 4.88900000000000 2.639811294486345E-004 + 4.89000000000000 2.632716069406306E-004 + 4.89100000000000 2.625638987011974E-004 + 4.89200000000000 2.618580001944884E-004 + 4.89300000000000 2.611539068957814E-004 + 4.89400000000000 2.604516142914517E-004 + 4.89500000000000 2.597511178789463E-004 + 4.89600000000000 2.590524131667567E-004 + 4.89700000000000 2.583554956743926E-004 + 4.89800000000000 2.576603609323563E-004 + 4.89900000000000 2.569670044821151E-004 + 4.90000000000000 2.562754218760765E-004 + 4.90100000000000 2.555856086775612E-004 + 4.90200000000000 2.548975604607767E-004 + 4.90300000000000 2.542112728107921E-004 + 4.90400000000000 2.535267413235120E-004 + 4.90500000000000 2.528439616056498E-004 + 4.90600000000000 2.521629292747027E-004 + 4.90700000000000 2.514836399589254E-004 + 4.90800000000000 2.508060892973046E-004 + 4.90900000000000 2.501302729395335E-004 + 4.91000000000000 2.494561865459852E-004 + 4.91100000000000 2.487838257876885E-004 + 4.91200000000000 2.481131863463019E-004 + 4.91300000000000 2.474442639140873E-004 + 4.91400000000000 2.467770541938861E-004 + 4.91500000000000 2.461115528990924E-004 + 4.91600000000000 2.454477557536289E-004 + 4.91700000000000 2.447856584919214E-004 + 4.91800000000000 2.441252568588728E-004 + 4.91900000000000 2.434665466098394E-004 + 4.92000000000000 2.428095235106047E-004 + 4.92100000000000 2.421541833373552E-004 + 4.92200000000000 2.415005218766551E-004 + 4.92300000000000 2.408485349254212E-004 + 4.92400000000000 2.401982182908988E-004 + 4.92500000000000 2.395495677906365E-004 + 4.92600000000000 2.389025792524613E-004 + 4.92700000000000 2.382572485144546E-004 + 4.92800000000000 2.376135714249273E-004 + 4.92900000000000 2.369715438423948E-004 + 4.93000000000000 2.363311616355537E-004 + 4.93100000000000 2.356924206832559E-004 + 4.93200000000000 2.350553168744859E-004 + 4.93300000000000 2.344198461083351E-004 + 4.93400000000000 2.337860042939782E-004 + 4.93500000000000 2.331537873506494E-004 + 4.93600000000000 2.325231912076174E-004 + 4.93700000000000 2.318942118041619E-004 + 4.93800000000000 2.312668450895496E-004 + 4.93900000000000 2.306410870230101E-004 + 4.94000000000000 2.300169335737119E-004 + 4.94100000000000 2.293943807207390E-004 + 4.94200000000000 2.287734244530664E-004 + 4.94300000000000 2.281540607695371E-004 + 4.94400000000000 2.275362856788381E-004 + 4.94500000000000 2.269200951994767E-004 + 4.94600000000000 2.263054853597569E-004 + 4.94700000000000 2.256924521977563E-004 + 4.94800000000000 2.250809917613022E-004 + 4.94900000000000 2.244711001079486E-004 + 4.95000000000000 2.238627733049523E-004 + 4.95100000000000 2.232560074292499E-004 + 4.95200000000000 2.226507985674352E-004 + 4.95300000000000 2.220471428157345E-004 + 4.95400000000000 2.214450362799854E-004 + 4.95500000000000 2.208444750756116E-004 + 4.95600000000000 2.202454553276020E-004 + 4.95700000000000 2.196479731704864E-004 + 4.95800000000000 2.190520247483125E-004 + 4.95900000000000 2.184576062146239E-004 + 4.96000000000000 2.178647137324369E-004 + 4.96100000000000 2.172733434742172E-004 + 4.96200000000000 2.166834916218584E-004 + 4.96300000000000 2.160951543666578E-004 + 4.96400000000000 2.155083279092954E-004 + 4.96500000000000 2.149230084598103E-004 + 4.96600000000000 2.143391922375783E-004 + 4.96700000000000 2.137568754712901E-004 + 4.96800000000000 2.131760543989283E-004 + 4.96900000000000 2.125967252677451E-004 + 4.97000000000000 2.120188843342407E-004 + 4.97100000000000 2.114425278641397E-004 + 4.97200000000000 2.108676521323705E-004 + 4.97300000000000 2.102942534230424E-004 + 4.97400000000000 2.097223280294231E-004 + 4.97500000000000 2.091518722539175E-004 + 4.97600000000000 2.085828824080455E-004 + 4.97700000000000 2.080153548124195E-004 + 4.97800000000000 2.074492857967236E-004 + 4.97900000000000 2.068846716996905E-004 + 4.98000000000000 2.063215088690812E-004 + 4.98100000000000 2.057597936616618E-004 + 4.98200000000000 2.051995224431828E-004 + 4.98300000000000 2.046406915883574E-004 + 4.98400000000000 2.040832974808394E-004 + 4.98500000000000 2.035273365132024E-004 + 4.98600000000000 2.029728050869176E-004 + 4.98700000000000 2.024196996123332E-004 + 4.98800000000000 2.018680165086522E-004 + 4.98900000000000 2.013177522039117E-004 + 4.99000000000000 2.007689031349615E-004 + 4.99100000000000 2.002214657474425E-004 + 4.99200000000000 1.996754364957662E-004 + 4.99300000000000 1.991308118430930E-004 + 4.99400000000000 1.985875882613117E-004 + 4.99500000000000 1.980457622310175E-004 + 4.99600000000000 1.975053302414924E-004 + 4.99700000000000 1.969662887906833E-004 + 4.99800000000000 1.964286343851813E-004 + 4.99900000000000 1.958923635402010E-004 + 5.00000000000000 1.953574727795598E-004 + 5.00100000000000 1.948239586356571E-004 + 5.00200000000000 1.942918176494537E-004 + 5.00300000000000 1.937610463704507E-004 + 5.00400000000000 1.932316413566697E-004 + 5.00500000000000 1.927035991746319E-004 + 5.00600000000000 1.921769163993373E-004 + 5.00700000000000 1.916515896142448E-004 + 5.00800000000000 1.911276154112516E-004 + 5.00900000000000 1.906049903906726E-004 + 5.01000000000000 1.900837111612207E-004 + 5.01100000000000 1.895637743399858E-004 + 5.01200000000000 1.890451765524154E-004 + 5.01300000000000 1.885279144322940E-004 + 5.01400000000000 1.880119846217229E-004 + 5.01500000000000 1.874973837711004E-004 + 5.01600000000000 1.869841085391018E-004 + 5.01700000000000 1.864721555926593E-004 + 5.01800000000000 1.859615216069420E-004 + 5.01900000000000 1.854522032653364E-004 + 5.02000000000000 1.849441972594261E-004 + 5.02100000000000 1.844375002889727E-004 + 5.02200000000000 1.839321090618950E-004 + 5.02300000000000 1.834280202942506E-004 + 5.02400000000000 1.829252307102154E-004 + 5.02500000000000 1.824237370420641E-004 + 5.02600000000000 1.819235360301510E-004 + 5.02700000000000 1.814246244228903E-004 + 5.02800000000000 1.809269989767364E-004 + 5.02900000000000 1.804306564561653E-004 + 5.03000000000000 1.799355936336542E-004 + 5.03100000000000 1.794418072896628E-004 + 5.03200000000000 1.789492942126140E-004 + 5.03300000000000 1.784580511988746E-004 + 5.03400000000000 1.779680750527361E-004 + 5.03500000000000 1.774793625863954E-004 + 5.03600000000000 1.769919106199360E-004 + 5.03700000000000 1.765057159813091E-004 + 5.03800000000000 1.760207755063138E-004 + 5.03900000000000 1.755370860385792E-004 + 5.04000000000000 1.750546444295448E-004 + 5.04100000000000 1.745734475384418E-004 + 5.04200000000000 1.740934922322743E-004 + 5.04300000000000 1.736147753858005E-004 + 5.04400000000000 1.731372938815139E-004 + 5.04500000000000 1.726610446096249E-004 + 5.04600000000000 1.721860244680418E-004 + 5.04700000000000 1.717122303623525E-004 + 5.04800000000000 1.712396592058056E-004 + 5.04900000000000 1.707683079192922E-004 + 5.05000000000000 1.702981734313273E-004 + 5.05100000000000 1.698292526780312E-004 + 5.05200000000000 1.693615426031117E-004 + 5.05300000000000 1.688950401578450E-004 + 5.05400000000000 1.684297423010580E-004 + 5.05500000000000 1.679656459991095E-004 + 5.05600000000000 1.675027482258725E-004 + 5.05700000000000 1.670410459627160E-004 + 5.05800000000000 1.665805361984865E-004 + 5.05900000000000 1.661212159294898E-004 + 5.06000000000000 1.656630821594740E-004 + 5.06100000000000 1.652061318996102E-004 + 5.06200000000000 1.647503621684752E-004 + 5.06300000000000 1.642957699920341E-004 + 5.06400000000000 1.638423524036209E-004 + 5.06500000000000 1.633901064439222E-004 + 5.06600000000000 1.629390291609590E-004 + 5.06700000000000 1.624891176100680E-004 + 5.06800000000000 1.620403688538855E-004 + 5.06900000000000 1.615927799623287E-004 + 5.07000000000000 1.611463480125777E-004 + 5.07100000000000 1.607010700890595E-004 + 5.07200000000000 1.602569432834287E-004 + 5.07300000000000 1.598139646945511E-004 + 5.07400000000000 1.593721314284860E-004 + 5.07500000000000 1.589314405984684E-004 + 5.07600000000000 1.584918893248923E-004 + 5.07700000000000 1.580534747352928E-004 + 5.07800000000000 1.576161939643291E-004 + 5.07900000000000 1.571800441537672E-004 + 5.08000000000000 1.567450224524624E-004 + 5.08100000000000 1.563111260163428E-004 + 5.08200000000000 1.558783520083916E-004 + 5.08300000000000 1.554466975986299E-004 + 5.08400000000000 1.550161599641004E-004 + 5.08500000000000 1.545867362888497E-004 + 5.08600000000000 1.541584237639114E-004 + 5.08700000000000 1.537312195872895E-004 + 5.08800000000000 1.533051209639414E-004 + 5.08900000000000 1.528801251057608E-004 + 5.09000000000000 1.524562292315613E-004 + 5.09100000000000 1.520334305670593E-004 + 5.09200000000000 1.516117263448575E-004 + 5.09300000000000 1.511911138044278E-004 + 5.09400000000000 1.507715901920953E-004 + 5.09500000000000 1.503531527610212E-004 + 5.09600000000000 1.499357987711862E-004 + 5.09700000000000 1.495195254893745E-004 + 5.09800000000000 1.491043301891567E-004 + 5.09900000000000 1.486902101508735E-004 + 5.10000000000000 1.482771626616197E-004 + 5.10100000000000 1.478651850152273E-004 + 5.10200000000000 1.474542745122492E-004 + 5.10300000000000 1.470444284599436E-004 + 5.10400000000000 1.466356441722564E-004 + 5.10500000000000 1.462279189698066E-004 + 5.10600000000000 1.458212501798688E-004 + 5.10700000000000 1.454156351363576E-004 + 5.10800000000000 1.450110711798117E-004 + 5.10900000000000 1.446075556573773E-004 + 5.11000000000000 1.442050859227925E-004 + 5.11100000000000 1.438036593363710E-004 + 5.11200000000000 1.434032732649864E-004 + 5.11300000000000 1.430039250820564E-004 + 5.11400000000000 1.426056121675262E-004 + 5.11500000000000 1.422083319078537E-004 + 5.11600000000000 1.418120816959927E-004 + 5.11700000000000 1.414168589313778E-004 + 5.11800000000000 1.410226610199084E-004 + 5.11900000000000 1.406294853739332E-004 + 5.12000000000000 1.402373294122342E-004 + 5.12100000000000 1.398461905600114E-004 + 5.12200000000000 1.394560662488671E-004 + 5.12300000000000 1.390669539167902E-004 + 5.12400000000000 1.386788510081412E-004 + 5.12500000000000 1.382917549736360E-004 + 5.12600000000000 1.379056632703310E-004 + 5.12700000000000 1.375205733616077E-004 + 5.12800000000000 1.371364827171570E-004 + 5.12900000000000 1.367533888129640E-004 + 5.13000000000000 1.363712891312930E-004 + 5.13100000000000 1.359901811606718E-004 + 5.13200000000000 1.356100623958769E-004 + 5.13300000000000 1.352309303379177E-004 + 5.13400000000000 1.348527824940224E-004 + 5.13500000000000 1.344756163776218E-004 + 5.13600000000000 1.340994295083348E-004 + 5.13700000000000 1.337242194119534E-004 + 5.13800000000000 1.333499836204273E-004 + 5.13900000000000 1.329767196718494E-004 + 5.14000000000000 1.326044251104406E-004 + 5.14100000000000 1.322330974865349E-004 + 5.14200000000000 1.318627343565646E-004 + 5.14300000000000 1.314933332830456E-004 + 5.14400000000000 1.311248918345624E-004 + 5.14500000000000 1.307574075857533E-004 + 5.14600000000000 1.303908781172961E-004 + 5.14700000000000 1.300253010158928E-004 + 5.14800000000000 1.296606738742557E-004 + 5.14900000000000 1.292969942910918E-004 + 5.15000000000000 1.289342598710892E-004 + 5.15100000000000 1.285724682249022E-004 + 5.15200000000000 1.282116169691364E-004 + 5.15300000000000 1.278517037263346E-004 + 5.15400000000000 1.274927261249626E-004 + 5.15500000000000 1.271346817993941E-004 + 5.15600000000000 1.267775683898971E-004 + 5.15700000000000 1.264213835426189E-004 + 5.15800000000000 1.260661249095722E-004 + 5.15900000000000 1.257117901486207E-004 + 5.16000000000000 1.253583769234649E-004 + 5.16100000000000 1.250058829036277E-004 + 5.16200000000000 1.246543057644407E-004 + 5.16300000000000 1.243036431870294E-004 + 5.16400000000000 1.239538928582997E-004 + 5.16500000000000 1.236050524709235E-004 + 5.16600000000000 1.232571197233247E-004 + 5.16700000000000 1.229100923196654E-004 + 5.16800000000000 1.225639679698317E-004 + 5.16900000000000 1.222187443894196E-004 + 5.17000000000000 1.218744192997218E-004 + 5.17100000000000 1.215309904277130E-004 + 5.17200000000000 1.211884555060366E-004 + 5.17300000000000 1.208468122729906E-004 + 5.17400000000000 1.205060584725141E-004 + 5.17500000000000 1.201661918541733E-004 + 5.17600000000000 1.198272101731480E-004 + 5.17700000000000 1.194891111902176E-004 + 5.17800000000000 1.191518926717482E-004 + 5.17900000000000 1.188155523896779E-004 + 5.18000000000000 1.184800881215042E-004 + 5.18100000000000 1.181454976502699E-004 + 5.18200000000000 1.178117787645497E-004 + 5.18300000000000 1.174789292584370E-004 + 5.18400000000000 1.171469469315301E-004 + 5.18500000000000 1.168158295889189E-004 + 5.18600000000000 1.164855750411715E-004 + 5.18700000000000 1.161561811043209E-004 + 5.18800000000000 1.158276455998518E-004 + 5.18900000000000 1.154999663546869E-004 + 5.19000000000000 1.151731412011741E-004 + 5.19100000000000 1.148471679770731E-004 + 5.19200000000000 1.145220445255421E-004 + 5.19300000000000 1.141977686951248E-004 + 5.19400000000000 1.138743383397372E-004 + 5.19500000000000 1.135517513186545E-004 + 5.19600000000000 1.132300054964979E-004 + 5.19700000000000 1.129090987432220E-004 + 5.19800000000000 1.125890289341012E-004 + 5.19900000000000 1.122697939497172E-004 + 5.20000000000000 1.119513916759457E-004 + 5.20100000000000 1.116338200039439E-004 + 5.20200000000000 1.113170768301372E-004 + 5.20300000000000 1.110011600562066E-004 + 5.20400000000000 1.106860675890758E-004 + 5.20500000000000 1.103717973408984E-004 + 5.20600000000000 1.100583472290452E-004 + 5.20700000000000 1.097457151760913E-004 + 5.20800000000000 1.094338991098037E-004 + 5.20900000000000 1.091228969631283E-004 + 5.21000000000000 1.088127066741776E-004 + 5.21100000000000 1.085033261862177E-004 + 5.21200000000000 1.081947534476563E-004 + 5.21300000000000 1.078869864120292E-004 + 5.21400000000000 1.075800230379890E-004 + 5.21500000000000 1.072738612892915E-004 + 5.21600000000000 1.069684991347840E-004 + 5.21700000000000 1.066639345483925E-004 + 5.21800000000000 1.063601655091094E-004 + 5.21900000000000 1.060571900009811E-004 + 5.22000000000000 1.057550060130958E-004 + 5.22100000000000 1.054536115395708E-004 + 5.22200000000000 1.051530045795408E-004 + 5.22300000000000 1.048531831371451E-004 + 5.22400000000000 1.045541452215159E-004 + 5.22500000000000 1.042558888467656E-004 + 5.22600000000000 1.039584120319748E-004 + 5.22700000000000 1.036617128011805E-004 + 5.22800000000000 1.033657891833635E-004 + 5.22900000000000 1.030706392124365E-004 + 5.23000000000000 1.027762609272323E-004 + 5.23100000000000 1.024826523714915E-004 + 5.23200000000000 1.021898115938504E-004 + 5.23300000000000 1.018977366478295E-004 + 5.23400000000000 1.016064255918211E-004 + 5.23500000000000 1.013158764890776E-004 + 5.23600000000000 1.010260874076998E-004 + 5.23700000000000 1.007370564206246E-004 + 5.23800000000000 1.004487816056134E-004 + 5.23900000000000 1.001612610452407E-004 + 5.24000000000000 9.987449282688154E-005 + 5.24100000000000 9.958847504270063E-005 + 5.24200000000000 9.930320578963993E-005 + 5.24300000000000 9.901868316940730E-005 + 5.24400000000000 9.873490528846491E-005 + 5.24500000000000 9.845187025801742E-005 + 5.24600000000000 9.816957619400051E-005 + 5.24700000000000 9.788802121706936E-005 + 5.24800000000000 9.760720345258688E-005 + 5.24900000000000 9.732712103061252E-005 + 5.25000000000000 9.704777208589040E-005 + 5.25100000000000 9.676915475783823E-005 + 5.25200000000000 9.649126719053571E-005 + 5.25300000000000 9.621410753271308E-005 + 5.25400000000000 9.593767393773980E-005 + 5.25500000000000 9.566196456361326E-005 + 5.25600000000000 9.538697757294727E-005 + 5.25700000000000 9.511271113296106E-005 + 5.25800000000000 9.483916341546773E-005 + 5.25900000000000 9.456633259686314E-005 + 5.26000000000000 9.429421685811479E-005 + 5.26100000000000 9.402281438475035E-005 + 5.26200000000000 9.375212336684684E-005 + 5.26300000000000 9.348214199901930E-005 + 5.26400000000000 9.321286848040967E-005 + 5.26500000000000 9.294430101467581E-005 + 5.26600000000000 9.267643780998036E-005 + 5.26700000000000 9.240927707897980E-005 + 5.26800000000000 9.214281703881341E-005 + 5.26900000000000 9.187705591109220E-005 + 5.27000000000000 9.161199192188817E-005 + 5.27100000000000 9.134762330172324E-005 + 5.27200000000000 9.108394828555834E-005 + 5.27300000000000 9.082096511278272E-005 + 5.27400000000000 9.055867202720274E-005 + 5.27500000000000 9.029706727703150E-005 + 5.27600000000000 9.003614911487784E-005 + 5.27700000000000 8.977591579773543E-005 + 5.27800000000000 8.951636558697233E-005 + 5.27900000000000 8.925749674832005E-005 + 5.28000000000000 8.899930755186292E-005 + 5.28100000000000 8.874179627202750E-005 + 5.28200000000000 8.848496118757189E-005 + 5.28300000000000 8.822880058157507E-005 + 5.28400000000000 8.797331274142644E-005 + 5.28500000000000 8.771849595881512E-005 + 5.28600000000000 8.746434852971948E-005 + 5.28700000000000 8.721086875439675E-005 + 5.28800000000000 8.695805493737225E-005 + 5.28900000000000 8.670590538742924E-005 + 5.29000000000000 8.645441841759827E-005 + 5.29100000000000 8.620359234514686E-005 + 5.29200000000000 8.595342549156921E-005 + 5.29300000000000 8.570391618257551E-005 + 5.29400000000000 8.545506274808211E-005 + 5.29500000000000 8.520686352220076E-005 + 5.29600000000000 8.495931684322850E-005 + 5.29700000000000 8.471242105363752E-005 + 5.29800000000000 8.446617450006471E-005 + 5.29900000000000 8.422057553330158E-005 + 5.30000000000000 8.397562250828408E-005 + 5.30100000000000 8.373131378408234E-005 + 5.30200000000000 8.348764772389060E-005 + 5.30300000000000 8.324462269501723E-005 + 5.30400000000000 8.300223706887429E-005 + 5.30500000000000 8.276048922096791E-005 + 5.30600000000000 8.251937753088782E-005 + 5.30700000000000 8.227890038229769E-005 + 5.30800000000000 8.203905616292496E-005 + 5.30900000000000 8.179984326455082E-005 + 5.31000000000000 8.156126008300042E-005 + 5.31100000000000 8.132330501813296E-005 + 5.31200000000000 8.108597647383152E-005 + 5.31300000000000 8.084927285799356E-005 + 5.31400000000000 8.061319258252077E-005 + 5.31500000000000 8.037773406330948E-005 + 5.31600000000000 8.014289572024073E-005 + 5.31700000000000 7.990867597717042E-005 + 5.31800000000000 7.967507326191979E-005 + 5.31900000000000 7.944208600626549E-005 + 5.32000000000000 7.920971264592990E-005 + 5.32100000000000 7.897795162057162E-005 + 5.32200000000000 7.874680137377548E-005 + 5.32300000000000 7.851626035304326E-005 + 5.32400000000000 7.828632700978386E-005 + 5.32500000000000 7.805699979930376E-005 + 5.32600000000000 7.782827718079747E-005 + 5.32700000000000 7.760015761733799E-005 + 5.32800000000000 7.737263957586723E-005 + 5.32900000000000 7.714572152718667E-005 + 5.33000000000000 7.691940194594761E-005 + 5.33100000000000 7.669367931064200E-005 + 5.33200000000000 7.646855210359289E-005 + 5.33300000000000 7.624401881094497E-005 + 5.33400000000000 7.602007792265529E-005 + 5.33500000000000 7.579672793248384E-005 + 5.33600000000000 7.557396733798419E-005 + 5.33700000000000 7.535179464049425E-005 + 5.33800000000000 7.513020834512692E-005 + 5.33900000000000 7.490920696076085E-005 + 5.34000000000000 7.468878900003114E-005 + 5.34100000000000 7.446895297932015E-005 + 5.34200000000000 7.424969741874836E-005 + 5.34300000000000 7.403102084216505E-005 + 5.34400000000000 7.381292177713920E-005 + 5.34500000000000 7.359539875495043E-005 + 5.34600000000000 7.337845031057980E-005 + 5.34700000000000 7.316207498270067E-005 + 5.34800000000000 7.294627131366982E-005 + 5.34900000000000 7.273103784951811E-005 + 5.35000000000000 7.251637313994176E-005 + 5.35100000000000 7.230227573829315E-005 + 5.35200000000000 7.208874420157181E-005 + 5.35300000000000 7.187577709041568E-005 + 5.35400000000000 7.166337296909191E-005 + 5.35500000000000 7.145153040548808E-005 + 5.35600000000000 7.124024797110333E-005 + 5.35700000000000 7.102952424103929E-005 + 5.35800000000000 7.081935779399148E-005 + 5.35900000000000 7.060974721224038E-005 + 5.36000000000000 7.040069108164246E-005 + 5.36100000000000 7.019218799162168E-005 + 5.36200000000000 6.998423653516045E-005 + 5.36300000000000 6.977683530879108E-005 + 5.36400000000000 6.956998291258697E-005 + 5.36500000000000 6.936367795015377E-005 + 5.36600000000000 6.915791902862100E-005 + 5.36700000000000 6.895270475863317E-005 + 5.36800000000000 6.874803375434109E-005 + 5.36900000000000 6.854390463339347E-005 + 5.37000000000000 6.834031601692808E-005 + 5.37100000000000 6.813726652956335E-005 + 5.37200000000000 6.793475479938974E-005 + 5.37300000000000 6.773277945796111E-005 + 5.37400000000000 6.753133914028636E-005 + 5.37500000000000 6.733043248482091E-005 + 5.37600000000000 6.713005813345808E-005 + 5.37700000000000 6.693021473152077E-005 + 5.37800000000000 6.673090092775295E-005 + 5.37900000000000 6.653211537431135E-005 + 5.38000000000000 6.633385672675692E-005 + 5.38100000000000 6.613612364404653E-005 + 5.38200000000000 6.593891478852467E-005 + 5.38300000000000 6.574222882591500E-005 + 5.38400000000000 6.554606442531208E-005 + 5.38500000000000 6.535042025917313E-005 + 5.38600000000000 6.515529500330970E-005 + 5.38700000000000 6.496068733687940E-005 + 5.38800000000000 6.476659594237777E-005 + 5.38900000000000 6.457301950562987E-005 + 5.39000000000000 6.437995671578230E-005 + 5.39100000000000 6.418740626529484E-005 + 5.39200000000000 6.399536684993251E-005 + 5.39300000000000 6.380383716875725E-005 + 5.39400000000000 6.361281592411979E-005 + 5.39500000000000 6.342230182165171E-005 + 5.39600000000000 6.323229357025736E-005 + 5.39700000000000 6.304278988210551E-005 + 5.39800000000000 6.285378947262173E-005 + 5.39900000000000 6.266529106048008E-005 + 5.40000000000000 6.247729336759524E-005 + 5.40100000000000 6.228979511911446E-005 + 5.40200000000000 6.210279504340966E-005 + 5.40300000000000 6.191629187206944E-005 + 5.40400000000000 6.173028433989124E-005 + 5.40500000000000 6.154477118487334E-005 + 5.40600000000000 6.135975114820706E-005 + 5.40700000000000 6.117522297426881E-005 + 5.40800000000000 6.099118541061231E-005 + 5.40900000000000 6.080763720796081E-005 + 5.41000000000000 6.062457712019910E-005 + 5.41100000000000 6.044200390436596E-005 + 5.41200000000000 6.025991632064627E-005 + 5.41300000000000 6.007831313236320E-005 + 5.41400000000000 5.989719310597058E-005 + 5.41500000000000 5.971655501104517E-005 + 5.41600000000000 5.953639762027896E-005 + 5.41700000000000 5.935671970947150E-005 + 5.41800000000000 5.917752005752216E-005 + 5.41900000000000 5.899879744642266E-005 + 5.42000000000000 5.882055066124930E-005 + 5.42100000000000 5.864277849015542E-005 + 5.42200000000000 5.846547972436389E-005 + 5.42300000000000 5.828865315815934E-005 + 5.42400000000000 5.811229758888085E-005 + 5.42500000000000 5.793641181691433E-005 + 5.42600000000000 5.776099464568492E-005 + 5.42700000000000 5.758604488164966E-005 + 5.42800000000000 5.741156133428994E-005 + 5.42900000000000 5.723754281610396E-005 + 5.43000000000000 5.706398814259950E-005 + 5.43100000000000 5.689089613228632E-005 + 5.43200000000000 5.671826560666882E-005 + 5.43300000000000 5.654609539023873E-005 + 5.43400000000000 5.637438431046759E-005 + 5.43500000000000 5.620313119779956E-005 + 5.43600000000000 5.603233488564402E-005 + 5.43700000000000 5.586199421036825E-005 + 5.43800000000000 5.569210801129015E-005 + 5.43900000000000 5.552267513067104E-005 + 5.44000000000000 5.535369441370824E-005 + 5.44100000000000 5.518516470852799E-005 + 5.44200000000000 5.501708486617814E-005 + 5.44300000000000 5.484945374062099E-005 + 5.44400000000000 5.468227018872610E-005 + 5.44500000000000 5.451553307026304E-005 + 5.44600000000000 5.434924124789440E-005 + 5.44700000000000 5.418339358716846E-005 + 5.44800000000000 5.401798895651224E-005 + 5.44900000000000 5.385302622722437E-005 + 5.45000000000000 5.368850427346788E-005 + 5.45100000000000 5.352442197226328E-005 + 5.45200000000000 5.336077820348150E-005 + 5.45300000000000 5.319757184983676E-005 + 5.45400000000000 5.303480179687968E-005 + 5.45500000000000 5.287246693299013E-005 + 5.45600000000000 5.271056614937043E-005 + 5.45700000000000 5.254909834003830E-005 + 5.45800000000000 5.238806240181982E-005 + 5.45900000000000 5.222745723434274E-005 + 5.46000000000000 5.206728174002935E-005 + 5.46100000000000 5.190753482408967E-005 + 5.46200000000000 5.174821539451458E-005 + 5.46300000000000 5.158932236206891E-005 + 5.46400000000000 5.143085464028468E-005 + 5.46500000000000 5.127281114545421E-005 + 5.46600000000000 5.111519079662329E-005 + 5.46700000000000 5.095799251558445E-005 + 5.46800000000000 5.080121522687016E-005 + 5.46900000000000 5.064485785774607E-005 + 5.47000000000000 5.048891933820421E-005 + 5.47100000000000 5.033339860095633E-005 + 5.47200000000000 5.017829458142721E-005 + 5.47300000000000 5.002360621774787E-005 + 5.47400000000000 4.986933245074891E-005 + 5.47500000000000 4.971547222395397E-005 + 5.47600000000000 4.956202448357295E-005 + 5.47700000000000 4.940898817849543E-005 + 5.47800000000000 4.925636226028407E-005 + 5.47900000000000 4.910414568316792E-005 + 5.48000000000000 4.895233740403597E-005 + 5.48100000000000 4.880093638243054E-005 + 5.48200000000000 4.864994158054067E-005 + 5.48300000000000 4.849935196319565E-005 + 5.48400000000000 4.834916649785852E-005 + 5.48500000000000 4.819938415461943E-005 + 5.48600000000000 4.805000390618941E-005 + 5.48700000000000 4.790102472789361E-005 + 5.48800000000000 4.775244559766503E-005 + 5.48900000000000 4.760426549603808E-005 + 5.49000000000000 4.745648340614202E-005 + 5.49100000000000 4.730909831369475E-005 + 5.49200000000000 4.716210920699627E-005 + 5.49300000000000 4.701551507692229E-005 + 5.49400000000000 4.686931491691801E-005 + 5.49500000000000 4.672350772299163E-005 + 5.49600000000000 4.657809249370813E-005 + 5.49700000000000 4.643306823018292E-005 + 5.49800000000000 4.628843393607550E-005 + 5.49900000000000 4.614418861758321E-005 + 5.50000000000000 4.600033128343499E-005 + 5.50100000000000 4.585686094488503E-005 + 5.50200000000000 4.571377661570676E-005 + 5.50300000000000 4.557107731218626E-005 + 5.50400000000000 4.542876205311643E-005 + 5.50500000000000 4.528682985979061E-005 + 5.50600000000000 4.514527975599635E-005 + 5.50700000000000 4.500411076800942E-005 + 5.50800000000000 4.486332192458754E-005 + 5.50900000000000 4.472291225696423E-005 + 5.51000000000000 4.458288079884287E-005 + 5.51100000000000 4.444322658639035E-005 + 5.51200000000000 4.430394865823117E-005 + 5.51300000000000 4.416504605544134E-005 + 5.51400000000000 4.402651782154222E-005 + 5.51500000000000 4.388836300249461E-005 + 5.51600000000000 4.375058064669265E-005 + 5.51700000000000 4.361316980495780E-005 + 5.51800000000000 4.347612953053295E-005 + 5.51900000000000 4.333945887907624E-005 + 5.52000000000000 4.320315690865532E-005 + 5.52100000000000 4.306722267974121E-005 + 5.52200000000000 4.293165525520246E-005 + 5.52300000000000 4.279645370029921E-005 + 5.52400000000000 4.266161708267728E-005 + 5.52500000000000 4.252714447236225E-005 + 5.52600000000000 4.239303494175365E-005 + 5.52700000000000 4.225928756561896E-005 + 5.52800000000000 4.212590142108793E-005 + 5.52900000000000 4.199287558764660E-005 + 5.53000000000000 4.186020914713155E-005 + 5.53100000000000 4.172790118372411E-005 + 5.53200000000000 4.159595078394447E-005 + 5.53300000000000 4.146435703664597E-005 + 5.53400000000000 4.133311903300939E-005 + 5.53500000000000 4.120223586653705E-005 + 5.53600000000000 4.107170663304720E-005 + 5.53700000000000 4.094153043066828E-005 + 5.53800000000000 4.081170635983312E-005 + 5.53900000000000 4.068223352327334E-005 + 5.54000000000000 4.055311102601363E-005 + 5.54100000000000 4.042433797536609E-005 + 5.54200000000000 4.029591348092459E-005 + 5.54300000000000 4.016783665455907E-005 + 5.54400000000000 4.004010661041002E-005 + 5.54500000000000 3.991272246488279E-005 + 5.54600000000000 3.978568333664197E-005 + 5.54700000000000 3.965898834660591E-005 + 5.54800000000000 3.953263661794099E-005 + 5.54900000000000 3.940662727605628E-005 + 5.55000000000000 3.928095944859778E-005 + 5.55100000000000 3.915563226544303E-005 + 5.55200000000000 3.903064485869551E-005 + 5.55300000000000 3.890599636267922E-005 + 5.55400000000000 3.878168591393310E-005 + 5.55500000000000 3.865771265120565E-005 + 5.55600000000000 3.853407571544937E-005 + 5.55700000000000 3.841077424981540E-005 + 5.55800000000000 3.828780739964803E-005 + 5.55900000000000 3.816517431247927E-005 + 5.56000000000000 3.804287413802349E-005 + 5.56100000000000 3.792090602817203E-005 + 5.56200000000000 3.779926913698771E-005 + 5.56300000000000 3.767796262069960E-005 + 5.56400000000000 3.755698563769756E-005 + 5.56500000000000 3.743633734852700E-005 + 5.56600000000000 3.731601691588341E-005 + 5.56700000000000 3.719602350460719E-005 + 5.56800000000000 3.707635628167825E-005 + 5.56900000000000 3.695701441621078E-005 + 5.57000000000000 3.683799707944791E-005 + 5.57100000000000 3.671930344475651E-005 + 5.57200000000000 3.660093268762185E-005 + 5.57300000000000 3.648288398564251E-005 + 5.57400000000000 3.636515651852503E-005 + 5.57500000000000 3.624774946807871E-005 + 5.57600000000000 3.613066201821043E-005 + 5.57700000000000 3.601389335491955E-005 + 5.57800000000000 3.589744266629254E-005 + 5.57900000000000 3.578130914249803E-005 + 5.58000000000000 3.566549197578150E-005 + 5.58100000000000 3.554999036046025E-005 + 5.58200000000000 3.543480349291820E-005 + 5.58300000000000 3.531993057160084E-005 + 5.58400000000000 3.520537079701010E-005 + 5.58500000000000 3.509112337169930E-005 + 5.58600000000000 3.497718750026800E-005 + 5.58700000000000 3.486356238935704E-005 + 5.58800000000000 3.475024724764340E-005 + 5.58900000000000 3.463724128583520E-005 + 5.59000000000000 3.452454371666677E-005 + 5.59100000000000 3.441215375489343E-005 + 5.59200000000000 3.430007061728670E-005 + 5.59300000000000 3.418829352262923E-005 + 5.59400000000000 3.407682169170975E-005 + 5.59500000000000 3.396565434731829E-005 + 5.59600000000000 3.385479071424104E-005 + 5.59700000000000 3.374423001925552E-005 + 5.59800000000000 3.363397149112571E-005 + 5.59900000000000 3.352401436059693E-005 + 5.60000000000000 3.341435786039116E-005 + 5.60100000000000 3.330500122520208E-005 + 5.60200000000000 3.319594369169009E-005 + 5.60300000000000 3.308718449847764E-005 + 5.60400000000000 3.297872288614419E-005 + 5.60500000000000 3.287055809722147E-005 + 5.60600000000000 3.276268937618867E-005 + 5.60700000000000 3.265511596946756E-005 + 5.60800000000000 3.254783712541770E-005 + 5.60900000000000 3.244085209433168E-005 + 5.61000000000000 3.233416012843033E-005 + 5.61100000000000 3.222776048185792E-005 + 5.61200000000000 3.212165241067742E-005 + 5.61300000000000 3.201583517286579E-005 + 5.61400000000000 3.191030802830923E-005 + 5.61500000000000 3.180507023879836E-005 + 5.61600000000000 3.170012106802368E-005 + 5.61700000000000 3.159545978157077E-005 + 5.61800000000000 3.149108564691557E-005 + 5.61900000000000 3.138699793341983E-005 + 5.62000000000000 3.128319591232629E-005 + 5.62100000000000 3.117967885675417E-005 + 5.62200000000000 3.107644604169446E-005 + 5.62300000000000 3.097349674400526E-005 + 5.62400000000000 3.087083024240724E-005 + 5.62500000000000 3.076844581747900E-005 + 5.62600000000000 3.066634275165243E-005 + 5.62700000000000 3.056452032920821E-005 + 5.62800000000000 3.046297783627118E-005 + 5.62900000000000 3.036171456080577E-005 + 5.63000000000000 3.026072979261151E-005 + 5.63100000000000 3.016002282331844E-005 + 5.63200000000000 3.005959294638262E-005 + 5.63300000000000 2.995943945708154E-005 + 5.63400000000000 2.985956165250976E-005 + 5.63500000000000 2.975995883157425E-005 + 5.63600000000000 2.966063029498999E-005 + 5.63700000000000 2.956157534527554E-005 + 5.63800000000000 2.946279328674851E-005 + 5.63900000000000 2.936428342552110E-005 + 5.64000000000000 2.926604506949576E-005 + 5.64100000000000 2.916807752836064E-005 + 5.64200000000000 2.907038011358528E-005 + 5.64300000000000 2.897295213841612E-005 + 5.64400000000000 2.887579291787218E-005 + 5.64500000000000 2.877890176874062E-005 + 5.64600000000000 2.868227800957240E-005 + 5.64700000000000 2.858592096067788E-005 + 5.64800000000000 2.848982994412254E-005 + 5.64900000000000 2.839400428372256E-005 + 5.65000000000000 2.829844330504056E-005 + 5.65100000000000 2.820314633538124E-005 + 5.65200000000000 2.810811270378706E-005 + 5.65300000000000 2.801334174103398E-005 + 5.65400000000000 2.791883277962719E-005 + 5.65500000000000 2.782458515379675E-005 + 5.65600000000000 2.773059819949341E-005 + 5.65700000000000 2.763687125438432E-005 + 5.65800000000000 2.754340365784880E-005 + 5.65900000000000 2.745019475097408E-005 + 5.66000000000000 2.735724387655111E-005 + 5.66100000000000 2.726455037907031E-005 + 5.66200000000000 2.717211360471743E-005 + 5.66300000000000 2.707993290136928E-005 + 5.66400000000000 2.698800761858961E-005 + 5.66500000000000 2.689633710762492E-005 + 5.66600000000000 2.680492072140027E-005 + 5.66700000000000 2.671375781451521E-005 + 5.66800000000000 2.662284774323954E-005 + 5.66900000000000 2.653218986550925E-005 + 5.67000000000000 2.644178354092240E-005 + 5.67100000000000 2.635162813073494E-005 + 5.67200000000000 2.626172299785673E-005 + 5.67300000000000 2.617206750684732E-005 + 5.67400000000000 2.608266102391199E-005 + 5.67500000000000 2.599350291689760E-005 + 5.67600000000000 2.590459255528858E-005 + 5.67700000000000 2.581592931020285E-005 + 5.67800000000000 2.572751255438781E-005 + 5.67900000000000 2.563934166221627E-005 + 5.68000000000000 2.555141600968251E-005 + 5.68100000000000 2.546373497439818E-005 + 5.68200000000000 2.537629793558837E-005 + 5.68300000000000 2.528910427408760E-005 + 5.68400000000000 2.520215337233582E-005 + 5.68500000000000 2.511544461437450E-005 + 5.68600000000000 2.502897738584260E-005 + 5.68700000000000 2.494275107397268E-005 + 5.68800000000000 2.485676506758693E-005 + 5.68900000000000 2.477101875709325E-005 + 5.69000000000000 2.468551153448135E-005 + 5.69100000000000 2.460024279331881E-005 + 5.69200000000000 2.451521192874720E-005 + 5.69300000000000 2.443041833747817E-005 + 5.69400000000000 2.434586141778963E-005 + 5.69500000000000 2.426154056952179E-005 + 5.69600000000000 2.417745519407336E-005 + 5.69700000000000 2.409360469439771E-005 + 5.69800000000000 2.400998847499896E-005 + 5.69900000000000 2.392660594192826E-005 + 5.70000000000000 2.384345650277981E-005 + 5.70100000000000 2.376053956668724E-005 + 5.70200000000000 2.367785454431963E-005 + 5.70300000000000 2.359540084787784E-005 + 5.70400000000000 2.351317789109067E-005 + 5.70500000000000 2.343118508921105E-005 + 5.70600000000000 2.334942185901239E-005 + 5.70700000000000 2.326788761878471E-005 + 5.70800000000000 2.318658178833096E-005 + 5.70900000000000 2.310550378896325E-005 + 5.71000000000000 2.302465304349916E-005 + 5.71100000000000 2.294402897625795E-005 + 5.71200000000000 2.286363101305694E-005 + 5.71300000000000 2.278345858120773E-005 + 5.71400000000000 2.270351110951260E-005 + 5.71500000000000 2.262378802826075E-005 + 5.71600000000000 2.254428876922461E-005 + 5.71700000000000 2.246501276565632E-005 + 5.71800000000000 2.238595945228389E-005 + 5.71900000000000 2.230712826530769E-005 + 5.72000000000000 2.222851864239676E-005 + 5.72100000000000 2.215013002268519E-005 + 5.72200000000000 2.207196184676851E-005 + 5.72300000000000 2.199401355670008E-005 + 5.72400000000000 2.191628459598748E-005 + 5.72500000000000 2.183877440958894E-005 + 5.72600000000000 2.176148244390974E-005 + 5.72700000000000 2.168440814679865E-005 + 5.72800000000000 2.160755096754437E-005 + 5.72900000000000 2.153091035687194E-005 + 5.73000000000000 2.145448576693929E-005 + 5.73100000000000 2.137827665133355E-005 + 5.73200000000000 2.130228246506768E-005 + 5.73300000000000 2.122650266457684E-005 + 5.73400000000000 2.115093670771495E-005 + 5.73500000000000 2.107558405375114E-005 + 5.73600000000000 2.100044416336629E-005 + 5.73700000000000 2.092551649864953E-005 + 5.73800000000000 2.085080052309476E-005 + 5.73900000000000 2.077629570159723E-005 + 5.74000000000000 2.070200150045000E-005 + 5.74100000000000 2.062791738734057E-005 + 5.74200000000000 2.055404283134741E-005 + 5.74300000000000 2.048037730293648E-005 + 5.74400000000000 2.040692027395793E-005 + 5.74500000000000 2.033367121764254E-005 + 5.74600000000000 2.026062960859842E-005 + 5.74700000000000 2.018779492280759E-005 + 5.74800000000000 2.011516663762253E-005 + 5.74900000000000 2.004274423176289E-005 + 5.75000000000000 1.997052718531208E-005 + 5.75100000000000 1.989851497971387E-005 + 5.75200000000000 1.982670709776910E-005 + 5.75300000000000 1.975510302363228E-005 + 5.75400000000000 1.968370224280830E-005 + 5.75500000000000 1.961250424214906E-005 + 5.75600000000000 1.954150850985017E-005 + 5.75700000000000 1.947071453544762E-005 + 5.75800000000000 1.940012180981453E-005 + 5.75900000000000 1.932972982515777E-005 + 5.76000000000000 1.925953807501472E-005 + 5.76100000000000 1.918954605425000E-005 + 5.76200000000000 1.911975325905217E-005 + 5.76300000000000 1.905015918693051E-005 + 5.76400000000000 1.898076333671170E-005 + 5.76500000000000 1.891156520853661E-005 + 5.76600000000000 1.884256430385710E-005 + 5.76700000000000 1.877376012543272E-005 + 5.76800000000000 1.870515217732754E-005 + 5.76900000000000 1.863673996490688E-005 + 5.77000000000000 1.856852299483418E-005 + 5.77100000000000 1.850050077506773E-005 + 5.77200000000000 1.843267281485753E-005 + 5.77300000000000 1.836503862474210E-005 + 5.77400000000000 1.829759771654526E-005 + 5.77500000000000 1.823034960337304E-005 + 5.77600000000000 1.816329379961046E-005 + 5.77700000000000 1.809642982091841E-005 + 5.77800000000000 1.802975718423050E-005 + 5.77900000000000 1.796327540774994E-005 + 5.78000000000000 1.789698401094637E-005 + 5.78100000000000 1.783088251455282E-005 + 5.78200000000000 1.776497044056252E-005 + 5.78300000000000 1.769924731222583E-005 + 5.78400000000000 1.763371265404718E-005 + 5.78500000000000 1.756836599178190E-005 + 5.78600000000000 1.750320685243322E-005 + 5.78700000000000 1.743823476424920E-005 + 5.78800000000000 1.737344925671956E-005 + 5.78900000000000 1.730884986057279E-005 + 5.79000000000000 1.724443610777293E-005 + 5.79100000000000 1.718020753151667E-005 + 5.79200000000000 1.711616366623024E-005 + 5.79300000000000 1.705230404756640E-005 + 5.79400000000000 1.698862821240144E-005 + 5.79500000000000 1.692513569883216E-005 + 5.79600000000000 1.686182604617284E-005 + 5.79700000000000 1.679869879495232E-005 + 5.79800000000000 1.673575348691090E-005 + 5.79900000000000 1.667298966499751E-005 + 5.80000000000000 1.661040687336658E-005 + 5.80100000000000 1.654800465737517E-005 + 5.80200000000000 1.648578256358003E-005 + 5.80300000000000 1.642374013973456E-005 + 5.80400000000000 1.636187693478595E-005 + 5.80500000000000 1.630019249887224E-005 + 5.80600000000000 1.623868638331932E-005 + 5.80700000000000 1.617735814063810E-005 + 5.80800000000000 1.611620732452154E-005 + 5.80900000000000 1.605523348984179E-005 + 5.81000000000000 1.599443619264723E-005 + 5.81100000000000 1.593381499015967E-005 + 5.81200000000000 1.587336944077135E-005 + 5.81300000000000 1.581309910404218E-005 + 5.81400000000000 1.575300354069680E-005 + 5.81500000000000 1.569308231262174E-005 + 5.81600000000000 1.563333498286260E-005 + 5.81700000000000 1.557376111562112E-005 + 5.81800000000000 1.551436027625242E-005 + 5.81900000000000 1.545513203126215E-005 + 5.82000000000000 1.539607594830362E-005 + 5.82100000000000 1.533719159617505E-005 + 5.82200000000000 1.527847854481672E-005 + 5.82300000000000 1.521993636530816E-005 + 5.82400000000000 1.516156462986539E-005 + 5.82500000000000 1.510336291183809E-005 + 5.82600000000000 1.504533078570686E-005 + 5.82700000000000 1.498746782708040E-005 + 5.82800000000000 1.492977361269277E-005 + 5.82900000000000 1.487224772040064E-005 + 5.83000000000000 1.481488972918048E-005 + 5.83100000000000 1.475769921912591E-005 + 5.83200000000000 1.470067577144486E-005 + 5.83300000000000 1.464381896845690E-005 + 5.83400000000000 1.458712839359048E-005 + 5.83500000000000 1.453060363138025E-005 + 5.83600000000000 1.447424426746430E-005 + 5.83700000000000 1.441804988858151E-005 + 5.83800000000000 1.436202008256877E-005 + 5.83900000000000 1.430615443835839E-005 + 5.84000000000000 1.425045254597535E-005 + 5.84100000000000 1.419491399653462E-005 + 5.84200000000000 1.413953838223852E-005 + 5.84300000000000 1.408432529637407E-005 + 5.84400000000000 1.402927433331024E-005 + 5.84500000000000 1.397438508849544E-005 + 5.84600000000000 1.391965715845474E-005 + 5.84700000000000 1.386509014078733E-005 + 5.84800000000000 1.381068363416385E-005 + 5.84900000000000 1.375643723832375E-005 + 5.85000000000000 1.370235055407272E-005 + 5.85100000000000 1.364842318328005E-005 + 5.85200000000000 1.359465472887602E-005 + 5.85300000000000 1.354104479484932E-005 + 5.85400000000000 1.348759298624443E-005 + 5.85500000000000 1.343429890915911E-005 + 5.85600000000000 1.338116217074173E-005 + 5.85700000000000 1.332818237918876E-005 + 5.85800000000000 1.327535914374218E-005 + 5.85900000000000 1.322269207468694E-005 + 5.86000000000000 1.317018078334841E-005 + 5.86100000000000 1.311782488208980E-005 + 5.86200000000000 1.306562398430966E-005 + 5.86300000000000 1.301357770443934E-005 + 5.86400000000000 1.296168565794049E-005 + 5.86500000000000 1.290994746130245E-005 + 5.86600000000000 1.285836273203987E-005 + 5.86700000000000 1.280693108869009E-005 + 5.86800000000000 1.275565215081071E-005 + 5.86900000000000 1.270452553897708E-005 + 5.87000000000000 1.265355087477979E-005 + 5.87100000000000 1.260272778082222E-005 + 5.87200000000000 1.255205588071806E-005 + 5.87300000000000 1.250153479908884E-005 + 5.87400000000000 1.245116416156145E-005 + 5.87500000000000 1.240094359476573E-005 + 5.87600000000000 1.235087272633197E-005 + 5.87700000000000 1.230095118488851E-005 + 5.87800000000000 1.225117860005928E-005 + 5.87900000000000 1.220155460246139E-005 + 5.88000000000000 1.215207882370267E-005 + 5.88100000000000 1.210275089637930E-005 + 5.88200000000000 1.205357045407338E-005 + 5.88300000000000 1.200453713135049E-005 + 5.88400000000000 1.195565056375736E-005 + 5.88500000000000 1.190691038781943E-005 + 5.88600000000000 1.185831624103846E-005 + 5.88700000000000 1.180986776189018E-005 + 5.88800000000000 1.176156458982192E-005 + 5.88900000000000 1.171340636525018E-005 + 5.89000000000000 1.166539272955835E-005 + 5.89100000000000 1.161752332509430E-005 + 5.89200000000000 1.156979779516804E-005 + 5.89300000000000 1.152221578404940E-005 + 5.89400000000000 1.147477693696566E-005 + 5.89500000000000 1.142748090009925E-005 + 5.89600000000000 1.138032732058541E-005 + 5.89700000000000 1.133331584650984E-005 + 5.89800000000000 1.128644612690645E-005 + 5.89900000000000 1.123971781175500E-005 + 5.90000000000000 1.119313055197882E-005 + 5.90100000000000 1.114668399944252E-005 + 5.90200000000000 1.110037780694967E-005 + 5.90300000000000 1.105421162824055E-005 + 5.90400000000000 1.100818511798987E-005 + 5.90500000000000 1.096229793180447E-005 + 5.90600000000000 1.091654972622109E-005 + 5.90700000000000 1.087094015870405E-005 + 5.90800000000000 1.082546888764308E-005 + 5.90900000000000 1.078013557235102E-005 + 5.91000000000000 1.073493987306155E-005 + 5.91100000000000 1.068988145092704E-005 + 5.91200000000000 1.064495996801622E-005 + 5.91300000000000 1.060017508731202E-005 + 5.91400000000000 1.055552647270933E-005 + 5.91500000000000 1.051101378901278E-005 + 5.91600000000000 1.046663670193453E-005 + 5.91700000000000 1.042239487809211E-005 + 5.91800000000000 1.037828798500615E-005 + 5.91900000000000 1.033431569109823E-005 + 5.92000000000000 1.029047766568872E-005 + 5.92100000000000 1.024677357899454E-005 + 5.92200000000000 1.020320310212704E-005 + 5.92300000000000 1.015976590708978E-005 + 5.92400000000000 1.011646166677642E-005 + 5.92500000000000 1.007329005496853E-005 + 5.92600000000000 1.003025074633344E-005 + 5.92700000000000 9.987343416422098E-006 + 5.92800000000000 9.944567741666940E-006 + 5.92900000000000 9.901923399379738E-006 + 5.93000000000000 9.859410067749478E-006 + 5.93100000000000 9.817027425840229E-006 + 5.93200000000000 9.774775153589049E-006 + 5.93300000000000 9.732652931803840E-006 + 5.93400000000000 9.690660442161247E-006 + 5.93500000000000 9.648797367204571E-006 + 5.93600000000000 9.607063390341673E-006 + 5.93700000000000 9.565458195842852E-006 + 5.93800000000000 9.523981468838798E-006 + 5.93900000000000 9.482632895318486E-006 + 5.94000000000000 9.441412162127112E-006 + 5.94100000000000 9.400318956964024E-006 + 5.94200000000000 9.359352968380642E-006 + 5.94300000000000 9.318513885778421E-006 + 5.94400000000000 9.277801399406786E-006 + 5.94500000000000 9.237215200361088E-006 + 5.94600000000000 9.196754980580555E-006 + 5.94700000000000 9.156420432846256E-006 + 5.94800000000000 9.116211250779074E-006 + 5.94900000000000 9.076127128837679E-006 + 5.95000000000000 9.036167762316500E-006 + 5.95100000000000 8.996332847343710E-006 + 5.95200000000000 8.956622080879229E-006 + 5.95300000000000 8.917035160712682E-006 + 5.95400000000000 8.877571785461450E-006 + 5.95500000000000 8.838231654568619E-006 + 5.95600000000000 8.799014468301047E-006 + 5.95700000000000 8.759919927747329E-006 + 5.95800000000000 8.720947734815839E-006 + 5.95900000000000 8.682097592232761E-006 + 5.96000000000000 8.643369203540119E-006 + 5.96100000000000 8.604762273093792E-006 + 5.96200000000000 8.566276506061576E-006 + 5.96300000000000 8.527911608421218E-006 + 5.96400000000000 8.489667286958482E-006 + 5.96500000000000 8.451543249265191E-006 + 5.96600000000000 8.413539203737280E-006 + 5.96700000000000 8.375654859572892E-006 + 5.96800000000000 8.337889926770427E-006 + 5.96900000000000 8.300244116126615E-006 + 5.97000000000000 8.262717139234620E-006 + 5.97100000000000 8.225308708482097E-006 + 5.97200000000000 8.188018537049308E-006 + 5.97300000000000 8.150846338907209E-006 + 5.97400000000000 8.113791828815544E-006 + 5.97500000000000 8.076854722320964E-006 + 5.97600000000000 8.040034735755138E-006 + 5.97700000000000 8.003331586232853E-006 + 5.97800000000000 7.966744991650164E-006 + 5.97900000000000 7.930274670682483E-006 + 5.98000000000000 7.893920342782745E-006 + 5.98100000000000 7.857681728179526E-006 + 5.98200000000000 7.821558547875186E-006 + 5.98300000000000 7.785550523644012E-006 + 5.98400000000000 7.749657378030385E-006 + 5.98500000000000 7.713878834346907E-006 + 5.98600000000000 7.678214616672592E-006 + 5.98700000000000 7.642664449851013E-006 + 5.98800000000000 7.607228059488475E-006 + 5.98900000000000 7.571905171952199E-006 + 5.99000000000000 7.536695514368475E-006 + 5.99100000000000 7.501598814620887E-006 + 5.99200000000000 7.466614801348471E-006 + 5.99300000000000 7.431743203943917E-006 + 5.99400000000000 7.396983752551778E-006 + 5.99500000000000 7.362336178066661E-006 + 5.99600000000000 7.327800212131437E-006 + 5.99700000000000 7.293375587135461E-006 + 5.99800000000000 7.259062036212779E-006 + 5.99900000000000 7.224859293240374E-006 + 6.00000000000000 7.190767092836362E-006 + 6.00100000000000 7.156785170358240E-006 + 6.00200000000000 7.122913261901126E-006 + 6.00300000000000 7.089151104295991E-006 + 6.00400000000000 7.055498435107914E-006 + 6.00500000000000 7.021954992634323E-006 + 6.00600000000000 6.988520515903250E-006 + 6.00700000000000 6.955194744671609E-006 + 6.00800000000000 6.921977419423440E-006 + 6.00900000000000 6.888868281368186E-006 + 6.01000000000000 6.855867072438963E-006 + 6.01100000000000 6.822973535290844E-006 + 6.01200000000000 6.790187413299131E-006 + 6.01300000000000 6.757508450557665E-006 + 6.01400000000000 6.724936391877088E-006 + 6.01500000000000 6.692470982783160E-006 + 6.01600000000000 6.660111969515058E-006 + 6.01700000000000 6.627859099023666E-006 + 6.01800000000000 6.595712118969904E-006 + 6.01900000000000 6.563670777723036E-006 + 6.02000000000000 6.531734824358982E-006 + 6.02100000000000 6.499904008658651E-006 + 6.02200000000000 6.468178081106261E-006 + 6.02300000000000 6.436556792887680E-006 + 6.02400000000000 6.405039895888748E-006 + 6.02500000000000 6.373627142693639E-006 + 6.02600000000000 6.342318286583189E-006 + 6.02700000000000 6.311113081533250E-006 + 6.02800000000000 6.280011282213049E-006 + 6.02900000000000 6.249012643983548E-006 + 6.03000000000000 6.218116922895800E-006 + 6.03100000000000 6.187323875689316E-006 + 6.03200000000000 6.156633259790447E-006 + 6.03300000000000 6.126044833310748E-006 + 6.03400000000000 6.095558355045374E-006 + 6.03500000000000 6.065173584471443E-006 + 6.03600000000000 6.034890281746446E-006 + 6.03700000000000 6.004708207706630E-006 + 6.03800000000000 5.974627123865394E-006 + 6.03900000000000 5.944646792411700E-006 + 6.04000000000000 5.914766976208470E-006 + 6.04100000000000 5.884987438791005E-006 + 6.04200000000000 5.855307944365397E-006 + 6.04300000000000 5.825728257806937E-006 + 6.04400000000000 5.796248144658557E-006 + 6.04500000000000 5.766867371129249E-006 + 6.04600000000000 5.737585704092489E-006 + 6.04700000000000 5.708402911084688E-006 + 6.04800000000000 5.679318760303621E-006 + 6.04900000000000 5.650333020606879E-006 + 6.05000000000000 5.621445461510311E-006 + 6.05100000000000 5.592655853186480E-006 + 6.05200000000000 5.563963966463119E-006 + 6.05300000000000 5.535369572821596E-006 + 6.05400000000000 5.506872444395371E-006 + 6.05500000000000 5.478472353968472E-006 + 6.05600000000000 5.450169074973969E-006 + 6.05700000000000 5.421962381492446E-006 + 6.05800000000000 5.393852048250488E-006 + 6.05900000000000 5.365837850619165E-006 + 6.06000000000000 5.337919564612520E-006 + 6.06100000000000 5.310096966886066E-006 + 6.06200000000000 5.282369834735282E-006 + 6.06300000000000 5.254737946094119E-006 + 6.06400000000000 5.227201079533493E-006 + 6.06500000000000 5.199759014259817E-006 + 6.06600000000000 5.172411530113498E-006 + 6.06700000000000 5.145158407567455E-006 + 6.06800000000000 5.117999427725655E-006 + 6.06900000000000 5.090934372321629E-006 + 6.07000000000000 5.063963023716998E-006 + 6.07100000000000 5.037085164900021E-006 + 6.07200000000000 5.010300579484120E-006 + 6.07300000000000 4.983609051706429E-006 + 6.07400000000000 4.957010366426339E-006 + 6.07500000000000 4.930504309124047E-006 + 6.07600000000000 4.904090665899111E-006 + 6.07700000000000 4.877769223469008E-006 + 6.07800000000000 4.851539769167693E-006 + 6.07900000000000 4.825402090944167E-006 + 6.08000000000000 4.799355977361049E-006 + 6.08100000000000 4.773401217593143E-006 + 6.08200000000000 4.747537601426026E-006 + 6.08300000000000 4.721764919254616E-006 + 6.08400000000000 4.696082962081765E-006 + 6.08500000000000 4.670491521516851E-006 + 6.08600000000000 4.644990389774360E-006 + 6.08700000000000 4.619579359672496E-006 + 6.08800000000000 4.594258224631773E-006 + 6.08900000000000 4.569026778673613E-006 + 6.09000000000000 4.543884816418977E-006 + 6.09100000000000 4.518832133086949E-006 + 6.09200000000000 4.493868524493372E-006 + 6.09300000000000 4.468993787049459E-006 + 6.09400000000000 4.444207717760414E-006 + 6.09500000000000 4.419510114224068E-006 + 6.09600000000000 4.394900774629502E-006 + 6.09700000000000 4.370379497755683E-006 + 6.09800000000000 4.345946082970108E-006 + 6.09900000000000 4.321600330227436E-006 + 6.10000000000000 4.297342040068140E-006 + 6.10100000000000 4.273171013617160E-006 + 6.10200000000000 4.249087052582547E-006 + 6.10300000000000 4.225089959254131E-006 + 6.10400000000000 4.201179536502168E-006 + 6.10500000000000 4.177355587776016E-006 + 6.10600000000000 4.153617917102800E-006 + 6.10700000000000 4.129966329086077E-006 + 6.10800000000000 4.106400628904521E-006 + 6.10900000000000 4.082920622310598E-006 + 6.11000000000000 4.059526115629245E-006 + 6.11100000000000 4.036216915756561E-006 + 6.11200000000000 4.012992830158494E-006 + 6.11300000000000 3.989853666869535E-006 + 6.11400000000000 3.966799234491421E-006 + 6.11500000000000 3.943829342191820E-006 + 6.11600000000000 3.920943799703055E-006 + 6.11700000000000 3.898142417320799E-006 + 6.11800000000000 3.875425005902790E-006 + 6.11900000000000 3.852791376867543E-006 + 6.12000000000000 3.830241342193073E-006 + 6.12100000000000 3.807774714415617E-006 + 6.12200000000000 3.785391306628356E-006 + 6.12300000000000 3.763090932480146E-006 + 6.12400000000000 3.740873406174253E-006 + 6.12500000000000 3.718738542467084E-006 + 6.12600000000000 3.696686156666930E-006 + 6.12700000000000 3.674716064632712E-006 + 6.12800000000000 3.652828082772720E-006 + 6.12900000000000 3.631022028043371E-006 + 6.13000000000000 3.609297717947961E-006 + 6.13100000000000 3.587654970535415E-006 + 6.13200000000000 3.566093604399060E-006 + 6.13300000000000 3.544613438675377E-006 + 6.13400000000000 3.523214293042777E-006 + 6.13500000000000 3.501895987720367E-006 + 6.13600000000000 3.480658343466727E-006 + 6.13700000000000 3.459501181578689E-006 + 6.13800000000000 3.438424323890115E-006 + 6.13900000000000 3.417427592770682E-006 + 6.14000000000000 3.396510811124672E-006 + 6.14100000000000 3.375673802389761E-006 + 6.14200000000000 3.354916390535818E-006 + 6.14300000000000 3.334238400063698E-006 + 6.14400000000000 3.313639656004047E-006 + 6.14500000000000 3.293119983916110E-006 + 6.14600000000000 3.272679209886531E-006 + 6.14700000000000 3.252317160528168E-006 + 6.14800000000000 3.232033662978912E-006 + 6.14900000000000 3.211828544900502E-006 + 6.15000000000000 3.191701634477347E-006 + 6.15100000000000 3.171652760415353E-006 + 6.15200000000000 3.151681751940742E-006 + 6.15300000000000 3.131788438798901E-006 + 6.15400000000000 3.111972651253200E-006 + 6.15500000000000 3.092234220083839E-006 + 6.15600000000000 3.072572976586690E-006 + 6.15700000000000 3.052988752572133E-006 + 6.15800000000000 3.033481380363917E-006 + 6.15900000000000 3.014050692798002E-006 + 6.16000000000000 2.994696523221414E-006 + 6.16100000000000 2.975418705491108E-006 + 6.16200000000000 2.956217073972825E-006 + 6.16300000000000 2.937091463539953E-006 + 6.16400000000000 2.918041709572406E-006 + 6.16500000000000 2.899067647955481E-006 + 6.16600000000000 2.880169115078742E-006 + 6.16700000000000 2.861345947834892E-006 + 6.16800000000000 2.842597983618650E-006 + 6.16900000000000 2.823925060325647E-006 + 6.17000000000000 2.805327016351300E-006 + 6.17100000000000 2.786803690589704E-006 + 6.17200000000000 2.768354922432534E-006 + 6.17300000000000 2.749980551767929E-006 + 6.17400000000000 2.731680418979399E-006 + 6.17500000000000 2.713454364944726E-006 + 6.17600000000000 2.695302231034868E-006 + 6.17700000000000 2.677223859112868E-006 + 6.17800000000000 2.659219091532767E-006 + 6.17900000000000 2.641287771138518E-006 + 6.18000000000000 2.623429741262908E-006 + 6.18100000000000 2.605644845726469E-006 + 6.18200000000000 2.587932928836417E-006 + 6.18300000000000 2.570293835385566E-006 + 6.18400000000000 2.552727410651264E-006 + 6.18500000000000 2.535233500394328E-006 + 6.18600000000000 2.517811950857980E-006 + 6.18700000000000 2.500462608766783E-006 + 6.18800000000000 2.483185321325588E-006 + 6.18900000000000 2.465979936218477E-006 + 6.19000000000000 2.448846301607714E-006 + 6.19100000000000 2.431784266132697E-006 + 6.19200000000000 2.414793678908907E-006 + 6.19300000000000 2.397874389526876E-006 + 6.19400000000000 2.381026248051142E-006 + 6.19500000000000 2.364249105019207E-006 + 6.19600000000000 2.347542811440519E-006 + 6.19700000000000 2.330907218795428E-006 + 6.19800000000000 2.314342179034165E-006 + 6.19900000000000 2.297847544575820E-006 + 6.20000000000000 2.281423168307315E-006 + 6.20100000000000 2.265068903582389E-006 + 6.20200000000000 2.248784604220584E-006 + 6.20300000000000 2.232570124506231E-006 + 6.20400000000000 2.216425319187442E-006 + 6.20500000000000 2.200350043475101E-006 + 6.20600000000000 2.184344153041863E-006 + 6.20700000000000 2.168407504021156E-006 + 6.20800000000000 2.152539953006176E-006 + 6.20900000000000 2.136741357048901E-006 + 6.21000000000000 2.121011573659093E-006 + 6.21100000000000 2.105350460803310E-006 + 6.21200000000000 2.089757876903924E-006 + 6.21300000000000 2.074233680838136E-006 + 6.21400000000000 2.058777731936992E-006 + 6.21500000000000 2.043389889984415E-006 + 6.21600000000000 2.028070015216217E-006 + 6.21700000000000 2.012817968319140E-006 + 6.21800000000000 1.997633610429884E-006 + 6.21900000000000 1.982516803134137E-006 + 6.22000000000000 1.967467408465618E-006 + 6.22100000000000 1.952485288905108E-006 + 6.22200000000000 1.937570307379507E-006 + 6.22300000000000 1.922722327260864E-006 + 6.22400000000000 1.907941212365437E-006 + 6.22500000000000 1.893226826952739E-006 + 6.22600000000000 1.878579035724592E-006 + 6.22700000000000 1.863997703824186E-006 + 6.22800000000000 1.849482696835137E-006 + 6.22900000000000 1.835033880780550E-006 + 6.23000000000000 1.820651122122084E-006 + 6.23100000000000 1.806334287759021E-006 + 6.23200000000000 1.792083245027336E-006 + 6.23300000000000 1.777897861698770E-006 + 6.23400000000000 1.763778005979909E-006 + 6.23500000000000 1.749723546511256E-006 + 6.23600000000000 1.735734352366324E-006 + 6.23700000000000 1.721810293050711E-006 + 6.23800000000000 1.707951238501191E-006 + 6.23900000000000 1.694157059084807E-006 + 6.24000000000000 1.680427625597957E-006 + 6.24100000000000 1.666762809265495E-006 + 6.24200000000000 1.653162481739828E-006 + 6.24300000000000 1.639626515100016E-006 + 6.24400000000000 1.626154781850876E-006 + 6.24500000000000 1.612747154922089E-006 + 6.24600000000000 1.599403507667308E-006 + 6.24700000000000 1.586123713863272E-006 + 6.24800000000000 1.572907647708917E-006 + 6.24900000000000 1.559755183824495E-006 + 6.25000000000000 1.546666197250696E-006 + 6.25100000000000 1.533640563447765E-006 + 6.25200000000000 1.520678158294635E-006 + 6.25300000000000 1.507778858088044E-006 + 6.25400000000000 1.494942539541676E-006 + 6.25500000000000 1.482169079785289E-006 + 6.25600000000000 1.469458356363850E-006 + 6.25700000000000 1.456810247236675E-006 + 6.25800000000000 1.444224630776571E-006 + 6.25900000000000 1.431701385768976E-006 + 6.26000000000000 1.419240391411109E-006 + 6.26100000000000 1.406841527311118E-006 + 6.26200000000000 1.394504673487227E-006 + 6.26300000000000 1.382229710366899E-006 + 6.26400000000000 1.370016518785982E-006 + 6.26500000000000 1.357864979987878E-006 + 6.26600000000000 1.345774975622697E-006 + 6.26700000000000 1.333746387746426E-006 + 6.26800000000000 1.321779098820095E-006 + 6.26900000000000 1.309872991708946E-006 + 6.27000000000000 1.298027949681603E-006 + 6.27100000000000 1.286243856409253E-006 + 6.27200000000000 1.274520595964815E-006 + 6.27300000000000 1.262858052822125E-006 + 6.27400000000000 1.251256111855118E-006 + 6.27500000000000 1.239714658337011E-006 + 6.27600000000000 1.228233577939491E-006 + 6.27700000000000 1.216812756731904E-006 + 6.27800000000000 1.205452081180450E-006 + 6.27900000000000 1.194151438147376E-006 + 6.28000000000000 1.182910714890172E-006 + 6.28100000000000 1.171729799060775E-006 + 6.28200000000000 1.160608578704765E-006 + 6.28300000000000 1.149546942260578E-006 + 6.28400000000000 1.138544778558707E-006 + 6.28500000000000 1.127601976820914E-006 + 6.28600000000000 1.116718426659443E-006 + 6.28700000000000 1.105894018076234E-006 + 6.28800000000000 1.095128641462140E-006 + 6.28900000000000 1.084422187596147E-006 + 6.29000000000000 1.073774547644597E-006 + 6.29100000000000 1.063185613160413E-006 + 6.29200000000000 1.052655276082323E-006 + 6.29300000000000 1.042183428734094E-006 + 6.29400000000000 1.031769963823758E-006 + 6.29500000000000 1.021414774442855E-006 + 6.29600000000000 1.011117754065661E-006 + 6.29700000000000 1.000878796548433E-006 + 6.29800000000000 9.906977961286486E-007 + 6.29900000000000 9.805746474242500E-007 + 6.30000000000000 9.705092454328917E-007 + 6.30100000000000 9.605014855311872E-007 + 6.30200000000000 9.505512634739623E-007 + 6.30300000000000 9.406584753935095E-007 + 6.30400000000000 9.308230177988403E-007 + 6.30500000000000 9.210447875749482E-007 + 6.30600000000000 9.113236819820664E-007 + 6.30700000000000 9.016595986549320E-007 + 6.30800000000000 8.920524356020527E-007 + 6.30900000000000 8.825020912049721E-007 + 6.31000000000000 8.730084642175432E-007 + 6.31100000000000 8.635714537651986E-007 + 6.31200000000000 8.541909593442267E-007 + 6.31300000000000 8.448668808210491E-007 + 6.31400000000000 8.355991184314991E-007 + 6.31500000000000 8.263875727801051E-007 + 6.31600000000000 8.172321448393753E-007 + 6.31700000000000 8.081327359490819E-007 + 6.31800000000000 7.990892478155529E-007 + 6.31900000000000 7.901015825109625E-007 + 6.32000000000000 7.811696424726234E-007 + 6.32100000000000 7.722933305022854E-007 + 6.32200000000000 7.634725497654307E-007 + 6.32300000000000 7.547072037905771E-007 + 6.32400000000000 7.459971964685796E-007 + 6.32500000000000 7.373424320519347E-007 + 6.32600000000000 7.287428151540893E-007 + 6.32700000000000 7.201982507487502E-007 + 6.32800000000000 7.117086441691953E-007 + 6.32900000000000 7.032739011075879E-007 + 6.33000000000000 6.948939276142939E-007 + 6.33100000000000 6.865686300972005E-007 + 6.33200000000000 6.782979153210371E-007 + 6.33300000000000 6.700816904066972E-007 + 6.33400000000000 6.619198628305669E-007 + 6.33500000000000 6.538123404238503E-007 + 6.33600000000000 6.457590313718996E-007 + 6.33700000000000 6.377598442135492E-007 + 6.33800000000000 6.298146878404478E-007 + 6.33900000000000 6.219234714963969E-007 + 6.34000000000000 6.140861047766890E-007 + 6.34100000000000 6.063024976274485E-007 + 6.34200000000000 5.985725603449763E-007 + 6.34300000000000 5.908962035750935E-007 + 6.34400000000000 5.832733383124906E-007 + 6.34500000000000 5.757038759000774E-007 + 6.34600000000000 5.681877280283340E-007 + 6.34700000000000 5.607248067346671E-007 + 6.34800000000000 5.533150244027648E-007 + 6.34900000000000 5.459582937619564E-007 + 6.35000000000000 5.386545278865724E-007 + 6.35100000000000 5.314036401953086E-007 + 6.35200000000000 5.242055444505907E-007 + 6.35300000000000 5.170601547579424E-007 + 6.35400000000000 5.099673855653537E-007 + 6.35500000000000 5.029271516626542E-007 + 6.35600000000000 4.959393681808864E-007 + 6.35700000000000 4.890039505916812E-007 + 6.35800000000000 4.821208147066369E-007 + 6.35900000000000 4.752898766766990E-007 + 6.36000000000000 4.685110529915433E-007 + 6.36100000000000 4.617842604789600E-007 + 6.36200000000000 4.551094163042403E-007 + 6.36300000000000 4.484864379695659E-007 + 6.36400000000000 4.419152433133999E-007 + 6.36500000000000 4.353957505098791E-007 + 6.36600000000000 4.289278780682101E-007 + 6.36700000000000 4.225115448320668E-007 + 6.36800000000000 4.161466699789886E-007 + 6.36900000000000 4.098331730197834E-007 + 6.37000000000000 4.035709737979302E-007 + 6.37100000000000 3.973599924889854E-007 + 6.37200000000000 3.912001495999908E-007 + 6.37300000000000 3.850913659688825E-007 + 6.37400000000000 3.790335627639040E-007 + 6.37500000000000 3.730266614830200E-007 + 6.37600000000000 3.670705839533318E-007 + 6.37700000000000 3.611652523304966E-007 + 6.37800000000000 3.553105890981471E-007 + 6.37900000000000 3.495065170673142E-007 + 6.38000000000000 3.437529593758511E-007 + 6.38100000000000 3.380498394878598E-007 + 6.38200000000000 3.323970811931197E-007 + 6.38300000000000 3.267946086065188E-007 + 6.38400000000000 3.212423461674845E-007 + 6.38500000000000 3.157402186394207E-007 + 6.38600000000000 3.102881511091417E-007 + 6.38700000000000 3.048860689863138E-007 + 6.38800000000000 2.995338980028938E-007 + 6.38900000000000 2.942315642125727E-007 + 6.39000000000000 2.889789939902205E-007 + 6.39100000000000 2.837761140313329E-007 + 6.39200000000000 2.786228513514796E-007 + 6.39300000000000 2.735191332857563E-007 + 6.39400000000000 2.684648874882360E-007 + 6.39500000000000 2.634600419314253E-007 + 6.39600000000000 2.585045249057203E-007 + 6.39700000000000 2.535982650188656E-007 + 6.39800000000000 2.487411911954152E-007 + 6.39900000000000 2.439332326761955E-007 + 6.40000000000000 2.391743190177697E-007 + 6.40100000000000 2.344643800919046E-007 + 6.40200000000000 2.298033460850398E-007 + 6.40300000000000 2.251911474977579E-007 + 6.40400000000000 2.206277151442576E-007 + 6.40500000000000 2.161129801518277E-007 + 6.40600000000000 2.116468739603245E-007 + 6.40700000000000 2.072293283216500E-007 + 6.40800000000000 2.028602752992324E-007 + 6.40900000000000 1.985396472675086E-007 + 6.41000000000000 1.942673769114086E-007 + 6.41100000000000 1.900433972258420E-007 + 6.41200000000000 1.858676415151865E-007 + 6.41300000000000 1.817400433927776E-007 + 6.41400000000000 1.776605367804010E-007 + 6.41500000000000 1.736290559077872E-007 + 6.41600000000000 1.696455353121070E-007 + 6.41700000000000 1.657099098374695E-007 + 6.41800000000000 1.618221146344223E-007 + 6.41900000000000 1.579820851594532E-007 + 6.42000000000000 1.541897571744939E-007 + 6.42100000000000 1.504450667464254E-007 + 6.42200000000000 1.467479502465861E-007 + 6.42300000000000 1.430983443502806E-007 + 6.42400000000000 1.394961860362915E-007 + 6.42500000000000 1.359414125863928E-007 + 6.42600000000000 1.324339615848644E-007 + 6.42700000000000 1.289737709180096E-007 + 6.42800000000000 1.255607787736742E-007 + 6.42900000000000 1.221949236407666E-007 + 6.43000000000000 1.188761443087813E-007 + 6.43100000000000 1.156043798673230E-007 + 6.43200000000000 1.123795697056332E-007 + 6.43300000000000 1.092016535121185E-007 + 6.43400000000000 1.060705712738805E-007 + 6.43500000000000 1.029862632762483E-007 + 6.43600000000000 9.994867010231238E-008 + 6.43700000000000 9.695773263245993E-008 + 6.43800000000000 9.401339204391293E-008 + 6.43900000000000 9.111558981026737E-008 + 6.44000000000000 8.826426770103470E-008 + 6.44100000000000 8.545936778118501E-008 + 6.44200000000000 8.270083241069196E-008 + 6.44300000000000 7.998860424407975E-008 + 6.44400000000000 7.732262622997176E-008 + 6.44500000000000 7.470284161064102E-008 + 6.44600000000000 7.212919392156274E-008 + 6.44700000000000 6.960162699096826E-008 + 6.44800000000000 6.712008493940133E-008 + 6.44900000000000 6.468451217927581E-008 + 6.45000000000000 6.229485341443526E-008 + 6.45100000000000 5.995105363971455E-008 + 6.45200000000000 5.765305814050307E-008 + 6.45300000000000 5.540081249230978E-008 + 6.45400000000000 5.319426256033025E-008 + 6.45500000000000 5.103335449901523E-008 + 6.45600000000000 4.891803475164123E-008 + 6.45700000000000 4.684825004988282E-008 + 6.45800000000000 4.482394741338662E-008 + 6.45900000000000 4.284507414934738E-008 + 6.46000000000000 4.091157785208552E-008 + 6.46100000000000 3.902340640262664E-008 + 6.46200000000000 3.718050796828276E-008 + 6.46300000000000 3.538283100223534E-008 + 6.46400000000000 3.363032424312011E-008 + 6.46500000000000 3.192293671461368E-008 + 6.46600000000000 3.026061772502182E-008 + 6.46700000000000 2.864331686686961E-008 + 6.46800000000000 2.707098401649338E-008 + 6.46900000000000 2.554356933363427E-008 + 6.47000000000000 2.406102326103374E-008 + 6.47100000000000 2.262329652403065E-008 + 6.47200000000000 2.123034013016026E-008 + 6.47300000000000 1.988210536875488E-008 + 6.47400000000000 1.857854381054626E-008 + 6.47500000000000 1.731960730726982E-008 + 6.47600000000000 1.610524799127055E-008 + 6.47700000000000 1.493541827511064E-008 + 6.47800000000000 1.381007085117891E-008 + 6.47900000000000 1.272915869130193E-008 + 6.48000000000000 1.169263504635688E-008 + 6.48100000000000 1.070045344588618E-008 + 6.48200000000000 9.752567697713735E-009 + 6.48300000000000 8.848931887563077E-009 + 6.48400000000000 7.989500378677076E-009 + 6.48500000000000 7.174227811439432E-009 + 6.48600000000000 6.403069102997925E-009 + 6.48700000000000 5.675979446889275E-009 + 6.48800000000000 4.992914312665825E-009 + 6.48900000000000 4.353829445523863E-009 + 6.49000000000000 3.758680865933665E-009 + 6.49100000000000 3.207424869271258E-009 + 6.49200000000000 2.700018025451867E-009 + 6.49300000000000 2.236417178565073E-009 + 6.49400000000000 1.816579446511655E-009 + 6.49500000000000 1.440462220642136E-009 + 6.49600000000000 1.108023165397016E-009 + 6.49700000000000 8.192202179486913E-010 + 6.49800000000000 5.740115878450635E-010 + 6.49900000000000 3.723557566548315E-010 + 6.50000000000000 2.142114776144619E-010 + 6.50100000000000 9.953777527684065E-011 + 6.50200000000000 2.829394516159925E-011 + 6.50300000000000 4.395534071150019E-013 + 6.50400000000000 4.395534071150019E-013 + 6.50500000000000 4.395534071150019E-013 + 6.50600000000000 4.395534071150019E-013 + 6.50700000000000 4.395534071150019E-013 + 6.50800000000000 4.395534071150019E-013 + 6.50900000000000 4.395534071150019E-013 + 6.51000000000000 4.395534071150019E-013 + 6.51100000000000 4.395534071150019E-013 + 6.51200000000000 4.395534071150019E-013 + 6.51300000000000 4.395534071150019E-013 + 6.51400000000000 4.395534071150019E-013 + 6.51500000000000 4.395534071150019E-013 + 6.51600000000000 4.395534071150019E-013 + 6.51700000000000 4.395534071150019E-013 + 6.51800000000000 4.395534071150019E-013 + 6.51900000000000 4.395534071150019E-013 + 6.52000000000000 4.395534071150019E-013 + 6.52100000000000 4.395534071150019E-013 + 6.52200000000000 4.395534071150019E-013 + 6.52300000000000 4.395534071150019E-013 + 6.52400000000000 4.395534071150019E-013 + 6.52500000000000 4.395534071150019E-013 + 6.52600000000000 4.395534071150019E-013 + 6.52700000000000 4.395534071150019E-013 + 6.52800000000000 4.395534071150019E-013 + 6.52900000000000 4.395534071150019E-013 + 6.53000000000000 4.395534071150019E-013 + 6.53100000000000 4.395534071150019E-013 + 6.53200000000000 4.395534071150019E-013 + 6.53300000000000 4.395534071150019E-013 + 6.53400000000000 4.395534071150019E-013 + 6.53500000000000 4.395534071150019E-013 + 6.53600000000000 4.395534071150019E-013 + 6.53700000000000 4.395534071150019E-013 + 6.53800000000000 4.395534071150019E-013 + 6.53900000000000 4.395534071150019E-013 + 6.54000000000000 4.395534071150019E-013 + 6.54100000000000 4.395534071150019E-013 + 6.54200000000000 4.395534071150019E-013 + 6.54300000000000 4.395534071150019E-013 + 6.54400000000000 4.395534071150019E-013 + 6.54500000000000 4.395534071150019E-013 + 6.54600000000000 4.395534071150019E-013 + 6.54700000000000 4.395534071150019E-013 + 6.54800000000000 4.395534071150019E-013 + 6.54900000000000 4.395534071150019E-013 + 6.55000000000000 4.395534071150019E-013 + 6.55100000000000 4.395534071150019E-013 + 6.55200000000000 4.395534071150019E-013 + 6.55300000000000 4.395534071150019E-013 + 6.55400000000000 4.395534071150019E-013 + 6.55500000000000 4.395534071150019E-013 + 6.55600000000000 4.395534071150019E-013 + 6.55700000000000 4.395534071150019E-013 + 6.55800000000000 4.395534071150019E-013 + 6.55900000000000 4.395534071150019E-013 + 6.56000000000000 4.395534071150019E-013 + 6.56100000000000 4.395534071150019E-013 + 6.56200000000000 4.395534071150019E-013 + 6.56300000000000 4.395534071150019E-013 + 6.56400000000000 4.395534071150019E-013 + 6.56500000000000 4.395534071150019E-013 + 6.56600000000000 4.395534071150019E-013 + 6.56700000000000 4.395534071150019E-013 + 6.56800000000000 4.395534071150019E-013 + 6.56900000000000 4.395534071150019E-013 + 6.57000000000000 4.395534071150019E-013 + 6.57100000000000 4.395534071150019E-013 + 6.57200000000000 4.395534071150019E-013 + 6.57300000000000 4.395534071150019E-013 + 6.57400000000000 4.395534071150019E-013 + 6.57500000000000 4.395534071150019E-013 + 6.57600000000000 4.395534071150019E-013 + 6.57700000000000 4.395534071150019E-013 + 6.57800000000000 4.395534071150019E-013 + 6.57900000000000 4.395534071150019E-013 + 6.58000000000000 4.395534071150019E-013 + 6.58100000000000 4.395534071150019E-013 + 6.58200000000000 4.395534071150019E-013 + 6.58300000000000 4.395534071150019E-013 + 6.58400000000000 4.395534071150019E-013 + 6.58500000000000 4.395534071150019E-013 + 6.58600000000000 4.395534071150019E-013 + 6.58700000000000 4.395534071150019E-013 + 6.58800000000000 4.395534071150019E-013 + 6.58900000000000 4.395534071150019E-013 + 6.59000000000000 4.395534071150019E-013 + 6.59100000000000 4.395534071150019E-013 + 6.59200000000000 4.395534071150019E-013 + 6.59300000000000 4.395534071150019E-013 + 6.59400000000000 4.395534071150019E-013 + 6.59500000000000 4.395534071150019E-013 + 6.59600000000000 4.395534071150019E-013 + 6.59700000000000 4.395534071150019E-013 + 6.59800000000000 4.395534071150019E-013 + 6.59900000000000 4.395534071150019E-013 + 6.60000000000000 4.395534071150019E-013 + 6.60100000000000 4.395534071150019E-013 + 6.60200000000000 4.395534071150019E-013 + 6.60300000000000 4.395534071150019E-013 + 6.60400000000000 4.395534071150019E-013 + 6.60500000000000 4.395534071150019E-013 + 6.60600000000000 4.395534071150019E-013 + 6.60700000000000 4.395534071150019E-013 + 6.60800000000000 4.395534071150019E-013 + 6.60900000000000 4.395534071150019E-013 + 6.61000000000000 4.395534071150019E-013 + 6.61100000000000 4.395534071150019E-013 + 6.61200000000000 4.395534071150019E-013 + 6.61300000000000 4.395534071150019E-013 + 6.61400000000000 4.395534071150019E-013 + 6.61500000000000 4.395534071150019E-013 + 6.61600000000000 4.395534071150019E-013 + 6.61700000000000 4.395534071150019E-013 + 6.61800000000000 4.395534071150019E-013 + 6.61900000000000 4.395534071150019E-013 + 6.62000000000000 4.395534071150019E-013 + 6.62100000000000 4.395534071150019E-013 + 6.62200000000000 4.395534071150019E-013 + 6.62300000000000 4.395534071150019E-013 + 6.62400000000000 4.395534071150019E-013 + 6.62500000000000 4.395534071150019E-013 + 6.62600000000000 4.395534071150019E-013 + 6.62700000000000 4.395534071150019E-013 + 6.62800000000000 4.395534071150019E-013 + 6.62900000000000 4.395534071150019E-013 + 6.63000000000000 4.395534071150019E-013 + 6.63100000000000 4.395534071150019E-013 + 6.63200000000000 4.395534071150019E-013 + 6.63300000000000 4.395534071150019E-013 + 6.63400000000000 4.395534071150019E-013 + 6.63500000000000 4.395534071150019E-013 + 6.63600000000000 4.395534071150019E-013 + 6.63700000000000 4.395534071150019E-013 + 6.63800000000000 4.395534071150019E-013 + 6.63900000000000 4.395534071150019E-013 + 6.64000000000000 4.395534071150019E-013 + 6.64100000000000 4.395534071150019E-013 + 6.64200000000000 4.395534071150019E-013 + 6.64300000000000 4.395534071150019E-013 + 6.64400000000000 4.395534071150019E-013 + 6.64500000000000 4.395534071150019E-013 + 6.64600000000000 4.395534071150019E-013 + 6.64700000000000 4.395534071150019E-013 + 6.64800000000000 4.395534071150019E-013 + 6.64900000000000 4.395534071150019E-013 + 6.65000000000000 4.395534071150019E-013 + 6.65100000000000 4.395534071150019E-013 + 6.65200000000000 4.395534071150019E-013 + 6.65300000000000 4.395534071150019E-013 + 6.65400000000000 4.395534071150019E-013 + 6.65500000000000 4.395534071150019E-013 + 6.65600000000000 4.395534071150019E-013 + 6.65700000000000 4.395534071150019E-013 + 6.65800000000000 4.395534071150019E-013 + 6.65900000000000 4.395534071150019E-013 + 6.66000000000000 4.395534071150019E-013 + 6.66100000000000 4.395534071150019E-013 + 6.66200000000000 4.395534071150019E-013 + 6.66300000000000 4.395534071150019E-013 + 6.66400000000000 4.395534071150019E-013 + 6.66500000000000 4.395534071150019E-013 + 6.66600000000000 4.395534071150019E-013 + 6.66700000000000 4.395534071150019E-013 + 6.66800000000000 4.395534071150019E-013 + 6.66900000000000 4.395534071150019E-013 + 6.67000000000000 4.395534071150019E-013 + 6.67100000000000 4.395534071150019E-013 + 6.67200000000000 4.395534071150019E-013 + 6.67300000000000 4.395534071150019E-013 + 6.67400000000000 4.395534071150019E-013 + 6.67500000000000 4.395534071150019E-013 + 6.67600000000000 4.395534071150019E-013 + 6.67700000000000 4.395534071150019E-013 + 6.67800000000000 4.395534071150019E-013 + 6.67900000000000 4.395534071150019E-013 + 6.68000000000000 4.395534071150019E-013 + 6.68100000000000 4.395534071150019E-013 + 6.68200000000000 4.395534071150019E-013 + 6.68300000000000 4.395534071150019E-013 + 6.68400000000000 4.395534071150019E-013 + 6.68500000000000 4.395534071150019E-013 + 6.68600000000000 4.395534071150019E-013 + 6.68700000000000 4.395534071150019E-013 + 6.68800000000000 4.395534071150019E-013 + 6.68900000000000 4.395534071150019E-013 + 6.69000000000000 4.395534071150019E-013 + 6.69100000000000 4.395534071150019E-013 + 6.69200000000000 4.395534071150019E-013 + 6.69300000000000 4.395534071150019E-013 + 6.69400000000000 4.395534071150019E-013 + 6.69500000000000 4.395534071150019E-013 + 6.69600000000000 4.395534071150019E-013 + 6.69700000000000 4.395534071150019E-013 + 6.69800000000000 4.395534071150019E-013 + 6.69900000000000 4.395534071150019E-013 + 6.70000000000000 4.395534071150019E-013 + 6.70100000000000 4.395534071150019E-013 + 6.70200000000000 4.395534071150019E-013 + 6.70300000000000 4.395534071150019E-013 + 6.70400000000000 4.395534071150019E-013 + 6.70500000000000 4.395534071150019E-013 + 6.70600000000000 4.395534071150019E-013 + 6.70700000000000 4.395534071150019E-013 + 6.70800000000000 4.395534071150019E-013 + 6.70900000000000 4.395534071150019E-013 + 6.71000000000000 4.395534071150019E-013 + 6.71100000000000 4.395534071150019E-013 + 6.71200000000000 4.395534071150019E-013 + 6.71300000000000 4.395534071150019E-013 + 6.71400000000000 4.395534071150019E-013 + 6.71500000000000 4.395534071150019E-013 + 6.71600000000000 4.395534071150019E-013 + 6.71700000000000 4.395534071150019E-013 + 6.71800000000000 4.395534071150019E-013 + 6.71900000000000 4.395534071150019E-013 + 6.72000000000000 4.395534071150019E-013 + 6.72100000000000 4.395534071150019E-013 + 6.72200000000000 4.395534071150019E-013 + 6.72300000000000 4.395534071150019E-013 + 6.72400000000000 4.395534071150019E-013 + 6.72500000000000 4.395534071150019E-013 + 6.72600000000000 4.395534071150019E-013 + 6.72700000000000 4.395534071150019E-013 + 6.72800000000000 4.395534071150019E-013 + 6.72900000000000 4.395534071150019E-013 + 6.73000000000000 4.395534071150019E-013 + 6.73100000000000 4.395534071150019E-013 + 6.73200000000000 4.395534071150019E-013 + 6.73300000000000 4.395534071150019E-013 + 6.73400000000000 4.395534071150019E-013 + 6.73500000000000 4.395534071150019E-013 + 6.73600000000000 4.395534071150019E-013 + 6.73700000000000 4.395534071150019E-013 + 6.73800000000000 4.395534071150019E-013 + 6.73900000000000 4.395534071150019E-013 + 6.74000000000000 4.395534071150019E-013 + 6.74100000000000 4.395534071150019E-013 + 6.74200000000000 4.395534071150019E-013 + 6.74300000000000 4.395534071150019E-013 + 6.74400000000000 4.395534071150019E-013 + 6.74500000000000 4.395534071150019E-013 + 6.74600000000000 4.395534071150019E-013 + 6.74700000000000 4.395534071150019E-013 + 6.74800000000000 4.395534071150019E-013 + 6.74900000000000 4.395534071150019E-013 + 6.75000000000000 4.395534071150019E-013 + 6.75100000000000 4.395534071150019E-013 + 6.75200000000000 4.395534071150019E-013 + 6.75300000000000 4.395534071150019E-013 + 6.75400000000000 4.395534071150019E-013 + 6.75500000000000 4.395534071150019E-013 + 6.75600000000000 4.395534071150019E-013 + 6.75700000000000 4.395534071150019E-013 + 6.75800000000000 4.395534071150019E-013 + 6.75900000000000 4.395534071150019E-013 + 6.76000000000000 4.395534071150019E-013 + 6.76100000000000 4.395534071150019E-013 + 6.76200000000000 4.395534071150019E-013 + 6.76300000000000 4.395534071150019E-013 + 6.76400000000000 4.395534071150019E-013 + 6.76500000000000 4.395534071150019E-013 + 6.76600000000000 4.395534071150019E-013 + 6.76700000000000 4.395534071150019E-013 + 6.76800000000000 4.395534071150019E-013 + 6.76900000000000 4.395534071150019E-013 + 6.77000000000000 4.395534071150019E-013 + 6.77100000000000 4.395534071150019E-013 + 6.77200000000000 4.395534071150019E-013 + 6.77300000000000 4.395534071150019E-013 + 6.77400000000000 4.395534071150019E-013 + 6.77500000000000 4.395534071150019E-013 + 6.77600000000000 4.395534071150019E-013 + 6.77700000000000 4.395534071150019E-013 + 6.77800000000000 4.395534071150019E-013 + 6.77900000000000 4.395534071150019E-013 + 6.78000000000000 4.395534071150019E-013 + 6.78100000000000 4.395534071150019E-013 + 6.78200000000000 4.395534071150019E-013 + 6.78300000000000 4.395534071150019E-013 + 6.78400000000000 4.395534071150019E-013 + 6.78500000000000 4.395534071150019E-013 + 6.78600000000000 4.395534071150019E-013 + 6.78700000000000 4.395534071150019E-013 + 6.78800000000000 4.395534071150019E-013 + 6.78900000000000 4.395534071150019E-013 + 6.79000000000000 4.395534071150019E-013 + 6.79100000000000 4.395534071150019E-013 + 6.79200000000000 4.395534071150019E-013 + 6.79300000000000 4.395534071150019E-013 + 6.79400000000000 4.395534071150019E-013 + 6.79500000000000 4.395534071150019E-013 + 6.79600000000000 4.395534071150019E-013 + 6.79700000000000 4.395534071150019E-013 + 6.79800000000000 4.395534071150019E-013 + 6.79900000000000 4.395534071150019E-013 + 6.80000000000000 4.395534071150019E-013 + 6.80100000000000 4.395534071150019E-013 + 6.80200000000000 4.395534071150019E-013 + 6.80300000000000 4.395534071150019E-013 + 6.80400000000000 4.395534071150019E-013 + 6.80500000000000 4.395534071150019E-013 + 6.80600000000000 4.395534071150019E-013 + 6.80700000000000 4.395534071150019E-013 + 6.80800000000000 4.395534071150019E-013 + 6.80900000000000 4.395534071150019E-013 + 6.81000000000000 4.395534071150019E-013 + 6.81100000000000 4.395534071150019E-013 + 6.81200000000000 4.395534071150019E-013 + 6.81300000000000 4.395534071150019E-013 + 6.81400000000000 4.395534071150019E-013 + 6.81500000000000 4.395534071150019E-013 + 6.81600000000000 4.395534071150019E-013 + 6.81700000000000 4.395534071150019E-013 + 6.81800000000000 4.395534071150019E-013 + 6.81900000000000 4.395534071150019E-013 + 6.82000000000000 4.395534071150019E-013 + 6.82100000000000 4.395534071150019E-013 + 6.82200000000000 4.395534071150019E-013 + 6.82300000000000 4.395534071150019E-013 + 6.82400000000000 4.395534071150019E-013 + 6.82500000000000 4.395534071150019E-013 + 6.82600000000000 4.395534071150019E-013 + 6.82700000000000 4.395534071150019E-013 + 6.82800000000000 4.395534071150019E-013 + 6.82900000000000 4.395534071150019E-013 + 6.83000000000000 4.395534071150019E-013 + 6.83100000000000 4.395534071150019E-013 + 6.83200000000000 4.395534071150019E-013 + 6.83300000000000 4.395534071150019E-013 + 6.83400000000000 4.395534071150019E-013 + 6.83500000000000 4.395534071150019E-013 + 6.83600000000000 4.395534071150019E-013 + 6.83700000000000 4.395534071150019E-013 + 6.83800000000000 4.395534071150019E-013 + 6.83900000000000 4.395534071150019E-013 + 6.84000000000000 4.395534071150019E-013 + 6.84100000000000 4.395534071150019E-013 + 6.84200000000000 4.395534071150019E-013 + 6.84300000000000 4.395534071150019E-013 + 6.84400000000000 4.395534071150019E-013 + 6.84500000000000 4.395534071150019E-013 + 6.84600000000000 4.395534071150019E-013 + 6.84700000000000 4.395534071150019E-013 + 6.84800000000000 4.395534071150019E-013 + 6.84900000000000 4.395534071150019E-013 + 6.85000000000000 4.395534071150019E-013 + 6.85100000000000 4.395534071150019E-013 + 6.85200000000000 4.395534071150019E-013 + 6.85300000000000 4.395534071150019E-013 + 6.85400000000000 4.395534071150019E-013 + 6.85500000000000 4.395534071150019E-013 + 6.85600000000000 4.395534071150019E-013 + 6.85700000000000 4.395534071150019E-013 + 6.85800000000000 4.395534071150019E-013 + 6.85900000000000 4.395534071150019E-013 + 6.86000000000000 4.395534071150019E-013 + 6.86100000000000 4.395534071150019E-013 + 6.86200000000000 4.395534071150019E-013 + 6.86300000000000 4.395534071150019E-013 + 6.86400000000000 4.395534071150019E-013 + 6.86500000000000 4.395534071150019E-013 + 6.86600000000000 4.395534071150019E-013 + 6.86700000000000 4.395534071150019E-013 + 6.86800000000000 4.395534071150019E-013 + 6.86900000000000 4.395534071150019E-013 + 6.87000000000000 4.395534071150019E-013 + 6.87100000000000 4.395534071150019E-013 + 6.87200000000000 4.395534071150019E-013 + 6.87300000000000 4.395534071150019E-013 + 6.87400000000000 4.395534071150019E-013 + 6.87500000000000 4.395534071150019E-013 + 6.87600000000000 4.395534071150019E-013 + 6.87700000000000 4.395534071150019E-013 + 6.87800000000000 4.395534071150019E-013 + 6.87900000000000 4.395534071150019E-013 + 6.88000000000000 4.395534071150019E-013 + 6.88100000000000 4.395534071150019E-013 + 6.88200000000000 4.395534071150019E-013 + 6.88300000000000 4.395534071150019E-013 + 6.88400000000000 4.395534071150019E-013 + 6.88500000000000 4.395534071150019E-013 + 6.88600000000000 4.395534071150019E-013 + 6.88700000000000 4.395534071150019E-013 + 6.88800000000000 4.395534071150019E-013 + 6.88900000000000 4.395534071150019E-013 + 6.89000000000000 4.395534071150019E-013 + 6.89100000000000 4.395534071150019E-013 + 6.89200000000000 4.395534071150019E-013 + 6.89300000000000 4.395534071150019E-013 + 6.89400000000000 4.395534071150019E-013 + 6.89500000000000 4.395534071150019E-013 + 6.89600000000000 4.395534071150019E-013 + 6.89700000000000 4.395534071150019E-013 + 6.89800000000000 4.395534071150019E-013 + 6.89900000000000 4.395534071150019E-013 + 6.90000000000000 4.395534071150019E-013 + 6.90100000000000 4.395534071150019E-013 + 6.90200000000000 4.395534071150019E-013 + 6.90300000000000 4.395534071150019E-013 + 6.90400000000000 4.395534071150019E-013 + 6.90500000000000 4.395534071150019E-013 + 6.90600000000000 4.395534071150019E-013 + 6.90700000000000 4.395534071150019E-013 + 6.90800000000000 4.395534071150019E-013 + 6.90900000000000 4.395534071150019E-013 + 6.91000000000000 4.395534071150019E-013 + 6.91100000000000 4.395534071150019E-013 + 6.91200000000000 4.395534071150019E-013 + 6.91300000000000 4.395534071150019E-013 + 6.91400000000000 4.395534071150019E-013 + 6.91500000000000 4.395534071150019E-013 + 6.91600000000000 4.395534071150019E-013 + 6.91700000000000 4.395534071150019E-013 + 6.91800000000000 4.395534071150019E-013 + 6.91900000000000 4.395534071150019E-013 + 6.92000000000000 4.395534071150019E-013 + 6.92100000000000 4.395534071150019E-013 + 6.92200000000000 4.395534071150019E-013 + 6.92300000000000 4.395534071150019E-013 + 6.92400000000000 4.395534071150019E-013 + 6.92500000000000 4.395534071150019E-013 + 6.92600000000000 4.395534071150019E-013 + 6.92700000000000 4.395534071150019E-013 + 6.92800000000000 4.395534071150019E-013 + 6.92900000000000 4.395534071150019E-013 + 6.93000000000000 4.395534071150019E-013 + 6.93100000000000 4.395534071150019E-013 + 6.93200000000000 4.395534071150019E-013 + 6.93300000000000 4.395534071150019E-013 + 6.93400000000000 4.395534071150019E-013 + 6.93500000000000 4.395534071150019E-013 + 6.93600000000000 4.395534071150019E-013 + 6.93700000000000 4.395534071150019E-013 + 6.93800000000000 4.395534071150019E-013 + 6.93900000000000 4.395534071150019E-013 + 6.94000000000000 4.395534071150019E-013 + 6.94100000000000 4.395534071150019E-013 + 6.94200000000000 4.395534071150019E-013 + 6.94300000000000 4.395534071150019E-013 + 6.94400000000000 4.395534071150019E-013 + 6.94500000000000 4.395534071150019E-013 + 6.94600000000000 4.395534071150019E-013 + 6.94700000000000 4.395534071150019E-013 + 6.94800000000000 4.395534071150019E-013 + 6.94900000000000 4.395534071150019E-013 + 6.95000000000000 4.395534071150019E-013 + 6.95100000000000 4.395534071150019E-013 + 6.95200000000000 4.395534071150019E-013 + 6.95300000000000 4.395534071150019E-013 + 6.95400000000000 4.395534071150019E-013 + 6.95500000000000 4.395534071150019E-013 + 6.95600000000000 4.395534071150019E-013 + 6.95700000000000 4.395534071150019E-013 + 6.95800000000000 4.395534071150019E-013 + 6.95900000000000 4.395534071150019E-013 + 6.96000000000000 4.395534071150019E-013 + 6.96100000000000 4.395534071150019E-013 + 6.96200000000000 4.395534071150019E-013 + 6.96300000000000 4.395534071150019E-013 + 6.96400000000000 4.395534071150019E-013 + 6.96500000000000 4.395534071150019E-013 + 6.96600000000000 4.395534071150019E-013 + 6.96700000000000 4.395534071150019E-013 + 6.96800000000000 4.395534071150019E-013 + 6.96900000000000 4.395534071150019E-013 + 6.97000000000000 4.395534071150019E-013 + 6.97100000000000 4.395534071150019E-013 + 6.97200000000000 4.395534071150019E-013 + 6.97300000000000 4.395534071150019E-013 + 6.97400000000000 4.395534071150019E-013 + 6.97500000000000 4.395534071150019E-013 + 6.97600000000000 4.395534071150019E-013 + 6.97700000000000 4.395534071150019E-013 + 6.97800000000000 4.395534071150019E-013 + 6.97900000000000 4.395534071150019E-013 + 6.98000000000000 4.395534071150019E-013 + 6.98100000000000 4.395534071150019E-013 + 6.98200000000000 4.395534071150019E-013 + 6.98300000000000 4.395534071150019E-013 + 6.98400000000000 4.395534071150019E-013 + 6.98500000000000 4.395534071150019E-013 + 6.98600000000000 4.395534071150019E-013 + 6.98700000000000 4.395534071150019E-013 + 6.98800000000000 4.395534071150019E-013 + 6.98900000000000 4.395534071150019E-013 + 6.99000000000000 4.395534071150019E-013 + 6.99100000000000 4.395534071150019E-013 + 6.99200000000000 4.395534071150019E-013 + 6.99300000000000 4.395534071150019E-013 + 6.99400000000000 4.395534071150019E-013 + 6.99500000000000 4.395534071150019E-013 + 6.99600000000000 4.395534071150019E-013 + 6.99700000000000 4.395534071150019E-013 + 6.99800000000000 4.395534071150019E-013 + 6.99900000000000 4.395534071150019E-013 + 7.00000000000000 4.395534071150019E-013 + 7.00100000000000 4.395534071150019E-013 + 7.00200000000000 4.395534071150019E-013 + 7.00300000000000 4.395534071150019E-013 + 7.00400000000000 4.395534071150019E-013 + 7.00500000000000 4.395534071150019E-013 + 7.00600000000000 4.395534071150019E-013 + 7.00700000000000 4.395534071150019E-013 + 7.00800000000000 4.395534071150019E-013 + 7.00900000000000 4.395534071150019E-013 + 7.01000000000000 4.395534071150019E-013 + 7.01100000000000 4.395534071150019E-013 + 7.01200000000000 4.395534071150019E-013 + 7.01300000000000 4.395534071150019E-013 + 7.01400000000000 4.395534071150019E-013 + 7.01500000000000 4.395534071150019E-013 + 7.01600000000000 4.395534071150019E-013 + 7.01700000000000 4.395534071150019E-013 + 7.01800000000000 4.395534071150019E-013 + 7.01900000000000 4.395534071150019E-013 + 7.02000000000000 4.395534071150019E-013 + 7.02100000000000 4.395534071150019E-013 + 7.02200000000000 4.395534071150019E-013 + 7.02300000000000 4.395534071150019E-013 + 7.02400000000000 4.395534071150019E-013 + 7.02500000000000 4.395534071150019E-013 + 7.02600000000000 4.395534071150019E-013 + 7.02700000000000 4.395534071150019E-013 + 7.02800000000000 4.395534071150019E-013 + 7.02900000000000 4.395534071150019E-013 + 7.03000000000000 4.395534071150019E-013 + 7.03100000000000 4.395534071150019E-013 + 7.03200000000000 4.395534071150019E-013 + 7.03300000000000 4.395534071150019E-013 + 7.03400000000000 4.395534071150019E-013 + 7.03500000000000 4.395534071150019E-013 + 7.03600000000000 4.395534071150019E-013 + 7.03700000000000 4.395534071150019E-013 + 7.03800000000000 4.395534071150019E-013 + 7.03900000000000 4.395534071150019E-013 + 7.04000000000000 4.395534071150019E-013 + 7.04100000000000 4.395534071150019E-013 + 7.04200000000000 4.395534071150019E-013 + 7.04300000000000 4.395534071150019E-013 + 7.04400000000000 4.395534071150019E-013 + 7.04500000000000 4.395534071150019E-013 + 7.04600000000000 4.395534071150019E-013 + 7.04700000000000 4.395534071150019E-013 + 7.04800000000000 4.395534071150019E-013 + 7.04900000000000 4.395534071150019E-013 + 7.05000000000000 4.395534071150019E-013 + 7.05100000000000 4.395534071150019E-013 + 7.05200000000000 4.395534071150019E-013 + 7.05300000000000 4.395534071150019E-013 + 7.05400000000000 4.395534071150019E-013 + 7.05500000000000 4.395534071150019E-013 + 7.05600000000000 4.395534071150019E-013 + 7.05700000000000 4.395534071150019E-013 + 7.05800000000000 4.395534071150019E-013 + 7.05900000000000 4.395534071150019E-013 + 7.06000000000000 4.395534071150019E-013 + 7.06100000000000 4.395534071150019E-013 + 7.06200000000000 4.395534071150019E-013 + 7.06300000000000 4.395534071150019E-013 + 7.06400000000000 4.395534071150019E-013 + 7.06500000000000 4.395534071150019E-013 + 7.06600000000000 4.395534071150019E-013 + 7.06700000000000 4.395534071150019E-013 + 7.06800000000000 4.395534071150019E-013 + 7.06900000000000 4.395534071150019E-013 + 7.07000000000000 4.395534071150019E-013 + 7.07100000000000 4.395534071150019E-013 + 7.07200000000000 4.395534071150019E-013 + 7.07300000000000 4.395534071150019E-013 + 7.07400000000000 4.395534071150019E-013 + 7.07500000000000 4.395534071150019E-013 + 7.07600000000000 4.395534071150019E-013 + 7.07700000000000 4.395534071150019E-013 + 7.07800000000000 4.395534071150019E-013 + 7.07900000000000 4.395534071150019E-013 + 7.08000000000000 4.395534071150019E-013 + 7.08100000000000 4.395534071150019E-013 + 7.08200000000000 4.395534071150019E-013 + 7.08300000000000 4.395534071150019E-013 + 7.08400000000000 4.395534071150019E-013 + 7.08500000000000 4.395534071150019E-013 + 7.08600000000000 4.395534071150019E-013 + 7.08700000000000 4.395534071150019E-013 + 7.08800000000000 4.395534071150019E-013 + 7.08900000000000 4.395534071150019E-013 + 7.09000000000000 4.395534071150019E-013 + 7.09100000000000 4.395534071150019E-013 + 7.09200000000000 4.395534071150019E-013 + 7.09300000000000 4.395534071150019E-013 + 7.09400000000000 4.395534071150019E-013 + 7.09500000000000 4.395534071150019E-013 + 7.09600000000000 4.395534071150019E-013 + 7.09700000000000 4.395534071150019E-013 + 7.09800000000000 4.395534071150019E-013 + 7.09900000000000 4.395534071150019E-013 + 7.10000000000000 4.395534071150019E-013 + 7.10100000000000 4.395534071150019E-013 + 7.10200000000000 4.395534071150019E-013 + 7.10300000000000 4.395534071150019E-013 + 7.10400000000000 4.395534071150019E-013 + 7.10500000000000 4.395534071150019E-013 + 7.10600000000000 4.395534071150019E-013 + 7.10700000000000 4.395534071150019E-013 + 7.10800000000000 4.395534071150019E-013 + 7.10900000000000 4.395534071150019E-013 + 7.11000000000000 4.395534071150019E-013 + 7.11100000000000 4.395534071150019E-013 + 7.11200000000000 4.395534071150019E-013 + 7.11300000000000 4.395534071150019E-013 + 7.11400000000000 4.395534071150019E-013 + 7.11500000000000 4.395534071150019E-013 + 7.11600000000000 4.395534071150019E-013 + 7.11700000000000 4.395534071150019E-013 + 7.11800000000000 4.395534071150019E-013 + 7.11900000000000 4.395534071150019E-013 + 7.12000000000000 4.395534071150019E-013 + 7.12100000000000 4.395534071150019E-013 + 7.12200000000000 4.395534071150019E-013 + 7.12300000000000 4.395534071150019E-013 + 7.12400000000000 4.395534071150019E-013 + 7.12500000000000 4.395534071150019E-013 + 7.12600000000000 4.395534071150019E-013 + 7.12700000000000 4.395534071150019E-013 + 7.12800000000000 4.395534071150019E-013 + 7.12900000000000 4.395534071150019E-013 + 7.13000000000000 4.395534071150019E-013 + 7.13100000000000 4.395534071150019E-013 + 7.13200000000000 4.395534071150019E-013 + 7.13300000000000 4.395534071150019E-013 + 7.13400000000000 4.395534071150019E-013 + 7.13500000000000 4.395534071150019E-013 + 7.13600000000000 4.395534071150019E-013 + 7.13700000000000 4.395534071150019E-013 + 7.13800000000000 4.395534071150019E-013 + 7.13900000000000 4.395534071150019E-013 + 7.14000000000000 4.395534071150019E-013 + 7.14100000000000 4.395534071150019E-013 + 7.14200000000000 4.395534071150019E-013 + 7.14300000000000 4.395534071150019E-013 + 7.14400000000000 4.395534071150019E-013 + 7.14500000000000 4.395534071150019E-013 + 7.14600000000000 4.395534071150019E-013 + 7.14700000000000 4.395534071150019E-013 + 7.14800000000000 4.395534071150019E-013 + 7.14900000000000 4.395534071150019E-013 + 7.15000000000000 4.395534071150019E-013 + 7.15100000000000 4.395534071150019E-013 + 7.15200000000000 4.395534071150019E-013 + 7.15300000000000 4.395534071150019E-013 + 7.15400000000000 4.395534071150019E-013 + 7.15500000000000 4.395534071150019E-013 + 7.15600000000000 4.395534071150019E-013 + 7.15700000000000 4.395534071150019E-013 + 7.15800000000000 4.395534071150019E-013 + 7.15900000000000 4.395534071150019E-013 + 7.16000000000000 4.395534071150019E-013 + 7.16100000000000 4.395534071150019E-013 + 7.16200000000000 4.395534071150019E-013 + 7.16300000000000 4.395534071150019E-013 + 7.16400000000000 4.395534071150019E-013 + 7.16500000000000 4.395534071150019E-013 + 7.16600000000000 4.395534071150019E-013 + 7.16700000000000 4.395534071150019E-013 + 7.16800000000000 4.395534071150019E-013 + 7.16900000000000 4.395534071150019E-013 + 7.17000000000000 4.395534071150019E-013 + 7.17100000000000 4.395534071150019E-013 + 7.17200000000000 4.395534071150019E-013 + 7.17300000000000 4.395534071150019E-013 + 7.17400000000000 4.395534071150019E-013 + 7.17500000000000 4.395534071150019E-013 + 7.17600000000000 4.395534071150019E-013 + 7.17700000000000 4.395534071150019E-013 + 7.17800000000000 4.395534071150019E-013 + 7.17900000000000 4.395534071150019E-013 + 7.18000000000000 4.395534071150019E-013 + 7.18100000000000 4.395534071150019E-013 + 7.18200000000000 4.395534071150019E-013 + 7.18300000000000 4.395534071150019E-013 + 7.18400000000000 4.395534071150019E-013 + 7.18500000000000 4.395534071150019E-013 + 7.18600000000000 4.395534071150019E-013 + 7.18700000000000 4.395534071150019E-013 + 7.18800000000000 4.395534071150019E-013 + 7.18900000000000 4.395534071150019E-013 + 7.19000000000000 4.395534071150019E-013 + 7.19100000000000 4.395534071150019E-013 + 7.19200000000000 4.395534071150019E-013 + 7.19300000000000 4.395534071150019E-013 + 7.19400000000000 4.395534071150019E-013 + 7.19500000000000 4.395534071150019E-013 + 7.19600000000000 4.395534071150019E-013 + 7.19700000000000 4.395534071150019E-013 + 7.19800000000000 4.395534071150019E-013 + 7.19900000000000 4.395534071150019E-013 + 7.20000000000000 4.395534071150019E-013 + 7.20100000000000 4.395534071150019E-013 + 7.20200000000000 4.395534071150019E-013 + 7.20300000000000 4.395534071150019E-013 + 7.20400000000000 4.395534071150019E-013 + 7.20500000000000 4.395534071150019E-013 + 7.20600000000000 4.395534071150019E-013 + 7.20700000000000 4.395534071150019E-013 + 7.20800000000000 4.395534071150019E-013 + 7.20900000000000 4.395534071150019E-013 + 7.21000000000000 4.395534071150019E-013 + 7.21100000000000 4.395534071150019E-013 + 7.21200000000000 4.395534071150019E-013 + 7.21300000000000 4.395534071150019E-013 + 7.21400000000000 4.395534071150019E-013 + 7.21500000000000 4.395534071150019E-013 + 7.21600000000000 4.395534071150019E-013 + 7.21700000000000 4.395534071150019E-013 + 7.21800000000000 4.395534071150019E-013 + 7.21900000000000 4.395534071150019E-013 + 7.22000000000000 4.395534071150019E-013 + 7.22100000000000 4.395534071150019E-013 + 7.22200000000000 4.395534071150019E-013 + 7.22300000000000 4.395534071150019E-013 + 7.22400000000000 4.395534071150019E-013 + 7.22500000000000 4.395534071150019E-013 + 7.22600000000000 4.395534071150019E-013 + 7.22700000000000 4.395534071150019E-013 + 7.22800000000000 4.395534071150019E-013 + 7.22900000000000 4.395534071150019E-013 + 7.23000000000000 4.395534071150019E-013 + 7.23100000000000 4.395534071150019E-013 + 7.23200000000000 4.395534071150019E-013 + 7.23300000000000 4.395534071150019E-013 + 7.23400000000000 4.395534071150019E-013 + 7.23500000000000 4.395534071150019E-013 + 7.23600000000000 4.395534071150019E-013 + 7.23700000000000 4.395534071150019E-013 + 7.23800000000000 4.395534071150019E-013 + 7.23900000000000 4.395534071150019E-013 + 7.24000000000000 4.395534071150019E-013 + 7.24100000000000 4.395534071150019E-013 + 7.24200000000000 4.395534071150019E-013 + 7.24300000000000 4.395534071150019E-013 + 7.24400000000000 4.395534071150019E-013 + 7.24500000000000 4.395534071150019E-013 + 7.24600000000000 4.395534071150019E-013 + 7.24700000000000 4.395534071150019E-013 + 7.24800000000000 4.395534071150019E-013 + 7.24900000000000 4.395534071150019E-013 + 7.25000000000000 4.395534071150019E-013 + 7.25100000000000 4.395534071150019E-013 + 7.25200000000000 4.395534071150019E-013 + 7.25300000000000 4.395534071150019E-013 + 7.25400000000000 4.395534071150019E-013 + 7.25500000000000 4.395534071150019E-013 + 7.25600000000000 4.395534071150019E-013 + 7.25700000000000 4.395534071150019E-013 + 7.25800000000000 4.395534071150019E-013 + 7.25900000000000 4.395534071150019E-013 + 7.26000000000000 4.395534071150019E-013 + 7.26100000000000 4.395534071150019E-013 + 7.26200000000000 4.395534071150019E-013 + 7.26300000000000 4.395534071150019E-013 + 7.26400000000000 4.395534071150019E-013 + 7.26500000000000 4.395534071150019E-013 + 7.26600000000000 4.395534071150019E-013 + 7.26700000000000 4.395534071150019E-013 + 7.26800000000000 4.395534071150019E-013 + 7.26900000000000 4.395534071150019E-013 + 7.27000000000000 4.395534071150019E-013 + 7.27100000000000 4.395534071150019E-013 + 7.27200000000000 4.395534071150019E-013 + 7.27300000000000 4.395534071150019E-013 + 7.27400000000000 4.395534071150019E-013 + 7.27500000000000 4.395534071150019E-013 + 7.27600000000000 4.395534071150019E-013 + 7.27700000000000 4.395534071150019E-013 + 7.27800000000000 4.395534071150019E-013 + 7.27900000000000 4.395534071150019E-013 + 7.28000000000000 4.395534071150019E-013 + 7.28100000000000 4.395534071150019E-013 + 7.28200000000000 4.395534071150019E-013 + 7.28300000000000 4.395534071150019E-013 + 7.28400000000000 4.395534071150019E-013 + 7.28500000000000 4.395534071150019E-013 + 7.28600000000000 4.395534071150019E-013 + 7.28700000000000 4.395534071150019E-013 + 7.28800000000000 4.395534071150019E-013 + 7.28900000000000 4.395534071150019E-013 + 7.29000000000000 4.395534071150019E-013 + 7.29100000000000 4.395534071150019E-013 + 7.29200000000000 4.395534071150019E-013 + 7.29300000000000 4.395534071150019E-013 + 7.29400000000000 4.395534071150019E-013 + 7.29500000000000 4.395534071150019E-013 + 7.29600000000000 4.395534071150019E-013 + 7.29700000000000 4.395534071150019E-013 + 7.29800000000000 4.395534071150019E-013 + 7.29900000000000 4.395534071150019E-013 + 7.30000000000000 4.395534071150019E-013 + 7.30100000000000 4.395534071150019E-013 + 7.30200000000000 4.395534071150019E-013 + 7.30300000000000 4.395534071150019E-013 + 7.30400000000000 4.395534071150019E-013 + 7.30500000000000 4.395534071150019E-013 + 7.30600000000000 4.395534071150019E-013 + 7.30700000000000 4.395534071150019E-013 + 7.30800000000000 4.395534071150019E-013 + 7.30900000000000 4.395534071150019E-013 + 7.31000000000000 4.395534071150019E-013 + 7.31100000000000 4.395534071150019E-013 + 7.31200000000000 4.395534071150019E-013 + 7.31300000000000 4.395534071150019E-013 + 7.31400000000000 4.395534071150019E-013 + 7.31500000000000 4.395534071150019E-013 + 7.31600000000000 4.395534071150019E-013 + 7.31700000000000 4.395534071150019E-013 + 7.31800000000000 4.395534071150019E-013 + 7.31900000000000 4.395534071150019E-013 + 7.32000000000000 4.395534071150019E-013 + 7.32100000000000 4.395534071150019E-013 + 7.32200000000000 4.395534071150019E-013 + 7.32300000000000 4.395534071150019E-013 + 7.32400000000000 4.395534071150019E-013 + 7.32500000000000 4.395534071150019E-013 + 7.32600000000000 4.395534071150019E-013 + 7.32700000000000 4.395534071150019E-013 + 7.32800000000000 4.395534071150019E-013 + 7.32900000000000 4.395534071150019E-013 + 7.33000000000000 4.395534071150019E-013 + 7.33100000000000 4.395534071150019E-013 + 7.33200000000000 4.395534071150019E-013 + 7.33300000000000 4.395534071150019E-013 + 7.33400000000000 4.395534071150019E-013 + 7.33500000000000 4.395534071150019E-013 + 7.33600000000000 4.395534071150019E-013 + 7.33700000000000 4.395534071150019E-013 + 7.33800000000000 4.395534071150019E-013 + 7.33900000000000 4.395534071150019E-013 + 7.34000000000000 4.395534071150019E-013 + 7.34100000000000 4.395534071150019E-013 + 7.34200000000000 4.395534071150019E-013 + 7.34300000000000 4.395534071150019E-013 + 7.34400000000000 4.395534071150019E-013 + 7.34500000000000 4.395534071150019E-013 + 7.34600000000000 4.395534071150019E-013 + 7.34700000000000 4.395534071150019E-013 + 7.34800000000000 4.395534071150019E-013 + 7.34900000000000 4.395534071150019E-013 + 7.35000000000000 4.395534071150019E-013 + 7.35100000000000 4.395534071150019E-013 + 7.35200000000000 4.395534071150019E-013 + 7.35300000000000 4.395534071150019E-013 + 7.35400000000000 4.395534071150019E-013 + 7.35500000000000 4.395534071150019E-013 + 7.35600000000000 4.395534071150019E-013 + 7.35700000000000 4.395534071150019E-013 + 7.35800000000000 4.395534071150019E-013 + 7.35900000000000 4.395534071150019E-013 + 7.36000000000000 4.395534071150019E-013 + 7.36100000000000 4.395534071150019E-013 + 7.36200000000000 4.395534071150019E-013 + 7.36300000000000 4.395534071150019E-013 + 7.36400000000000 4.395534071150019E-013 + 7.36500000000000 4.395534071150019E-013 + 7.36600000000000 4.395534071150019E-013 + 7.36700000000000 4.395534071150019E-013 + 7.36800000000000 4.395534071150019E-013 + 7.36900000000000 4.395534071150019E-013 + 7.37000000000000 4.395534071150019E-013 + 7.37100000000000 4.395534071150019E-013 + 7.37200000000000 4.395534071150019E-013 + 7.37300000000000 4.395534071150019E-013 + 7.37400000000000 4.395534071150019E-013 + 7.37500000000000 4.395534071150019E-013 + 7.37600000000000 4.395534071150019E-013 + 7.37700000000000 4.395534071150019E-013 + 7.37800000000000 4.395534071150019E-013 + 7.37900000000000 4.395534071150019E-013 + 7.38000000000000 4.395534071150019E-013 + 7.38100000000000 4.395534071150019E-013 + 7.38200000000000 4.395534071150019E-013 + 7.38300000000000 4.395534071150019E-013 + 7.38400000000000 4.395534071150019E-013 + 7.38500000000000 4.395534071150019E-013 + 7.38600000000000 4.395534071150019E-013 + 7.38700000000000 4.395534071150019E-013 + 7.38800000000000 4.395534071150019E-013 + 7.38900000000000 4.395534071150019E-013 + 7.39000000000000 4.395534071150019E-013 + 7.39100000000000 4.395534071150019E-013 + 7.39200000000000 4.395534071150019E-013 + 7.39300000000000 4.395534071150019E-013 + 7.39400000000000 4.395534071150019E-013 + 7.39500000000000 4.395534071150019E-013 + 7.39600000000000 4.395534071150019E-013 + 7.39700000000000 4.395534071150019E-013 + 7.39800000000000 4.395534071150019E-013 + 7.39900000000000 4.395534071150019E-013 + 7.40000000000000 4.395534071150019E-013 + 7.40100000000000 4.395534071150019E-013 + 7.40200000000000 4.395534071150019E-013 + 7.40300000000000 4.395534071150019E-013 + 7.40400000000000 4.395534071150019E-013 + 7.40500000000000 4.395534071150019E-013 + 7.40600000000000 4.395534071150019E-013 + 7.40700000000000 4.395534071150019E-013 + 7.40800000000000 4.395534071150019E-013 + 7.40900000000000 4.395534071150019E-013 + 7.41000000000000 4.395534071150019E-013 + 7.41100000000000 4.395534071150019E-013 + 7.41200000000000 4.395534071150019E-013 + 7.41300000000000 4.395534071150019E-013 + 7.41400000000000 4.395534071150019E-013 + 7.41500000000000 4.395534071150019E-013 + 7.41600000000000 4.395534071150019E-013 + 7.41700000000000 4.395534071150019E-013 + 7.41800000000000 4.395534071150019E-013 + 7.41900000000000 4.395534071150019E-013 + 7.42000000000000 4.395534071150019E-013 + 7.42100000000000 4.395534071150019E-013 + 7.42200000000000 4.395534071150019E-013 + 7.42300000000000 4.395534071150019E-013 + 7.42400000000000 4.395534071150019E-013 + 7.42500000000000 4.395534071150019E-013 + 7.42600000000000 4.395534071150019E-013 + 7.42700000000000 4.395534071150019E-013 + 7.42800000000000 4.395534071150019E-013 + 7.42900000000000 4.395534071150019E-013 + 7.43000000000000 4.395534071150019E-013 + 7.43100000000000 4.395534071150019E-013 + 7.43200000000000 4.395534071150019E-013 + 7.43300000000000 4.395534071150019E-013 + 7.43400000000000 4.395534071150019E-013 + 7.43500000000000 4.395534071150019E-013 + 7.43600000000000 4.395534071150019E-013 + 7.43700000000000 4.395534071150019E-013 + 7.43800000000000 4.395534071150019E-013 + 7.43900000000000 4.395534071150019E-013 + 7.44000000000000 4.395534071150019E-013 + 7.44100000000000 4.395534071150019E-013 + 7.44200000000000 4.395534071150019E-013 + 7.44300000000000 4.395534071150019E-013 + 7.44400000000000 4.395534071150019E-013 + 7.44500000000000 4.395534071150019E-013 + 7.44600000000000 4.395534071150019E-013 + 7.44700000000000 4.395534071150019E-013 + 7.44800000000000 4.395534071150019E-013 + 7.44900000000000 4.395534071150019E-013 + 7.45000000000000 4.395534071150019E-013 + 7.45100000000000 4.395534071150019E-013 + 7.45200000000000 4.395534071150019E-013 + 7.45300000000000 4.395534071150019E-013 + 7.45400000000000 4.395534071150019E-013 + 7.45500000000000 4.395534071150019E-013 + 7.45600000000000 4.395534071150019E-013 + 7.45700000000000 4.395534071150019E-013 + 7.45800000000000 4.395534071150019E-013 + 7.45900000000000 4.395534071150019E-013 + 7.46000000000000 4.395534071150019E-013 + 7.46100000000000 4.395534071150019E-013 + 7.46200000000000 4.395534071150019E-013 + 7.46300000000000 4.395534071150019E-013 + 7.46400000000000 4.395534071150019E-013 + 7.46500000000000 4.395534071150019E-013 + 7.46600000000000 4.395534071150019E-013 + 7.46700000000000 4.395534071150019E-013 + 7.46800000000000 4.395534071150019E-013 + 7.46900000000000 4.395534071150019E-013 + 7.47000000000000 4.395534071150019E-013 + 7.47100000000000 4.395534071150019E-013 + 7.47200000000000 4.395534071150019E-013 + 7.47300000000000 4.395534071150019E-013 + 7.47400000000000 4.395534071150019E-013 + 7.47500000000000 4.395534071150019E-013 + 7.47600000000000 4.395534071150019E-013 + 7.47700000000000 4.395534071150019E-013 + 7.47800000000000 4.395534071150019E-013 + 7.47900000000000 4.395534071150019E-013 + 7.48000000000000 4.395534071150019E-013 + 7.48100000000000 4.395534071150019E-013 + 7.48200000000000 4.395534071150019E-013 + 7.48300000000000 4.395534071150019E-013 + 7.48400000000000 4.395534071150019E-013 + 7.48500000000000 4.395534071150019E-013 + 7.48600000000000 4.395534071150019E-013 + 7.48700000000000 4.395534071150019E-013 + 7.48800000000000 4.395534071150019E-013 + 7.48900000000000 4.395534071150019E-013 + 7.49000000000000 4.395534071150019E-013 + 7.49100000000000 4.395534071150019E-013 + 7.49200000000000 4.395534071150019E-013 + 7.49300000000000 4.395534071150019E-013 + 7.49400000000000 4.395534071150019E-013 + 7.49500000000000 4.395534071150019E-013 + 7.49600000000000 4.395534071150019E-013 + 7.49700000000000 4.395534071150019E-013 + 7.49800000000000 4.395534071150019E-013 + 7.49900000000000 4.395534071150019E-013 + 7.50000000000000 4.395534071150019E-013 + 7.50100000000000 4.395534071150019E-013 + 7.50200000000000 4.395534071150019E-013 + 7.50300000000000 4.395534071150019E-013 + 7.50400000000000 4.395534071150019E-013 + 7.50500000000000 4.395534071150019E-013 + 7.50600000000000 4.395534071150019E-013 + 7.50700000000000 4.395534071150019E-013 + 7.50800000000000 4.395534071150019E-013 + 7.50900000000000 4.395534071150019E-013 + 7.51000000000000 4.395534071150019E-013 + 7.51100000000000 4.395534071150019E-013 + 7.51200000000000 4.395534071150019E-013 + 7.51300000000000 4.395534071150019E-013 + 7.51400000000000 4.395534071150019E-013 + 7.51500000000000 4.395534071150019E-013 + 7.51600000000000 4.395534071150019E-013 + 7.51700000000000 4.395534071150019E-013 + 7.51800000000000 4.395534071150019E-013 + 7.51900000000000 4.395534071150019E-013 + 7.52000000000000 4.395534071150019E-013 + 7.52100000000000 4.395534071150019E-013 + 7.52200000000000 4.395534071150019E-013 + 7.52300000000000 4.395534071150019E-013 + 7.52400000000000 4.395534071150019E-013 + 7.52500000000000 4.395534071150019E-013 + 7.52600000000000 4.395534071150019E-013 + 7.52700000000000 4.395534071150019E-013 + 7.52800000000000 4.395534071150019E-013 + 7.52900000000000 4.395534071150019E-013 + 7.53000000000000 4.395534071150019E-013 + 7.53100000000000 4.395534071150019E-013 + 7.53200000000000 4.395534071150019E-013 + 7.53300000000000 4.395534071150019E-013 + 7.53400000000000 4.395534071150019E-013 + 7.53500000000000 4.395534071150019E-013 + 7.53600000000000 4.395534071150019E-013 + 7.53700000000000 4.395534071150019E-013 + 7.53800000000000 4.395534071150019E-013 + 7.53900000000000 4.395534071150019E-013 + 7.54000000000000 4.395534071150019E-013 + 7.54100000000000 4.395534071150019E-013 + 7.54200000000000 4.395534071150019E-013 + 7.54300000000000 4.395534071150019E-013 + 7.54400000000000 4.395534071150019E-013 + 7.54500000000000 4.395534071150019E-013 + 7.54600000000000 4.395534071150019E-013 + 7.54700000000000 4.395534071150019E-013 + 7.54800000000000 4.395534071150019E-013 + 7.54900000000000 4.395534071150019E-013 + 7.55000000000000 4.395534071150019E-013 + 7.55100000000000 4.395534071150019E-013 + 7.55200000000000 4.395534071150019E-013 + 7.55300000000000 4.395534071150019E-013 + 7.55400000000000 4.395534071150019E-013 + 7.55500000000000 4.395534071150019E-013 + 7.55600000000000 4.395534071150019E-013 + 7.55700000000000 4.395534071150019E-013 + 7.55800000000000 4.395534071150019E-013 + 7.55900000000000 4.395534071150019E-013 + 7.56000000000000 4.395534071150019E-013 + 7.56100000000000 4.395534071150019E-013 + 7.56200000000000 4.395534071150019E-013 + 7.56300000000000 4.395534071150019E-013 + 7.56400000000000 4.395534071150019E-013 + 7.56500000000000 4.395534071150019E-013 + 7.56600000000000 4.395534071150019E-013 + 7.56700000000000 4.395534071150019E-013 + 7.56800000000000 4.395534071150019E-013 + 7.56900000000000 4.395534071150019E-013 + 7.57000000000000 4.395534071150019E-013 + 7.57100000000000 4.395534071150019E-013 + 7.57200000000000 4.395534071150019E-013 + 7.57300000000000 4.395534071150019E-013 + 7.57400000000000 4.395534071150019E-013 + 7.57500000000000 4.395534071150019E-013 + 7.57600000000000 4.395534071150019E-013 + 7.57700000000000 4.395534071150019E-013 + 7.57800000000000 4.395534071150019E-013 + 7.57900000000000 4.395534071150019E-013 + 7.58000000000000 4.395534071150019E-013 + 7.58100000000000 4.395534071150019E-013 + 7.58200000000000 4.395534071150019E-013 + 7.58300000000000 4.395534071150019E-013 + 7.58400000000000 4.395534071150019E-013 + 7.58500000000000 4.395534071150019E-013 + 7.58600000000000 4.395534071150019E-013 + 7.58700000000000 4.395534071150019E-013 + 7.58800000000000 4.395534071150019E-013 + 7.58900000000000 4.395534071150019E-013 + 7.59000000000000 4.395534071150019E-013 + 7.59100000000000 4.395534071150019E-013 + 7.59200000000000 4.395534071150019E-013 + 7.59300000000000 4.395534071150019E-013 + 7.59400000000000 4.395534071150019E-013 + 7.59500000000000 4.395534071150019E-013 + 7.59600000000000 4.395534071150019E-013 + 7.59700000000000 4.395534071150019E-013 + 7.59800000000000 4.395534071150019E-013 + 7.59900000000000 4.395534071150019E-013 + 7.60000000000000 4.395534071150019E-013 + 7.60100000000000 4.395534071150019E-013 + 7.60200000000000 4.395534071150019E-013 + 7.60300000000000 4.395534071150019E-013 + 7.60400000000000 4.395534071150019E-013 + 7.60500000000000 4.395534071150019E-013 + 7.60600000000000 4.395534071150019E-013 + 7.60700000000000 4.395534071150019E-013 + 7.60800000000000 4.395534071150019E-013 + 7.60900000000000 4.395534071150019E-013 + 7.61000000000000 4.395534071150019E-013 + 7.61100000000000 4.395534071150019E-013 + 7.61200000000000 4.395534071150019E-013 + 7.61300000000000 4.395534071150019E-013 + 7.61400000000000 4.395534071150019E-013 + 7.61500000000000 4.395534071150019E-013 + 7.61600000000000 4.395534071150019E-013 + 7.61700000000000 4.395534071150019E-013 + 7.61800000000000 4.395534071150019E-013 + 7.61900000000000 4.395534071150019E-013 + 7.62000000000000 4.395534071150019E-013 + 7.62100000000000 4.395534071150019E-013 + 7.62200000000000 4.395534071150019E-013 + 7.62300000000000 4.395534071150019E-013 + 7.62400000000000 4.395534071150019E-013 + 7.62500000000000 4.395534071150019E-013 + 7.62600000000000 4.395534071150019E-013 + 7.62700000000000 4.395534071150019E-013 + 7.62800000000000 4.395534071150019E-013 + 7.62900000000000 4.395534071150019E-013 + 7.63000000000000 4.395534071150019E-013 + 7.63100000000000 4.395534071150019E-013 + 7.63200000000000 4.395534071150019E-013 + 7.63300000000000 4.395534071150019E-013 + 7.63400000000000 4.395534071150019E-013 + 7.63500000000000 4.395534071150019E-013 + 7.63600000000000 4.395534071150019E-013 + 7.63700000000000 4.395534071150019E-013 + 7.63800000000000 4.395534071150019E-013 + 7.63900000000000 4.395534071150019E-013 + 7.64000000000000 4.395534071150019E-013 + 7.64100000000000 4.395534071150019E-013 + 7.64200000000000 4.395534071150019E-013 + 7.64300000000000 4.395534071150019E-013 + 7.64400000000000 4.395534071150019E-013 + 7.64500000000000 4.395534071150019E-013 + 7.64600000000000 4.395534071150019E-013 + 7.64700000000000 4.395534071150019E-013 + 7.64800000000000 4.395534071150019E-013 + 7.64900000000000 4.395534071150019E-013 + 7.65000000000000 4.395534071150019E-013 + 7.65100000000000 4.395534071150019E-013 + 7.65200000000000 4.395534071150019E-013 + 7.65300000000000 4.395534071150019E-013 + 7.65400000000000 4.395534071150019E-013 + 7.65500000000000 4.395534071150019E-013 + 7.65600000000000 4.395534071150019E-013 + 7.65700000000000 4.395534071150019E-013 + 7.65800000000000 4.395534071150019E-013 + 7.65900000000000 4.395534071150019E-013 + 7.66000000000000 4.395534071150019E-013 + 7.66100000000000 4.395534071150019E-013 + 7.66200000000000 4.395534071150019E-013 + 7.66300000000000 4.395534071150019E-013 + 7.66400000000000 4.395534071150019E-013 + 7.66500000000000 4.395534071150019E-013 + 7.66600000000000 4.395534071150019E-013 + 7.66700000000000 4.395534071150019E-013 + 7.66800000000000 4.395534071150019E-013 + 7.66900000000000 4.395534071150019E-013 + 7.67000000000000 4.395534071150019E-013 + 7.67100000000000 4.395534071150019E-013 + 7.67200000000000 4.395534071150019E-013 + 7.67300000000000 4.395534071150019E-013 + 7.67400000000000 4.395534071150019E-013 + 7.67500000000000 4.395534071150019E-013 + 7.67600000000000 4.395534071150019E-013 + 7.67700000000000 4.395534071150019E-013 + 7.67800000000000 4.395534071150019E-013 + 7.67900000000000 4.395534071150019E-013 + 7.68000000000000 4.395534071150019E-013 + 7.68100000000000 4.395534071150019E-013 + 7.68200000000000 4.395534071150019E-013 + 7.68300000000000 4.395534071150019E-013 + 7.68400000000000 4.395534071150019E-013 + 7.68500000000000 4.395534071150019E-013 + 7.68600000000000 4.395534071150019E-013 + 7.68700000000000 4.395534071150019E-013 + 7.68800000000000 4.395534071150019E-013 + 7.68900000000000 4.395534071150019E-013 + 7.69000000000000 4.395534071150019E-013 + 7.69100000000000 4.395534071150019E-013 + 7.69200000000000 4.395534071150019E-013 + 7.69300000000000 4.395534071150019E-013 + 7.69400000000000 4.395534071150019E-013 + 7.69500000000000 4.395534071150019E-013 + 7.69600000000000 4.395534071150019E-013 + 7.69700000000000 4.395534071150019E-013 + 7.69800000000000 4.395534071150019E-013 + 7.69900000000000 4.395534071150019E-013 + 7.70000000000000 4.395534071150019E-013 + 7.70100000000000 4.395534071150019E-013 + 7.70200000000000 4.395534071150019E-013 + 7.70300000000000 4.395534071150019E-013 + 7.70400000000000 4.395534071150019E-013 + 7.70500000000000 4.395534071150019E-013 + 7.70600000000000 4.395534071150019E-013 + 7.70700000000000 4.395534071150019E-013 + 7.70800000000000 4.395534071150019E-013 + 7.70900000000000 4.395534071150019E-013 + 7.71000000000000 4.395534071150019E-013 + 7.71100000000000 4.395534071150019E-013 + 7.71200000000000 4.395534071150019E-013 + 7.71300000000000 4.395534071150019E-013 + 7.71400000000000 4.395534071150019E-013 + 7.71500000000000 4.395534071150019E-013 + 7.71600000000000 4.395534071150019E-013 + 7.71700000000000 4.395534071150019E-013 + 7.71800000000000 4.395534071150019E-013 + 7.71900000000000 4.395534071150019E-013 + 7.72000000000000 4.395534071150019E-013 + 7.72100000000000 4.395534071150019E-013 + 7.72200000000000 4.395534071150019E-013 + 7.72300000000000 4.395534071150019E-013 + 7.72400000000000 4.395534071150019E-013 + 7.72500000000000 4.395534071150019E-013 + 7.72600000000000 4.395534071150019E-013 + 7.72700000000000 4.395534071150019E-013 + 7.72800000000000 4.395534071150019E-013 + 7.72900000000000 4.395534071150019E-013 + 7.73000000000000 4.395534071150019E-013 + 7.73100000000000 4.395534071150019E-013 + 7.73200000000000 4.395534071150019E-013 + 7.73300000000000 4.395534071150019E-013 + 7.73400000000000 4.395534071150019E-013 + 7.73500000000000 4.395534071150019E-013 + 7.73600000000000 4.395534071150019E-013 + 7.73700000000000 4.395534071150019E-013 + 7.73800000000000 4.395534071150019E-013 + 7.73900000000000 4.395534071150019E-013 + 7.74000000000000 4.395534071150019E-013 + 7.74100000000000 4.395534071150019E-013 + 7.74200000000000 4.395534071150019E-013 + 7.74300000000000 4.395534071150019E-013 + 7.74400000000000 4.395534071150019E-013 + 7.74500000000000 4.395534071150019E-013 + 7.74600000000000 4.395534071150019E-013 + 7.74700000000000 4.395534071150019E-013 + 7.74800000000000 4.395534071150019E-013 + 7.74900000000000 4.395534071150019E-013 + 7.75000000000000 4.395534071150019E-013 + 7.75100000000000 4.395534071150019E-013 + 7.75200000000000 4.395534071150019E-013 + 7.75300000000000 4.395534071150019E-013 + 7.75400000000000 4.395534071150019E-013 + 7.75500000000000 4.395534071150019E-013 + 7.75600000000000 4.395534071150019E-013 + 7.75700000000000 4.395534071150019E-013 + 7.75800000000000 4.395534071150019E-013 + 7.75900000000000 4.395534071150019E-013 + 7.76000000000000 4.395534071150019E-013 + 7.76100000000000 4.395534071150019E-013 + 7.76200000000000 4.395534071150019E-013 + 7.76300000000000 4.395534071150019E-013 + 7.76400000000000 4.395534071150019E-013 + 7.76500000000000 4.395534071150019E-013 + 7.76600000000000 4.395534071150019E-013 + 7.76700000000000 4.395534071150019E-013 + 7.76800000000000 4.395534071150019E-013 + 7.76900000000000 4.395534071150019E-013 + 7.77000000000000 4.395534071150019E-013 + 7.77100000000000 4.395534071150019E-013 + 7.77200000000000 4.395534071150019E-013 + 7.77300000000000 4.395534071150019E-013 + 7.77400000000000 4.395534071150019E-013 + 7.77500000000000 4.395534071150019E-013 + 7.77600000000000 4.395534071150019E-013 + 7.77700000000000 4.395534071150019E-013 + 7.77800000000000 4.395534071150019E-013 + 7.77900000000000 4.395534071150019E-013 + 7.78000000000000 4.395534071150019E-013 + 7.78100000000000 4.395534071150019E-013 + 7.78200000000000 4.395534071150019E-013 + 7.78300000000000 4.395534071150019E-013 + 7.78400000000000 4.395534071150019E-013 + 7.78500000000000 4.395534071150019E-013 + 7.78600000000000 4.395534071150019E-013 + 7.78700000000000 4.395534071150019E-013 + 7.78800000000000 4.395534071150019E-013 + 7.78900000000000 4.395534071150019E-013 + 7.79000000000000 4.395534071150019E-013 + 7.79100000000000 4.395534071150019E-013 + 7.79200000000000 4.395534071150019E-013 + 7.79300000000000 4.395534071150019E-013 + 7.79400000000000 4.395534071150019E-013 + 7.79500000000000 4.395534071150019E-013 + 7.79600000000000 4.395534071150019E-013 + 7.79700000000000 4.395534071150019E-013 + 7.79800000000000 4.395534071150019E-013 + 7.79900000000000 4.395534071150019E-013 + 7.80000000000000 4.395534071150019E-013 + 7.80100000000000 4.395534071150019E-013 + 7.80200000000000 4.395534071150019E-013 + 7.80300000000000 4.395534071150019E-013 + 7.80400000000000 4.395534071150019E-013 + 7.80500000000000 4.395534071150019E-013 + 7.80600000000000 4.395534071150019E-013 + 7.80700000000000 4.395534071150019E-013 + 7.80800000000000 4.395534071150019E-013 + 7.80900000000000 4.395534071150019E-013 + 7.81000000000000 4.395534071150019E-013 + 7.81100000000000 4.395534071150019E-013 + 7.81200000000000 4.395534071150019E-013 + 7.81300000000000 4.395534071150019E-013 + 7.81400000000000 4.395534071150019E-013 + 7.81500000000000 4.395534071150019E-013 + 7.81600000000000 4.395534071150019E-013 + 7.81700000000000 4.395534071150019E-013 + 7.81800000000000 4.395534071150019E-013 + 7.81900000000000 4.395534071150019E-013 + 7.82000000000000 4.395534071150019E-013 + 7.82100000000000 4.395534071150019E-013 + 7.82200000000000 4.395534071150019E-013 + 7.82300000000000 4.395534071150019E-013 + 7.82400000000000 4.395534071150019E-013 + 7.82500000000000 4.395534071150019E-013 + 7.82600000000000 4.395534071150019E-013 + 7.82700000000000 4.395534071150019E-013 + 7.82800000000000 4.395534071150019E-013 + 7.82900000000000 4.395534071150019E-013 + 7.83000000000000 4.395534071150019E-013 + 7.83100000000000 4.395534071150019E-013 + 7.83200000000000 4.395534071150019E-013 + 7.83300000000000 4.395534071150019E-013 + 7.83400000000000 4.395534071150019E-013 + 7.83500000000000 4.395534071150019E-013 + 7.83600000000000 4.395534071150019E-013 + 7.83700000000000 4.395534071150019E-013 + 7.83800000000000 4.395534071150019E-013 + 7.83900000000000 4.395534071150019E-013 + 7.84000000000000 4.395534071150019E-013 + 7.84100000000000 4.395534071150019E-013 + 7.84200000000000 4.395534071150019E-013 + 7.84300000000000 4.395534071150019E-013 + 7.84400000000000 4.395534071150019E-013 + 7.84500000000000 4.395534071150019E-013 + 7.84600000000000 4.395534071150019E-013 + 7.84700000000000 4.395534071150019E-013 + 7.84800000000000 4.395534071150019E-013 + 7.84900000000000 4.395534071150019E-013 + 7.85000000000000 4.395534071150019E-013 + 7.85100000000000 4.395534071150019E-013 + 7.85200000000000 4.395534071150019E-013 + 7.85300000000000 4.395534071150019E-013 + 7.85400000000000 4.395534071150019E-013 + 7.85500000000000 4.395534071150019E-013 + 7.85600000000000 4.395534071150019E-013 + 7.85700000000000 4.395534071150019E-013 + 7.85800000000000 4.395534071150019E-013 + 7.85900000000000 4.395534071150019E-013 + 7.86000000000000 4.395534071150019E-013 + 7.86100000000000 4.395534071150019E-013 + 7.86200000000000 4.395534071150019E-013 + 7.86300000000000 4.395534071150019E-013 + 7.86400000000000 4.395534071150019E-013 + 7.86500000000000 4.395534071150019E-013 + 7.86600000000000 4.395534071150019E-013 + 7.86700000000000 4.395534071150019E-013 + 7.86800000000000 4.395534071150019E-013 + 7.86900000000000 4.395534071150019E-013 + 7.87000000000000 4.395534071150019E-013 + 7.87100000000000 4.395534071150019E-013 + 7.87200000000000 4.395534071150019E-013 + 7.87300000000000 4.395534071150019E-013 + 7.87400000000000 4.395534071150019E-013 + 7.87500000000000 4.395534071150019E-013 + 7.87600000000000 4.395534071150019E-013 + 7.87700000000000 4.395534071150019E-013 + 7.87800000000000 4.395534071150019E-013 + 7.87900000000000 4.395534071150019E-013 + 7.88000000000000 4.395534071150019E-013 + 7.88100000000000 4.395534071150019E-013 + 7.88200000000000 4.395534071150019E-013 + 7.88300000000000 4.395534071150019E-013 + 7.88400000000000 4.395534071150019E-013 + 7.88500000000000 4.395534071150019E-013 + 7.88600000000000 4.395534071150019E-013 + 7.88700000000000 4.395534071150019E-013 + 7.88800000000000 4.395534071150019E-013 + 7.88900000000000 4.395534071150019E-013 + 7.89000000000000 4.395534071150019E-013 + 7.89100000000000 4.395534071150019E-013 + 7.89200000000000 4.395534071150019E-013 + 7.89300000000000 4.395534071150019E-013 + 7.89400000000000 4.395534071150019E-013 + 7.89500000000000 4.395534071150019E-013 + 7.89600000000000 4.395534071150019E-013 + 7.89700000000000 4.395534071150019E-013 + 7.89800000000000 4.395534071150019E-013 + 7.89900000000000 4.395534071150019E-013 + 7.90000000000000 4.395534071150019E-013 + 7.90100000000000 4.395534071150019E-013 + 7.90200000000000 4.395534071150019E-013 + 7.90300000000000 4.395534071150019E-013 + 7.90400000000000 4.395534071150019E-013 + 7.90500000000000 4.395534071150019E-013 + 7.90600000000000 4.395534071150019E-013 + 7.90700000000000 4.395534071150019E-013 + 7.90800000000000 4.395534071150019E-013 + 7.90900000000000 4.395534071150019E-013 + 7.91000000000000 4.395534071150019E-013 + 7.91100000000000 4.395534071150019E-013 + 7.91200000000000 4.395534071150019E-013 + 7.91300000000000 4.395534071150019E-013 + 7.91400000000000 4.395534071150019E-013 + 7.91500000000000 4.395534071150019E-013 + 7.91600000000000 4.395534071150019E-013 + 7.91700000000000 4.395534071150019E-013 + 7.91800000000000 4.395534071150019E-013 + 7.91900000000000 4.395534071150019E-013 + 7.92000000000000 4.395534071150019E-013 + 7.92100000000000 4.395534071150019E-013 + 7.92200000000000 4.395534071150019E-013 + 7.92300000000000 4.395534071150019E-013 + 7.92400000000000 4.395534071150019E-013 + 7.92500000000000 4.395534071150019E-013 + 7.92600000000000 4.395534071150019E-013 + 7.92700000000000 4.395534071150019E-013 + 7.92800000000000 4.395534071150019E-013 + 7.92900000000000 4.395534071150019E-013 + 7.93000000000000 4.395534071150019E-013 + 7.93100000000000 4.395534071150019E-013 + 7.93200000000000 4.395534071150019E-013 + 7.93300000000000 4.395534071150019E-013 + 7.93400000000000 4.395534071150019E-013 + 7.93500000000000 4.395534071150019E-013 + 7.93600000000000 4.395534071150019E-013 + 7.93700000000000 4.395534071150019E-013 + 7.93800000000000 4.395534071150019E-013 + 7.93900000000000 4.395534071150019E-013 + 7.94000000000000 4.395534071150019E-013 + 7.94100000000000 4.395534071150019E-013 + 7.94200000000000 4.395534071150019E-013 + 7.94300000000000 4.395534071150019E-013 + 7.94400000000000 4.395534071150019E-013 + 7.94500000000000 4.395534071150019E-013 + 7.94600000000000 4.395534071150019E-013 + 7.94700000000000 4.395534071150019E-013 + 7.94800000000000 4.395534071150019E-013 + 7.94900000000000 4.395534071150019E-013 + 7.95000000000000 4.395534071150019E-013 + 7.95100000000000 4.395534071150019E-013 + 7.95200000000000 4.395534071150019E-013 + 7.95300000000000 4.395534071150019E-013 + 7.95400000000000 4.395534071150019E-013 + 7.95500000000000 4.395534071150019E-013 + 7.95600000000000 4.395534071150019E-013 + 7.95700000000000 4.395534071150019E-013 + 7.95800000000000 4.395534071150019E-013 + 7.95900000000000 4.395534071150019E-013 + 7.96000000000000 4.395534071150019E-013 + 7.96100000000000 4.395534071150019E-013 + 7.96200000000000 4.395534071150019E-013 + 7.96300000000000 4.395534071150019E-013 + 7.96400000000000 4.395534071150019E-013 + 7.96500000000000 4.395534071150019E-013 + 7.96600000000000 4.395534071150019E-013 + 7.96700000000000 4.395534071150019E-013 + 7.96800000000000 4.395534071150019E-013 + 7.96900000000000 4.395534071150019E-013 + 7.97000000000000 4.395534071150019E-013 + 7.97100000000000 4.395534071150019E-013 + 7.97200000000000 4.395534071150019E-013 + 7.97300000000000 4.395534071150019E-013 + 7.97400000000000 4.395534071150019E-013 + 7.97500000000000 4.395534071150019E-013 + 7.97600000000000 4.395534071150019E-013 + 7.97700000000000 4.395534071150019E-013 + 7.97800000000000 4.395534071150019E-013 + 7.97900000000000 4.395534071150019E-013 + 7.98000000000000 4.395534071150019E-013 + 7.98100000000000 4.395534071150019E-013 + 7.98200000000000 4.395534071150019E-013 + 7.98300000000000 4.395534071150019E-013 + 7.98400000000000 4.395534071150019E-013 + 7.98500000000000 4.395534071150019E-013 + 7.98600000000000 4.395534071150019E-013 + 7.98700000000000 4.395534071150019E-013 + 7.98800000000000 4.395534071150019E-013 + 7.98900000000000 4.395534071150019E-013 + 7.99000000000000 4.395534071150019E-013 + 7.99100000000000 4.395534071150019E-013 + 7.99200000000000 4.395534071150019E-013 + 7.99300000000000 4.395534071150019E-013 + 7.99400000000000 4.395534071150019E-013 + 7.99500000000000 4.395534071150019E-013 + 7.99600000000000 4.395534071150019E-013 + 7.99700000000000 4.395534071150019E-013 + 7.99800000000000 4.395534071150019E-013 + 7.99900000000000 4.395534071150019E-013 + 8.00000000000000 4.395534071150019E-013 + 8.00100000000000 4.395534071150019E-013 + 8.00200000000000 4.395534071150019E-013 + 8.00300000000000 4.395534071150019E-013 + 8.00400000000000 4.395534071150019E-013 + 8.00500000000000 4.395534071150019E-013 + 8.00600000000000 4.395534071150019E-013 + 8.00700000000000 4.395534071150019E-013 + 8.00800000000000 4.395534071150019E-013 + 8.00900000000000 4.395534071150019E-013 + 8.01000000000000 4.395534071150019E-013 + 8.01100000000000 4.395534071150019E-013 + 8.01200000000000 4.395534071150019E-013 + 8.01300000000000 4.395534071150019E-013 + 8.01400000000000 4.395534071150019E-013 + 8.01500000000000 4.395534071150019E-013 + 8.01600000000000 4.395534071150019E-013 + 8.01700000000000 4.395534071150019E-013 + 8.01800000000000 4.395534071150019E-013 + 8.01900000000000 4.395534071150019E-013 + 8.02000000000000 4.395534071150019E-013 + 8.02100000000000 4.395534071150019E-013 + 8.02200000000000 4.395534071150019E-013 + 8.02300000000000 4.395534071150019E-013 + 8.02400000000000 4.395534071150019E-013 + 8.02500000000000 4.395534071150019E-013 + 8.02600000000000 4.395534071150019E-013 + 8.02700000000000 4.395534071150019E-013 + 8.02800000000000 4.395534071150019E-013 + 8.02900000000000 4.395534071150019E-013 + 8.03000000000000 4.395534071150019E-013 + 8.03100000000000 4.395534071150019E-013 + 8.03200000000000 4.395534071150019E-013 + 8.03300000000000 4.395534071150019E-013 + 8.03400000000000 4.395534071150019E-013 + 8.03500000000000 4.395534071150019E-013 + 8.03600000000000 4.395534071150019E-013 + 8.03700000000000 4.395534071150019E-013 + 8.03800000000000 4.395534071150019E-013 + 8.03900000000000 4.395534071150019E-013 + 8.04000000000000 4.395534071150019E-013 + 8.04100000000000 4.395534071150019E-013 + 8.04200000000000 4.395534071150019E-013 + 8.04300000000000 4.395534071150019E-013 + 8.04400000000000 4.395534071150019E-013 + 8.04500000000000 4.395534071150019E-013 + 8.04600000000000 4.395534071150019E-013 + 8.04700000000000 4.395534071150019E-013 + 8.04800000000000 4.395534071150019E-013 + 8.04900000000000 4.395534071150019E-013 + 8.05000000000000 4.395534071150019E-013 + 8.05100000000000 4.395534071150019E-013 + 8.05200000000000 4.395534071150019E-013 + 8.05300000000000 4.395534071150019E-013 + 8.05400000000000 4.395534071150019E-013 + 8.05500000000000 4.395534071150019E-013 + 8.05600000000000 4.395534071150019E-013 + 8.05700000000000 4.395534071150019E-013 + 8.05800000000000 4.395534071150019E-013 + 8.05900000000000 4.395534071150019E-013 + 8.06000000000000 4.395534071150019E-013 + 8.06100000000000 4.395534071150019E-013 + 8.06200000000000 4.395534071150019E-013 + 8.06300000000000 4.395534071150019E-013 + 8.06400000000000 4.395534071150019E-013 + 8.06500000000000 4.395534071150019E-013 + 8.06600000000000 4.395534071150019E-013 + 8.06700000000000 4.395534071150019E-013 + 8.06800000000000 4.395534071150019E-013 + 8.06900000000000 4.395534071150019E-013 + 8.07000000000000 4.395534071150019E-013 + 8.07100000000000 4.395534071150019E-013 + 8.07200000000000 4.395534071150019E-013 + 8.07300000000000 4.395534071150019E-013 + 8.07400000000000 4.395534071150019E-013 + 8.07500000000000 4.395534071150019E-013 + 8.07600000000000 4.395534071150019E-013 + 8.07700000000000 4.395534071150019E-013 + 8.07800000000000 4.395534071150019E-013 + 8.07900000000000 4.395534071150019E-013 + 8.08000000000000 4.395534071150019E-013 + 8.08100000000000 4.395534071150019E-013 + 8.08200000000000 4.395534071150019E-013 + 8.08300000000000 4.395534071150019E-013 + 8.08400000000000 4.395534071150019E-013 + 8.08500000000000 4.395534071150019E-013 + 8.08600000000000 4.395534071150019E-013 + 8.08700000000000 4.395534071150019E-013 + 8.08800000000000 4.395534071150019E-013 + 8.08900000000000 4.395534071150019E-013 + 8.09000000000000 4.395534071150019E-013 + 8.09100000000000 4.395534071150019E-013 + 8.09200000000000 4.395534071150019E-013 + 8.09300000000000 4.395534071150019E-013 + 8.09400000000000 4.395534071150019E-013 + 8.09500000000000 4.395534071150019E-013 + 8.09600000000000 4.395534071150019E-013 + 8.09700000000000 4.395534071150019E-013 + 8.09800000000000 4.395534071150019E-013 + 8.09900000000000 4.395534071150019E-013 + 8.10000000000000 4.395534071150019E-013 + 8.10100000000000 4.395534071150019E-013 + 8.10200000000000 4.395534071150019E-013 + 8.10300000000000 4.395534071150019E-013 + 8.10400000000000 4.395534071150019E-013 + 8.10500000000000 4.395534071150019E-013 + 8.10600000000000 4.395534071150019E-013 + 8.10700000000000 4.395534071150019E-013 + 8.10800000000000 4.395534071150019E-013 + 8.10900000000000 4.395534071150019E-013 + 8.11000000000000 4.395534071150019E-013 + 8.11100000000000 4.395534071150019E-013 + 8.11200000000000 4.395534071150019E-013 + 8.11300000000000 4.395534071150019E-013 + 8.11400000000000 4.395534071150019E-013 + 8.11500000000000 4.395534071150019E-013 + 8.11600000000000 4.395534071150019E-013 + 8.11700000000000 4.395534071150019E-013 + 8.11800000000000 4.395534071150019E-013 + 8.11900000000000 4.395534071150019E-013 + 8.12000000000000 4.395534071150019E-013 + 8.12100000000000 4.395534071150019E-013 + 8.12200000000000 4.395534071150019E-013 + 8.12300000000000 4.395534071150019E-013 + 8.12400000000000 4.395534071150019E-013 + 8.12500000000000 4.395534071150019E-013 + 8.12600000000000 4.395534071150019E-013 + 8.12700000000000 4.395534071150019E-013 + 8.12800000000000 4.395534071150019E-013 + 8.12900000000000 4.395534071150019E-013 + 8.13000000000000 4.395534071150019E-013 + 8.13100000000000 4.395534071150019E-013 + 8.13200000000000 4.395534071150019E-013 + 8.13300000000000 4.395534071150019E-013 + 8.13400000000000 4.395534071150019E-013 + 8.13500000000000 4.395534071150019E-013 + 8.13600000000000 4.395534071150019E-013 + 8.13700000000000 4.395534071150019E-013 + 8.13800000000000 4.395534071150019E-013 + 8.13900000000000 4.395534071150019E-013 + 8.14000000000000 4.395534071150019E-013 + 8.14100000000000 4.395534071150019E-013 + 8.14200000000000 4.395534071150019E-013 + 8.14300000000000 4.395534071150019E-013 + 8.14400000000000 4.395534071150019E-013 + 8.14500000000000 4.395534071150019E-013 + 8.14600000000000 4.395534071150019E-013 + 8.14700000000000 4.395534071150019E-013 + 8.14800000000000 4.395534071150019E-013 + 8.14900000000000 4.395534071150019E-013 + 8.15000000000000 4.395534071150019E-013 + 8.15100000000000 4.395534071150019E-013 + 8.15200000000000 4.395534071150019E-013 + 8.15300000000000 4.395534071150019E-013 + 8.15400000000000 4.395534071150019E-013 + 8.15500000000000 4.395534071150019E-013 + 8.15600000000000 4.395534071150019E-013 + 8.15700000000000 4.395534071150019E-013 + 8.15800000000000 4.395534071150019E-013 + 8.15900000000000 4.395534071150019E-013 + 8.16000000000000 4.395534071150019E-013 + 8.16100000000000 4.395534071150019E-013 + 8.16200000000000 4.395534071150019E-013 + 8.16300000000000 4.395534071150019E-013 + 8.16400000000000 4.395534071150019E-013 + 8.16500000000000 4.395534071150019E-013 + 8.16600000000000 4.395534071150019E-013 + 8.16700000000000 4.395534071150019E-013 + 8.16800000000000 4.395534071150019E-013 + 8.16900000000000 4.395534071150019E-013 + 8.17000000000000 4.395534071150019E-013 + 8.17100000000000 4.395534071150019E-013 + 8.17200000000000 4.395534071150019E-013 + 8.17300000000000 4.395534071150019E-013 + 8.17400000000000 4.395534071150019E-013 + 8.17500000000000 4.395534071150019E-013 + 8.17600000000000 4.395534071150019E-013 + 8.17700000000000 4.395534071150019E-013 + 8.17800000000000 4.395534071150019E-013 + 8.17900000000000 4.395534071150019E-013 + 8.18000000000000 4.395534071150019E-013 + 8.18100000000000 4.395534071150019E-013 + 8.18200000000000 4.395534071150019E-013 + 8.18300000000000 4.395534071150019E-013 + 8.18400000000000 4.395534071150019E-013 + 8.18500000000000 4.395534071150019E-013 + 8.18600000000000 4.395534071150019E-013 + 8.18700000000000 4.395534071150019E-013 + 8.18800000000000 4.395534071150019E-013 + 8.18900000000000 4.395534071150019E-013 + 8.19000000000000 4.395534071150019E-013 + 8.19100000000000 4.395534071150019E-013 + 8.19200000000000 4.395534071150019E-013 + 8.19300000000000 4.395534071150019E-013 + 8.19400000000000 4.395534071150019E-013 + 8.19500000000000 4.395534071150019E-013 + 8.19600000000000 4.395534071150019E-013 + 8.19700000000000 4.395534071150019E-013 + 8.19800000000000 4.395534071150019E-013 + 8.19900000000000 4.395534071150019E-013 + 8.20000000000000 4.395534071150019E-013 + 8.20100000000000 4.395534071150019E-013 + 8.20200000000000 4.395534071150019E-013 + 8.20300000000000 4.395534071150019E-013 + 8.20400000000000 4.395534071150019E-013 + 8.20500000000000 4.395534071150019E-013 + 8.20600000000000 4.395534071150019E-013 + 8.20700000000000 4.395534071150019E-013 + 8.20800000000000 4.395534071150019E-013 + 8.20900000000000 4.395534071150019E-013 + 8.21000000000000 4.395534071150019E-013 + 8.21100000000000 4.395534071150019E-013 + 8.21200000000000 4.395534071150019E-013 + 8.21300000000000 4.395534071150019E-013 + 8.21400000000000 4.395534071150019E-013 + 8.21500000000000 4.395534071150019E-013 + 8.21600000000000 4.395534071150019E-013 + 8.21700000000000 4.395534071150019E-013 + 8.21800000000000 4.395534071150019E-013 + 8.21900000000000 4.395534071150019E-013 + 8.22000000000000 4.395534071150019E-013 + 8.22100000000000 4.395534071150019E-013 + 8.22200000000000 4.395534071150019E-013 + 8.22300000000000 4.395534071150019E-013 + 8.22400000000000 4.395534071150019E-013 + 8.22500000000000 4.395534071150019E-013 + 8.22600000000000 4.395534071150019E-013 + 8.22700000000000 4.395534071150019E-013 + 8.22800000000000 4.395534071150019E-013 + 8.22900000000000 4.395534071150019E-013 + 8.23000000000000 4.395534071150019E-013 + 8.23100000000000 4.395534071150019E-013 + 8.23200000000000 4.395534071150019E-013 + 8.23300000000000 4.395534071150019E-013 + 8.23400000000000 4.395534071150019E-013 + 8.23500000000000 4.395534071150019E-013 + 8.23600000000000 4.395534071150019E-013 + 8.23700000000000 4.395534071150019E-013 + 8.23800000000000 4.395534071150019E-013 + 8.23900000000000 4.395534071150019E-013 + 8.24000000000000 4.395534071150019E-013 + 8.24100000000000 4.395534071150019E-013 + 8.24200000000000 4.395534071150019E-013 + 8.24300000000000 4.395534071150019E-013 + 8.24400000000000 4.395534071150019E-013 + 8.24500000000000 4.395534071150019E-013 + 8.24600000000000 4.395534071150019E-013 + 8.24700000000000 4.395534071150019E-013 + 8.24800000000000 4.395534071150019E-013 + 8.24900000000000 4.395534071150019E-013 + 8.25000000000000 4.395534071150019E-013 + 8.25100000000000 4.395534071150019E-013 + 8.25200000000000 4.395534071150019E-013 + 8.25300000000000 4.395534071150019E-013 + 8.25400000000000 4.395534071150019E-013 + 8.25500000000000 4.395534071150019E-013 + 8.25600000000000 4.395534071150019E-013 + 8.25700000000000 4.395534071150019E-013 + 8.25800000000000 4.395534071150019E-013 + 8.25900000000000 4.395534071150019E-013 + 8.26000000000000 4.395534071150019E-013 + 8.26100000000000 4.395534071150019E-013 + 8.26200000000000 4.395534071150019E-013 + 8.26300000000000 4.395534071150019E-013 + 8.26400000000000 4.395534071150019E-013 + 8.26500000000000 4.395534071150019E-013 + 8.26600000000000 4.395534071150019E-013 + 8.26700000000000 4.395534071150019E-013 + 8.26800000000000 4.395534071150019E-013 + 8.26900000000000 4.395534071150019E-013 + 8.27000000000000 4.395534071150019E-013 + 8.27100000000000 4.395534071150019E-013 + 8.27200000000000 4.395534071150019E-013 + 8.27300000000000 4.395534071150019E-013 + 8.27400000000000 4.395534071150019E-013 + 8.27500000000000 4.395534071150019E-013 + 8.27600000000000 4.395534071150019E-013 + 8.27700000000000 4.395534071150019E-013 + 8.27800000000000 4.395534071150019E-013 + 8.27900000000000 4.395534071150019E-013 + 8.28000000000000 4.395534071150019E-013 + 8.28100000000000 4.395534071150019E-013 + 8.28200000000000 4.395534071150019E-013 + 8.28300000000000 4.395534071150019E-013 + 8.28400000000000 4.395534071150019E-013 + 8.28500000000000 4.395534071150019E-013 + 8.28600000000000 4.395534071150019E-013 + 8.28700000000000 4.395534071150019E-013 + 8.28800000000000 4.395534071150019E-013 + 8.28900000000000 4.395534071150019E-013 + 8.29000000000000 4.395534071150019E-013 + 8.29100000000000 4.395534071150019E-013 + 8.29200000000000 4.395534071150019E-013 + 8.29300000000000 4.395534071150019E-013 + 8.29400000000000 4.395534071150019E-013 + 8.29500000000000 4.395534071150019E-013 + 8.29600000000000 4.395534071150019E-013 + 8.29700000000000 4.395534071150019E-013 + 8.29800000000000 4.395534071150019E-013 + 8.29900000000000 4.395534071150019E-013 + 8.30000000000000 4.395534071150019E-013 + 8.30100000000000 4.395534071150019E-013 + 8.30200000000000 4.395534071150019E-013 + 8.30300000000000 4.395534071150019E-013 + 8.30400000000000 4.395534071150019E-013 + 8.30500000000000 4.395534071150019E-013 + 8.30600000000000 4.395534071150019E-013 + 8.30700000000000 4.395534071150019E-013 + 8.30800000000000 4.395534071150019E-013 + 8.30900000000000 4.395534071150019E-013 + 8.31000000000000 4.395534071150019E-013 + 8.31100000000000 4.395534071150019E-013 + 8.31200000000000 4.395534071150019E-013 + 8.31300000000000 4.395534071150019E-013 + 8.31400000000000 4.395534071150019E-013 + 8.31500000000000 4.395534071150019E-013 + 8.31600000000000 4.395534071150019E-013 + 8.31700000000000 4.395534071150019E-013 + 8.31800000000000 4.395534071150019E-013 + 8.31900000000000 4.395534071150019E-013 + 8.32000000000000 4.395534071150019E-013 + 8.32100000000000 4.395534071150019E-013 + 8.32200000000000 4.395534071150019E-013 + 8.32300000000000 4.395534071150019E-013 + 8.32400000000000 4.395534071150019E-013 + 8.32500000000000 4.395534071150019E-013 + 8.32600000000000 4.395534071150019E-013 + 8.32700000000000 4.395534071150019E-013 + 8.32800000000000 4.395534071150019E-013 + 8.32900000000000 4.395534071150019E-013 + 8.33000000000000 4.395534071150019E-013 + 8.33100000000000 4.395534071150019E-013 + 8.33200000000000 4.395534071150019E-013 + 8.33300000000000 4.395534071150019E-013 + 8.33400000000000 4.395534071150019E-013 + 8.33500000000000 4.395534071150019E-013 + 8.33600000000000 4.395534071150019E-013 + 8.33700000000000 4.395534071150019E-013 + 8.33800000000000 4.395534071150019E-013 + 8.33900000000000 4.395534071150019E-013 + 8.34000000000000 4.395534071150019E-013 + 8.34100000000000 4.395534071150019E-013 + 8.34200000000000 4.395534071150019E-013 + 8.34300000000000 4.395534071150019E-013 + 8.34400000000000 4.395534071150019E-013 + 8.34500000000000 4.395534071150019E-013 + 8.34600000000000 4.395534071150019E-013 + 8.34700000000000 4.395534071150019E-013 + 8.34800000000000 4.395534071150019E-013 + 8.34900000000000 4.395534071150019E-013 + 8.35000000000000 4.395534071150019E-013 + 8.35100000000000 4.395534071150019E-013 + 8.35200000000000 4.395534071150019E-013 + 8.35300000000000 4.395534071150019E-013 + 8.35400000000000 4.395534071150019E-013 + 8.35500000000000 4.395534071150019E-013 + 8.35600000000000 4.395534071150019E-013 + 8.35700000000000 4.395534071150019E-013 + 8.35800000000000 4.395534071150019E-013 + 8.35900000000000 4.395534071150019E-013 + 8.36000000000000 4.395534071150019E-013 + 8.36100000000000 4.395534071150019E-013 + 8.36200000000000 4.395534071150019E-013 + 8.36300000000000 4.395534071150019E-013 + 8.36400000000000 4.395534071150019E-013 + 8.36500000000000 4.395534071150019E-013 + 8.36600000000000 4.395534071150019E-013 + 8.36700000000000 4.395534071150019E-013 + 8.36800000000000 4.395534071150019E-013 + 8.36900000000000 4.395534071150019E-013 + 8.37000000000000 4.395534071150019E-013 + 8.37100000000000 4.395534071150019E-013 + 8.37200000000000 4.395534071150019E-013 + 8.37300000000000 4.395534071150019E-013 + 8.37400000000000 4.395534071150019E-013 + 8.37500000000000 4.395534071150019E-013 + 8.37600000000000 4.395534071150019E-013 + 8.37700000000000 4.395534071150019E-013 + 8.37800000000000 4.395534071150019E-013 + 8.37900000000000 4.395534071150019E-013 + 8.38000000000000 4.395534071150019E-013 + 8.38100000000000 4.395534071150019E-013 + 8.38200000000000 4.395534071150019E-013 + 8.38300000000000 4.395534071150019E-013 + 8.38400000000000 4.395534071150019E-013 + 8.38500000000000 4.395534071150019E-013 + 8.38600000000000 4.395534071150019E-013 + 8.38700000000000 4.395534071150019E-013 + 8.38800000000000 4.395534071150019E-013 + 8.38900000000000 4.395534071150019E-013 + 8.39000000000000 4.395534071150019E-013 + 8.39100000000000 4.395534071150019E-013 + 8.39200000000000 4.395534071150019E-013 + 8.39300000000000 4.395534071150019E-013 + 8.39400000000000 4.395534071150019E-013 + 8.39500000000000 4.395534071150019E-013 + 8.39600000000000 4.395534071150019E-013 + 8.39700000000000 4.395534071150019E-013 + 8.39800000000000 4.395534071150019E-013 + 8.39900000000000 4.395534071150019E-013 + 8.40000000000000 4.395534071150019E-013 + 8.40100000000000 4.395534071150019E-013 + 8.40200000000000 4.395534071150019E-013 + 8.40300000000000 4.395534071150019E-013 + 8.40400000000000 4.395534071150019E-013 + 8.40500000000000 4.395534071150019E-013 + 8.40600000000000 4.395534071150019E-013 + 8.40700000000000 4.395534071150019E-013 + 8.40800000000000 4.395534071150019E-013 + 8.40900000000000 4.395534071150019E-013 + 8.41000000000000 4.395534071150019E-013 + 8.41100000000000 4.395534071150019E-013 + 8.41200000000000 4.395534071150019E-013 + 8.41300000000000 4.395534071150019E-013 + 8.41400000000000 4.395534071150019E-013 + 8.41500000000000 4.395534071150019E-013 + 8.41600000000000 4.395534071150019E-013 + 8.41700000000000 4.395534071150019E-013 + 8.41800000000000 4.395534071150019E-013 + 8.41900000000000 4.395534071150019E-013 + 8.42000000000000 4.395534071150019E-013 + 8.42100000000000 4.395534071150019E-013 + 8.42200000000000 4.395534071150019E-013 + 8.42300000000000 4.395534071150019E-013 + 8.42400000000000 4.395534071150019E-013 + 8.42500000000000 4.395534071150019E-013 + 8.42600000000000 4.395534071150019E-013 + 8.42700000000000 4.395534071150019E-013 + 8.42800000000000 4.395534071150019E-013 + 8.42900000000000 4.395534071150019E-013 + 8.43000000000000 4.395534071150019E-013 + 8.43100000000000 4.395534071150019E-013 + 8.43200000000000 4.395534071150019E-013 + 8.43300000000000 4.395534071150019E-013 + 8.43400000000000 4.395534071150019E-013 + 8.43500000000000 4.395534071150019E-013 + 8.43600000000000 4.395534071150019E-013 + 8.43700000000000 4.395534071150019E-013 + 8.43800000000000 4.395534071150019E-013 + 8.43900000000000 4.395534071150019E-013 + 8.44000000000000 4.395534071150019E-013 + 8.44100000000000 4.395534071150019E-013 + 8.44200000000000 4.395534071150019E-013 + 8.44300000000000 4.395534071150019E-013 + 8.44400000000000 4.395534071150019E-013 + 8.44500000000000 4.395534071150019E-013 + 8.44600000000000 4.395534071150019E-013 + 8.44700000000000 4.395534071150019E-013 + 8.44800000000000 4.395534071150019E-013 + 8.44900000000000 4.395534071150019E-013 + 8.45000000000000 4.395534071150019E-013 + 8.45100000000000 4.395534071150019E-013 + 8.45200000000000 4.395534071150019E-013 + 8.45300000000000 4.395534071150019E-013 + 8.45400000000000 4.395534071150019E-013 + 8.45500000000000 4.395534071150019E-013 + 8.45600000000000 4.395534071150019E-013 + 8.45700000000000 4.395534071150019E-013 + 8.45800000000000 4.395534071150019E-013 + 8.45900000000000 4.395534071150019E-013 + 8.46000000000000 4.395534071150019E-013 + 8.46100000000000 4.395534071150019E-013 + 8.46200000000000 4.395534071150019E-013 + 8.46300000000000 4.395534071150019E-013 + 8.46400000000000 4.395534071150019E-013 + 8.46500000000000 4.395534071150019E-013 + 8.46600000000000 4.395534071150019E-013 + 8.46700000000000 4.395534071150019E-013 + 8.46800000000000 4.395534071150019E-013 + 8.46900000000000 4.395534071150019E-013 + 8.47000000000000 4.395534071150019E-013 + 8.47100000000000 4.395534071150019E-013 + 8.47200000000000 4.395534071150019E-013 + 8.47300000000000 4.395534071150019E-013 + 8.47400000000000 4.395534071150019E-013 + 8.47500000000000 4.395534071150019E-013 + 8.47600000000000 4.395534071150019E-013 + 8.47700000000000 4.395534071150019E-013 + 8.47800000000000 4.395534071150019E-013 + 8.47900000000000 4.395534071150019E-013 + 8.48000000000000 4.395534071150019E-013 + 8.48100000000000 4.395534071150019E-013 + 8.48200000000000 4.395534071150019E-013 + 8.48300000000000 4.395534071150019E-013 + 8.48400000000000 4.395534071150019E-013 + 8.48500000000000 4.395534071150019E-013 + 8.48600000000000 4.395534071150019E-013 + 8.48700000000000 4.395534071150019E-013 + 8.48800000000000 4.395534071150019E-013 + 8.48900000000000 4.395534071150019E-013 + 8.49000000000000 4.395534071150019E-013 + 8.49100000000000 4.395534071150019E-013 + 8.49200000000000 4.395534071150019E-013 + 8.49300000000000 4.395534071150019E-013 + 8.49400000000000 4.395534071150019E-013 + 8.49500000000000 4.395534071150019E-013 + 8.49600000000000 4.395534071150019E-013 + 8.49700000000000 4.395534071150019E-013 + 8.49800000000000 4.395534071150019E-013 + 8.49900000000000 4.395534071150019E-013 + 8.50000000000000 4.395534071150019E-013 + 8.50100000000000 4.395534071150019E-013 + 8.50200000000000 4.395534071150019E-013 + 8.50300000000000 4.395534071150019E-013 + 8.50400000000000 4.395534071150019E-013 + 8.50500000000000 4.395534071150019E-013 + 8.50600000000000 4.395534071150019E-013 + 8.50700000000000 4.395534071150019E-013 + 8.50800000000000 4.395534071150019E-013 + 8.50900000000000 4.395534071150019E-013 + 8.51000000000000 4.395534071150019E-013 + 8.51100000000000 4.395534071150019E-013 + 8.51200000000000 4.395534071150019E-013 + 8.51300000000000 4.395534071150019E-013 + 8.51400000000000 4.395534071150019E-013 + 8.51500000000000 4.395534071150019E-013 + 8.51600000000000 4.395534071150019E-013 + 8.51700000000000 4.395534071150019E-013 + 8.51800000000000 4.395534071150019E-013 + 8.51900000000000 4.395534071150019E-013 + 8.52000000000000 4.395534071150019E-013 + 8.52100000000000 4.395534071150019E-013 + 8.52200000000000 4.395534071150019E-013 + 8.52300000000000 4.395534071150019E-013 + 8.52400000000000 4.395534071150019E-013 + 8.52500000000000 4.395534071150019E-013 + 8.52600000000000 4.395534071150019E-013 + 8.52700000000000 4.395534071150019E-013 + 8.52800000000000 4.395534071150019E-013 + 8.52900000000000 4.395534071150019E-013 + 8.53000000000000 4.395534071150019E-013 + 8.53100000000000 4.395534071150019E-013 + 8.53200000000000 4.395534071150019E-013 + 8.53300000000000 4.395534071150019E-013 + 8.53400000000000 4.395534071150019E-013 + 8.53500000000000 4.395534071150019E-013 + 8.53600000000000 4.395534071150019E-013 + 8.53700000000000 4.395534071150019E-013 + 8.53800000000000 4.395534071150019E-013 + 8.53900000000000 4.395534071150019E-013 + 8.54000000000000 4.395534071150019E-013 + 8.54100000000000 4.395534071150019E-013 + 8.54200000000000 4.395534071150019E-013 + 8.54300000000000 4.395534071150019E-013 + 8.54400000000000 4.395534071150019E-013 + 8.54500000000000 4.395534071150019E-013 + 8.54600000000000 4.395534071150019E-013 + 8.54700000000000 4.395534071150019E-013 + 8.54800000000000 4.395534071150019E-013 + 8.54900000000000 4.395534071150019E-013 + 8.55000000000000 4.395534071150019E-013 + 8.55100000000000 4.395534071150019E-013 + 8.55200000000000 4.395534071150019E-013 + 8.55300000000000 4.395534071150019E-013 + 8.55400000000000 4.395534071150019E-013 + 8.55500000000000 4.395534071150019E-013 + 8.55600000000000 4.395534071150019E-013 + 8.55700000000000 4.395534071150019E-013 + 8.55800000000000 4.395534071150019E-013 + 8.55900000000000 4.395534071150019E-013 + 8.56000000000000 4.395534071150019E-013 + 8.56100000000000 4.395534071150019E-013 + 8.56200000000000 4.395534071150019E-013 + 8.56300000000000 4.395534071150019E-013 + 8.56400000000000 4.395534071150019E-013 + 8.56500000000000 4.395534071150019E-013 + 8.56600000000000 4.395534071150019E-013 + 8.56700000000000 4.395534071150019E-013 + 8.56800000000000 4.395534071150019E-013 + 8.56900000000000 4.395534071150019E-013 + 8.57000000000000 4.395534071150019E-013 + 8.57100000000000 4.395534071150019E-013 + 8.57200000000000 4.395534071150019E-013 + 8.57300000000000 4.395534071150019E-013 + 8.57400000000000 4.395534071150019E-013 + 8.57500000000000 4.395534071150019E-013 + 8.57600000000000 4.395534071150019E-013 + 8.57700000000000 4.395534071150019E-013 + 8.57800000000000 4.395534071150019E-013 + 8.57900000000000 4.395534071150019E-013 + 8.58000000000000 4.395534071150019E-013 + 8.58100000000000 4.395534071150019E-013 + 8.58200000000000 4.395534071150019E-013 + 8.58300000000000 4.395534071150019E-013 + 8.58400000000000 4.395534071150019E-013 + 8.58500000000000 4.395534071150019E-013 + 8.58600000000000 4.395534071150019E-013 + 8.58700000000000 4.395534071150019E-013 + 8.58800000000000 4.395534071150019E-013 + 8.58900000000000 4.395534071150019E-013 + 8.59000000000000 4.395534071150019E-013 + 8.59100000000000 4.395534071150019E-013 + 8.59200000000000 4.395534071150019E-013 + 8.59300000000000 4.395534071150019E-013 + 8.59400000000000 4.395534071150019E-013 + 8.59500000000000 4.395534071150019E-013 + 8.59600000000000 4.395534071150019E-013 + 8.59700000000000 4.395534071150019E-013 + 8.59800000000000 4.395534071150019E-013 + 8.59900000000000 4.395534071150019E-013 + 8.60000000000000 4.395534071150019E-013 + 8.60100000000000 4.395534071150019E-013 + 8.60200000000000 4.395534071150019E-013 + 8.60300000000000 4.395534071150019E-013 + 8.60400000000000 4.395534071150019E-013 + 8.60500000000000 4.395534071150019E-013 + 8.60600000000000 4.395534071150019E-013 + 8.60700000000000 4.395534071150019E-013 + 8.60800000000000 4.395534071150019E-013 + 8.60900000000000 4.395534071150019E-013 + 8.61000000000000 4.395534071150019E-013 + 8.61100000000000 4.395534071150019E-013 + 8.61200000000000 4.395534071150019E-013 + 8.61300000000000 4.395534071150019E-013 + 8.61400000000000 4.395534071150019E-013 + 8.61500000000000 4.395534071150019E-013 + 8.61600000000000 4.395534071150019E-013 + 8.61700000000000 4.395534071150019E-013 + 8.61800000000000 4.395534071150019E-013 + 8.61900000000000 4.395534071150019E-013 + 8.62000000000000 4.395534071150019E-013 + 8.62100000000000 4.395534071150019E-013 + 8.62200000000000 4.395534071150019E-013 + 8.62300000000000 4.395534071150019E-013 + 8.62400000000000 4.395534071150019E-013 + 8.62500000000000 4.395534071150019E-013 + 8.62600000000000 4.395534071150019E-013 + 8.62700000000000 4.395534071150019E-013 + 8.62800000000000 4.395534071150019E-013 + 8.62900000000000 4.395534071150019E-013 + 8.63000000000000 4.395534071150019E-013 + 8.63100000000000 4.395534071150019E-013 + 8.63200000000000 4.395534071150019E-013 + 8.63300000000000 4.395534071150019E-013 + 8.63400000000000 4.395534071150019E-013 + 8.63500000000000 4.395534071150019E-013 + 8.63600000000000 4.395534071150019E-013 + 8.63700000000000 4.395534071150019E-013 + 8.63800000000000 4.395534071150019E-013 + 8.63900000000000 4.395534071150019E-013 + 8.64000000000000 4.395534071150019E-013 + 8.64100000000000 4.395534071150019E-013 + 8.64200000000000 4.395534071150019E-013 + 8.64300000000000 4.395534071150019E-013 + 8.64400000000000 4.395534071150019E-013 + 8.64500000000000 4.395534071150019E-013 + 8.64600000000000 4.395534071150019E-013 + 8.64700000000000 4.395534071150019E-013 + 8.64800000000000 4.395534071150019E-013 + 8.64900000000000 4.395534071150019E-013 + 8.65000000000000 4.395534071150019E-013 + 8.65100000000000 4.395534071150019E-013 + 8.65200000000000 4.395534071150019E-013 + 8.65300000000000 4.395534071150019E-013 + 8.65400000000000 4.395534071150019E-013 + 8.65500000000000 4.395534071150019E-013 + 8.65600000000000 4.395534071150019E-013 + 8.65700000000000 4.395534071150019E-013 + 8.65800000000000 4.395534071150019E-013 + 8.65900000000000 4.395534071150019E-013 + 8.66000000000000 4.395534071150019E-013 + 8.66100000000000 4.395534071150019E-013 + 8.66200000000000 4.395534071150019E-013 + 8.66300000000000 4.395534071150019E-013 + 8.66400000000000 4.395534071150019E-013 + 8.66500000000000 4.395534071150019E-013 + 8.66600000000000 4.395534071150019E-013 + 8.66700000000000 4.395534071150019E-013 + 8.66800000000000 4.395534071150019E-013 + 8.66900000000000 4.395534071150019E-013 + 8.67000000000000 4.395534071150019E-013 + 8.67100000000000 4.395534071150019E-013 + 8.67200000000000 4.395534071150019E-013 + 8.67300000000000 4.395534071150019E-013 + 8.67400000000000 4.395534071150019E-013 + 8.67500000000000 4.395534071150019E-013 + 8.67600000000000 4.395534071150019E-013 + 8.67700000000000 4.395534071150019E-013 + 8.67800000000000 4.395534071150019E-013 + 8.67900000000000 4.395534071150019E-013 + 8.68000000000000 4.395534071150019E-013 + 8.68100000000000 4.395534071150019E-013 + 8.68200000000000 4.395534071150019E-013 + 8.68300000000000 4.395534071150019E-013 + 8.68400000000000 4.395534071150019E-013 + 8.68500000000000 4.395534071150019E-013 + 8.68600000000000 4.395534071150019E-013 + 8.68700000000000 4.395534071150019E-013 + 8.68800000000000 4.395534071150019E-013 + 8.68900000000000 4.395534071150019E-013 + 8.69000000000000 4.395534071150019E-013 + 8.69100000000000 4.395534071150019E-013 + 8.69200000000000 4.395534071150019E-013 + 8.69300000000000 4.395534071150019E-013 + 8.69400000000000 4.395534071150019E-013 + 8.69500000000000 4.395534071150019E-013 + 8.69600000000000 4.395534071150019E-013 + 8.69700000000000 4.395534071150019E-013 + 8.69800000000000 4.395534071150019E-013 + 8.69900000000000 4.395534071150019E-013 + 8.70000000000000 4.395534071150019E-013 + 8.70100000000000 4.395534071150019E-013 + 8.70200000000000 4.395534071150019E-013 + 8.70300000000000 4.395534071150019E-013 + 8.70400000000000 4.395534071150019E-013 + 8.70500000000000 4.395534071150019E-013 + 8.70600000000000 4.395534071150019E-013 + 8.70700000000000 4.395534071150019E-013 + 8.70800000000000 4.395534071150019E-013 + 8.70900000000000 4.395534071150019E-013 + 8.71000000000000 4.395534071150019E-013 + 8.71100000000000 4.395534071150019E-013 + 8.71200000000000 4.395534071150019E-013 + 8.71300000000000 4.395534071150019E-013 + 8.71400000000000 4.395534071150019E-013 + 8.71500000000000 4.395534071150019E-013 + 8.71600000000000 4.395534071150019E-013 + 8.71700000000000 4.395534071150019E-013 + 8.71800000000000 4.395534071150019E-013 + 8.71900000000000 4.395534071150019E-013 + 8.72000000000000 4.395534071150019E-013 + 8.72100000000000 4.395534071150019E-013 + 8.72200000000000 4.395534071150019E-013 + 8.72300000000000 4.395534071150019E-013 + 8.72400000000000 4.395534071150019E-013 + 8.72500000000000 4.395534071150019E-013 + 8.72600000000000 4.395534071150019E-013 + 8.72700000000000 4.395534071150019E-013 + 8.72800000000000 4.395534071150019E-013 + 8.72900000000000 4.395534071150019E-013 + 8.73000000000000 4.395534071150019E-013 + 8.73100000000000 4.395534071150019E-013 + 8.73200000000000 4.395534071150019E-013 + 8.73300000000000 4.395534071150019E-013 + 8.73400000000000 4.395534071150019E-013 + 8.73500000000000 4.395534071150019E-013 + 8.73600000000000 4.395534071150019E-013 + 8.73700000000000 4.395534071150019E-013 + 8.73800000000000 4.395534071150019E-013 + 8.73900000000000 4.395534071150019E-013 + 8.74000000000000 4.395534071150019E-013 + 8.74100000000000 4.395534071150019E-013 + 8.74200000000000 4.395534071150019E-013 + 8.74300000000000 4.395534071150019E-013 + 8.74400000000000 4.395534071150019E-013 + 8.74500000000000 4.395534071150019E-013 + 8.74600000000000 4.395534071150019E-013 + 8.74700000000000 4.395534071150019E-013 + 8.74800000000000 4.395534071150019E-013 + 8.74900000000000 4.395534071150019E-013 + 8.75000000000000 4.395534071150019E-013 + 8.75100000000000 4.395534071150019E-013 + 8.75200000000000 4.395534071150019E-013 + 8.75300000000000 4.395534071150019E-013 + 8.75400000000000 4.395534071150019E-013 + 8.75500000000000 4.395534071150019E-013 + 8.75600000000000 4.395534071150019E-013 + 8.75700000000000 4.395534071150019E-013 + 8.75800000000000 4.395534071150019E-013 + 8.75900000000000 4.395534071150019E-013 + 8.76000000000000 4.395534071150019E-013 + 8.76100000000000 4.395534071150019E-013 + 8.76200000000000 4.395534071150019E-013 + 8.76300000000000 4.395534071150019E-013 + 8.76400000000000 4.395534071150019E-013 + 8.76500000000000 4.395534071150019E-013 + 8.76600000000000 4.395534071150019E-013 + 8.76700000000000 4.395534071150019E-013 + 8.76800000000000 4.395534071150019E-013 + 8.76900000000000 4.395534071150019E-013 + 8.77000000000000 4.395534071150019E-013 + 8.77100000000000 4.395534071150019E-013 + 8.77200000000000 4.395534071150019E-013 + 8.77300000000000 4.395534071150019E-013 + 8.77400000000000 4.395534071150019E-013 + 8.77500000000000 4.395534071150019E-013 + 8.77600000000000 4.395534071150019E-013 + 8.77700000000000 4.395534071150019E-013 + 8.77800000000000 4.395534071150019E-013 + 8.77900000000000 4.395534071150019E-013 + 8.78000000000000 4.395534071150019E-013 + 8.78100000000000 4.395534071150019E-013 + 8.78200000000000 4.395534071150019E-013 + 8.78300000000000 4.395534071150019E-013 + 8.78400000000000 4.395534071150019E-013 + 8.78500000000000 4.395534071150019E-013 + 8.78600000000000 4.395534071150019E-013 + 8.78700000000000 4.395534071150019E-013 + 8.78800000000000 4.395534071150019E-013 + 8.78900000000000 4.395534071150019E-013 + 8.79000000000000 4.395534071150019E-013 + 8.79100000000000 4.395534071150019E-013 + 8.79200000000000 4.395534071150019E-013 + 8.79300000000000 4.395534071150019E-013 + 8.79400000000000 4.395534071150019E-013 + 8.79500000000000 4.395534071150019E-013 + 8.79600000000000 4.395534071150019E-013 + 8.79700000000000 4.395534071150019E-013 + 8.79800000000000 4.395534071150019E-013 + 8.79900000000000 4.395534071150019E-013 + 8.80000000000000 4.395534071150019E-013 + 8.80100000000000 4.395534071150019E-013 + 8.80200000000000 4.395534071150019E-013 + 8.80300000000000 4.395534071150019E-013 + 8.80400000000000 4.395534071150019E-013 + 8.80500000000000 4.395534071150019E-013 + 8.80600000000000 4.395534071150019E-013 + 8.80700000000000 4.395534071150019E-013 + 8.80800000000000 4.395534071150019E-013 + 8.80900000000000 4.395534071150019E-013 + 8.81000000000000 4.395534071150019E-013 + 8.81100000000000 4.395534071150019E-013 + 8.81200000000000 4.395534071150019E-013 + 8.81300000000000 4.395534071150019E-013 + 8.81400000000000 4.395534071150019E-013 + 8.81500000000000 4.395534071150019E-013 + 8.81600000000000 4.395534071150019E-013 + 8.81700000000000 4.395534071150019E-013 + 8.81800000000000 4.395534071150019E-013 + 8.81900000000000 4.395534071150019E-013 + 8.82000000000000 4.395534071150019E-013 + 8.82100000000000 4.395534071150019E-013 + 8.82200000000000 4.395534071150019E-013 + 8.82300000000000 4.395534071150019E-013 + 8.82400000000000 4.395534071150019E-013 + 8.82500000000000 4.395534071150019E-013 + 8.82600000000000 4.395534071150019E-013 + 8.82700000000000 4.395534071150019E-013 + 8.82800000000000 4.395534071150019E-013 + 8.82900000000000 4.395534071150019E-013 + 8.83000000000000 4.395534071150019E-013 + 8.83100000000000 4.395534071150019E-013 + 8.83200000000000 4.395534071150019E-013 + 8.83300000000000 4.395534071150019E-013 + 8.83400000000000 4.395534071150019E-013 + 8.83500000000000 4.395534071150019E-013 + 8.83600000000000 4.395534071150019E-013 + 8.83700000000000 4.395534071150019E-013 + 8.83800000000000 4.395534071150019E-013 + 8.83900000000000 4.395534071150019E-013 + 8.84000000000000 4.395534071150019E-013 + 8.84100000000000 4.395534071150019E-013 + 8.84200000000000 4.395534071150019E-013 + 8.84300000000000 4.395534071150019E-013 + 8.84400000000000 4.395534071150019E-013 + 8.84500000000000 4.395534071150019E-013 + 8.84600000000000 4.395534071150019E-013 + 8.84700000000000 4.395534071150019E-013 + 8.84800000000000 4.395534071150019E-013 + 8.84900000000000 4.395534071150019E-013 + 8.85000000000000 4.395534071150019E-013 + 8.85100000000000 4.395534071150019E-013 + 8.85200000000000 4.395534071150019E-013 + 8.85300000000000 4.395534071150019E-013 + 8.85400000000000 4.395534071150019E-013 + 8.85500000000000 4.395534071150019E-013 + 8.85600000000000 4.395534071150019E-013 + 8.85700000000000 4.395534071150019E-013 + 8.85800000000000 4.395534071150019E-013 + 8.85900000000000 4.395534071150019E-013 + 8.86000000000000 4.395534071150019E-013 + 8.86100000000000 4.395534071150019E-013 + 8.86200000000000 4.395534071150019E-013 + 8.86300000000000 4.395534071150019E-013 + 8.86400000000000 4.395534071150019E-013 + 8.86500000000000 4.395534071150019E-013 + 8.86600000000000 4.395534071150019E-013 + 8.86700000000000 4.395534071150019E-013 + 8.86800000000000 4.395534071150019E-013 + 8.86900000000000 4.395534071150019E-013 + 8.87000000000000 4.395534071150019E-013 + 8.87100000000000 4.395534071150019E-013 + 8.87200000000000 4.395534071150019E-013 + 8.87300000000000 4.395534071150019E-013 + 8.87400000000000 4.395534071150019E-013 + 8.87500000000000 4.395534071150019E-013 + 8.87600000000000 4.395534071150019E-013 + 8.87700000000000 4.395534071150019E-013 + 8.87800000000000 4.395534071150019E-013 + 8.87900000000000 4.395534071150019E-013 + 8.88000000000000 4.395534071150019E-013 + 8.88100000000000 4.395534071150019E-013 + 8.88200000000000 4.395534071150019E-013 + 8.88300000000000 4.395534071150019E-013 + 8.88400000000000 4.395534071150019E-013 + 8.88500000000000 4.395534071150019E-013 + 8.88600000000000 4.395534071150019E-013 + 8.88700000000000 4.395534071150019E-013 + 8.88800000000000 4.395534071150019E-013 + 8.88900000000000 4.395534071150019E-013 + 8.89000000000000 4.395534071150019E-013 + 8.89100000000000 4.395534071150019E-013 + 8.89200000000000 4.395534071150019E-013 + 8.89300000000000 4.395534071150019E-013 + 8.89400000000000 4.395534071150019E-013 + 8.89500000000000 4.395534071150019E-013 + 8.89600000000000 4.395534071150019E-013 + 8.89700000000000 4.395534071150019E-013 + 8.89800000000000 4.395534071150019E-013 + 8.89900000000000 4.395534071150019E-013 + 8.90000000000000 4.395534071150019E-013 + 8.90100000000000 4.395534071150019E-013 + 8.90200000000000 4.395534071150019E-013 + 8.90300000000000 4.395534071150019E-013 + 8.90400000000000 4.395534071150019E-013 + 8.90500000000000 4.395534071150019E-013 + 8.90600000000000 4.395534071150019E-013 + 8.90700000000000 4.395534071150019E-013 + 8.90800000000000 4.395534071150019E-013 + 8.90900000000000 4.395534071150019E-013 + 8.91000000000000 4.395534071150019E-013 + 8.91100000000000 4.395534071150019E-013 + 8.91200000000000 4.395534071150019E-013 + 8.91300000000000 4.395534071150019E-013 + 8.91400000000000 4.395534071150019E-013 + 8.91500000000000 4.395534071150019E-013 + 8.91600000000000 4.395534071150019E-013 + 8.91700000000000 4.395534071150019E-013 + 8.91800000000000 4.395534071150019E-013 + 8.91900000000000 4.395534071150019E-013 + 8.92000000000000 4.395534071150019E-013 + 8.92100000000000 4.395534071150019E-013 + 8.92200000000000 4.395534071150019E-013 + 8.92300000000000 4.395534071150019E-013 + 8.92400000000000 4.395534071150019E-013 + 8.92500000000000 4.395534071150019E-013 + 8.92600000000000 4.395534071150019E-013 + 8.92700000000000 4.395534071150019E-013 + 8.92800000000000 4.395534071150019E-013 + 8.92900000000000 4.395534071150019E-013 + 8.93000000000000 4.395534071150019E-013 + 8.93100000000000 4.395534071150019E-013 + 8.93200000000000 4.395534071150019E-013 + 8.93300000000000 4.395534071150019E-013 + 8.93400000000000 4.395534071150019E-013 + 8.93500000000000 4.395534071150019E-013 + 8.93600000000000 4.395534071150019E-013 + 8.93700000000000 4.395534071150019E-013 + 8.93800000000000 4.395534071150019E-013 + 8.93900000000000 4.395534071150019E-013 + 8.94000000000000 4.395534071150019E-013 + 8.94100000000000 4.395534071150019E-013 + 8.94200000000000 4.395534071150019E-013 + 8.94300000000000 4.395534071150019E-013 + 8.94400000000000 4.395534071150019E-013 + 8.94500000000000 4.395534071150019E-013 + 8.94600000000000 4.395534071150019E-013 + 8.94700000000000 4.395534071150019E-013 + 8.94800000000000 4.395534071150019E-013 + 8.94900000000000 4.395534071150019E-013 + 8.95000000000000 4.395534071150019E-013 + 8.95100000000000 4.395534071150019E-013 + 8.95200000000000 4.395534071150019E-013 + 8.95300000000000 4.395534071150019E-013 + 8.95400000000000 4.395534071150019E-013 + 8.95500000000000 4.395534071150019E-013 + 8.95600000000000 4.395534071150019E-013 + 8.95700000000000 4.395534071150019E-013 + 8.95800000000000 4.395534071150019E-013 + 8.95900000000000 4.395534071150019E-013 + 8.96000000000000 4.395534071150019E-013 + 8.96100000000000 4.395534071150019E-013 + 8.96200000000000 4.395534071150019E-013 + 8.96300000000000 4.395534071150019E-013 + 8.96400000000000 4.395534071150019E-013 + 8.96500000000000 4.395534071150019E-013 + 8.96600000000000 4.395534071150019E-013 + 8.96700000000000 4.395534071150019E-013 + 8.96800000000000 4.395534071150019E-013 + 8.96900000000000 4.395534071150019E-013 + 8.97000000000000 4.395534071150019E-013 + 8.97100000000000 4.395534071150019E-013 + 8.97200000000000 4.395534071150019E-013 + 8.97300000000000 4.395534071150019E-013 + 8.97400000000000 4.395534071150019E-013 + 8.97500000000000 4.395534071150019E-013 + 8.97600000000000 4.395534071150019E-013 + 8.97700000000000 4.395534071150019E-013 + 8.97800000000000 4.395534071150019E-013 + 8.97900000000000 4.395534071150019E-013 + 8.98000000000000 4.395534071150019E-013 + 8.98100000000000 4.395534071150019E-013 + 8.98200000000000 4.395534071150019E-013 + 8.98300000000000 4.395534071150019E-013 + 8.98400000000000 4.395534071150019E-013 + 8.98500000000000 4.395534071150019E-013 + 8.98600000000000 4.395534071150019E-013 + 8.98700000000000 4.395534071150019E-013 + 8.98800000000000 4.395534071150019E-013 + 8.98900000000000 4.395534071150019E-013 + 8.99000000000000 4.395534071150019E-013 + 8.99100000000000 4.395534071150019E-013 + 8.99200000000000 4.395534071150019E-013 + 8.99300000000000 4.395534071150019E-013 + 8.99400000000000 4.395534071150019E-013 + 8.99500000000000 4.395534071150019E-013 + 8.99600000000000 4.395534071150019E-013 + 8.99700000000000 4.395534071150019E-013 + 8.99800000000000 4.395534071150019E-013 + 8.99900000000000 4.395534071150019E-013 + 9.00000000000000 4.395534071150019E-013 + 9.00100000000000 4.395534071150019E-013 + 9.00200000000000 4.395534071150019E-013 + 9.00300000000000 4.395534071150019E-013 + 9.00400000000000 4.395534071150019E-013 + 9.00500000000000 4.395534071150019E-013 + 9.00600000000000 4.395534071150019E-013 + 9.00700000000000 4.395534071150019E-013 + 9.00800000000000 4.395534071150019E-013 + 9.00900000000000 4.395534071150019E-013 + 9.01000000000000 4.395534071150019E-013 + 9.01100000000000 4.395534071150019E-013 + 9.01200000000000 4.395534071150019E-013 + 9.01300000000000 4.395534071150019E-013 + 9.01400000000000 4.395534071150019E-013 + 9.01500000000000 4.395534071150019E-013 + 9.01600000000000 4.395534071150019E-013 + 9.01700000000000 4.395534071150019E-013 + 9.01800000000000 4.395534071150019E-013 + 9.01900000000000 4.395534071150019E-013 + 9.02000000000000 4.395534071150019E-013 + 9.02100000000000 4.395534071150019E-013 + 9.02200000000000 4.395534071150019E-013 + 9.02300000000000 4.395534071150019E-013 + 9.02400000000000 4.395534071150019E-013 + 9.02500000000000 4.395534071150019E-013 + 9.02600000000000 4.395534071150019E-013 + 9.02700000000000 4.395534071150019E-013 + 9.02800000000000 4.395534071150019E-013 + 9.02900000000000 4.395534071150019E-013 + 9.03000000000000 4.395534071150019E-013 + 9.03100000000000 4.395534071150019E-013 + 9.03200000000000 4.395534071150019E-013 + 9.03300000000000 4.395534071150019E-013 + 9.03400000000000 4.395534071150019E-013 + 9.03500000000000 4.395534071150019E-013 + 9.03600000000000 4.395534071150019E-013 + 9.03700000000000 4.395534071150019E-013 + 9.03800000000000 4.395534071150019E-013 + 9.03900000000000 4.395534071150019E-013 + 9.04000000000000 4.395534071150019E-013 + 9.04100000000000 4.395534071150019E-013 + 9.04200000000000 4.395534071150019E-013 + 9.04300000000000 4.395534071150019E-013 + 9.04400000000000 4.395534071150019E-013 + 9.04500000000000 4.395534071150019E-013 + 9.04600000000000 4.395534071150019E-013 + 9.04700000000000 4.395534071150019E-013 + 9.04800000000000 4.395534071150019E-013 + 9.04900000000000 4.395534071150019E-013 + 9.05000000000000 4.395534071150019E-013 + 9.05100000000000 4.395534071150019E-013 + 9.05200000000000 4.395534071150019E-013 + 9.05300000000000 4.395534071150019E-013 + 9.05400000000000 4.395534071150019E-013 + 9.05500000000000 4.395534071150019E-013 + 9.05600000000000 4.395534071150019E-013 + 9.05700000000000 4.395534071150019E-013 + 9.05800000000000 4.395534071150019E-013 + 9.05900000000000 4.395534071150019E-013 + 9.06000000000000 4.395534071150019E-013 + 9.06100000000000 4.395534071150019E-013 + 9.06200000000000 4.395534071150019E-013 + 9.06300000000000 4.395534071150019E-013 + 9.06400000000000 4.395534071150019E-013 + 9.06500000000000 4.395534071150019E-013 + 9.06600000000000 4.395534071150019E-013 + 9.06700000000000 4.395534071150019E-013 + 9.06800000000000 4.395534071150019E-013 + 9.06900000000000 4.395534071150019E-013 + 9.07000000000000 4.395534071150019E-013 + 9.07100000000000 4.395534071150019E-013 + 9.07200000000000 4.395534071150019E-013 + 9.07300000000000 4.395534071150019E-013 + 9.07400000000000 4.395534071150019E-013 + 9.07500000000000 4.395534071150019E-013 + 9.07600000000000 4.395534071150019E-013 + 9.07700000000000 4.395534071150019E-013 + 9.07800000000000 4.395534071150019E-013 + 9.07900000000000 4.395534071150019E-013 + 9.08000000000000 4.395534071150019E-013 + 9.08100000000000 4.395534071150019E-013 + 9.08200000000000 4.395534071150019E-013 + 9.08300000000000 4.395534071150019E-013 + 9.08400000000000 4.395534071150019E-013 + 9.08500000000000 4.395534071150019E-013 + 9.08600000000000 4.395534071150019E-013 + 9.08700000000000 4.395534071150019E-013 + 9.08800000000000 4.395534071150019E-013 + 9.08900000000000 4.395534071150019E-013 + 9.09000000000000 4.395534071150019E-013 + 9.09100000000000 4.395534071150019E-013 + 9.09200000000000 4.395534071150019E-013 + 9.09300000000000 4.395534071150019E-013 + 9.09400000000000 4.395534071150019E-013 + 9.09500000000000 4.395534071150019E-013 + 9.09600000000000 4.395534071150019E-013 + 9.09700000000000 4.395534071150019E-013 + 9.09800000000000 4.395534071150019E-013 + 9.09900000000000 4.395534071150019E-013 + 9.10000000000000 4.395534071150019E-013 + 9.10100000000000 4.395534071150019E-013 + 9.10200000000000 4.395534071150019E-013 + 9.10300000000000 4.395534071150019E-013 + 9.10400000000000 4.395534071150019E-013 + 9.10500000000000 4.395534071150019E-013 + 9.10600000000000 4.395534071150019E-013 + 9.10700000000000 4.395534071150019E-013 + 9.10800000000000 4.395534071150019E-013 + 9.10900000000000 4.395534071150019E-013 + 9.11000000000000 4.395534071150019E-013 + 9.11100000000000 4.395534071150019E-013 + 9.11200000000000 4.395534071150019E-013 + 9.11300000000000 4.395534071150019E-013 + 9.11400000000000 4.395534071150019E-013 + 9.11500000000000 4.395534071150019E-013 + 9.11600000000000 4.395534071150019E-013 + 9.11700000000000 4.395534071150019E-013 + 9.11800000000000 4.395534071150019E-013 + 9.11900000000000 4.395534071150019E-013 + 9.12000000000000 4.395534071150019E-013 + 9.12100000000000 4.395534071150019E-013 + 9.12200000000000 4.395534071150019E-013 + 9.12300000000000 4.395534071150019E-013 + 9.12400000000000 4.395534071150019E-013 + 9.12500000000000 4.395534071150019E-013 + 9.12600000000000 4.395534071150019E-013 + 9.12700000000000 4.395534071150019E-013 + 9.12800000000000 4.395534071150019E-013 + 9.12900000000000 4.395534071150019E-013 + 9.13000000000000 4.395534071150019E-013 + 9.13100000000000 4.395534071150019E-013 + 9.13200000000000 4.395534071150019E-013 + 9.13300000000000 4.395534071150019E-013 + 9.13400000000000 4.395534071150019E-013 + 9.13500000000000 4.395534071150019E-013 + 9.13600000000000 4.395534071150019E-013 + 9.13700000000000 4.395534071150019E-013 + 9.13800000000000 4.395534071150019E-013 + 9.13900000000000 4.395534071150019E-013 + 9.14000000000000 4.395534071150019E-013 + 9.14100000000000 4.395534071150019E-013 + 9.14200000000000 4.395534071150019E-013 + 9.14300000000000 4.395534071150019E-013 + 9.14400000000000 4.395534071150019E-013 + 9.14500000000000 4.395534071150019E-013 + 9.14600000000000 4.395534071150019E-013 + 9.14700000000000 4.395534071150019E-013 + 9.14800000000000 4.395534071150019E-013 + 9.14900000000000 4.395534071150019E-013 + 9.15000000000000 4.395534071150019E-013 + 9.15100000000000 4.395534071150019E-013 + 9.15200000000000 4.395534071150019E-013 + 9.15300000000000 4.395534071150019E-013 + 9.15400000000000 4.395534071150019E-013 + 9.15500000000000 4.395534071150019E-013 + 9.15600000000000 4.395534071150019E-013 + 9.15700000000000 4.395534071150019E-013 + 9.15800000000000 4.395534071150019E-013 + 9.15900000000000 4.395534071150019E-013 + 9.16000000000000 4.395534071150019E-013 + 9.16100000000000 4.395534071150019E-013 + 9.16200000000000 4.395534071150019E-013 + 9.16300000000000 4.395534071150019E-013 + 9.16400000000000 4.395534071150019E-013 + 9.16500000000000 4.395534071150019E-013 + 9.16600000000000 4.395534071150019E-013 + 9.16700000000000 4.395534071150019E-013 + 9.16800000000000 4.395534071150019E-013 + 9.16900000000000 4.395534071150019E-013 + 9.17000000000000 4.395534071150019E-013 + 9.17100000000000 4.395534071150019E-013 + 9.17200000000000 4.395534071150019E-013 + 9.17300000000000 4.395534071150019E-013 + 9.17400000000000 4.395534071150019E-013 + 9.17500000000000 4.395534071150019E-013 + 9.17600000000000 4.395534071150019E-013 + 9.17700000000000 4.395534071150019E-013 + 9.17800000000000 4.395534071150019E-013 + 9.17900000000000 4.395534071150019E-013 + 9.18000000000000 4.395534071150019E-013 + 9.18100000000000 4.395534071150019E-013 + 9.18200000000000 4.395534071150019E-013 + 9.18300000000000 4.395534071150019E-013 + 9.18400000000000 4.395534071150019E-013 + 9.18500000000000 4.395534071150019E-013 + 9.18600000000000 4.395534071150019E-013 + 9.18700000000000 4.395534071150019E-013 + 9.18800000000000 4.395534071150019E-013 + 9.18900000000000 4.395534071150019E-013 + 9.19000000000000 4.395534071150019E-013 + 9.19100000000000 4.395534071150019E-013 + 9.19200000000000 4.395534071150019E-013 + 9.19300000000000 4.395534071150019E-013 + 9.19400000000000 4.395534071150019E-013 + 9.19500000000000 4.395534071150019E-013 + 9.19600000000000 4.395534071150019E-013 + 9.19700000000000 4.395534071150019E-013 + 9.19800000000000 4.395534071150019E-013 + 9.19900000000000 4.395534071150019E-013 + 9.20000000000000 4.395534071150019E-013 + 9.20100000000000 4.395534071150019E-013 + 9.20200000000000 4.395534071150019E-013 + 9.20300000000000 4.395534071150019E-013 + 9.20400000000000 4.395534071150019E-013 + 9.20500000000000 4.395534071150019E-013 + 9.20600000000000 4.395534071150019E-013 + 9.20700000000000 4.395534071150019E-013 + 9.20800000000000 4.395534071150019E-013 + 9.20900000000000 4.395534071150019E-013 + 9.21000000000000 4.395534071150019E-013 + 9.21100000000000 4.395534071150019E-013 + 9.21200000000000 4.395534071150019E-013 + 9.21300000000000 4.395534071150019E-013 + 9.21400000000000 4.395534071150019E-013 + 9.21500000000000 4.395534071150019E-013 + 9.21600000000000 4.395534071150019E-013 + 9.21700000000000 4.395534071150019E-013 + 9.21800000000000 4.395534071150019E-013 + 9.21900000000000 4.395534071150019E-013 + 9.22000000000000 4.395534071150019E-013 + 9.22100000000000 4.395534071150019E-013 + 9.22200000000000 4.395534071150019E-013 + 9.22300000000000 4.395534071150019E-013 + 9.22400000000000 4.395534071150019E-013 + 9.22500000000000 4.395534071150019E-013 + 9.22600000000000 4.395534071150019E-013 + 9.22700000000000 4.395534071150019E-013 + 9.22800000000000 4.395534071150019E-013 + 9.22900000000000 4.395534071150019E-013 + 9.23000000000000 4.395534071150019E-013 + 9.23100000000000 4.395534071150019E-013 + 9.23200000000000 4.395534071150019E-013 + 9.23300000000000 4.395534071150019E-013 + 9.23400000000000 4.395534071150019E-013 + 9.23500000000000 4.395534071150019E-013 + 9.23600000000000 4.395534071150019E-013 + 9.23700000000000 4.395534071150019E-013 + 9.23800000000000 4.395534071150019E-013 + 9.23900000000000 4.395534071150019E-013 + 9.24000000000000 4.395534071150019E-013 + 9.24100000000000 4.395534071150019E-013 + 9.24200000000000 4.395534071150019E-013 + 9.24300000000000 4.395534071150019E-013 + 9.24400000000000 4.395534071150019E-013 + 9.24500000000000 4.395534071150019E-013 + 9.24600000000000 4.395534071150019E-013 + 9.24700000000000 4.395534071150019E-013 + 9.24800000000000 4.395534071150019E-013 + 9.24900000000000 4.395534071150019E-013 + 9.25000000000000 4.395534071150019E-013 + 9.25100000000000 4.395534071150019E-013 + 9.25200000000000 4.395534071150019E-013 + 9.25300000000000 4.395534071150019E-013 + 9.25400000000000 4.395534071150019E-013 + 9.25500000000000 4.395534071150019E-013 + 9.25600000000000 4.395534071150019E-013 + 9.25700000000000 4.395534071150019E-013 + 9.25800000000000 4.395534071150019E-013 + 9.25900000000000 4.395534071150019E-013 + 9.26000000000000 4.395534071150019E-013 + 9.26100000000000 4.395534071150019E-013 + 9.26200000000000 4.395534071150019E-013 + 9.26300000000000 4.395534071150019E-013 + 9.26400000000000 4.395534071150019E-013 + 9.26500000000000 4.395534071150019E-013 + 9.26600000000000 4.395534071150019E-013 + 9.26700000000000 4.395534071150019E-013 + 9.26800000000000 4.395534071150019E-013 + 9.26900000000000 4.395534071150019E-013 + 9.27000000000000 4.395534071150019E-013 + 9.27100000000000 4.395534071150019E-013 + 9.27200000000000 4.395534071150019E-013 + 9.27300000000000 4.395534071150019E-013 + 9.27400000000000 4.395534071150019E-013 + 9.27500000000000 4.395534071150019E-013 + 9.27600000000000 4.395534071150019E-013 + 9.27700000000000 4.395534071150019E-013 + 9.27800000000000 4.395534071150019E-013 + 9.27900000000000 4.395534071150019E-013 + 9.28000000000000 4.395534071150019E-013 + 9.28100000000000 4.395534071150019E-013 + 9.28200000000000 4.395534071150019E-013 + 9.28300000000000 4.395534071150019E-013 + 9.28400000000000 4.395534071150019E-013 + 9.28500000000000 4.395534071150019E-013 + 9.28600000000000 4.395534071150019E-013 + 9.28700000000000 4.395534071150019E-013 + 9.28800000000000 4.395534071150019E-013 + 9.28900000000000 4.395534071150019E-013 + 9.29000000000000 4.395534071150019E-013 + 9.29100000000000 4.395534071150019E-013 + 9.29200000000000 4.395534071150019E-013 + 9.29300000000000 4.395534071150019E-013 + 9.29400000000000 4.395534071150019E-013 + 9.29500000000000 4.395534071150019E-013 + 9.29600000000000 4.395534071150019E-013 + 9.29700000000000 4.395534071150019E-013 + 9.29800000000000 4.395534071150019E-013 + 9.29900000000000 4.395534071150019E-013 + 9.30000000000000 4.395534071150019E-013 + 9.30100000000000 4.395534071150019E-013 + 9.30200000000000 4.395534071150019E-013 + 9.30300000000000 4.395534071150019E-013 + 9.30400000000000 4.395534071150019E-013 + 9.30500000000000 4.395534071150019E-013 + 9.30600000000000 4.395534071150019E-013 + 9.30700000000000 4.395534071150019E-013 + 9.30800000000000 4.395534071150019E-013 + 9.30900000000000 4.395534071150019E-013 + 9.31000000000000 4.395534071150019E-013 + 9.31100000000000 4.395534071150019E-013 + 9.31200000000000 4.395534071150019E-013 + 9.31300000000000 4.395534071150019E-013 + 9.31400000000000 4.395534071150019E-013 + 9.31500000000000 4.395534071150019E-013 + 9.31600000000000 4.395534071150019E-013 + 9.31700000000000 4.395534071150019E-013 + 9.31800000000000 4.395534071150019E-013 + 9.31900000000000 4.395534071150019E-013 + 9.32000000000000 4.395534071150019E-013 + 9.32100000000000 4.395534071150019E-013 + 9.32200000000000 4.395534071150019E-013 + 9.32300000000000 4.395534071150019E-013 + 9.32400000000000 4.395534071150019E-013 + 9.32500000000000 4.395534071150019E-013 + 9.32600000000000 4.395534071150019E-013 + 9.32700000000000 4.395534071150019E-013 + 9.32800000000000 4.395534071150019E-013 + 9.32900000000000 4.395534071150019E-013 + 9.33000000000000 4.395534071150019E-013 + 9.33100000000000 4.395534071150019E-013 + 9.33200000000000 4.395534071150019E-013 + 9.33300000000000 4.395534071150019E-013 + 9.33400000000000 4.395534071150019E-013 + 9.33500000000000 4.395534071150019E-013 + 9.33600000000000 4.395534071150019E-013 + 9.33700000000000 4.395534071150019E-013 + 9.33800000000000 4.395534071150019E-013 + 9.33900000000000 4.395534071150019E-013 + 9.34000000000000 4.395534071150019E-013 + 9.34100000000000 4.395534071150019E-013 + 9.34200000000000 4.395534071150019E-013 + 9.34300000000000 4.395534071150019E-013 + 9.34400000000000 4.395534071150019E-013 + 9.34500000000000 4.395534071150019E-013 + 9.34600000000000 4.395534071150019E-013 + 9.34700000000000 4.395534071150019E-013 + 9.34800000000000 4.395534071150019E-013 + 9.34900000000000 4.395534071150019E-013 + 9.35000000000000 4.395534071150019E-013 + 9.35100000000000 4.395534071150019E-013 + 9.35200000000000 4.395534071150019E-013 + 9.35300000000000 4.395534071150019E-013 + 9.35400000000000 4.395534071150019E-013 + 9.35500000000000 4.395534071150019E-013 + 9.35600000000000 4.395534071150019E-013 + 9.35700000000000 4.395534071150019E-013 + 9.35800000000000 4.395534071150019E-013 + 9.35900000000000 4.395534071150019E-013 + 9.36000000000000 4.395534071150019E-013 + 9.36100000000000 4.395534071150019E-013 + 9.36200000000000 4.395534071150019E-013 + 9.36300000000000 4.395534071150019E-013 + 9.36400000000000 4.395534071150019E-013 + 9.36500000000000 4.395534071150019E-013 + 9.36600000000000 4.395534071150019E-013 + 9.36700000000000 4.395534071150019E-013 + 9.36800000000000 4.395534071150019E-013 + 9.36900000000000 4.395534071150019E-013 + 9.37000000000000 4.395534071150019E-013 + 9.37100000000000 4.395534071150019E-013 + 9.37200000000000 4.395534071150019E-013 + 9.37300000000000 4.395534071150019E-013 + 9.37400000000000 4.395534071150019E-013 + 9.37500000000000 4.395534071150019E-013 + 9.37600000000000 4.395534071150019E-013 + 9.37700000000000 4.395534071150019E-013 + 9.37800000000000 4.395534071150019E-013 + 9.37900000000000 4.395534071150019E-013 + 9.38000000000000 4.395534071150019E-013 + 9.38100000000000 4.395534071150019E-013 + 9.38200000000000 4.395534071150019E-013 + 9.38300000000000 4.395534071150019E-013 + 9.38400000000000 4.395534071150019E-013 + 9.38500000000000 4.395534071150019E-013 + 9.38600000000000 4.395534071150019E-013 + 9.38700000000000 4.395534071150019E-013 + 9.38800000000000 4.395534071150019E-013 + 9.38900000000000 4.395534071150019E-013 + 9.39000000000000 4.395534071150019E-013 + 9.39100000000000 4.395534071150019E-013 + 9.39200000000000 4.395534071150019E-013 + 9.39300000000000 4.395534071150019E-013 + 9.39400000000000 4.395534071150019E-013 + 9.39500000000000 4.395534071150019E-013 + 9.39600000000000 4.395534071150019E-013 + 9.39700000000000 4.395534071150019E-013 + 9.39800000000000 4.395534071150019E-013 + 9.39900000000000 4.395534071150019E-013 + 9.40000000000000 4.395534071150019E-013 + 9.40100000000000 4.395534071150019E-013 + 9.40200000000000 4.395534071150019E-013 + 9.40300000000000 4.395534071150019E-013 + 9.40400000000000 4.395534071150019E-013 + 9.40500000000000 4.395534071150019E-013 + 9.40600000000000 4.395534071150019E-013 + 9.40700000000000 4.395534071150019E-013 + 9.40800000000000 4.395534071150019E-013 + 9.40900000000000 4.395534071150019E-013 + 9.41000000000000 4.395534071150019E-013 + 9.41100000000000 4.395534071150019E-013 + 9.41200000000000 4.395534071150019E-013 + 9.41300000000000 4.395534071150019E-013 + 9.41400000000000 4.395534071150019E-013 + 9.41500000000000 4.395534071150019E-013 + 9.41600000000000 4.395534071150019E-013 + 9.41700000000000 4.395534071150019E-013 + 9.41800000000000 4.395534071150019E-013 + 9.41900000000000 4.395534071150019E-013 + 9.42000000000000 4.395534071150019E-013 + 9.42100000000000 4.395534071150019E-013 + 9.42200000000000 4.395534071150019E-013 + 9.42300000000000 4.395534071150019E-013 + 9.42400000000000 4.395534071150019E-013 + 9.42500000000000 4.395534071150019E-013 + 9.42600000000000 4.395534071150019E-013 + 9.42700000000000 4.395534071150019E-013 + 9.42800000000000 4.395534071150019E-013 + 9.42900000000000 4.395534071150019E-013 + 9.43000000000000 4.395534071150019E-013 + 9.43100000000000 4.395534071150019E-013 + 9.43200000000000 4.395534071150019E-013 + 9.43300000000000 4.395534071150019E-013 + 9.43400000000000 4.395534071150019E-013 + 9.43500000000000 4.395534071150019E-013 + 9.43600000000000 4.395534071150019E-013 + 9.43700000000000 4.395534071150019E-013 + 9.43800000000000 4.395534071150019E-013 + 9.43900000000000 4.395534071150019E-013 + 9.44000000000000 4.395534071150019E-013 + 9.44100000000000 4.395534071150019E-013 + 9.44200000000000 4.395534071150019E-013 + 9.44300000000000 4.395534071150019E-013 + 9.44400000000000 4.395534071150019E-013 + 9.44500000000000 4.395534071150019E-013 + 9.44600000000000 4.395534071150019E-013 + 9.44700000000000 4.395534071150019E-013 + 9.44800000000000 4.395534071150019E-013 + 9.44900000000000 4.395534071150019E-013 + 9.45000000000000 4.395534071150019E-013 + 9.45100000000000 4.395534071150019E-013 + 9.45200000000000 4.395534071150019E-013 + 9.45300000000000 4.395534071150019E-013 + 9.45400000000000 4.395534071150019E-013 + 9.45500000000000 4.395534071150019E-013 + 9.45600000000000 4.395534071150019E-013 + 9.45700000000000 4.395534071150019E-013 + 9.45800000000000 4.395534071150019E-013 + 9.45900000000000 4.395534071150019E-013 + 9.46000000000000 4.395534071150019E-013 + 9.46100000000000 4.395534071150019E-013 + 9.46200000000000 4.395534071150019E-013 + 9.46300000000000 4.395534071150019E-013 + 9.46400000000000 4.395534071150019E-013 + 9.46500000000000 4.395534071150019E-013 + 9.46600000000000 4.395534071150019E-013 + 9.46700000000000 4.395534071150019E-013 + 9.46800000000000 4.395534071150019E-013 + 9.46900000000000 4.395534071150019E-013 + 9.47000000000000 4.395534071150019E-013 + 9.47100000000000 4.395534071150019E-013 + 9.47200000000000 4.395534071150019E-013 + 9.47300000000000 4.395534071150019E-013 + 9.47400000000000 4.395534071150019E-013 + 9.47500000000000 4.395534071150019E-013 + 9.47600000000000 4.395534071150019E-013 + 9.47700000000000 4.395534071150019E-013 + 9.47800000000000 4.395534071150019E-013 + 9.47900000000000 4.395534071150019E-013 + 9.48000000000000 4.395534071150019E-013 + 9.48100000000000 4.395534071150019E-013 + 9.48200000000000 4.395534071150019E-013 + 9.48300000000000 4.395534071150019E-013 + 9.48400000000000 4.395534071150019E-013 + 9.48500000000000 4.395534071150019E-013 + 9.48600000000000 4.395534071150019E-013 + 9.48700000000000 4.395534071150019E-013 + 9.48800000000000 4.395534071150019E-013 + 9.48900000000000 4.395534071150019E-013 + 9.49000000000000 4.395534071150019E-013 + 9.49100000000000 4.395534071150019E-013 + 9.49200000000000 4.395534071150019E-013 + 9.49300000000000 4.395534071150019E-013 + 9.49400000000000 4.395534071150019E-013 + 9.49500000000000 4.395534071150019E-013 + 9.49600000000000 4.395534071150019E-013 + 9.49700000000000 4.395534071150019E-013 + 9.49800000000000 4.395534071150019E-013 + 9.49900000000000 4.395534071150019E-013 + 9.50000000000000 4.395534071150019E-013 + 9.50100000000000 4.395534071150019E-013 + 9.50200000000000 4.395534071150019E-013 + 9.50300000000000 4.395534071150019E-013 + 9.50400000000000 4.395534071150019E-013 + 9.50500000000000 4.395534071150019E-013 + 9.50600000000000 4.395534071150019E-013 + 9.50700000000000 4.395534071150019E-013 + 9.50800000000000 4.395534071150019E-013 + 9.50900000000000 4.395534071150019E-013 + 9.51000000000000 4.395534071150019E-013 + 9.51100000000000 4.395534071150019E-013 + 9.51200000000000 4.395534071150019E-013 + 9.51300000000000 4.395534071150019E-013 + 9.51400000000000 4.395534071150019E-013 + 9.51500000000000 4.395534071150019E-013 + 9.51600000000000 4.395534071150019E-013 + 9.51700000000000 4.395534071150019E-013 + 9.51800000000000 4.395534071150019E-013 + 9.51900000000000 4.395534071150019E-013 + 9.52000000000000 4.395534071150019E-013 + 9.52100000000000 4.395534071150019E-013 + 9.52200000000000 4.395534071150019E-013 + 9.52300000000000 4.395534071150019E-013 + 9.52400000000000 4.395534071150019E-013 + 9.52500000000000 4.395534071150019E-013 + 9.52600000000000 4.395534071150019E-013 + 9.52700000000000 4.395534071150019E-013 + 9.52800000000000 4.395534071150019E-013 + 9.52900000000000 4.395534071150019E-013 + 9.53000000000000 4.395534071150019E-013 + 9.53100000000000 4.395534071150019E-013 + 9.53200000000000 4.395534071150019E-013 + 9.53300000000000 4.395534071150019E-013 + 9.53400000000000 4.395534071150019E-013 + 9.53500000000000 4.395534071150019E-013 + 9.53600000000000 4.395534071150019E-013 + 9.53700000000000 4.395534071150019E-013 + 9.53800000000000 4.395534071150019E-013 + 9.53900000000000 4.395534071150019E-013 + 9.54000000000000 4.395534071150019E-013 + 9.54100000000000 4.395534071150019E-013 + 9.54200000000000 4.395534071150019E-013 + 9.54300000000000 4.395534071150019E-013 + 9.54400000000000 4.395534071150019E-013 + 9.54500000000000 4.395534071150019E-013 + 9.54600000000000 4.395534071150019E-013 + 9.54700000000000 4.395534071150019E-013 + 9.54800000000000 4.395534071150019E-013 + 9.54900000000000 4.395534071150019E-013 + 9.55000000000000 4.395534071150019E-013 + 9.55100000000000 4.395534071150019E-013 + 9.55200000000000 4.395534071150019E-013 + 9.55300000000000 4.395534071150019E-013 + 9.55400000000000 4.395534071150019E-013 + 9.55500000000000 4.395534071150019E-013 + 9.55600000000000 4.395534071150019E-013 + 9.55700000000000 4.395534071150019E-013 + 9.55800000000000 4.395534071150019E-013 + 9.55900000000000 4.395534071150019E-013 + 9.56000000000000 4.395534071150019E-013 + 9.56100000000000 4.395534071150019E-013 + 9.56200000000000 4.395534071150019E-013 + 9.56300000000000 4.395534071150019E-013 + 9.56400000000000 4.395534071150019E-013 + 9.56500000000000 4.395534071150019E-013 + 9.56600000000000 4.395534071150019E-013 + 9.56700000000000 4.395534071150019E-013 + 9.56800000000000 4.395534071150019E-013 + 9.56900000000000 4.395534071150019E-013 + 9.57000000000000 4.395534071150019E-013 + 9.57100000000000 4.395534071150019E-013 + 9.57200000000000 4.395534071150019E-013 + 9.57300000000000 4.395534071150019E-013 + 9.57400000000000 4.395534071150019E-013 + 9.57500000000000 4.395534071150019E-013 + 9.57600000000000 4.395534071150019E-013 + 9.57700000000000 4.395534071150019E-013 + 9.57800000000000 4.395534071150019E-013 + 9.57900000000000 4.395534071150019E-013 + 9.58000000000000 4.395534071150019E-013 + 9.58100000000000 4.395534071150019E-013 + 9.58200000000000 4.395534071150019E-013 + 9.58300000000000 4.395534071150019E-013 + 9.58400000000000 4.395534071150019E-013 + 9.58500000000000 4.395534071150019E-013 + 9.58600000000000 4.395534071150019E-013 + 9.58700000000000 4.395534071150019E-013 + 9.58800000000000 4.395534071150019E-013 + 9.58900000000000 4.395534071150019E-013 + 9.59000000000000 4.395534071150019E-013 + 9.59100000000000 4.395534071150019E-013 + 9.59200000000000 4.395534071150019E-013 + 9.59300000000000 4.395534071150019E-013 + 9.59400000000000 4.395534071150019E-013 + 9.59500000000000 4.395534071150019E-013 + 9.59600000000000 4.395534071150019E-013 + 9.59700000000000 4.395534071150019E-013 + 9.59800000000000 4.395534071150019E-013 + 9.59900000000000 4.395534071150019E-013 + 9.60000000000000 4.395534071150019E-013 + 9.60100000000000 4.395534071150019E-013 + 9.60200000000000 4.395534071150019E-013 + 9.60300000000000 4.395534071150019E-013 + 9.60400000000000 4.395534071150019E-013 + 9.60500000000000 4.395534071150019E-013 + 9.60600000000000 4.395534071150019E-013 + 9.60700000000000 4.395534071150019E-013 + 9.60800000000000 4.395534071150019E-013 + 9.60900000000000 4.395534071150019E-013 + 9.61000000000000 4.395534071150019E-013 + 9.61100000000000 4.395534071150019E-013 + 9.61200000000000 4.395534071150019E-013 + 9.61300000000000 4.395534071150019E-013 + 9.61400000000000 4.395534071150019E-013 + 9.61500000000000 4.395534071150019E-013 + 9.61600000000000 4.395534071150019E-013 + 9.61700000000000 4.395534071150019E-013 + 9.61800000000000 4.395534071150019E-013 + 9.61900000000000 4.395534071150019E-013 + 9.62000000000000 4.395534071150019E-013 + 9.62100000000000 4.395534071150019E-013 + 9.62200000000000 4.395534071150019E-013 + 9.62300000000000 4.395534071150019E-013 + 9.62400000000000 4.395534071150019E-013 + 9.62500000000000 4.395534071150019E-013 + 9.62600000000000 4.395534071150019E-013 + 9.62700000000000 4.395534071150019E-013 + 9.62800000000000 4.395534071150019E-013 + 9.62900000000000 4.395534071150019E-013 + 9.63000000000000 4.395534071150019E-013 + 9.63100000000000 4.395534071150019E-013 + 9.63200000000000 4.395534071150019E-013 + 9.63300000000000 4.395534071150019E-013 + 9.63400000000000 4.395534071150019E-013 + 9.63500000000000 4.395534071150019E-013 + 9.63600000000000 4.395534071150019E-013 + 9.63700000000000 4.395534071150019E-013 + 9.63800000000000 4.395534071150019E-013 + 9.63900000000000 4.395534071150019E-013 + 9.64000000000000 4.395534071150019E-013 + 9.64100000000000 4.395534071150019E-013 + 9.64200000000000 4.395534071150019E-013 + 9.64300000000000 4.395534071150019E-013 + 9.64400000000000 4.395534071150019E-013 + 9.64500000000000 4.395534071150019E-013 + 9.64600000000000 4.395534071150019E-013 + 9.64700000000000 4.395534071150019E-013 + 9.64800000000000 4.395534071150019E-013 + 9.64900000000000 4.395534071150019E-013 + 9.65000000000000 4.395534071150019E-013 + 9.65100000000000 4.395534071150019E-013 + 9.65200000000000 4.395534071150019E-013 + 9.65300000000000 4.395534071150019E-013 + 9.65400000000000 4.395534071150019E-013 + 9.65500000000000 4.395534071150019E-013 + 9.65600000000000 4.395534071150019E-013 + 9.65700000000000 4.395534071150019E-013 + 9.65800000000000 4.395534071150019E-013 + 9.65900000000000 4.395534071150019E-013 + 9.66000000000000 4.395534071150019E-013 + 9.66100000000000 4.395534071150019E-013 + 9.66200000000000 4.395534071150019E-013 + 9.66300000000000 4.395534071150019E-013 + 9.66400000000000 4.395534071150019E-013 + 9.66500000000000 4.395534071150019E-013 + 9.66600000000000 4.395534071150019E-013 + 9.66700000000000 4.395534071150019E-013 + 9.66800000000000 4.395534071150019E-013 + 9.66900000000000 4.395534071150019E-013 + 9.67000000000000 4.395534071150019E-013 + 9.67100000000000 4.395534071150019E-013 + 9.67200000000000 4.395534071150019E-013 + 9.67300000000000 4.395534071150019E-013 + 9.67400000000000 4.395534071150019E-013 + 9.67500000000000 4.395534071150019E-013 + 9.67600000000000 4.395534071150019E-013 + 9.67700000000000 4.395534071150019E-013 + 9.67800000000000 4.395534071150019E-013 + 9.67900000000000 4.395534071150019E-013 + 9.68000000000000 4.395534071150019E-013 + 9.68100000000000 4.395534071150019E-013 + 9.68200000000000 4.395534071150019E-013 + 9.68300000000000 4.395534071150019E-013 + 9.68400000000000 4.395534071150019E-013 + 9.68500000000000 4.395534071150019E-013 + 9.68600000000000 4.395534071150019E-013 + 9.68700000000000 4.395534071150019E-013 + 9.68800000000000 4.395534071150019E-013 + 9.68900000000000 4.395534071150019E-013 + 9.69000000000000 4.395534071150019E-013 + 9.69100000000000 4.395534071150019E-013 + 9.69200000000000 4.395534071150019E-013 + 9.69300000000000 4.395534071150019E-013 + 9.69400000000000 4.395534071150019E-013 + 9.69500000000000 4.395534071150019E-013 + 9.69600000000000 4.395534071150019E-013 + 9.69700000000000 4.395534071150019E-013 + 9.69800000000000 4.395534071150019E-013 + 9.69900000000000 4.395534071150019E-013 + 9.70000000000000 4.395534071150019E-013 + 9.70100000000000 4.395534071150019E-013 + 9.70200000000000 4.395534071150019E-013 + 9.70300000000000 4.395534071150019E-013 + 9.70400000000000 4.395534071150019E-013 + 9.70500000000000 4.395534071150019E-013 + 9.70600000000000 4.395534071150019E-013 + 9.70700000000000 4.395534071150019E-013 + 9.70800000000000 4.395534071150019E-013 + 9.70900000000000 4.395534071150019E-013 + 9.71000000000000 4.395534071150019E-013 + 9.71100000000000 4.395534071150019E-013 + 9.71200000000000 4.395534071150019E-013 + 9.71300000000000 4.395534071150019E-013 + 9.71400000000000 4.395534071150019E-013 + 9.71500000000000 4.395534071150019E-013 + 9.71600000000000 4.395534071150019E-013 + 9.71700000000000 4.395534071150019E-013 + 9.71800000000000 4.395534071150019E-013 + 9.71900000000000 4.395534071150019E-013 + 9.72000000000000 4.395534071150019E-013 + 9.72100000000000 4.395534071150019E-013 + 9.72200000000000 4.395534071150019E-013 + 9.72300000000000 4.395534071150019E-013 + 9.72400000000000 4.395534071150019E-013 + 9.72500000000000 4.395534071150019E-013 + 9.72600000000000 4.395534071150019E-013 + 9.72700000000000 4.395534071150019E-013 + 9.72800000000000 4.395534071150019E-013 + 9.72900000000000 4.395534071150019E-013 + 9.73000000000000 4.395534071150019E-013 + 9.73100000000000 4.395534071150019E-013 + 9.73200000000000 4.395534071150019E-013 + 9.73300000000000 4.395534071150019E-013 + 9.73400000000000 4.395534071150019E-013 + 9.73500000000000 4.395534071150019E-013 + 9.73600000000000 4.395534071150019E-013 + 9.73700000000000 4.395534071150019E-013 + 9.73800000000000 4.395534071150019E-013 + 9.73900000000000 4.395534071150019E-013 + 9.74000000000000 4.395534071150019E-013 + 9.74100000000000 4.395534071150019E-013 + 9.74200000000000 4.395534071150019E-013 + 9.74300000000000 4.395534071150019E-013 + 9.74400000000000 4.395534071150019E-013 + 9.74500000000000 4.395534071150019E-013 + 9.74600000000000 4.395534071150019E-013 + 9.74700000000000 4.395534071150019E-013 + 9.74800000000000 4.395534071150019E-013 + 9.74900000000000 4.395534071150019E-013 + 9.75000000000000 4.395534071150019E-013 + 9.75100000000000 4.395534071150019E-013 + 9.75200000000000 4.395534071150019E-013 + 9.75300000000000 4.395534071150019E-013 + 9.75400000000000 4.395534071150019E-013 + 9.75500000000000 4.395534071150019E-013 + 9.75600000000000 4.395534071150019E-013 + 9.75700000000000 4.395534071150019E-013 + 9.75800000000000 4.395534071150019E-013 + 9.75900000000000 4.395534071150019E-013 + 9.76000000000000 4.395534071150019E-013 + 9.76100000000000 4.395534071150019E-013 + 9.76200000000000 4.395534071150019E-013 + 9.76300000000000 4.395534071150019E-013 + 9.76400000000000 4.395534071150019E-013 + 9.76500000000000 4.395534071150019E-013 + 9.76600000000000 4.395534071150019E-013 + 9.76700000000000 4.395534071150019E-013 + 9.76800000000000 4.395534071150019E-013 + 9.76900000000000 4.395534071150019E-013 + 9.77000000000000 4.395534071150019E-013 + 9.77100000000000 4.395534071150019E-013 + 9.77200000000000 4.395534071150019E-013 + 9.77300000000000 4.395534071150019E-013 + 9.77400000000000 4.395534071150019E-013 + 9.77500000000000 4.395534071150019E-013 + 9.77600000000000 4.395534071150019E-013 + 9.77700000000000 4.395534071150019E-013 + 9.77800000000000 4.395534071150019E-013 + 9.77900000000000 4.395534071150019E-013 + 9.78000000000000 4.395534071150019E-013 + 9.78100000000000 4.395534071150019E-013 + 9.78200000000000 4.395534071150019E-013 + 9.78300000000000 4.395534071150019E-013 + 9.78400000000000 4.395534071150019E-013 + 9.78500000000000 4.395534071150019E-013 + 9.78600000000000 4.395534071150019E-013 + 9.78700000000000 4.395534071150019E-013 + 9.78800000000000 4.395534071150019E-013 + 9.78900000000000 4.395534071150019E-013 + 9.79000000000000 4.395534071150019E-013 + 9.79100000000000 4.395534071150019E-013 + 9.79200000000000 4.395534071150019E-013 + 9.79300000000000 4.395534071150019E-013 + 9.79400000000000 4.395534071150019E-013 + 9.79500000000000 4.395534071150019E-013 + 9.79600000000000 4.395534071150019E-013 + 9.79700000000000 4.395534071150019E-013 + 9.79800000000000 4.395534071150019E-013 + 9.79900000000000 4.395534071150019E-013 + 9.80000000000000 4.395534071150019E-013 + 9.80100000000000 4.395534071150019E-013 + 9.80200000000000 4.395534071150019E-013 + 9.80300000000000 4.395534071150019E-013 + 9.80400000000000 4.395534071150019E-013 + 9.80500000000000 4.395534071150019E-013 + 9.80600000000000 4.395534071150019E-013 + 9.80700000000000 4.395534071150019E-013 + 9.80800000000000 4.395534071150019E-013 + 9.80900000000000 4.395534071150019E-013 + 9.81000000000000 4.395534071150019E-013 + 9.81100000000000 4.395534071150019E-013 + 9.81200000000000 4.395534071150019E-013 + 9.81300000000000 4.395534071150019E-013 + 9.81400000000000 4.395534071150019E-013 + 9.81500000000000 4.395534071150019E-013 + 9.81600000000000 4.395534071150019E-013 + 9.81700000000000 4.395534071150019E-013 + 9.81800000000000 4.395534071150019E-013 + 9.81900000000000 4.395534071150019E-013 + 9.82000000000000 4.395534071150019E-013 + 9.82100000000000 4.395534071150019E-013 + 9.82200000000000 4.395534071150019E-013 + 9.82300000000000 4.395534071150019E-013 + 9.82400000000000 4.395534071150019E-013 + 9.82500000000000 4.395534071150019E-013 + 9.82600000000000 4.395534071150019E-013 + 9.82700000000000 4.395534071150019E-013 + 9.82800000000000 4.395534071150019E-013 + 9.82900000000000 4.395534071150019E-013 + 9.83000000000000 4.395534071150019E-013 + 9.83100000000000 4.395534071150019E-013 + 9.83200000000000 4.395534071150019E-013 + 9.83300000000000 4.395534071150019E-013 + 9.83400000000000 4.395534071150019E-013 + 9.83500000000000 4.395534071150019E-013 + 9.83600000000000 4.395534071150019E-013 + 9.83700000000000 4.395534071150019E-013 + 9.83800000000000 4.395534071150019E-013 + 9.83900000000000 4.395534071150019E-013 + 9.84000000000000 4.395534071150019E-013 + 9.84100000000000 4.395534071150019E-013 + 9.84200000000000 4.395534071150019E-013 + 9.84300000000000 4.395534071150019E-013 + 9.84400000000000 4.395534071150019E-013 + 9.84500000000000 4.395534071150019E-013 + 9.84600000000000 4.395534071150019E-013 + 9.84700000000000 4.395534071150019E-013 + 9.84800000000000 4.395534071150019E-013 + 9.84900000000000 4.395534071150019E-013 + 9.85000000000000 4.395534071150019E-013 + 9.85100000000000 4.395534071150019E-013 + 9.85200000000000 4.395534071150019E-013 + 9.85300000000000 4.395534071150019E-013 + 9.85400000000000 4.395534071150019E-013 + 9.85500000000000 4.395534071150019E-013 + 9.85600000000000 4.395534071150019E-013 + 9.85700000000000 4.395534071150019E-013 + 9.85800000000000 4.395534071150019E-013 + 9.85900000000000 4.395534071150019E-013 + 9.86000000000000 4.395534071150019E-013 + 9.86100000000000 4.395534071150019E-013 + 9.86200000000000 4.395534071150019E-013 + 9.86300000000000 4.395534071150019E-013 + 9.86400000000000 4.395534071150019E-013 + 9.86500000000000 4.395534071150019E-013 + 9.86600000000000 4.395534071150019E-013 + 9.86700000000000 4.395534071150019E-013 + 9.86800000000000 4.395534071150019E-013 + 9.86900000000000 4.395534071150019E-013 + 9.87000000000000 4.395534071150019E-013 + 9.87100000000000 4.395534071150019E-013 + 9.87200000000000 4.395534071150019E-013 + 9.87300000000000 4.395534071150019E-013 + 9.87400000000000 4.395534071150019E-013 + 9.87500000000000 4.395534071150019E-013 + 9.87600000000000 4.395534071150019E-013 + 9.87700000000000 4.395534071150019E-013 + 9.87800000000000 4.395534071150019E-013 + 9.87900000000000 4.395534071150019E-013 + 9.88000000000000 4.395534071150019E-013 + 9.88100000000000 4.395534071150019E-013 + 9.88200000000000 4.395534071150019E-013 + 9.88300000000000 4.395534071150019E-013 + 9.88400000000000 4.395534071150019E-013 + 9.88500000000000 4.395534071150019E-013 + 9.88600000000000 4.395534071150019E-013 + 9.88700000000000 4.395534071150019E-013 + 9.88800000000000 4.395534071150019E-013 + 9.88900000000000 4.395534071150019E-013 + 9.89000000000000 4.395534071150019E-013 + 9.89100000000000 4.395534071150019E-013 + 9.89200000000000 4.395534071150019E-013 + 9.89300000000000 4.395534071150019E-013 + 9.89400000000000 4.395534071150019E-013 + 9.89500000000000 4.395534071150019E-013 + 9.89600000000000 4.395534071150019E-013 + 9.89700000000000 4.395534071150019E-013 + 9.89800000000000 4.395534071150019E-013 + 9.89900000000000 4.395534071150019E-013 + 9.90000000000000 4.395534071150019E-013 + 9.90100000000000 4.395534071150019E-013 + 9.90200000000000 4.395534071150019E-013 + 9.90300000000000 4.395534071150019E-013 + 9.90400000000000 4.395534071150019E-013 + 9.90500000000000 4.395534071150019E-013 + 9.90600000000000 4.395534071150019E-013 + 9.90700000000000 4.395534071150019E-013 + 9.90800000000000 4.395534071150019E-013 + 9.90900000000000 4.395534071150019E-013 + 9.91000000000000 4.395534071150019E-013 + 9.91100000000000 4.395534071150019E-013 + 9.91200000000000 4.395534071150019E-013 + 9.91300000000000 4.395534071150019E-013 + 9.91400000000000 4.395534071150019E-013 + 9.91500000000000 4.395534071150019E-013 + 9.91600000000000 4.395534071150019E-013 + 9.91700000000000 4.395534071150019E-013 + 9.91800000000000 4.395534071150019E-013 + 9.91900000000000 4.395534071150019E-013 + 9.92000000000000 4.395534071150019E-013 + 9.92100000000000 4.395534071150019E-013 + 9.92200000000000 4.395534071150019E-013 + 9.92300000000000 4.395534071150019E-013 + 9.92400000000000 4.395534071150019E-013 + 9.92500000000000 4.395534071150019E-013 + 9.92600000000000 4.395534071150019E-013 + 9.92700000000000 4.395534071150019E-013 + 9.92800000000000 4.395534071150019E-013 + 9.92900000000000 4.395534071150019E-013 + 9.93000000000000 4.395534071150019E-013 + 9.93100000000000 4.395534071150019E-013 + 9.93200000000000 4.395534071150019E-013 + 9.93300000000000 4.395534071150019E-013 + 9.93400000000000 4.395534071150019E-013 + 9.93500000000000 4.395534071150019E-013 + 9.93600000000000 4.395534071150019E-013 + 9.93700000000000 4.395534071150019E-013 + 9.93800000000000 4.395534071150019E-013 + 9.93900000000000 4.395534071150019E-013 + 9.94000000000000 4.395534071150019E-013 + 9.94100000000000 4.395534071150019E-013 + 9.94200000000000 4.395534071150019E-013 + 9.94300000000000 4.395534071150019E-013 + 9.94400000000000 4.395534071150019E-013 + 9.94500000000000 4.395534071150019E-013 + 9.94600000000000 4.395534071150019E-013 + 9.94700000000000 4.395534071150019E-013 + 9.94800000000000 4.395534071150019E-013 + 9.94900000000000 4.395534071150019E-013 + 9.95000000000000 4.395534071150019E-013 + 9.95100000000000 4.395534071150019E-013 + 9.95200000000000 4.395534071150019E-013 + 9.95300000000000 4.395534071150019E-013 + 9.95400000000000 4.395534071150019E-013 + 9.95500000000000 4.395534071150019E-013 + 9.95600000000000 4.395534071150019E-013 + 9.95700000000000 4.395534071150019E-013 + 9.95800000000000 4.395534071150019E-013 + 9.95900000000000 4.395534071150019E-013 + 9.96000000000000 4.395534071150019E-013 + 9.96100000000000 4.395534071150019E-013 + 9.96200000000000 4.395534071150019E-013 + 9.96300000000000 4.395534071150019E-013 + 9.96400000000000 4.395534071150019E-013 + 9.96500000000000 4.395534071150019E-013 + 9.96600000000000 4.395534071150019E-013 + 9.96700000000000 4.395534071150019E-013 + 9.96800000000000 4.395534071150019E-013 + 9.96900000000000 4.395534071150019E-013 + 9.97000000000000 4.395534071150019E-013 + 9.97100000000000 4.395534071150019E-013 + 9.97200000000000 4.395534071150019E-013 + 9.97300000000000 4.395534071150019E-013 + 9.97400000000000 4.395534071150019E-013 + 9.97500000000000 4.395534071150019E-013 + 9.97600000000000 4.395534071150019E-013 + 9.97700000000000 4.395534071150019E-013 + 9.97800000000000 4.395534071150019E-013 + 9.97900000000000 4.395534071150019E-013 + 9.98000000000000 4.395534071150019E-013 + 9.98100000000000 4.395534071150019E-013 + 9.98200000000000 4.395534071150019E-013 + 9.98300000000000 4.395534071150019E-013 + 9.98400000000000 4.395534071150019E-013 + 9.98500000000000 4.395534071150019E-013 + 9.98600000000000 4.395534071150019E-013 + 9.98700000000000 4.395534071150019E-013 + 9.98800000000000 4.395534071150019E-013 + 9.98900000000000 4.395534071150019E-013 + 9.99000000000000 4.395534071150019E-013 + 9.99100000000000 4.395534071150019E-013 + 9.99200000000000 4.395534071150019E-013 + 9.99300000000000 4.395534071150019E-013 + 9.99400000000000 4.395534071150019E-013 + 9.99500000000000 4.395534071150019E-013 + 9.99600000000000 4.395534071150019E-013 + 9.99700000000000 4.395534071150019E-013 + 9.99800000000000 4.395534071150019E-013 + 9.99900000000000 4.395534071150019E-013 + 10.0000000000000 4.395534071150019E-013 diff --git a/example/test_problem/ELBDM/Soliton/SolitonDensityProfile_Lambda1.0 b/example/test_problem/ELBDM/Soliton/SolitonDensityProfile_Lambda1.0 new file mode 100644 index 0000000000..c6b44eb8d3 --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/SolitonDensityProfile_Lambda1.0 @@ -0,0 +1,10001 @@ +# r Dens + 1.000000000000000E-03 2.363906610221288E+00 + 2.000000000000000E-03 2.363905136115818E+00 + 3.000000000000000E-03 2.363901882755340E+00 + 4.000000000000000E-03 2.363896806048328E+00 + 5.000000000000000E-03 2.363889909200875E+00 + 6.000000000000000E-03 2.363881203297680E+00 + 7.000000000000000E-03 2.363870699461547E+00 + 8.000000000000000E-03 2.363858407283599E+00 + 9.000000000000001E-03 2.363844334717675E+00 + 1.000000000000000E-02 2.363828488306636E+00 + 1.100000000000000E-02 2.363810873447628E+00 + 1.200000000000000E-02 2.363791494623635E+00 + 1.300000000000000E-02 2.363770355589781E+00 + 1.400000000000000E-02 2.363747459519257E+00 + 1.500000000000000E-02 2.363722809116794E+00 + 1.600000000000000E-02 2.363696406707073E+00 + 1.700000000000000E-02 2.363668254303939E+00 + 1.800000000000000E-02 2.363638353665071E+00 + 1.900000000000000E-02 2.363606706335390E+00 + 2.000000000000000E-02 2.363573313681910E+00 + 2.100000000000000E-02 2.363538176921909E+00 + 2.200000000000000E-02 2.363501297145836E+00 + 2.300000000000000E-02 2.363462675336170E+00 + 2.400000000000000E-02 2.363422312382932E+00 + 2.500000000000000E-02 2.363380209096657E+00 + 2.600000000000000E-02 2.363336366219218E+00 + 2.700000000000000E-02 2.363290784432936E+00 + 2.800000000000000E-02 2.363243464368304E+00 + 2.900000000000000E-02 2.363194406610581E+00 + 3.000000000000000E-02 2.363143611705381E+00 + 3.100000000000000E-02 2.363091080163543E+00 + 3.200000000000000E-02 2.363036812465269E+00 + 3.300000000000000E-02 2.362980809063766E+00 + 3.400000000000000E-02 2.362923070388377E+00 + 3.500000000000000E-02 2.362863596847339E+00 + 3.600000000000000E-02 2.362802388830187E+00 + 3.700000000000000E-02 2.362739446709881E+00 + 3.800000000000000E-02 2.362674770844669E+00 + 3.900000000000000E-02 2.362608361579743E+00 + 4.000000000000000E-02 2.362540219248713E+00 + 4.100000000000000E-02 2.362470344174922E+00 + 4.200000000000000E-02 2.362398736672591E+00 + 4.300000000000000E-02 2.362325397047900E+00 + 4.400000000000000E-02 2.362250325599881E+00 + 4.500000000000000E-02 2.362173522621305E+00 + 4.600000000000000E-02 2.362094988399410E+00 + 4.700000000000000E-02 2.362014723216605E+00 + 4.800000000000000E-02 2.361932727351076E+00 + 4.900000000000000E-02 2.361849001077356E+00 + 5.000000000000000E-02 2.361763544666855E+00 + 5.100000000000000E-02 2.361676358388285E+00 + 5.200000000000000E-02 2.361587442508112E+00 + 5.300000000000000E-02 2.361496797290944E+00 + 5.400000000000000E-02 2.361404422999870E+00 + 5.500000000000000E-02 2.361310319896803E+00 + 5.600000000000000E-02 2.361214488242757E+00 + 5.700000000000000E-02 2.361116928298135E+00 + 5.800000000000000E-02 2.361017640322986E+00 + 5.900000000000000E-02 2.360916624577211E+00 + 6.000000000000000E-02 2.360813881320807E+00 + 6.100000000000000E-02 2.360709410814046E+00 + 6.200000000000000E-02 2.360603213317664E+00 + 6.300000000000000E-02 2.360495289093029E+00 + 6.400000000000000E-02 2.360385638402302E+00 + 6.500000000000000E-02 2.360274261508578E+00 + 6.600000000000000E-02 2.360161158676015E+00 + 6.700000000000000E-02 2.360046330169973E+00 + 6.800000000000000E-02 2.359929776257132E+00 + 6.900000000000001E-02 2.359811497205584E+00 + 7.000000000000001E-02 2.359691493284950E+00 + 7.100000000000001E-02 2.359569764766466E+00 + 7.200000000000001E-02 2.359446311923087E+00 + 7.300000000000000E-02 2.359321135029548E+00 + 7.400000000000000E-02 2.359194234362461E+00 + 7.500000000000000E-02 2.359065610200378E+00 + 7.600000000000000E-02 2.358935262823857E+00 + 7.700000000000000E-02 2.358803192515538E+00 + 7.800000000000000E-02 2.358669399560192E+00 + 7.900000000000000E-02 2.358533884244786E+00 + 8.000000000000000E-02 2.358396646858526E+00 + 8.100000000000000E-02 2.358257687692915E+00 + 8.200000000000000E-02 2.358117007041797E+00 + 8.300000000000000E-02 2.357974605201408E+00 + 8.400000000000001E-02 2.357830482470410E+00 + 8.500000000000001E-02 2.357684639149929E+00 + 8.600000000000001E-02 2.357537075543601E+00 + 8.700000000000001E-02 2.357387791957602E+00 + 8.799999999999999E-02 2.357236788700681E+00 + 8.900000000000000E-02 2.357084066084191E+00 + 9.000000000000000E-02 2.356929624422127E+00 + 9.100000000000000E-02 2.356773464031136E+00 + 9.200000000000000E-02 2.356615585230573E+00 + 9.300000000000000E-02 2.356455988342487E+00 + 9.400000000000000E-02 2.356294673691686E+00 + 9.500000000000000E-02 2.356131641605736E+00 + 9.600000000000000E-02 2.355966892414972E+00 + 9.700000000000000E-02 2.355800426452554E+00 + 9.800000000000000E-02 2.355632244054460E+00 + 9.900000000000000E-02 2.355462345559502E+00 + 1.000000000000000E-01 2.355290731309357E+00 + 1.010000000000000E-01 2.355117401648590E+00 + 1.020000000000000E-01 2.354942356924639E+00 + 1.030000000000000E-01 2.354765597487868E+00 + 1.040000000000000E-01 2.354587123691553E+00 + 1.050000000000000E-01 2.354406935891908E+00 + 1.060000000000000E-01 2.354225034448098E+00 + 1.070000000000000E-01 2.354041419722246E+00 + 1.080000000000000E-01 2.353856092079456E+00 + 1.090000000000000E-01 2.353669051887802E+00 + 1.100000000000000E-01 2.353480299518372E+00 + 1.110000000000000E-01 2.353289835345239E+00 + 1.120000000000000E-01 2.353097659745514E+00 + 1.130000000000000E-01 2.352903773099314E+00 + 1.140000000000000E-01 2.352708175789799E+00 + 1.150000000000000E-01 2.352510868203162E+00 + 1.160000000000000E-01 2.352311850728658E+00 + 1.170000000000000E-01 2.352111123758594E+00 + 1.180000000000000E-01 2.351908687688340E+00 + 1.190000000000000E-01 2.351704542916338E+00 + 1.200000000000000E-01 2.351498689844115E+00 + 1.210000000000000E-01 2.351291128876278E+00 + 1.220000000000000E-01 2.351081860420522E+00 + 1.230000000000000E-01 2.350870884887645E+00 + 1.240000000000000E-01 2.350658202691547E+00 + 1.250000000000000E-01 2.350443814249231E+00 + 1.260000000000000E-01 2.350227719980822E+00 + 1.270000000000000E-01 2.350009920309550E+00 + 1.280000000000000E-01 2.349790415661778E+00 + 1.290000000000000E-01 2.349569206466990E+00 + 1.300000000000000E-01 2.349346293157807E+00 + 1.310000000000000E-01 2.349121676169980E+00 + 1.320000000000000E-01 2.348895355942394E+00 + 1.330000000000000E-01 2.348667332917087E+00 + 1.340000000000000E-01 2.348437607539231E+00 + 1.350000000000000E-01 2.348206180257163E+00 + 1.360000000000000E-01 2.347973051522358E+00 + 1.370000000000000E-01 2.347738221789448E+00 + 1.380000000000000E-01 2.347501691516230E+00 + 1.390000000000000E-01 2.347263461163652E+00 + 1.400000000000000E-01 2.347023531195836E+00 + 1.410000000000000E-01 2.346781902080061E+00 + 1.420000000000000E-01 2.346538574286777E+00 + 1.430000000000000E-01 2.346293548289609E+00 + 1.440000000000000E-01 2.346046824565340E+00 + 1.450000000000000E-01 2.345798403593941E+00 + 1.460000000000000E-01 2.345548285858559E+00 + 1.470000000000000E-01 2.345296471845506E+00 + 1.480000000000000E-01 2.345042962044286E+00 + 1.490000000000000E-01 2.344787756947582E+00 + 1.500000000000000E-01 2.344530857051250E+00 + 1.510000000000000E-01 2.344272262854342E+00 + 1.520000000000000E-01 2.344011974859083E+00 + 1.530000000000000E-01 2.343749993570901E+00 + 1.540000000000000E-01 2.343486319498396E+00 + 1.550000000000000E-01 2.343220953153361E+00 + 1.560000000000000E-01 2.342953895050778E+00 + 1.570000000000000E-01 2.342685145708820E+00 + 1.580000000000000E-01 2.342414705648856E+00 + 1.590000000000000E-01 2.342142575395444E+00 + 1.600000000000000E-01 2.341868755476326E+00 + 1.610000000000000E-01 2.341593246422446E+00 + 1.620000000000000E-01 2.341316048767945E+00 + 1.630000000000000E-01 2.341037163050148E+00 + 1.640000000000000E-01 2.340756589809584E+00 + 1.650000000000000E-01 2.340474329589968E+00 + 1.660000000000000E-01 2.340190382938224E+00 + 1.670000000000000E-01 2.339904750404461E+00 + 1.680000000000000E-01 2.339617432541986E+00 + 1.690000000000000E-01 2.339328429907302E+00 + 1.700000000000000E-01 2.339037743060113E+00 + 1.710000000000000E-01 2.338745372563309E+00 + 1.720000000000000E-01 2.338451318982994E+00 + 1.730000000000000E-01 2.338155582888455E+00 + 1.740000000000000E-01 2.337858164852173E+00 + 1.750000000000000E-01 2.337559065449840E+00 + 1.760000000000000E-01 2.337258285260328E+00 + 1.770000000000000E-01 2.336955824865720E+00 + 1.780000000000000E-01 2.336651684851288E+00 + 1.790000000000000E-01 2.336345865805496E+00 + 1.800000000000000E-01 2.336038368320004E+00 + 1.810000000000000E-01 2.335729192989681E+00 + 1.820000000000000E-01 2.335418340412579E+00 + 1.830000000000000E-01 2.335105811189937E+00 + 1.840000000000000E-01 2.334791605926207E+00 + 1.850000000000000E-01 2.334475725229023E+00 + 1.860000000000000E-01 2.334158169709213E+00 + 1.870000000000000E-01 2.333838939980800E+00 + 1.880000000000000E-01 2.333518036660994E+00 + 1.890000000000000E-01 2.333195460370211E+00 + 1.900000000000000E-01 2.332871211732040E+00 + 1.910000000000000E-01 2.332545291373274E+00 + 1.920000000000000E-01 2.332217699923891E+00 + 1.930000000000000E-01 2.331888438017049E+00 + 1.940000000000000E-01 2.331557506289115E+00 + 1.950000000000000E-01 2.331224905379630E+00 + 1.960000000000000E-01 2.330890635931320E+00 + 1.970000000000000E-01 2.330554698590102E+00 + 1.980000000000000E-01 2.330217094005078E+00 + 1.990000000000000E-01 2.329877822828540E+00 + 2.000000000000000E-01 2.329536885715951E+00 + 2.010000000000000E-01 2.329194283325974E+00 + 2.020000000000000E-01 2.328850016320434E+00 + 2.030000000000000E-01 2.328504085364356E+00 + 2.040000000000000E-01 2.328156491125936E+00 + 2.050000000000000E-01 2.327807234276549E+00 + 2.060000000000000E-01 2.327456315490752E+00 + 2.070000000000000E-01 2.327103735446276E+00 + 2.080000000000000E-01 2.326749494824029E+00 + 2.090000000000000E-01 2.326393594308099E+00 + 2.100000000000000E-01 2.326036034585738E+00 + 2.110000000000000E-01 2.325676816347386E+00 + 2.120000000000000E-01 2.325315940286639E+00 + 2.130000000000000E-01 2.324953407100278E+00 + 2.140000000000000E-01 2.324589217488245E+00 + 2.150000000000000E-01 2.324223372153658E+00 + 2.160000000000000E-01 2.323855871802794E+00 + 2.170000000000000E-01 2.323486717145104E+00 + 2.180000000000000E-01 2.323115908893197E+00 + 2.190000000000000E-01 2.322743447762859E+00 + 2.200000000000000E-01 2.322369334473025E+00 + 2.210000000000000E-01 2.321993569745795E+00 + 2.220000000000000E-01 2.321616154306432E+00 + 2.230000000000000E-01 2.321237088883367E+00 + 2.240000000000000E-01 2.320856374208168E+00 + 2.250000000000000E-01 2.320474011015581E+00 + 2.260000000000000E-01 2.320090000043487E+00 + 2.270000000000000E-01 2.319704342032941E+00 + 2.280000000000000E-01 2.319317037728139E+00 + 2.290000000000000E-01 2.318928087876427E+00 + 2.300000000000000E-01 2.318537493228301E+00 + 2.310000000000000E-01 2.318145254537417E+00 + 2.320000000000000E-01 2.317751372560569E+00 + 2.330000000000000E-01 2.317355848057688E+00 + 2.340000000000000E-01 2.316958681791870E+00 + 2.350000000000000E-01 2.316559874529331E+00 + 2.360000000000000E-01 2.316159427039454E+00 + 2.370000000000000E-01 2.315757340094732E+00 + 2.380000000000000E-01 2.315353614470827E+00 + 2.390000000000000E-01 2.314948250946512E+00 + 2.400000000000000E-01 2.314541250303704E+00 + 2.410000000000000E-01 2.314132613327469E+00 + 2.420000000000000E-01 2.313722340805981E+00 + 2.430000000000000E-01 2.313310433530561E+00 + 2.440000000000000E-01 2.312896892295655E+00 + 2.450000000000000E-01 2.312481717898838E+00 + 2.460000000000000E-01 2.312064911140803E+00 + 2.470000000000000E-01 2.311646472825376E+00 + 2.480000000000000E-01 2.311226403759504E+00 + 2.490000000000000E-01 2.310804704753255E+00 + 2.500000000000000E-01 2.310381376619819E+00 + 2.510000000000000E-01 2.309956420175499E+00 + 2.520000000000000E-01 2.309529836239717E+00 + 2.530000000000000E-01 2.309101625635009E+00 + 2.540000000000000E-01 2.308671789187026E+00 + 2.550000000000000E-01 2.308240327724532E+00 + 2.560000000000000E-01 2.307807242079385E+00 + 2.570000000000000E-01 2.307372533086575E+00 + 2.580000000000000E-01 2.306936201584184E+00 + 2.590000000000000E-01 2.306498248413404E+00 + 2.600000000000000E-01 2.306058674418517E+00 + 2.610000000000000E-01 2.305617480446922E+00 + 2.620000000000000E-01 2.305174667349114E+00 + 2.630000000000000E-01 2.304730235978676E+00 + 2.640000000000000E-01 2.304284187192298E+00 + 2.650000000000000E-01 2.303836521849755E+00 + 2.660000000000000E-01 2.303387240813916E+00 + 2.670000000000000E-01 2.302936344950748E+00 + 2.680000000000000E-01 2.302483835129297E+00 + 2.690000000000000E-01 2.302029712221702E+00 + 2.700000000000000E-01 2.301573977103176E+00 + 2.710000000000000E-01 2.301116630652028E+00 + 2.720000000000000E-01 2.300657673749641E+00 + 2.730000000000000E-01 2.300197107280479E+00 + 2.740000000000000E-01 2.299734932132084E+00 + 2.750000000000000E-01 2.299271149195074E+00 + 2.760000000000000E-01 2.298805759363130E+00 + 2.770000000000000E-01 2.298338763533020E+00 + 2.780000000000000E-01 2.297870162604571E+00 + 2.790000000000000E-01 2.297399957480680E+00 + 2.800000000000000E-01 2.296928149067318E+00 + 2.810000000000000E-01 2.296454738273505E+00 + 2.820000000000000E-01 2.295979726011333E+00 + 2.830000000000000E-01 2.295503113195947E+00 + 2.840000000000000E-01 2.295024900745559E+00 + 2.850000000000000E-01 2.294545089581428E+00 + 2.860000000000000E-01 2.294063680627876E+00 + 2.870000000000000E-01 2.293580674812262E+00 + 2.880000000000000E-01 2.293096073065007E+00 + 2.890000000000000E-01 2.292609876319582E+00 + 2.900000000000000E-01 2.292122085512489E+00 + 2.910000000000000E-01 2.291632701583290E+00 + 2.920000000000000E-01 2.291141725474575E+00 + 2.930000000000000E-01 2.290649158131983E+00 + 2.940000000000000E-01 2.290155000504190E+00 + 2.950000000000000E-01 2.289659253542900E+00 + 2.960000000000000E-01 2.289161918202852E+00 + 2.970000000000000E-01 2.288662995441824E+00 + 2.980000000000000E-01 2.288162486220618E+00 + 2.990000000000000E-01 2.287660391503053E+00 + 3.000000000000000E-01 2.287156712255995E+00 + 3.010000000000000E-01 2.286651449449310E+00 + 3.020000000000000E-01 2.286144604055893E+00 + 3.030000000000000E-01 2.285636177051670E+00 + 3.040000000000000E-01 2.285126169415555E+00 + 3.050000000000000E-01 2.284614582129508E+00 + 3.060000000000000E-01 2.284101416178471E+00 + 3.070000000000000E-01 2.283586672550421E+00 + 3.080000000000000E-01 2.283070352236321E+00 + 3.090000000000000E-01 2.282552456230156E+00 + 3.100000000000000E-01 2.282032985528902E+00 + 3.110000000000000E-01 2.281511941132542E+00 + 3.120000000000000E-01 2.280989324044050E+00 + 3.130000000000000E-01 2.280465135269411E+00 + 3.140000000000000E-01 2.279939375817587E+00 + 3.150000000000000E-01 2.279412046700543E+00 + 3.160000000000000E-01 2.278883148933229E+00 + 3.170000000000000E-01 2.278352683533578E+00 + 3.180000000000000E-01 2.277820651522519E+00 + 3.190000000000000E-01 2.277287053923950E+00 + 3.200000000000000E-01 2.276751891764756E+00 + 3.210000000000000E-01 2.276215166074800E+00 + 3.220000000000000E-01 2.275676877886923E+00 + 3.230000000000000E-01 2.275137028236935E+00 + 3.240000000000000E-01 2.274595618163614E+00 + 3.250000000000000E-01 2.274052648708711E+00 + 3.260000000000000E-01 2.273508120916944E+00 + 3.270000000000000E-01 2.272962035835994E+00 + 3.280000000000000E-01 2.272414394516496E+00 + 3.290000000000000E-01 2.271865198012056E+00 + 3.300000000000000E-01 2.271314447379222E+00 + 3.310000000000000E-01 2.270762143677512E+00 + 3.320000000000000E-01 2.270208287969388E+00 + 3.330000000000000E-01 2.269652881320253E+00 + 3.340000000000000E-01 2.269095924798474E+00 + 3.350000000000000E-01 2.268537419475347E+00 + 3.360000000000000E-01 2.267977366425122E+00 + 3.370000000000000E-01 2.267415766724977E+00 + 3.380000000000000E-01 2.266852621455038E+00 + 3.390000000000000E-01 2.266287931698360E+00 + 3.400000000000000E-01 2.265721698540923E+00 + 3.410000000000000E-01 2.265153923071647E+00 + 3.420000000000000E-01 2.264584606382379E+00 + 3.430000000000000E-01 2.264013749567888E+00 + 3.440000000000000E-01 2.263441353725858E+00 + 3.450000000000000E-01 2.262867419956901E+00 + 3.460000000000000E-01 2.262291949364547E+00 + 3.470000000000000E-01 2.261714943055233E+00 + 3.480000000000000E-01 2.261136402138316E+00 + 3.490000000000000E-01 2.260556327726050E+00 + 3.500000000000000E-01 2.259974720933615E+00 + 3.510000000000000E-01 2.259391582879076E+00 + 3.520000000000000E-01 2.258806914683413E+00 + 3.530000000000000E-01 2.258220717470493E+00 + 3.540000000000000E-01 2.257632992367087E+00 + 3.550000000000000E-01 2.257043740502866E+00 + 3.560000000000000E-01 2.256452963010379E+00 + 3.570000000000000E-01 2.255860661025066E+00 + 3.580000000000000E-01 2.255266835685262E+00 + 3.590000000000000E-01 2.254671488132177E+00 + 3.600000000000000E-01 2.254074619509904E+00 + 3.610000000000000E-01 2.253476230965412E+00 + 3.620000000000000E-01 2.252876323648553E+00 + 3.630000000000000E-01 2.252274898712039E+00 + 3.640000000000000E-01 2.251671957311461E+00 + 3.650000000000000E-01 2.251067500605273E+00 + 3.660000000000000E-01 2.250461529754799E+00 + 3.670000000000000E-01 2.249854045924222E+00 + 3.680000000000000E-01 2.249245050280577E+00 + 3.690000000000000E-01 2.248634543993766E+00 + 3.700000000000000E-01 2.248022528236536E+00 + 3.710000000000000E-01 2.247409004184493E+00 + 3.720000000000000E-01 2.246793973016088E+00 + 3.730000000000000E-01 2.246177435912613E+00 + 3.740000000000000E-01 2.245559394058206E+00 + 3.750000000000000E-01 2.244939848639847E+00 + 3.760000000000000E-01 2.244318800847354E+00 + 3.770000000000000E-01 2.243696251873368E+00 + 3.780000000000000E-01 2.243072202913380E+00 + 3.790000000000000E-01 2.242446655165688E+00 + 3.800000000000000E-01 2.241819609831437E+00 + 3.810000000000000E-01 2.241191068114576E+00 + 3.820000000000000E-01 2.240561031221893E+00 + 3.830000000000000E-01 2.239929500362980E+00 + 3.840000000000000E-01 2.239296476750246E+00 + 3.850000000000000E-01 2.238661961598913E+00 + 3.860000000000000E-01 2.238025956127017E+00 + 3.870000000000000E-01 2.237388461555383E+00 + 3.880000000000000E-01 2.236749479107666E+00 + 3.890000000000000E-01 2.236109010010294E+00 + 3.900000000000000E-01 2.235467055492510E+00 + 3.910000000000000E-01 2.234823616786343E+00 + 3.920000000000000E-01 2.234178695126618E+00 + 3.930000000000000E-01 2.233532291750947E+00 + 3.940000000000000E-01 2.232884407899726E+00 + 3.950000000000000E-01 2.232235044816132E+00 + 3.960000000000000E-01 2.231584203746130E+00 + 3.970000000000000E-01 2.230931885938453E+00 + 3.980000000000000E-01 2.230278092644610E+00 + 3.990000000000000E-01 2.229622825118885E+00 + 4.000000000000000E-01 2.228966084618330E+00 + 4.010000000000000E-01 2.228307872402750E+00 + 4.020000000000000E-01 2.227648189734731E+00 + 4.030000000000000E-01 2.226987037879598E+00 + 4.040000000000000E-01 2.226324418105447E+00 + 4.050000000000000E-01 2.225660331683122E+00 + 4.060000000000000E-01 2.224994779886212E+00 + 4.070000000000000E-01 2.224327763991064E+00 + 4.080000000000000E-01 2.223659285276753E+00 + 4.090000000000000E-01 2.222989345025112E+00 + 4.100000000000000E-01 2.222317944520701E+00 + 4.110000000000000E-01 2.221645085050815E+00 + 4.120000000000000E-01 2.220970767905485E+00 + 4.130000000000000E-01 2.220294994377465E+00 + 4.140000000000000E-01 2.219617765762239E+00 + 4.150000000000000E-01 2.218939083358013E+00 + 4.160000000000000E-01 2.218258948465710E+00 + 4.170000000000000E-01 2.217577362388968E+00 + 4.180000000000000E-01 2.216894326434145E+00 + 4.190000000000000E-01 2.216209841910302E+00 + 4.200000000000000E-01 2.215523910129208E+00 + 4.210000000000000E-01 2.214836532405335E+00 + 4.220000000000000E-01 2.214147710055856E+00 + 4.230000000000000E-01 2.213457444400646E+00 + 4.240000000000000E-01 2.212765736762269E+00 + 4.250000000000000E-01 2.212072588465978E+00 + 4.260000000000000E-01 2.211378000839715E+00 + 4.270000000000000E-01 2.210681975214116E+00 + 4.280000000000000E-01 2.209984512922483E+00 + 4.290000000000000E-01 2.209285615300809E+00 + 4.300000000000000E-01 2.208585283687752E+00 + 4.310000000000000E-01 2.207883519424645E+00 + 4.320000000000000E-01 2.207180323855501E+00 + 4.330000000000000E-01 2.206475698326978E+00 + 4.340000000000000E-01 2.205769644188408E+00 + 4.350000000000000E-01 2.205062162791784E+00 + 4.360000000000000E-01 2.204353255491748E+00 + 4.370000000000000E-01 2.203642923645593E+00 + 4.380000000000000E-01 2.202931168613267E+00 + 4.390000000000000E-01 2.202217991757365E+00 + 4.400000000000000E-01 2.201503394443118E+00 + 4.410000000000000E-01 2.200787378038393E+00 + 4.420000000000000E-01 2.200069943913706E+00 + 4.430000000000000E-01 2.199351093442193E+00 + 4.440000000000000E-01 2.198630827999626E+00 + 4.450000000000000E-01 2.197909148964402E+00 + 4.460000000000000E-01 2.197186057717532E+00 + 4.470000000000000E-01 2.196461555642663E+00 + 4.480000000000000E-01 2.195735644126042E+00 + 4.490000000000000E-01 2.195008324556541E+00 + 4.500000000000000E-01 2.194279598325625E+00 + 4.510000000000000E-01 2.193549466827375E+00 + 4.520000000000000E-01 2.192817931458481E+00 + 4.530000000000000E-01 2.192084993618219E+00 + 4.540000000000000E-01 2.191350654708460E+00 + 4.550000000000000E-01 2.190614916133686E+00 + 4.560000000000000E-01 2.189877779300944E+00 + 4.570000000000000E-01 2.189139245619875E+00 + 4.580000000000000E-01 2.188399316502715E+00 + 4.590000000000000E-01 2.187657993364252E+00 + 4.600000000000000E-01 2.186915277621872E+00 + 4.610000000000000E-01 2.186171170695521E+00 + 4.620000000000000E-01 2.185425674007717E+00 + 4.630000000000000E-01 2.184678788983539E+00 + 4.640000000000000E-01 2.183930517050631E+00 + 4.650000000000000E-01 2.183180859639197E+00 + 4.660000000000000E-01 2.182429818181982E+00 + 4.670000000000000E-01 2.181677394114295E+00 + 4.680000000000000E-01 2.180923588873982E+00 + 4.690000000000000E-01 2.180168403901444E+00 + 4.700000000000000E-01 2.179411840639618E+00 + 4.710000000000000E-01 2.178653900533965E+00 + 4.720000000000000E-01 2.177894585032500E+00 + 4.730000000000000E-01 2.177133895585749E+00 + 4.740000000000000E-01 2.176371833646769E+00 + 4.750000000000000E-01 2.175608400671150E+00 + 4.760000000000000E-01 2.174843598116984E+00 + 4.770000000000000E-01 2.174077427444887E+00 + 4.780000000000000E-01 2.173309890117989E+00 + 4.790000000000000E-01 2.172540987601924E+00 + 4.800000000000000E-01 2.171770721364825E+00 + 4.810000000000000E-01 2.170999092877334E+00 + 4.820000000000000E-01 2.170226103612592E+00 + 4.830000000000000E-01 2.169451755046222E+00 + 4.840000000000000E-01 2.168676048656341E+00 + 4.850000000000000E-01 2.167898985923562E+00 + 4.860000000000000E-01 2.167120568330972E+00 + 4.870000000000000E-01 2.166340797364129E+00 + 4.880000000000000E-01 2.165559674511085E+00 + 4.890000000000000E-01 2.164777201262349E+00 + 4.900000000000000E-01 2.163993379110902E+00 + 4.910000000000000E-01 2.163208209552188E+00 + 4.920000000000000E-01 2.162421694084110E+00 + 4.930000000000000E-01 2.161633834207038E+00 + 4.940000000000000E-01 2.160844631423783E+00 + 4.950000000000000E-01 2.160054087239605E+00 + 4.960000000000000E-01 2.159262203162222E+00 + 4.970000000000000E-01 2.158468980701777E+00 + 4.980000000000000E-01 2.157674421370866E+00 + 4.990000000000000E-01 2.156878526684515E+00 + 5.000000000000000E-01 2.156081298160172E+00 + 5.010000000000000E-01 2.155282737317720E+00 + 5.020000000000000E-01 2.154482845679465E+00 + 5.030000000000000E-01 2.153681624770129E+00 + 5.040000000000000E-01 2.152879076116853E+00 + 5.050000000000000E-01 2.152075201249185E+00 + 5.060000000000000E-01 2.151270001699087E+00 + 5.070000000000000E-01 2.150463479000921E+00 + 5.080000000000000E-01 2.149655634691442E+00 + 5.090000000000000E-01 2.148846470309819E+00 + 5.100000000000000E-01 2.148035987397600E+00 + 5.110000000000000E-01 2.147224187498721E+00 + 5.120000000000000E-01 2.146411072159513E+00 + 5.130000000000000E-01 2.145596642928677E+00 + 5.140000000000000E-01 2.144780901357302E+00 + 5.150000000000000E-01 2.143963848998837E+00 + 5.160000000000000E-01 2.143145487409109E+00 + 5.170000000000000E-01 2.142325818146316E+00 + 5.180000000000000E-01 2.141504842771005E+00 + 5.190000000000000E-01 2.140682562846084E+00 + 5.200000000000000E-01 2.139858979936825E+00 + 5.210000000000000E-01 2.139034095610836E+00 + 5.220000000000000E-01 2.138207911438076E+00 + 5.230000000000000E-01 2.137380428990848E+00 + 5.240000000000000E-01 2.136551649843795E+00 + 5.250000000000000E-01 2.135721575573887E+00 + 5.260000000000000E-01 2.134890207760431E+00 + 5.270000000000000E-01 2.134057547985052E+00 + 5.280000000000000E-01 2.133223597831706E+00 + 5.290000000000000E-01 2.132388358886665E+00 + 5.300000000000000E-01 2.131551832738514E+00 + 5.310000000000000E-01 2.130714020978143E+00 + 5.320000000000000E-01 2.129874925198758E+00 + 5.330000000000000E-01 2.129034546995856E+00 + 5.340000000000000E-01 2.128192887967248E+00 + 5.350000000000000E-01 2.127349949713024E+00 + 5.360000000000000E-01 2.126505733835566E+00 + 5.370000000000000E-01 2.125660241939555E+00 + 5.380000000000000E-01 2.124813475631935E+00 + 5.390000000000000E-01 2.123965436521951E+00 + 5.400000000000000E-01 2.123116126221095E+00 + 5.410000000000000E-01 2.122265546343152E+00 + 5.420000000000000E-01 2.121413698504157E+00 + 5.430000000000000E-01 2.120560584322420E+00 + 5.440000000000000E-01 2.119706205418496E+00 + 5.450000000000000E-01 2.118850563415202E+00 + 5.460000000000000E-01 2.117993659937599E+00 + 5.470000000000000E-01 2.117135496612999E+00 + 5.480000000000000E-01 2.116276075070952E+00 + 5.490000000000000E-01 2.115415396943242E+00 + 5.500000000000000E-01 2.114553463863896E+00 + 5.510000000000000E-01 2.113690277469153E+00 + 5.520000000000000E-01 2.112825839397492E+00 + 5.530000000000000E-01 2.111960151289610E+00 + 5.540000000000000E-01 2.111093214788408E+00 + 5.550000000000000E-01 2.110225031539017E+00 + 5.560000000000000E-01 2.109355603188760E+00 + 5.570000000000001E-01 2.108484931387173E+00 + 5.580000000000001E-01 2.107613017785992E+00 + 5.590000000000001E-01 2.106739864039143E+00 + 5.600000000000001E-01 2.105865471802747E+00 + 5.610000000000001E-01 2.104989842735107E+00 + 5.620000000000001E-01 2.104112978496712E+00 + 5.629999999999999E-01 2.103234880750239E+00 + 5.639999999999999E-01 2.102355551160519E+00 + 5.649999999999999E-01 2.101474991394568E+00 + 5.659999999999999E-01 2.100593203121560E+00 + 5.669999999999999E-01 2.099710188012840E+00 + 5.679999999999999E-01 2.098825947741899E+00 + 5.690000000000000E-01 2.097940483984386E+00 + 5.700000000000000E-01 2.097053798418097E+00 + 5.710000000000000E-01 2.096165892722983E+00 + 5.720000000000000E-01 2.095276768581111E+00 + 5.730000000000000E-01 2.094386427676707E+00 + 5.740000000000000E-01 2.093494871696121E+00 + 5.750000000000000E-01 2.092602102327823E+00 + 5.760000000000000E-01 2.091708121262417E+00 + 5.770000000000000E-01 2.090812930192614E+00 + 5.780000000000000E-01 2.089916530813248E+00 + 5.790000000000000E-01 2.089018924821258E+00 + 5.800000000000000E-01 2.088120113915692E+00 + 5.810000000000000E-01 2.087220099797691E+00 + 5.820000000000000E-01 2.086318884170504E+00 + 5.830000000000000E-01 2.085416468739465E+00 + 5.840000000000000E-01 2.084512855211998E+00 + 5.850000000000000E-01 2.083608045297608E+00 + 5.860000000000000E-01 2.082702040707879E+00 + 5.870000000000000E-01 2.081794843156472E+00 + 5.880000000000000E-01 2.080886454359119E+00 + 5.890000000000000E-01 2.079976876033617E+00 + 5.900000000000000E-01 2.079066109899820E+00 + 5.910000000000000E-01 2.078154157679647E+00 + 5.920000000000000E-01 2.077241021097060E+00 + 5.930000000000000E-01 2.076326701878078E+00 + 5.940000000000000E-01 2.075411201750750E+00 + 5.950000000000000E-01 2.074494522445188E+00 + 5.960000000000000E-01 2.073576665693515E+00 + 5.970000000000000E-01 2.072657633229892E+00 + 5.980000000000000E-01 2.071737426790508E+00 + 5.990000000000000E-01 2.070816048113574E+00 + 6.000000000000000E-01 2.069893498939317E+00 + 6.010000000000000E-01 2.068969781009967E+00 + 6.020000000000000E-01 2.068044896069777E+00 + 6.030000000000000E-01 2.067118845864988E+00 + 6.040000000000000E-01 2.066191632143852E+00 + 6.050000000000000E-01 2.065263256656610E+00 + 6.060000000000000E-01 2.064333721155491E+00 + 6.070000000000000E-01 2.063403027394704E+00 + 6.080000000000000E-01 2.062471177130455E+00 + 6.090000000000000E-01 2.061538172120905E+00 + 6.100000000000000E-01 2.060604014126205E+00 + 6.110000000000000E-01 2.059668704908454E+00 + 6.120000000000000E-01 2.058732246231734E+00 + 6.130000000000000E-01 2.057794639862066E+00 + 6.140000000000000E-01 2.056855887567437E+00 + 6.150000000000000E-01 2.055915991117768E+00 + 6.160000000000000E-01 2.054974952284943E+00 + 6.170000000000000E-01 2.054032772842759E+00 + 6.180000000000000E-01 2.053089454566976E+00 + 6.190000000000000E-01 2.052144999235267E+00 + 6.200000000000000E-01 2.051199408627228E+00 + 6.210000000000000E-01 2.050252684524383E+00 + 6.220000000000000E-01 2.049304828710171E+00 + 6.230000000000000E-01 2.048355842969937E+00 + 6.240000000000000E-01 2.047405729090944E+00 + 6.250000000000000E-01 2.046454488862337E+00 + 6.260000000000000E-01 2.045502124075181E+00 + 6.270000000000000E-01 2.044548636522410E+00 + 6.280000000000000E-01 2.043594027998867E+00 + 6.290000000000000E-01 2.042638300301260E+00 + 6.300000000000000E-01 2.041681455228194E+00 + 6.310000000000000E-01 2.040723494580135E+00 + 6.320000000000000E-01 2.039764420159409E+00 + 6.330000000000000E-01 2.038804233770233E+00 + 6.340000000000000E-01 2.037842937218656E+00 + 6.350000000000000E-01 2.036880532312597E+00 + 6.360000000000000E-01 2.035917020861820E+00 + 6.370000000000000E-01 2.034952404677938E+00 + 6.380000000000000E-01 2.033986685574395E+00 + 6.390000000000000E-01 2.033019865366481E+00 + 6.400000000000000E-01 2.032051945871313E+00 + 6.410000000000000E-01 2.031082928907832E+00 + 6.420000000000000E-01 2.030112816296799E+00 + 6.430000000000000E-01 2.029141609860802E+00 + 6.440000000000000E-01 2.028169311424221E+00 + 6.450000000000000E-01 2.027195922813258E+00 + 6.460000000000000E-01 2.026221445855917E+00 + 6.470000000000000E-01 2.025245882381991E+00 + 6.480000000000000E-01 2.024269234223068E+00 + 6.490000000000000E-01 2.023291503212527E+00 + 6.500000000000000E-01 2.022312691185528E+00 + 6.510000000000000E-01 2.021332799979005E+00 + 6.520000000000000E-01 2.020351831431668E+00 + 6.530000000000000E-01 2.019369787383997E+00 + 6.540000000000000E-01 2.018386669678230E+00 + 6.550000000000000E-01 2.017402480158365E+00 + 6.560000000000000E-01 2.016417220670155E+00 + 6.570000000000000E-01 2.015430893061100E+00 + 6.580000000000000E-01 2.014443499180443E+00 + 6.590000000000000E-01 2.013455040879165E+00 + 6.600000000000000E-01 2.012465520009987E+00 + 6.610000000000000E-01 2.011474938427353E+00 + 6.620000000000000E-01 2.010483297987426E+00 + 6.630000000000000E-01 2.009490600548098E+00 + 6.640000000000000E-01 2.008496847968966E+00 + 6.650000000000000E-01 2.007502042111345E+00 + 6.660000000000000E-01 2.006506184838246E+00 + 6.670000000000000E-01 2.005509278014386E+00 + 6.680000000000000E-01 2.004511323506169E+00 + 6.690000000000000E-01 2.003512323181691E+00 + 6.700000000000000E-01 2.002512278910734E+00 + 6.710000000000000E-01 2.001511192564756E+00 + 6.720000000000000E-01 2.000509066016895E+00 + 6.730000000000000E-01 1.999505901141951E+00 + 6.740000000000000E-01 1.998501699816392E+00 + 6.750000000000000E-01 1.997496463918338E+00 + 6.760000000000000E-01 1.996490195327580E+00 + 6.770000000000000E-01 1.995482895925543E+00 + 6.780000000000000E-01 1.994474567595296E+00 + 6.790000000000000E-01 1.993465212221554E+00 + 6.800000000000000E-01 1.992454831690666E+00 + 6.810000000000000E-01 1.991443427890606E+00 + 6.820000000000001E-01 1.990431002710968E+00 + 6.830000000000001E-01 1.989417558042978E+00 + 6.840000000000001E-01 1.988403095779459E+00 + 6.850000000000001E-01 1.987387617814858E+00 + 6.860000000000001E-01 1.986371126045214E+00 + 6.870000000000001E-01 1.985353622368168E+00 + 6.879999999999999E-01 1.984335108682962E+00 + 6.889999999999999E-01 1.983315586890412E+00 + 6.899999999999999E-01 1.982295058892929E+00 + 6.909999999999999E-01 1.981273526594500E+00 + 6.919999999999999E-01 1.980250991900673E+00 + 6.929999999999999E-01 1.979227456718579E+00 + 6.940000000000000E-01 1.978202922956911E+00 + 6.950000000000000E-01 1.977177392525906E+00 + 6.960000000000000E-01 1.976150867337362E+00 + 6.970000000000000E-01 1.975123349304627E+00 + 6.980000000000000E-01 1.974094840342586E+00 + 6.990000000000000E-01 1.973065342367667E+00 + 7.000000000000000E-01 1.972034857297816E+00 + 7.010000000000000E-01 1.971003387052525E+00 + 7.020000000000000E-01 1.969970933552789E+00 + 7.030000000000000E-01 1.968937498721134E+00 + 7.040000000000000E-01 1.967903084481583E+00 + 7.050000000000000E-01 1.966867692759677E+00 + 7.060000000000000E-01 1.965831325482445E+00 + 7.070000000000000E-01 1.964793984578429E+00 + 7.080000000000000E-01 1.963755671977645E+00 + 7.090000000000000E-01 1.962716389611596E+00 + 7.100000000000000E-01 1.961676139413270E+00 + 7.110000000000000E-01 1.960634923317130E+00 + 7.120000000000000E-01 1.959592743259105E+00 + 7.130000000000000E-01 1.958549601176585E+00 + 7.140000000000000E-01 1.957505499008426E+00 + 7.150000000000000E-01 1.956460438694929E+00 + 7.160000000000000E-01 1.955414422177845E+00 + 7.170000000000000E-01 1.954367451400380E+00 + 7.180000000000000E-01 1.953319528307159E+00 + 7.190000000000000E-01 1.952270654844251E+00 + 7.200000000000000E-01 1.951220832959143E+00 + 7.210000000000000E-01 1.950170064600757E+00 + 7.220000000000000E-01 1.949118351719422E+00 + 7.230000000000000E-01 1.948065696266876E+00 + 7.240000000000000E-01 1.947012100196268E+00 + 7.250000000000000E-01 1.945957565462147E+00 + 7.260000000000000E-01 1.944902094020452E+00 + 7.270000000000000E-01 1.943845687828515E+00 + 7.280000000000000E-01 1.942788348845061E+00 + 7.290000000000000E-01 1.941730079030174E+00 + 7.300000000000000E-01 1.940670880345330E+00 + 7.310000000000000E-01 1.939610754753368E+00 + 7.320000000000000E-01 1.938549704218484E+00 + 7.330000000000000E-01 1.937487730706236E+00 + 7.340000000000000E-01 1.936424836183539E+00 + 7.350000000000000E-01 1.935361022618647E+00 + 7.360000000000000E-01 1.934296291981156E+00 + 7.370000000000000E-01 1.933230646242009E+00 + 7.380000000000000E-01 1.932164087373463E+00 + 7.390000000000000E-01 1.931096617349107E+00 + 7.400000000000000E-01 1.930028238143859E+00 + 7.410000000000000E-01 1.928958951733937E+00 + 7.420000000000000E-01 1.927888760096879E+00 + 7.430000000000000E-01 1.926817665211519E+00 + 7.440000000000000E-01 1.925745669057994E+00 + 7.450000000000000E-01 1.924672773617732E+00 + 7.460000000000000E-01 1.923598980873446E+00 + 7.470000000000000E-01 1.922524292809134E+00 + 7.480000000000000E-01 1.921448711410073E+00 + 7.490000000000000E-01 1.920372238662800E+00 + 7.500000000000000E-01 1.919294876555131E+00 + 7.510000000000000E-01 1.918216627076132E+00 + 7.520000000000000E-01 1.917137492216131E+00 + 7.530000000000000E-01 1.916057473966695E+00 + 7.540000000000000E-01 1.914976574320643E+00 + 7.550000000000000E-01 1.913894795272033E+00 + 7.560000000000000E-01 1.912812138816147E+00 + 7.570000000000000E-01 1.911728606949501E+00 + 7.580000000000000E-01 1.910644201669830E+00 + 7.590000000000000E-01 1.909558924976089E+00 + 7.600000000000000E-01 1.908472778868431E+00 + 7.610000000000000E-01 1.907385765348236E+00 + 7.620000000000000E-01 1.906297886418061E+00 + 7.630000000000000E-01 1.905209144081666E+00 + 7.640000000000000E-01 1.904119540344001E+00 + 7.650000000000000E-01 1.903029077211200E+00 + 7.660000000000000E-01 1.901937756690573E+00 + 7.670000000000000E-01 1.900845580790595E+00 + 7.680000000000000E-01 1.899752551520911E+00 + 7.690000000000000E-01 1.898658670892335E+00 + 7.700000000000000E-01 1.897563940916828E+00 + 7.710000000000000E-01 1.896468363607495E+00 + 7.720000000000000E-01 1.895371940978594E+00 + 7.730000000000000E-01 1.894274675045522E+00 + 7.740000000000000E-01 1.893176567824802E+00 + 7.750000000000000E-01 1.892077621334086E+00 + 7.760000000000000E-01 1.890977837592153E+00 + 7.770000000000000E-01 1.889877218618887E+00 + 7.780000000000000E-01 1.888775766435295E+00 + 7.790000000000000E-01 1.887673483063478E+00 + 7.800000000000000E-01 1.886570370526640E+00 + 7.810000000000000E-01 1.885466430849084E+00 + 7.820000000000000E-01 1.884361666056186E+00 + 7.830000000000000E-01 1.883256078174424E+00 + 7.840000000000000E-01 1.882149669231337E+00 + 7.850000000000000E-01 1.881042441255539E+00 + 7.860000000000000E-01 1.879934396276713E+00 + 7.870000000000000E-01 1.878825536325591E+00 + 7.880000000000000E-01 1.877715863433972E+00 + 7.890000000000000E-01 1.876605379634701E+00 + 7.900000000000000E-01 1.875494086961654E+00 + 7.910000000000000E-01 1.874381987449757E+00 + 7.920000000000000E-01 1.873269083134962E+00 + 7.930000000000000E-01 1.872155376054240E+00 + 7.940000000000000E-01 1.871040868245596E+00 + 7.950000000000000E-01 1.869925561748037E+00 + 7.960000000000000E-01 1.868809458601586E+00 + 7.970000000000000E-01 1.867692560847261E+00 + 7.980000000000000E-01 1.866574870527080E+00 + 7.990000000000000E-01 1.865456389684058E+00 + 8.000000000000000E-01 1.864337120362192E+00 + 8.010000000000000E-01 1.863217064606451E+00 + 8.020000000000000E-01 1.862096224462792E+00 + 8.030000000000000E-01 1.860974601978129E+00 + 8.040000000000000E-01 1.859852199200345E+00 + 8.050000000000000E-01 1.858729018178278E+00 + 8.060000000000000E-01 1.857605060961711E+00 + 8.070000000000001E-01 1.856480329601388E+00 + 8.080000000000001E-01 1.855354826148973E+00 + 8.090000000000001E-01 1.854228552657079E+00 + 8.100000000000001E-01 1.853101511179243E+00 + 8.110000000000001E-01 1.851973703769919E+00 + 8.120000000000001E-01 1.850845132484485E+00 + 8.129999999999999E-01 1.849715799379223E+00 + 8.139999999999999E-01 1.848585706511326E+00 + 8.149999999999999E-01 1.847454855938887E+00 + 8.159999999999999E-01 1.846323249720881E+00 + 8.169999999999999E-01 1.845190889917183E+00 + 8.179999999999999E-01 1.844057778588546E+00 + 8.190000000000000E-01 1.842923917796600E+00 + 8.200000000000000E-01 1.841789309603836E+00 + 8.210000000000000E-01 1.840653956073627E+00 + 8.220000000000000E-01 1.839517859270193E+00 + 8.230000000000000E-01 1.838381021258602E+00 + 8.240000000000000E-01 1.837243444104780E+00 + 8.250000000000000E-01 1.836105129875489E+00 + 8.260000000000000E-01 1.834966080638327E+00 + 8.270000000000000E-01 1.833826298461722E+00 + 8.280000000000000E-01 1.832685785414922E+00 + 8.290000000000000E-01 1.831544543567999E+00 + 8.300000000000000E-01 1.830402574991833E+00 + 8.310000000000000E-01 1.829259881758107E+00 + 8.320000000000000E-01 1.828116465939313E+00 + 8.330000000000000E-01 1.826972329608731E+00 + 8.340000000000000E-01 1.825827474840431E+00 + 8.350000000000000E-01 1.824681903709262E+00 + 8.360000000000000E-01 1.823535618290853E+00 + 8.370000000000000E-01 1.822388620661610E+00 + 8.380000000000000E-01 1.821240912898690E+00 + 8.390000000000000E-01 1.820092497080021E+00 + 8.400000000000000E-01 1.818943375284280E+00 + 8.410000000000000E-01 1.817793549590894E+00 + 8.420000000000000E-01 1.816643022080021E+00 + 8.430000000000000E-01 1.815491794832574E+00 + 8.440000000000000E-01 1.814339869930175E+00 + 8.450000000000000E-01 1.813187249455180E+00 + 8.460000000000000E-01 1.812033935490664E+00 + 8.470000000000000E-01 1.810879930120410E+00 + 8.480000000000000E-01 1.809725235428909E+00 + 8.490000000000000E-01 1.808569853501349E+00 + 8.500000000000000E-01 1.807413786423621E+00 + 8.510000000000000E-01 1.806257036282290E+00 + 8.520000000000000E-01 1.805099605164615E+00 + 8.530000000000000E-01 1.803941495158525E+00 + 8.540000000000000E-01 1.802782708352629E+00 + 8.550000000000000E-01 1.801623246836180E+00 + 8.560000000000000E-01 1.800463112699117E+00 + 8.570000000000000E-01 1.799302308032004E+00 + 8.580000000000000E-01 1.798140834926076E+00 + 8.590000000000000E-01 1.796978695473190E+00 + 8.600000000000000E-01 1.795815891765844E+00 + 8.610000000000000E-01 1.794652425897170E+00 + 8.620000000000000E-01 1.793488299960920E+00 + 8.630000000000000E-01 1.792323516051457E+00 + 8.640000000000000E-01 1.791158076263761E+00 + 8.650000000000000E-01 1.789991982693411E+00 + 8.660000000000000E-01 1.788825237436595E+00 + 8.670000000000000E-01 1.787657842590083E+00 + 8.680000000000000E-01 1.786489800251233E+00 + 8.690000000000000E-01 1.785321112517999E+00 + 8.700000000000000E-01 1.784151781488883E+00 + 8.710000000000000E-01 1.782981809262981E+00 + 8.720000000000000E-01 1.781811197939942E+00 + 8.730000000000000E-01 1.780639949619965E+00 + 8.740000000000000E-01 1.779468066403809E+00 + 8.750000000000000E-01 1.778295550392778E+00 + 8.760000000000000E-01 1.777122403688713E+00 + 8.770000000000000E-01 1.775948628393979E+00 + 8.780000000000000E-01 1.774774226611482E+00 + 8.790000000000000E-01 1.773599200444646E+00 + 8.800000000000000E-01 1.772423551997398E+00 + 8.810000000000000E-01 1.771247283374185E+00 + 8.820000000000000E-01 1.770070396679954E+00 + 8.830000000000000E-01 1.768892894020151E+00 + 8.840000000000000E-01 1.767714777500710E+00 + 8.850000000000000E-01 1.766536049228043E+00 + 8.860000000000000E-01 1.765356711309054E+00 + 8.870000000000000E-01 1.764176765851106E+00 + 8.880000000000000E-01 1.762996214962045E+00 + 8.890000000000000E-01 1.761815060750155E+00 + 8.900000000000000E-01 1.760633305324198E+00 + 8.910000000000000E-01 1.759450950793368E+00 + 8.920000000000000E-01 1.758267999267304E+00 + 8.930000000000000E-01 1.757084452856087E+00 + 8.940000000000000E-01 1.755900313670220E+00 + 8.950000000000000E-01 1.754715583820641E+00 + 8.960000000000000E-01 1.753530265418697E+00 + 8.970000000000000E-01 1.752344360576148E+00 + 8.980000000000000E-01 1.751157871405161E+00 + 8.990000000000000E-01 1.749970800018305E+00 + 9.000000000000000E-01 1.748783148528539E+00 + 9.010000000000000E-01 1.747594919049214E+00 + 9.020000000000000E-01 1.746406113694059E+00 + 9.030000000000000E-01 1.745216734577173E+00 + 9.040000000000000E-01 1.744026783813037E+00 + 9.050000000000000E-01 1.742836263516489E+00 + 9.060000000000000E-01 1.741645175802718E+00 + 9.070000000000000E-01 1.740453522787276E+00 + 9.080000000000000E-01 1.739261306586048E+00 + 9.090000000000000E-01 1.738068529315267E+00 + 9.100000000000000E-01 1.736875193091495E+00 + 9.110000000000000E-01 1.735681300031621E+00 + 9.120000000000000E-01 1.734486852252856E+00 + 9.130000000000000E-01 1.733291851872722E+00 + 9.140000000000000E-01 1.732096301009051E+00 + 9.150000000000000E-01 1.730900201779974E+00 + 9.160000000000000E-01 1.729703556303926E+00 + 9.170000000000000E-01 1.728506366699629E+00 + 9.180000000000000E-01 1.727308635086080E+00 + 9.190000000000000E-01 1.726110363582566E+00 + 9.200000000000000E-01 1.724911554308644E+00 + 9.210000000000000E-01 1.723712209384122E+00 + 9.220000000000000E-01 1.722512330929089E+00 + 9.230000000000000E-01 1.721311921063867E+00 + 9.240000000000000E-01 1.720110981909041E+00 + 9.250000000000000E-01 1.718909515585427E+00 + 9.260000000000000E-01 1.717707524214084E+00 + 9.270000000000000E-01 1.716505009916290E+00 + 9.280000000000000E-01 1.715301974813547E+00 + 9.290000000000000E-01 1.714098421027584E+00 + 9.300000000000000E-01 1.712894350680330E+00 + 9.310000000000000E-01 1.711689765893918E+00 + 9.320000000000001E-01 1.710484668790688E+00 + 9.330000000000001E-01 1.709279061493161E+00 + 9.340000000000001E-01 1.708072946124048E+00 + 9.350000000000001E-01 1.706866324806240E+00 + 9.360000000000001E-01 1.705659199662805E+00 + 9.370000000000001E-01 1.704451572816966E+00 + 9.379999999999999E-01 1.703243446392127E+00 + 9.389999999999999E-01 1.702034822511822E+00 + 9.399999999999999E-01 1.700825703299756E+00 + 9.409999999999999E-01 1.699616090879764E+00 + 9.419999999999999E-01 1.698405987375820E+00 + 9.429999999999999E-01 1.697195394912028E+00 + 9.440000000000000E-01 1.695984315612622E+00 + 9.450000000000000E-01 1.694772751601943E+00 + 9.460000000000000E-01 1.693560705004452E+00 + 9.470000000000000E-01 1.692348177944716E+00 + 9.480000000000000E-01 1.691135172547388E+00 + 9.490000000000000E-01 1.689921690937237E+00 + 9.500000000000000E-01 1.688707735239100E+00 + 9.510000000000000E-01 1.687493307577903E+00 + 9.520000000000000E-01 1.686278410078642E+00 + 9.530000000000000E-01 1.685063044866387E+00 + 9.540000000000000E-01 1.683847214066268E+00 + 9.550000000000000E-01 1.682630919803473E+00 + 9.560000000000000E-01 1.681414164203235E+00 + 9.570000000000000E-01 1.680196949390836E+00 + 9.580000000000000E-01 1.678979277491589E+00 + 9.590000000000000E-01 1.677761150630844E+00 + 9.600000000000000E-01 1.676542570933981E+00 + 9.610000000000000E-01 1.675323540526387E+00 + 9.620000000000000E-01 1.674104061533467E+00 + 9.630000000000000E-01 1.672884136080637E+00 + 9.640000000000000E-01 1.671663766293310E+00 + 9.650000000000000E-01 1.670442954296892E+00 + 9.660000000000000E-01 1.669221702216775E+00 + 9.670000000000000E-01 1.668000012178344E+00 + 9.680000000000000E-01 1.666777886306946E+00 + 9.690000000000000E-01 1.665555326727905E+00 + 9.700000000000000E-01 1.664332335566508E+00 + 9.710000000000000E-01 1.663108914947996E+00 + 9.720000000000000E-01 1.661885066997564E+00 + 9.730000000000000E-01 1.660660793840346E+00 + 9.740000000000000E-01 1.659436097601430E+00 + 9.750000000000000E-01 1.658210980405816E+00 + 9.760000000000000E-01 1.656985444378447E+00 + 9.770000000000000E-01 1.655759491644172E+00 + 9.780000000000000E-01 1.654533124327764E+00 + 9.790000000000000E-01 1.653306344553901E+00 + 9.800000000000000E-01 1.652079154447160E+00 + 9.810000000000000E-01 1.650851556132016E+00 + 9.820000000000000E-01 1.649623551732829E+00 + 9.830000000000000E-01 1.648395143373848E+00 + 9.840000000000000E-01 1.647166333179190E+00 + 9.850000000000000E-01 1.645937123272852E+00 + 9.860000000000000E-01 1.644707515778691E+00 + 9.870000000000000E-01 1.643477512820422E+00 + 9.880000000000000E-01 1.642247116521605E+00 + 9.890000000000000E-01 1.641016329005657E+00 + 9.900000000000000E-01 1.639785152395832E+00 + 9.910000000000000E-01 1.638553588815210E+00 + 9.920000000000000E-01 1.637321640386703E+00 + 9.930000000000000E-01 1.636089309233045E+00 + 9.940000000000000E-01 1.634856597476787E+00 + 9.950000000000000E-01 1.633623507240273E+00 + 9.960000000000000E-01 1.632390040645673E+00 + 9.970000000000000E-01 1.631156199814932E+00 + 9.980000000000000E-01 1.629921986869798E+00 + 9.990000000000000E-01 1.628687403931796E+00 + 1.000000000000000E+00 1.627452453122231E+00 + 1.001000000000000E+00 1.626217136562176E+00 + 1.002000000000000E+00 1.624981456372479E+00 + 1.003000000000000E+00 1.623745414673732E+00 + 1.004000000000000E+00 1.622509013586289E+00 + 1.005000000000000E+00 1.621272255230249E+00 + 1.006000000000000E+00 1.620035141725449E+00 + 1.007000000000000E+00 1.618797675191465E+00 + 1.008000000000000E+00 1.617559857747595E+00 + 1.009000000000000E+00 1.616321691512858E+00 + 1.010000000000000E+00 1.615083178606001E+00 + 1.011000000000000E+00 1.613844321145458E+00 + 1.012000000000000E+00 1.612605121249386E+00 + 1.013000000000000E+00 1.611365581035630E+00 + 1.014000000000000E+00 1.610125702621729E+00 + 1.015000000000000E+00 1.608885488124905E+00 + 1.016000000000000E+00 1.607644939662053E+00 + 1.017000000000000E+00 1.606404059349749E+00 + 1.018000000000000E+00 1.605162849304227E+00 + 1.019000000000000E+00 1.603921311641389E+00 + 1.020000000000000E+00 1.602679448476781E+00 + 1.021000000000000E+00 1.601437261925609E+00 + 1.022000000000000E+00 1.600194754102702E+00 + 1.023000000000000E+00 1.598951927122542E+00 + 1.024000000000000E+00 1.597708783099228E+00 + 1.025000000000000E+00 1.596465324146488E+00 + 1.026000000000000E+00 1.595221552377663E+00 + 1.027000000000000E+00 1.593977469905703E+00 + 1.028000000000000E+00 1.592733078843168E+00 + 1.029000000000000E+00 1.591488381302207E+00 + 1.030000000000000E+00 1.590243379394571E+00 + 1.031000000000000E+00 1.588998075231588E+00 + 1.032000000000000E+00 1.587752470924165E+00 + 1.033000000000000E+00 1.586506568582791E+00 + 1.034000000000000E+00 1.585260370317514E+00 + 1.035000000000000E+00 1.584013878237945E+00 + 1.036000000000000E+00 1.582767094453252E+00 + 1.037000000000000E+00 1.581520021072144E+00 + 1.038000000000000E+00 1.580272660202879E+00 + 1.039000000000000E+00 1.579025013953252E+00 + 1.040000000000000E+00 1.577777084430582E+00 + 1.041000000000000E+00 1.576528873741721E+00 + 1.042000000000000E+00 1.575280383993023E+00 + 1.043000000000000E+00 1.574031617290369E+00 + 1.044000000000000E+00 1.572782575739135E+00 + 1.045000000000000E+00 1.571533261444209E+00 + 1.046000000000000E+00 1.570283676509951E+00 + 1.047000000000000E+00 1.569033823040231E+00 + 1.048000000000000E+00 1.567783703138380E+00 + 1.049000000000000E+00 1.566533318907215E+00 + 1.050000000000000E+00 1.565282672449023E+00 + 1.051000000000000E+00 1.564031765865538E+00 + 1.052000000000000E+00 1.562780601257970E+00 + 1.053000000000000E+00 1.561529180726965E+00 + 1.054000000000000E+00 1.560277506372618E+00 + 1.055000000000000E+00 1.559025580294459E+00 + 1.056000000000000E+00 1.557773404591451E+00 + 1.057000000000000E+00 1.556520981361984E+00 + 1.058000000000000E+00 1.555268312703862E+00 + 1.059000000000000E+00 1.554015400714313E+00 + 1.060000000000000E+00 1.552762247489953E+00 + 1.061000000000000E+00 1.551508855126817E+00 + 1.062000000000000E+00 1.550255225720324E+00 + 1.063000000000000E+00 1.549001361365292E+00 + 1.064000000000000E+00 1.547747264155903E+00 + 1.065000000000000E+00 1.546492936185736E+00 + 1.066000000000000E+00 1.545238379547726E+00 + 1.067000000000000E+00 1.543983596334177E+00 + 1.068000000000000E+00 1.542728588636753E+00 + 1.069000000000000E+00 1.541473358546467E+00 + 1.070000000000000E+00 1.540217908153670E+00 + 1.071000000000000E+00 1.538962239548072E+00 + 1.072000000000000E+00 1.537706354818699E+00 + 1.073000000000000E+00 1.536450256053908E+00 + 1.074000000000000E+00 1.535193945341384E+00 + 1.075000000000000E+00 1.533937424768117E+00 + 1.076000000000000E+00 1.532680696420416E+00 + 1.077000000000000E+00 1.531423762383890E+00 + 1.078000000000000E+00 1.530166624743437E+00 + 1.079000000000000E+00 1.528909285583253E+00 + 1.080000000000000E+00 1.527651746986823E+00 + 1.081000000000000E+00 1.526394011036898E+00 + 1.082000000000000E+00 1.525136079815514E+00 + 1.083000000000000E+00 1.523877955403965E+00 + 1.084000000000000E+00 1.522619639882806E+00 + 1.085000000000000E+00 1.521361135331855E+00 + 1.086000000000000E+00 1.520102443830165E+00 + 1.087000000000000E+00 1.518843567456043E+00 + 1.088000000000000E+00 1.517584508287022E+00 + 1.089000000000000E+00 1.516325268399870E+00 + 1.090000000000000E+00 1.515065849870584E+00 + 1.091000000000000E+00 1.513806254774370E+00 + 1.092000000000000E+00 1.512546485185644E+00 + 1.093000000000000E+00 1.511286543178043E+00 + 1.094000000000000E+00 1.510026430824387E+00 + 1.095000000000000E+00 1.508766150196700E+00 + 1.096000000000000E+00 1.507505703366184E+00 + 1.097000000000000E+00 1.506245092403235E+00 + 1.098000000000000E+00 1.504984319377416E+00 + 1.099000000000000E+00 1.503723386357458E+00 + 1.100000000000000E+00 1.502462295411266E+00 + 1.101000000000000E+00 1.501201048605887E+00 + 1.102000000000000E+00 1.499939648007531E+00 + 1.103000000000000E+00 1.498678095681555E+00 + 1.104000000000000E+00 1.497416393692444E+00 + 1.105000000000000E+00 1.496154544103828E+00 + 1.106000000000000E+00 1.494892548978454E+00 + 1.107000000000000E+00 1.493630410378201E+00 + 1.108000000000000E+00 1.492368130364057E+00 + 1.109000000000000E+00 1.491105710996114E+00 + 1.110000000000000E+00 1.489843154333581E+00 + 1.111000000000000E+00 1.488580462434758E+00 + 1.112000000000000E+00 1.487317637357028E+00 + 1.113000000000000E+00 1.486054681156872E+00 + 1.114000000000000E+00 1.484791595889845E+00 + 1.115000000000000E+00 1.483528383610575E+00 + 1.116000000000000E+00 1.482265046372760E+00 + 1.117000000000000E+00 1.481001586229152E+00 + 1.118000000000000E+00 1.479738005231569E+00 + 1.119000000000000E+00 1.478474305430875E+00 + 1.120000000000000E+00 1.477210488876973E+00 + 1.121000000000000E+00 1.475946557618808E+00 + 1.122000000000000E+00 1.474682513704357E+00 + 1.123000000000000E+00 1.473418359180620E+00 + 1.124000000000000E+00 1.472154096093617E+00 + 1.125000000000000E+00 1.470889726488384E+00 + 1.126000000000000E+00 1.469625252408967E+00 + 1.127000000000000E+00 1.468360675898408E+00 + 1.128000000000000E+00 1.467095998998749E+00 + 1.129000000000000E+00 1.465831223751021E+00 + 1.130000000000000E+00 1.464566352195238E+00 + 1.131000000000000E+00 1.463301386370398E+00 + 1.132000000000000E+00 1.462036328314467E+00 + 1.133000000000000E+00 1.460771180064373E+00 + 1.134000000000000E+00 1.459505943656011E+00 + 1.135000000000000E+00 1.458240621124234E+00 + 1.136000000000000E+00 1.456975214502836E+00 + 1.137000000000000E+00 1.455709725824554E+00 + 1.138000000000000E+00 1.454444157121070E+00 + 1.139000000000000E+00 1.453178510422988E+00 + 1.140000000000000E+00 1.451912787759843E+00 + 1.141000000000000E+00 1.450646991160093E+00 + 1.142000000000000E+00 1.449381122651094E+00 + 1.143000000000000E+00 1.448115184259130E+00 + 1.144000000000000E+00 1.446849178009370E+00 + 1.145000000000000E+00 1.445583105925893E+00 + 1.146000000000000E+00 1.444316970031655E+00 + 1.147000000000000E+00 1.443050772348509E+00 + 1.148000000000000E+00 1.441784514897172E+00 + 1.149000000000000E+00 1.440518199697250E+00 + 1.150000000000000E+00 1.439251828767202E+00 + 1.151000000000000E+00 1.437985404124357E+00 + 1.152000000000000E+00 1.436718927784893E+00 + 1.153000000000000E+00 1.435452401763842E+00 + 1.154000000000000E+00 1.434185828075076E+00 + 1.155000000000000E+00 1.432919208731310E+00 + 1.156000000000000E+00 1.431652545744086E+00 + 1.157000000000000E+00 1.430385841123771E+00 + 1.158000000000000E+00 1.429119096879555E+00 + 1.159000000000000E+00 1.427852315019446E+00 + 1.160000000000000E+00 1.426585497550259E+00 + 1.161000000000000E+00 1.425318646477604E+00 + 1.162000000000000E+00 1.424051763805899E+00 + 1.163000000000000E+00 1.422784851538351E+00 + 1.164000000000000E+00 1.421517911676949E+00 + 1.165000000000000E+00 1.420250946222464E+00 + 1.166000000000000E+00 1.418983957174442E+00 + 1.167000000000000E+00 1.417716946531200E+00 + 1.168000000000000E+00 1.416449916289809E+00 + 1.169000000000000E+00 1.415182868446108E+00 + 1.170000000000000E+00 1.413915804994682E+00 + 1.171000000000000E+00 1.412648727928856E+00 + 1.172000000000000E+00 1.411381639240710E+00 + 1.173000000000000E+00 1.410114540921040E+00 + 1.174000000000000E+00 1.408847434959388E+00 + 1.175000000000000E+00 1.407580323344007E+00 + 1.176000000000000E+00 1.406313208061871E+00 + 1.177000000000000E+00 1.405046091098661E+00 + 1.178000000000000E+00 1.403778974438774E+00 + 1.179000000000000E+00 1.402511860065298E+00 + 1.180000000000000E+00 1.401244749960021E+00 + 1.181000000000000E+00 1.399977646103416E+00 + 1.182000000000000E+00 1.398710550474639E+00 + 1.183000000000000E+00 1.397443465051527E+00 + 1.184000000000000E+00 1.396176391810583E+00 + 1.185000000000000E+00 1.394909332726983E+00 + 1.186000000000000E+00 1.393642289774564E+00 + 1.187000000000000E+00 1.392375264925804E+00 + 1.188000000000000E+00 1.391108260151852E+00 + 1.189000000000000E+00 1.389841277422484E+00 + 1.190000000000000E+00 1.388574318706122E+00 + 1.191000000000000E+00 1.387307385969812E+00 + 1.192000000000000E+00 1.386040481179243E+00 + 1.193000000000000E+00 1.384773606298704E+00 + 1.194000000000000E+00 1.383506763291123E+00 + 1.195000000000000E+00 1.382239954118018E+00 + 1.196000000000000E+00 1.380973180739521E+00 + 1.197000000000000E+00 1.379706445114363E+00 + 1.198000000000000E+00 1.378439749199870E+00 + 1.199000000000000E+00 1.377173094951946E+00 + 1.200000000000000E+00 1.375906484325096E+00 + 1.201000000000000E+00 1.374639919272380E+00 + 1.202000000000000E+00 1.373373401745446E+00 + 1.203000000000000E+00 1.372106933694498E+00 + 1.204000000000000E+00 1.370840517068306E+00 + 1.205000000000000E+00 1.369574153814195E+00 + 1.206000000000000E+00 1.368307845878031E+00 + 1.207000000000000E+00 1.367041595204236E+00 + 1.208000000000000E+00 1.365775403735759E+00 + 1.209000000000000E+00 1.364509273414090E+00 + 1.210000000000000E+00 1.363243206179243E+00 + 1.211000000000000E+00 1.361977203969754E+00 + 1.212000000000000E+00 1.360711268722676E+00 + 1.213000000000000E+00 1.359445402373567E+00 + 1.214000000000000E+00 1.358179606856504E+00 + 1.215000000000000E+00 1.356913884104052E+00 + 1.216000000000000E+00 1.355648236047270E+00 + 1.217000000000000E+00 1.354382664615718E+00 + 1.218000000000000E+00 1.353117171737431E+00 + 1.219000000000000E+00 1.351851759338920E+00 + 1.220000000000000E+00 1.350586429345174E+00 + 1.221000000000000E+00 1.349321183679649E+00 + 1.222000000000000E+00 1.348056024264267E+00 + 1.223000000000000E+00 1.346790953019390E+00 + 1.224000000000000E+00 1.345525971863855E+00 + 1.225000000000000E+00 1.344261082714926E+00 + 1.226000000000000E+00 1.342996287488320E+00 + 1.227000000000000E+00 1.341731588098180E+00 + 1.228000000000000E+00 1.340466986457088E+00 + 1.229000000000000E+00 1.339202484476040E+00 + 1.230000000000000E+00 1.337938084064463E+00 + 1.231000000000000E+00 1.336673787130186E+00 + 1.232000000000000E+00 1.335409595579461E+00 + 1.233000000000000E+00 1.334145511316923E+00 + 1.234000000000000E+00 1.332881536245629E+00 + 1.235000000000000E+00 1.331617672267008E+00 + 1.236000000000000E+00 1.330353921280886E+00 + 1.237000000000000E+00 1.329090285185471E+00 + 1.238000000000000E+00 1.327826765877349E+00 + 1.239000000000000E+00 1.326563365251473E+00 + 1.240000000000000E+00 1.325300085201167E+00 + 1.241000000000000E+00 1.324036927618111E+00 + 1.242000000000000E+00 1.322773894392346E+00 + 1.243000000000000E+00 1.321510987412257E+00 + 1.244000000000000E+00 1.320248208564581E+00 + 1.245000000000000E+00 1.318985559734393E+00 + 1.246000000000000E+00 1.317723042805101E+00 + 1.247000000000000E+00 1.316460659658444E+00 + 1.248000000000000E+00 1.315198412174487E+00 + 1.249000000000000E+00 1.313936302231613E+00 + 1.250000000000000E+00 1.312674331706518E+00 + 1.251000000000000E+00 1.311412502474210E+00 + 1.252000000000000E+00 1.310150816407998E+00 + 1.253000000000000E+00 1.308889275379488E+00 + 1.254000000000000E+00 1.307627881258585E+00 + 1.255000000000000E+00 1.306366635913476E+00 + 1.256000000000000E+00 1.305105541210639E+00 + 1.257000000000000E+00 1.303844599014820E+00 + 1.258000000000000E+00 1.302583811189052E+00 + 1.259000000000000E+00 1.301323179594616E+00 + 1.260000000000000E+00 1.300062706091077E+00 + 1.261000000000000E+00 1.298802392536246E+00 + 1.262000000000000E+00 1.297542240786184E+00 + 1.263000000000000E+00 1.296282252695208E+00 + 1.264000000000000E+00 1.295022430115872E+00 + 1.265000000000000E+00 1.293762774898967E+00 + 1.266000000000000E+00 1.292503288893523E+00 + 1.267000000000000E+00 1.291243973946790E+00 + 1.268000000000000E+00 1.289984831904241E+00 + 1.269000000000000E+00 1.288725864609570E+00 + 1.270000000000000E+00 1.287467073904682E+00 + 1.271000000000000E+00 1.286208461629685E+00 + 1.272000000000000E+00 1.284950029622897E+00 + 1.273000000000000E+00 1.283691779720825E+00 + 1.274000000000000E+00 1.282433713758175E+00 + 1.275000000000000E+00 1.281175833567837E+00 + 1.276000000000000E+00 1.279918140980880E+00 + 1.277000000000000E+00 1.278660637826560E+00 + 1.278000000000000E+00 1.277403325932300E+00 + 1.279000000000000E+00 1.276146207123682E+00 + 1.280000000000000E+00 1.274889283224466E+00 + 1.281000000000000E+00 1.273632556056562E+00 + 1.282000000000000E+00 1.272376027440030E+00 + 1.283000000000000E+00 1.271119699193082E+00 + 1.284000000000000E+00 1.269863573132069E+00 + 1.285000000000000E+00 1.268607651071491E+00 + 1.286000000000000E+00 1.267351934823963E+00 + 1.287000000000000E+00 1.266096426200246E+00 + 1.288000000000000E+00 1.264841127009212E+00 + 1.289000000000000E+00 1.263586039057858E+00 + 1.290000000000000E+00 1.262331164151293E+00 + 1.291000000000000E+00 1.261076504092739E+00 + 1.292000000000000E+00 1.259822060683512E+00 + 1.293000000000000E+00 1.258567835723040E+00 + 1.294000000000000E+00 1.257313831008835E+00 + 1.295000000000000E+00 1.256060048336500E+00 + 1.296000000000000E+00 1.254806489499733E+00 + 1.297000000000000E+00 1.253553156290303E+00 + 1.298000000000000E+00 1.252300050498051E+00 + 1.299000000000000E+00 1.251047173910900E+00 + 1.300000000000000E+00 1.249794528314832E+00 + 1.301000000000000E+00 1.248542115493889E+00 + 1.302000000000000E+00 1.247289937230174E+00 + 1.303000000000000E+00 1.246037995303839E+00 + 1.304000000000000E+00 1.244786291493085E+00 + 1.305000000000000E+00 1.243534827574148E+00 + 1.306000000000000E+00 1.242283605321313E+00 + 1.307000000000000E+00 1.241032626506891E+00 + 1.308000000000000E+00 1.239781892901223E+00 + 1.309000000000000E+00 1.238531406272671E+00 + 1.310000000000000E+00 1.237281168387625E+00 + 1.311000000000000E+00 1.236031181010472E+00 + 1.312000000000000E+00 1.234781445903630E+00 + 1.313000000000000E+00 1.233531964827507E+00 + 1.314000000000000E+00 1.232282739540514E+00 + 1.315000000000000E+00 1.231033771799066E+00 + 1.316000000000000E+00 1.229785063357560E+00 + 1.317000000000000E+00 1.228536615968381E+00 + 1.318000000000000E+00 1.227288431381903E+00 + 1.319000000000000E+00 1.226040511346471E+00 + 1.320000000000000E+00 1.224792857608404E+00 + 1.321000000000000E+00 1.223545471911990E+00 + 1.322000000000000E+00 1.222298355999486E+00 + 1.323000000000000E+00 1.221051511611098E+00 + 1.324000000000000E+00 1.219804940484996E+00 + 1.325000000000000E+00 1.218558644357302E+00 + 1.326000000000000E+00 1.217312624962073E+00 + 1.327000000000000E+00 1.216066884031315E+00 + 1.328000000000000E+00 1.214821423294973E+00 + 1.329000000000000E+00 1.213576244480918E+00 + 1.330000000000000E+00 1.212331349314958E+00 + 1.331000000000000E+00 1.211086739520814E+00 + 1.332000000000000E+00 1.209842416820136E+00 + 1.333000000000000E+00 1.208598382932484E+00 + 1.334000000000000E+00 1.207354639575324E+00 + 1.335000000000000E+00 1.206111188464040E+00 + 1.336000000000000E+00 1.204868031311906E+00 + 1.337000000000000E+00 1.203625169830103E+00 + 1.338000000000000E+00 1.202382605727695E+00 + 1.339000000000000E+00 1.201140340711644E+00 + 1.340000000000000E+00 1.199898376486788E+00 + 1.341000000000000E+00 1.198656714755851E+00 + 1.342000000000000E+00 1.197415357219429E+00 + 1.343000000000000E+00 1.196174305575991E+00 + 1.344000000000000E+00 1.194933561521873E+00 + 1.345000000000000E+00 1.193693126751274E+00 + 1.346000000000000E+00 1.192453002956252E+00 + 1.347000000000000E+00 1.191213191826711E+00 + 1.348000000000000E+00 1.189973695050420E+00 + 1.349000000000000E+00 1.188734514312981E+00 + 1.350000000000000E+00 1.187495651297843E+00 + 1.351000000000000E+00 1.186257107686291E+00 + 1.352000000000000E+00 1.185018885157439E+00 + 1.353000000000000E+00 1.183780985388241E+00 + 1.354000000000000E+00 1.182543410053459E+00 + 1.355000000000000E+00 1.181306160825690E+00 + 1.356000000000000E+00 1.180069239375341E+00 + 1.357000000000000E+00 1.178832647370634E+00 + 1.358000000000000E+00 1.177596386477589E+00 + 1.359000000000000E+00 1.176360458360044E+00 + 1.360000000000000E+00 1.175124864679631E+00 + 1.361000000000000E+00 1.173889607095769E+00 + 1.362000000000000E+00 1.172654687265681E+00 + 1.363000000000000E+00 1.171420106844372E+00 + 1.364000000000000E+00 1.170185867484627E+00 + 1.365000000000000E+00 1.168951970837019E+00 + 1.366000000000000E+00 1.167718418549887E+00 + 1.367000000000000E+00 1.166485212269343E+00 + 1.368000000000000E+00 1.165252353639270E+00 + 1.369000000000000E+00 1.164019844301311E+00 + 1.370000000000000E+00 1.162787685894866E+00 + 1.371000000000000E+00 1.161555880057100E+00 + 1.372000000000000E+00 1.160324428422913E+00 + 1.373000000000000E+00 1.159093332624963E+00 + 1.374000000000000E+00 1.157862594293647E+00 + 1.375000000000000E+00 1.156632215057105E+00 + 1.376000000000000E+00 1.155402196541210E+00 + 1.377000000000000E+00 1.154172540369563E+00 + 1.378000000000000E+00 1.152943248163497E+00 + 1.379000000000000E+00 1.151714321542063E+00 + 1.380000000000000E+00 1.150485762122038E+00 + 1.381000000000000E+00 1.149257571517907E+00 + 1.382000000000000E+00 1.148029751341874E+00 + 1.383000000000000E+00 1.146802303203849E+00 + 1.384000000000000E+00 1.145575228711440E+00 + 1.385000000000000E+00 1.144348529469964E+00 + 1.386000000000000E+00 1.143122207082424E+00 + 1.387000000000000E+00 1.141896263149526E+00 + 1.388000000000000E+00 1.140670699269657E+00 + 1.389000000000000E+00 1.139445517038893E+00 + 1.390000000000000E+00 1.138220718050987E+00 + 1.391000000000000E+00 1.136996303897377E+00 + 1.392000000000000E+00 1.135772276167162E+00 + 1.393000000000000E+00 1.134548636447125E+00 + 1.394000000000000E+00 1.133325386321703E+00 + 1.395000000000000E+00 1.132102527373004E+00 + 1.396000000000000E+00 1.130880061180789E+00 + 1.397000000000000E+00 1.129657989322477E+00 + 1.398000000000000E+00 1.128436313373135E+00 + 1.399000000000000E+00 1.127215034905480E+00 + 1.400000000000000E+00 1.125994155489872E+00 + 1.401000000000000E+00 1.124773676694309E+00 + 1.402000000000000E+00 1.123553600084432E+00 + 1.403000000000000E+00 1.122333927223508E+00 + 1.404000000000000E+00 1.121114659672439E+00 + 1.405000000000000E+00 1.119895798989745E+00 + 1.406000000000000E+00 1.118677346731577E+00 + 1.407000000000000E+00 1.117459304451695E+00 + 1.408000000000000E+00 1.116241673701484E+00 + 1.409000000000000E+00 1.115024456029932E+00 + 1.410000000000000E+00 1.113807652983638E+00 + 1.411000000000000E+00 1.112591266106808E+00 + 1.412000000000000E+00 1.111375296941244E+00 + 1.413000000000000E+00 1.110159747026350E+00 + 1.414000000000000E+00 1.108944617899116E+00 + 1.415000000000000E+00 1.107729911094130E+00 + 1.416000000000000E+00 1.106515628143564E+00 + 1.417000000000000E+00 1.105301770577175E+00 + 1.418000000000000E+00 1.104088339922293E+00 + 1.419000000000000E+00 1.102875337703833E+00 + 1.420000000000000E+00 1.101662765444283E+00 + 1.421000000000000E+00 1.100450624663689E+00 + 1.422000000000000E+00 1.099238916879679E+00 + 1.423000000000000E+00 1.098027643607431E+00 + 1.424000000000000E+00 1.096816806359688E+00 + 1.425000000000000E+00 1.095606406646747E+00 + 1.426000000000000E+00 1.094396445976466E+00 + 1.427000000000000E+00 1.093186925854238E+00 + 1.428000000000000E+00 1.091977847783013E+00 + 1.429000000000000E+00 1.090769213263277E+00 + 1.430000000000000E+00 1.089561023793063E+00 + 1.431000000000000E+00 1.088353280867934E+00 + 1.432000000000000E+00 1.087145985980987E+00 + 1.433000000000000E+00 1.085939140622847E+00 + 1.434000000000000E+00 1.084732746281672E+00 + 1.435000000000000E+00 1.083526804443135E+00 + 1.436000000000000E+00 1.082321316590430E+00 + 1.437000000000000E+00 1.081116284204278E+00 + 1.438000000000000E+00 1.079911708762900E+00 + 1.439000000000000E+00 1.078707591742032E+00 + 1.440000000000000E+00 1.077503934614920E+00 + 1.441000000000000E+00 1.076300738852310E+00 + 1.442000000000000E+00 1.075098005922450E+00 + 1.443000000000000E+00 1.073895737291088E+00 + 1.444000000000000E+00 1.072693934421467E+00 + 1.445000000000000E+00 1.071492598774310E+00 + 1.446000000000000E+00 1.070291731807849E+00 + 1.447000000000000E+00 1.069091334977780E+00 + 1.448000000000000E+00 1.067891409737294E+00 + 1.449000000000000E+00 1.066691957537059E+00 + 1.450000000000000E+00 1.065492979825216E+00 + 1.451000000000000E+00 1.064294478047381E+00 + 1.452000000000000E+00 1.063096453646643E+00 + 1.453000000000000E+00 1.061898908063547E+00 + 1.454000000000000E+00 1.060701842736118E+00 + 1.455000000000000E+00 1.059505259099827E+00 + 1.456000000000000E+00 1.058309158587614E+00 + 1.457000000000000E+00 1.057113542629865E+00 + 1.458000000000000E+00 1.055918412654425E+00 + 1.459000000000000E+00 1.054723770086588E+00 + 1.460000000000000E+00 1.053529616349092E+00 + 1.461000000000000E+00 1.052335952862116E+00 + 1.462000000000000E+00 1.051142781043281E+00 + 1.463000000000000E+00 1.049950102307652E+00 + 1.464000000000000E+00 1.048757918067715E+00 + 1.465000000000000E+00 1.047566229733404E+00 + 1.466000000000000E+00 1.046375038712071E+00 + 1.467000000000000E+00 1.045184346408496E+00 + 1.468000000000000E+00 1.043994154224883E+00 + 1.469000000000000E+00 1.042804463560861E+00 + 1.470000000000000E+00 1.041615275813474E+00 + 1.471000000000000E+00 1.040426592377172E+00 + 1.472000000000000E+00 1.039238414643834E+00 + 1.473000000000000E+00 1.038050744002735E+00 + 1.474000000000000E+00 1.036863581840563E+00 + 1.475000000000000E+00 1.035676929541409E+00 + 1.476000000000000E+00 1.034490788486764E+00 + 1.477000000000000E+00 1.033305160055518E+00 + 1.478000000000000E+00 1.032120045623959E+00 + 1.479000000000000E+00 1.030935446565767E+00 + 1.480000000000000E+00 1.029751364252014E+00 + 1.481000000000000E+00 1.028567800051152E+00 + 1.482000000000000E+00 1.027384755329033E+00 + 1.483000000000000E+00 1.026202231448879E+00 + 1.484000000000000E+00 1.025020229771298E+00 + 1.485000000000000E+00 1.023838751654273E+00 + 1.486000000000000E+00 1.022657798453165E+00 + 1.487000000000000E+00 1.021477371520703E+00 + 1.488000000000000E+00 1.020297472206993E+00 + 1.489000000000000E+00 1.019118101859500E+00 + 1.490000000000000E+00 1.017939261823059E+00 + 1.491000000000000E+00 1.016760953439867E+00 + 1.492000000000000E+00 1.015583178049476E+00 + 1.493000000000000E+00 1.014405936988805E+00 + 1.494000000000000E+00 1.013229231592118E+00 + 1.495000000000000E+00 1.012053063191039E+00 + 1.496000000000000E+00 1.010877433114531E+00 + 1.497000000000000E+00 1.009702342688922E+00 + 1.498000000000000E+00 1.008527793237866E+00 + 1.499000000000000E+00 1.007353786082374E+00 + 1.500000000000000E+00 1.006180322540791E+00 + 1.501000000000000E+00 1.005007403928800E+00 + 1.502000000000000E+00 1.003835031559421E+00 + 1.503000000000000E+00 1.002663206743009E+00 + 1.504000000000000E+00 1.001491930787243E+00 + 1.505000000000000E+00 1.000321204997139E+00 + 1.506000000000000E+00 9.991510306750381E-01 + 1.507000000000000E+00 9.979814091205953E-01 + 1.508000000000000E+00 9.968123416308015E-01 + 1.509000000000000E+00 9.956438294999609E-01 + 1.510000000000000E+00 9.944758740196894E-01 + 1.511000000000000E+00 9.933084764789252E-01 + 1.512000000000000E+00 9.921416381639216E-01 + 1.513000000000000E+00 9.909753603582295E-01 + 1.514000000000000E+00 9.898096443427228E-01 + 1.515000000000000E+00 9.886444913955748E-01 + 1.516000000000000E+00 9.874799027922617E-01 + 1.517000000000000E+00 9.863158798055600E-01 + 1.518000000000000E+00 9.851524237055562E-01 + 1.519000000000000E+00 9.839895357596193E-01 + 1.520000000000000E+00 9.828272172324278E-01 + 1.521000000000000E+00 9.816654693859416E-01 + 1.522000000000000E+00 9.805042934794238E-01 + 1.523000000000000E+00 9.793436907694147E-01 + 1.524000000000000E+00 9.781836625097524E-01 + 1.525000000000000E+00 9.770242099515509E-01 + 1.526000000000000E+00 9.758653343432141E-01 + 1.527000000000000E+00 9.747070369304196E-01 + 1.528000000000000E+00 9.735493189561366E-01 + 1.529000000000000E+00 9.723921816605962E-01 + 1.530000000000000E+00 9.712356262813115E-01 + 1.531000000000000E+00 9.700796540530739E-01 + 1.532000000000000E+00 9.689242662079394E-01 + 1.533000000000000E+00 9.677694639752347E-01 + 1.534000000000000E+00 9.666152485815496E-01 + 1.535000000000000E+00 9.654616212507492E-01 + 1.536000000000000E+00 9.643085832039511E-01 + 1.537000000000000E+00 9.631561356595437E-01 + 1.538000000000000E+00 9.620042798331685E-01 + 1.539000000000000E+00 9.608530169377292E-01 + 1.540000000000000E+00 9.597023481833828E-01 + 1.541000000000000E+00 9.585522747775429E-01 + 1.542000000000000E+00 9.574027979248714E-01 + 1.543000000000000E+00 9.562539188272848E-01 + 1.544000000000000E+00 9.551056386839454E-01 + 1.545000000000000E+00 9.539579586912699E-01 + 1.546000000000000E+00 9.528108800429068E-01 + 1.547000000000000E+00 9.516644039297609E-01 + 1.548000000000000E+00 9.505185315399710E-01 + 1.549000000000000E+00 9.493732640589219E-01 + 1.550000000000000E+00 9.482286026692329E-01 + 1.551000000000000E+00 9.470845485507584E-01 + 1.552000000000000E+00 9.459411028805939E-01 + 1.553000000000000E+00 9.447982668330612E-01 + 1.554000000000000E+00 9.436560415797171E-01 + 1.555000000000000E+00 9.425144282893526E-01 + 1.556000000000000E+00 9.413734281279832E-01 + 1.557000000000000E+00 9.402330422588459E-01 + 1.558000000000000E+00 9.390932718424132E-01 + 1.559000000000000E+00 9.379541180363756E-01 + 1.560000000000000E+00 9.368155819956479E-01 + 1.561000000000000E+00 9.356776648723627E-01 + 1.562000000000000E+00 9.345403678158712E-01 + 1.563000000000000E+00 9.334036919727486E-01 + 1.564000000000000E+00 9.322676384867801E-01 + 1.565000000000000E+00 9.311322084989708E-01 + 1.566000000000000E+00 9.299974031475285E-01 + 1.567000000000000E+00 9.288632235678844E-01 + 1.568000000000000E+00 9.277296708926737E-01 + 1.569000000000000E+00 9.265967462517415E-01 + 1.570000000000000E+00 9.254644507721391E-01 + 1.571000000000000E+00 9.243327855781278E-01 + 1.572000000000000E+00 9.232017517911705E-01 + 1.573000000000000E+00 9.220713505299308E-01 + 1.574000000000000E+00 9.209415829102798E-01 + 1.575000000000000E+00 9.198124500452832E-01 + 1.576000000000000E+00 9.186839530452087E-01 + 1.577000000000000E+00 9.175560930175259E-01 + 1.578000000000000E+00 9.164288710668911E-01 + 1.579000000000000E+00 9.153022882951635E-01 + 1.580000000000000E+00 9.141763458013964E-01 + 1.581000000000000E+00 9.130510446818265E-01 + 1.582000000000000E+00 9.119263860298960E-01 + 1.583000000000000E+00 9.108023709362255E-01 + 1.584000000000000E+00 9.096790004886310E-01 + 1.585000000000000E+00 9.085562757721148E-01 + 1.586000000000000E+00 9.074341978688613E-01 + 1.587000000000000E+00 9.063127678582487E-01 + 1.588000000000000E+00 9.051919868168307E-01 + 1.589000000000000E+00 9.040718558183474E-01 + 1.590000000000000E+00 9.029523759337270E-01 + 1.591000000000000E+00 9.018335482310673E-01 + 1.592000000000000E+00 9.007153737756521E-01 + 1.593000000000000E+00 8.995978536299448E-01 + 1.594000000000000E+00 8.984809888535801E-01 + 1.595000000000000E+00 8.973647805033792E-01 + 1.596000000000000E+00 8.962492296333259E-01 + 1.597000000000000E+00 8.951343372945894E-01 + 1.598000000000000E+00 8.940201045355073E-01 + 1.599000000000000E+00 8.929065324015891E-01 + 1.600000000000000E+00 8.917936219355180E-01 + 1.601000000000000E+00 8.906813741771410E-01 + 1.602000000000000E+00 8.895697901634838E-01 + 1.603000000000000E+00 8.884588709287333E-01 + 1.604000000000000E+00 8.873486175042480E-01 + 1.605000000000000E+00 8.862390309185488E-01 + 1.606000000000000E+00 8.851301121973257E-01 + 1.607000000000000E+00 8.840218623634328E-01 + 1.608000000000000E+00 8.829142824368870E-01 + 1.609000000000000E+00 8.818073734348656E-01 + 1.610000000000000E+00 8.807011363717137E-01 + 1.611000000000000E+00 8.795955722589304E-01 + 1.612000000000000E+00 8.784906821051855E-01 + 1.613000000000000E+00 8.773864669162956E-01 + 1.614000000000000E+00 8.762829276952478E-01 + 1.615000000000000E+00 8.751800654421786E-01 + 1.616000000000000E+00 8.740778811543826E-01 + 1.617000000000000E+00 8.729763758263176E-01 + 1.618000000000000E+00 8.718755504495876E-01 + 1.619000000000000E+00 8.707754060129634E-01 + 1.620000000000000E+00 8.696759435023546E-01 + 1.621000000000000E+00 8.685771639008396E-01 + 1.622000000000000E+00 8.674790681886360E-01 + 1.623000000000000E+00 8.663816573431252E-01 + 1.624000000000000E+00 8.652849323388319E-01 + 1.625000000000000E+00 8.641888941474379E-01 + 1.626000000000000E+00 8.630935437377699E-01 + 1.627000000000000E+00 8.619988820758050E-01 + 1.628000000000000E+00 8.609049101246729E-01 + 1.629000000000000E+00 8.598116288446456E-01 + 1.630000000000000E+00 8.587190391931502E-01 + 1.631000000000000E+00 8.576271421247567E-01 + 1.632000000000000E+00 8.565359385911800E-01 + 1.633000000000000E+00 8.554454295412846E-01 + 1.634000000000000E+00 8.543556159210802E-01 + 1.635000000000000E+00 8.532664986737224E-01 + 1.636000000000000E+00 8.521780787395039E-01 + 1.637000000000000E+00 8.510903570558737E-01 + 1.638000000000000E+00 8.500033345574134E-01 + 1.639000000000000E+00 8.489170121758554E-01 + 1.640000000000000E+00 8.478313908400730E-01 + 1.641000000000000E+00 8.467464714760783E-01 + 1.642000000000000E+00 8.456622550070280E-01 + 1.643000000000000E+00 8.445787423532208E-01 + 1.644000000000000E+00 8.434959344320943E-01 + 1.645000000000000E+00 8.424138321582333E-01 + 1.646000000000000E+00 8.413324364433510E-01 + 1.647000000000000E+00 8.402517481963147E-01 + 1.648000000000000E+00 8.391717683231215E-01 + 1.649000000000000E+00 8.380924977269094E-01 + 1.650000000000000E+00 8.370139373079585E-01 + 1.651000000000000E+00 8.359360879636892E-01 + 1.652000000000000E+00 8.348589505886532E-01 + 1.653000000000000E+00 8.337825260745438E-01 + 1.654000000000000E+00 8.327068153101996E-01 + 1.655000000000000E+00 8.316318191815865E-01 + 1.656000000000000E+00 8.305575385718142E-01 + 1.657000000000000E+00 8.294839743611260E-01 + 1.658000000000000E+00 8.284111274269061E-01 + 1.659000000000000E+00 8.273389986436751E-01 + 1.660000000000000E+00 8.262675888830853E-01 + 1.661000000000000E+00 8.251968990139342E-01 + 1.662000000000000E+00 8.241269299021503E-01 + 1.663000000000000E+00 8.230576824107977E-01 + 1.664000000000000E+00 8.219891574000810E-01 + 1.665000000000000E+00 8.209213557273399E-01 + 1.666000000000000E+00 8.198542782470477E-01 + 1.667000000000000E+00 8.187879258108165E-01 + 1.668000000000000E+00 8.177222992673921E-01 + 1.669000000000000E+00 8.166573994626608E-01 + 1.670000000000000E+00 8.155932272396396E-01 + 1.671000000000000E+00 8.145297834384870E-01 + 1.672000000000000E+00 8.134670688964910E-01 + 1.673000000000000E+00 8.124050844480790E-01 + 1.674000000000000E+00 8.113438309248167E-01 + 1.675000000000000E+00 8.102833091554018E-01 + 1.676000000000000E+00 8.092235199656691E-01 + 1.677000000000000E+00 8.081644641785937E-01 + 1.678000000000000E+00 8.071061426142840E-01 + 1.679000000000000E+00 8.060485560899817E-01 + 1.680000000000000E+00 8.049917054200705E-01 + 1.681000000000000E+00 8.039355914160683E-01 + 1.682000000000000E+00 8.028802148866254E-01 + 1.683000000000000E+00 8.018255766375388E-01 + 1.684000000000000E+00 8.007716774717356E-01 + 1.685000000000000E+00 7.997185181892832E-01 + 1.686000000000000E+00 7.986660995873825E-01 + 1.687000000000000E+00 7.976144224603756E-01 + 1.688000000000000E+00 7.965634875997400E-01 + 1.689000000000000E+00 7.955132957940984E-01 + 1.690000000000000E+00 7.944638478292019E-01 + 1.691000000000000E+00 7.934151444879443E-01 + 1.692000000000000E+00 7.923671865503614E-01 + 1.693000000000000E+00 7.913199747936276E-01 + 1.694000000000000E+00 7.902735099920508E-01 + 1.695000000000000E+00 7.892277929170838E-01 + 1.696000000000000E+00 7.881828243373213E-01 + 1.697000000000000E+00 7.871386050184929E-01 + 1.698000000000000E+00 7.860951357234729E-01 + 1.699000000000000E+00 7.850524172122793E-01 + 1.700000000000000E+00 7.840104502420654E-01 + 1.701000000000000E+00 7.829692355671273E-01 + 1.702000000000000E+00 7.819287739389117E-01 + 1.703000000000000E+00 7.808890661059981E-01 + 1.704000000000000E+00 7.798501128141155E-01 + 1.705000000000000E+00 7.788119148061317E-01 + 1.706000000000000E+00 7.777744728220660E-01 + 1.707000000000000E+00 7.767377875990767E-01 + 1.708000000000000E+00 7.757018598714671E-01 + 1.709000000000000E+00 7.746666903706888E-01 + 1.710000000000000E+00 7.736322798253388E-01 + 1.711000000000000E+00 7.725986289611592E-01 + 1.712000000000000E+00 7.715657385010407E-01 + 1.713000000000000E+00 7.705336091650239E-01 + 1.714000000000000E+00 7.695022416702960E-01 + 1.715000000000000E+00 7.684716367311919E-01 + 1.716000000000000E+00 7.674417950591960E-01 + 1.717000000000000E+00 7.664127173629459E-01 + 1.718000000000000E+00 7.653844043482261E-01 + 1.719000000000000E+00 7.643568567179742E-01 + 1.720000000000000E+00 7.633300751722863E-01 + 1.721000000000000E+00 7.623040604083967E-01 + 1.722000000000000E+00 7.612788131207081E-01 + 1.723000000000000E+00 7.602543340007667E-01 + 1.724000000000000E+00 7.592306237372817E-01 + 1.725000000000000E+00 7.582076830161086E-01 + 1.726000000000000E+00 7.571855125202717E-01 + 1.727000000000000E+00 7.561641129299389E-01 + 1.728000000000000E+00 7.551434849224424E-01 + 1.729000000000000E+00 7.541236291722747E-01 + 1.730000000000000E+00 7.531045463510860E-01 + 1.731000000000000E+00 7.520862371276842E-01 + 1.732000000000000E+00 7.510687021680416E-01 + 1.733000000000000E+00 7.500519421352909E-01 + 1.734000000000000E+00 7.490359576897243E-01 + 1.735000000000000E+00 7.480207494888003E-01 + 1.736000000000000E+00 7.470063181871428E-01 + 1.737000000000000E+00 7.459926644365420E-01 + 1.738000000000000E+00 7.449797888859471E-01 + 1.739000000000000E+00 7.439676921814841E-01 + 1.740000000000000E+00 7.429563749664351E-01 + 1.741000000000000E+00 7.419458378812616E-01 + 1.742000000000000E+00 7.409360815635890E-01 + 1.743000000000000E+00 7.399271066482161E-01 + 1.744000000000000E+00 7.389189137671111E-01 + 1.745000000000000E+00 7.379115035494177E-01 + 1.746000000000000E+00 7.369048766214461E-01 + 1.747000000000000E+00 7.358990336066910E-01 + 1.748000000000000E+00 7.348939751258172E-01 + 1.749000000000000E+00 7.338897017966641E-01 + 1.750000000000000E+00 7.328862142342547E-01 + 1.751000000000000E+00 7.318835130507830E-01 + 1.752000000000000E+00 7.308815988556330E-01 + 1.753000000000000E+00 7.298804722553555E-01 + 1.754000000000000E+00 7.288801338537002E-01 + 1.755000000000000E+00 7.278805842515821E-01 + 1.756000000000000E+00 7.268818240471155E-01 + 1.757000000000000E+00 7.258838538355920E-01 + 1.758000000000000E+00 7.248866742094895E-01 + 1.759000000000000E+00 7.238902857584756E-01 + 1.760000000000000E+00 7.228946890694058E-01 + 1.761000000000000E+00 7.218998847263269E-01 + 1.762000000000000E+00 7.209058733104736E-01 + 1.763000000000000E+00 7.199126554002757E-01 + 1.764000000000000E+00 7.189202315713559E-01 + 1.765000000000000E+00 7.179286023965301E-01 + 1.766000000000000E+00 7.169377684458140E-01 + 1.767000000000000E+00 7.159477302864149E-01 + 1.768000000000000E+00 7.149584884827412E-01 + 1.769000000000000E+00 7.139700435964026E-01 + 1.770000000000000E+00 7.129823961862102E-01 + 1.771000000000000E+00 7.119955468081720E-01 + 1.772000000000000E+00 7.110094960155053E-01 + 1.773000000000000E+00 7.100242443586302E-01 + 1.774000000000000E+00 7.090397923851713E-01 + 1.775000000000000E+00 7.080561406399667E-01 + 1.776000000000000E+00 7.070732896650576E-01 + 1.777000000000000E+00 7.060912399996954E-01 + 1.778000000000000E+00 7.051099921803486E-01 + 1.779000000000000E+00 7.041295467406947E-01 + 1.780000000000000E+00 7.031499042116257E-01 + 1.781000000000000E+00 7.021710651212529E-01 + 1.782000000000000E+00 7.011930299949009E-01 + 1.783000000000000E+00 7.002157993551137E-01 + 1.784000000000000E+00 6.992393737216606E-01 + 1.785000000000000E+00 6.982637536115250E-01 + 1.786000000000000E+00 6.972889395389210E-01 + 1.787000000000000E+00 6.963149320152842E-01 + 1.788000000000000E+00 6.953417315492726E-01 + 1.789000000000000E+00 6.943693386467794E-01 + 1.790000000000000E+00 6.933977538109243E-01 + 1.791000000000000E+00 6.924269775420528E-01 + 1.792000000000000E+00 6.914570103377518E-01 + 1.793000000000000E+00 6.904878526928336E-01 + 1.794000000000000E+00 6.895195050993524E-01 + 1.795000000000000E+00 6.885519680465958E-01 + 1.796000000000000E+00 6.875852420210954E-01 + 1.797000000000000E+00 6.866193275066135E-01 + 1.798000000000000E+00 6.856542249841653E-01 + 1.799000000000000E+00 6.846899349320033E-01 + 1.800000000000000E+00 6.837264578256252E-01 + 1.801000000000000E+00 6.827637941377781E-01 + 1.802000000000000E+00 6.818019443384554E-01 + 1.803000000000000E+00 6.808409088949054E-01 + 1.804000000000000E+00 6.798806882716212E-01 + 1.805000000000000E+00 6.789212829303550E-01 + 1.806000000000000E+00 6.779626933301152E-01 + 1.807000000000000E+00 6.770049199271645E-01 + 1.808000000000000E+00 6.760479631750234E-01 + 1.809000000000000E+00 6.750918235244758E-01 + 1.810000000000000E+00 6.741365014235666E-01 + 1.811000000000000E+00 6.731819973176081E-01 + 1.812000000000000E+00 6.722283116491720E-01 + 1.813000000000000E+00 6.712754448581043E-01 + 1.814000000000000E+00 6.703233973815165E-01 + 1.815000000000000E+00 6.693721696537950E-01 + 1.816000000000000E+00 6.684217621065963E-01 + 1.817000000000000E+00 6.674721751688534E-01 + 1.818000000000000E+00 6.665234092667771E-01 + 1.819000000000000E+00 6.655754648238540E-01 + 1.820000000000000E+00 6.646283422608561E-01 + 1.821000000000000E+00 6.636820419958341E-01 + 1.822000000000000E+00 6.627365644441245E-01 + 1.823000000000000E+00 6.617919100183509E-01 + 1.824000000000000E+00 6.608480791284231E-01 + 1.825000000000000E+00 6.599050721815420E-01 + 1.826000000000000E+00 6.589628895822046E-01 + 1.827000000000000E+00 6.580215317321986E-01 + 1.828000000000000E+00 6.570809990306059E-01 + 1.829000000000000E+00 6.561412918738111E-01 + 1.830000000000000E+00 6.552024106554954E-01 + 1.831000000000000E+00 6.542643557666423E-01 + 1.832000000000000E+00 6.533271275955423E-01 + 1.833000000000000E+00 6.523907265277907E-01 + 1.834000000000000E+00 6.514551529462894E-01 + 1.835000000000000E+00 6.505204072312524E-01 + 1.836000000000000E+00 6.495864897602058E-01 + 1.837000000000000E+00 6.486534009079881E-01 + 1.838000000000000E+00 6.477211410467586E-01 + 1.839000000000000E+00 6.467897105459907E-01 + 1.840000000000000E+00 6.458591097724776E-01 + 1.841000000000000E+00 6.449293390903437E-01 + 1.842000000000000E+00 6.440003988610277E-01 + 1.843000000000000E+00 6.430722894433031E-01 + 1.844000000000000E+00 6.421450111932652E-01 + 1.845000000000000E+00 6.412185644643497E-01 + 1.846000000000000E+00 6.402929496073201E-01 + 1.847000000000000E+00 6.393681669702738E-01 + 1.848000000000000E+00 6.384442168986519E-01 + 1.849000000000000E+00 6.375210997352310E-01 + 1.850000000000000E+00 6.365988158201289E-01 + 1.851000000000000E+00 6.356773654908137E-01 + 1.852000000000000E+00 6.347567490820970E-01 + 1.853000000000000E+00 6.338369669261373E-01 + 1.854000000000000E+00 6.329180193524468E-01 + 1.855000000000000E+00 6.319999066878882E-01 + 1.856000000000000E+00 6.310826292566872E-01 + 1.857000000000000E+00 6.301661873804176E-01 + 1.858000000000000E+00 6.292505813780208E-01 + 1.859000000000000E+00 6.283358115658004E-01 + 1.860000000000000E+00 6.274218782574175E-01 + 1.861000000000000E+00 6.265087817639096E-01 + 1.862000000000000E+00 6.255965223936810E-01 + 1.863000000000000E+00 6.246851004525031E-01 + 1.864000000000000E+00 6.237745162435279E-01 + 1.865000000000000E+00 6.228647700672814E-01 + 1.866000000000000E+00 6.219558622216675E-01 + 1.867000000000000E+00 6.210477930019742E-01 + 1.868000000000000E+00 6.201405627008693E-01 + 1.869000000000000E+00 6.192341716084114E-01 + 1.870000000000000E+00 6.183286200120468E-01 + 1.871000000000000E+00 6.174239081966066E-01 + 1.872000000000000E+00 6.165200364443252E-01 + 1.873000000000000E+00 6.156170050348231E-01 + 1.874000000000000E+00 6.147148142451296E-01 + 1.875000000000000E+00 6.138134643496667E-01 + 1.876000000000000E+00 6.129129556202599E-01 + 1.877000000000000E+00 6.120132883261460E-01 + 1.878000000000000E+00 6.111144627339634E-01 + 1.879000000000000E+00 6.102164791077700E-01 + 1.880000000000000E+00 6.093193377090254E-01 + 1.881000000000000E+00 6.084230387966172E-01 + 1.882000000000000E+00 6.075275826268410E-01 + 1.883000000000000E+00 6.066329694534198E-01 + 1.884000000000000E+00 6.057391995274968E-01 + 1.885000000000000E+00 6.048462730976426E-01 + 1.886000000000000E+00 6.039541904098552E-01 + 1.887000000000000E+00 6.030629517075679E-01 + 1.888000000000000E+00 6.021725572316402E-01 + 1.889000000000000E+00 6.012830072203760E-01 + 1.890000000000000E+00 6.003943019095099E-01 + 1.891000000000000E+00 5.995064415322269E-01 + 1.892000000000000E+00 5.986194263191513E-01 + 1.893000000000000E+00 5.977332564983506E-01 + 1.894000000000000E+00 5.968479322953495E-01 + 1.895000000000000E+00 5.959634539331194E-01 + 1.896000000000000E+00 5.950798216320892E-01 + 1.897000000000000E+00 5.941970356101458E-01 + 1.898000000000000E+00 5.933150960826308E-01 + 1.899000000000000E+00 5.924340032623572E-01 + 1.900000000000000E+00 5.915537573595969E-01 + 1.901000000000000E+00 5.906743585820918E-01 + 1.902000000000000E+00 5.897958071350550E-01 + 1.903000000000000E+00 5.889181032211762E-01 + 1.904000000000000E+00 5.880412470406147E-01 + 1.905000000000000E+00 5.871652387910173E-01 + 1.906000000000000E+00 5.862900786675047E-01 + 1.907000000000000E+00 5.854157668626898E-01 + 1.908000000000000E+00 5.845423035666680E-01 + 1.909000000000000E+00 5.836696889670246E-01 + 1.910000000000000E+00 5.827979232488438E-01 + 1.911000000000000E+00 5.819270065946993E-01 + 1.912000000000000E+00 5.810569391846676E-01 + 1.913000000000000E+00 5.801877211963222E-01 + 1.914000000000000E+00 5.793193528047467E-01 + 1.915000000000000E+00 5.784518341825294E-01 + 1.916000000000000E+00 5.775851654997648E-01 + 1.917000000000000E+00 5.767193469240666E-01 + 1.918000000000000E+00 5.758543786205599E-01 + 1.919000000000000E+00 5.749902607518922E-01 + 1.920000000000000E+00 5.741269934782304E-01 + 1.921000000000000E+00 5.732645769572615E-01 + 1.922000000000000E+00 5.724030113442092E-01 + 1.923000000000000E+00 5.715422967918204E-01 + 1.924000000000000E+00 5.706824334503746E-01 + 1.925000000000000E+00 5.698234214676922E-01 + 1.926000000000000E+00 5.689652609891305E-01 + 1.927000000000000E+00 5.681079521575889E-01 + 1.928000000000000E+00 5.672514951135076E-01 + 1.929000000000000E+00 5.663958899948803E-01 + 1.930000000000000E+00 5.655411369372521E-01 + 1.931000000000000E+00 5.646872360737131E-01 + 1.932000000000000E+00 5.638341875349234E-01 + 1.933000000000000E+00 5.629819914490906E-01 + 1.934000000000000E+00 5.621306479419896E-01 + 1.935000000000000E+00 5.612801571369668E-01 + 1.936000000000000E+00 5.604305191549284E-01 + 1.937000000000000E+00 5.595817341143564E-01 + 1.938000000000000E+00 5.587338021313086E-01 + 1.939000000000000E+00 5.578867233194192E-01 + 1.940000000000000E+00 5.570404977899033E-01 + 1.941000000000000E+00 5.561951256515605E-01 + 1.942000000000000E+00 5.553506070107769E-01 + 1.943000000000000E+00 5.545069419715309E-01 + 1.944000000000000E+00 5.536641306353915E-01 + 1.945000000000000E+00 5.528221731015223E-01 + 1.946000000000000E+00 5.519810694666946E-01 + 1.947000000000000E+00 5.511408198252716E-01 + 1.948000000000000E+00 5.503014242692293E-01 + 1.949000000000000E+00 5.494628828881479E-01 + 1.950000000000000E+00 5.486251957692244E-01 + 1.951000000000000E+00 5.477883629972676E-01 + 1.952000000000000E+00 5.469523846547018E-01 + 1.953000000000000E+00 5.461172608215803E-01 + 1.954000000000000E+00 5.452829915755733E-01 + 1.955000000000000E+00 5.444495769919834E-01 + 1.956000000000000E+00 5.436170171437421E-01 + 1.957000000000000E+00 5.427853121014129E-01 + 1.958000000000000E+00 5.419544619332003E-01 + 1.959000000000000E+00 5.411244667049471E-01 + 1.960000000000000E+00 5.402953264801374E-01 + 1.961000000000000E+00 5.394670413199094E-01 + 1.962000000000000E+00 5.386396112830436E-01 + 1.963000000000000E+00 5.378130364259797E-01 + 1.964000000000000E+00 5.369873168028062E-01 + 1.965000000000000E+00 5.361624524652788E-01 + 1.966000000000000E+00 5.353384434628125E-01 + 1.967000000000000E+00 5.345152898424879E-01 + 1.968000000000000E+00 5.336929916490601E-01 + 1.969000000000000E+00 5.328715489249493E-01 + 1.970000000000000E+00 5.320509617102601E-01 + 1.971000000000000E+00 5.312312300427678E-01 + 1.972000000000000E+00 5.304123539579365E-01 + 1.973000000000000E+00 5.295943334889155E-01 + 1.974000000000000E+00 5.287771686665390E-01 + 1.975000000000000E+00 5.279608595193384E-01 + 1.976000000000000E+00 5.271454060735372E-01 + 1.977000000000000E+00 5.263308083530636E-01 + 1.978000000000000E+00 5.255170663795428E-01 + 1.979000000000000E+00 5.247041801723081E-01 + 1.980000000000000E+00 5.238921497483999E-01 + 1.981000000000000E+00 5.230809751225749E-01 + 1.982000000000000E+00 5.222706563073052E-01 + 1.983000000000000E+00 5.214611933127762E-01 + 1.984000000000000E+00 5.206525861469036E-01 + 1.985000000000000E+00 5.198448348153246E-01 + 1.986000000000000E+00 5.190379393214085E-01 + 1.987000000000000E+00 5.182318996662539E-01 + 1.988000000000000E+00 5.174267158486976E-01 + 1.989000000000000E+00 5.166223878653187E-01 + 1.990000000000000E+00 5.158189157104355E-01 + 1.991000000000000E+00 5.150162993761127E-01 + 1.992000000000000E+00 5.142145388521674E-01 + 1.993000000000000E+00 5.134136341261683E-01 + 1.994000000000000E+00 5.126135851834406E-01 + 1.995000000000000E+00 5.118143920070718E-01 + 1.996000000000000E+00 5.110160545779098E-01 + 1.997000000000000E+00 5.102185728745705E-01 + 1.998000000000000E+00 5.094219468734451E-01 + 1.999000000000000E+00 5.086261765486906E-01 + 2.000000000000000E+00 5.078312618722494E-01 + 2.001000000000000E+00 5.070372028138400E-01 + 2.002000000000000E+00 5.062439993409661E-01 + 2.003000000000000E+00 5.054516514189182E-01 + 2.004000000000000E+00 5.046601590107845E-01 + 2.005000000000000E+00 5.038695220774416E-01 + 2.006000000000000E+00 5.030797405775654E-01 + 2.007000000000000E+00 5.022908144676377E-01 + 2.008000000000000E+00 5.015027437019393E-01 + 2.009000000000000E+00 5.007155282325692E-01 + 2.010000000000000E+00 4.999291680094313E-01 + 2.011000000000000E+00 4.991436629802482E-01 + 2.012000000000000E+00 4.983590130905640E-01 + 2.013000000000000E+00 4.975752182837409E-01 + 2.014000000000000E+00 4.967922785009756E-01 + 2.015000000000000E+00 4.960101936812890E-01 + 2.016000000000000E+00 4.952289637615365E-01 + 2.017000000000000E+00 4.944485886764140E-01 + 2.018000000000000E+00 4.936690683584590E-01 + 2.019000000000000E+00 4.928904027380488E-01 + 2.020000000000000E+00 4.921125917434149E-01 + 2.021000000000000E+00 4.913356353006350E-01 + 2.022000000000000E+00 4.905595333336467E-01 + 2.023000000000000E+00 4.897842857642433E-01 + 2.024000000000000E+00 4.890098925120881E-01 + 2.025000000000000E+00 4.882363534946993E-01 + 2.026000000000000E+00 4.874636686274741E-01 + 2.027000000000000E+00 4.866918378236813E-01 + 2.028000000000000E+00 4.859208609944643E-01 + 2.029000000000000E+00 4.851507380488493E-01 + 2.030000000000000E+00 4.843814688937490E-01 + 2.031000000000000E+00 4.836130534339632E-01 + 2.032000000000000E+00 4.828454915721804E-01 + 2.033000000000000E+00 4.820787832089866E-01 + 2.034000000000000E+00 4.813129282428695E-01 + 2.035000000000000E+00 4.805479265702162E-01 + 2.036000000000000E+00 4.797837780853236E-01 + 2.037000000000000E+00 4.790204826803969E-01 + 2.038000000000000E+00 4.782580402455532E-01 + 2.039000000000000E+00 4.774964506688346E-01 + 2.040000000000000E+00 4.767357138361950E-01 + 2.041000000000000E+00 4.759758296315176E-01 + 2.042000000000000E+00 4.752167979366188E-01 + 2.043000000000000E+00 4.744586186312399E-01 + 2.044000000000000E+00 4.737012915930638E-01 + 2.045000000000000E+00 4.729448166977111E-01 + 2.046000000000000E+00 4.721891938187461E-01 + 2.047000000000000E+00 4.714344228276793E-01 + 2.048000000000000E+00 4.706805035939776E-01 + 2.049000000000000E+00 4.699274359850540E-01 + 2.050000000000000E+00 4.691752198662910E-01 + 2.051000000000000E+00 4.684238551010230E-01 + 2.052000000000000E+00 4.676733415505588E-01 + 2.053000000000000E+00 4.669236790741692E-01 + 2.054000000000000E+00 4.661748675291059E-01 + 2.055000000000000E+00 4.654269067705957E-01 + 2.056000000000000E+00 4.646797966518439E-01 + 2.057000000000000E+00 4.639335370240458E-01 + 2.058000000000000E+00 4.631881277363794E-01 + 2.059000000000000E+00 4.624435686360215E-01 + 2.060000000000000E+00 4.616998595681396E-01 + 2.061000000000000E+00 4.609570003759050E-01 + 2.062000000000000E+00 4.602149909004921E-01 + 2.063000000000000E+00 4.594738309810832E-01 + 2.064000000000000E+00 4.587335204548724E-01 + 2.065000000000000E+00 4.579940591570683E-01 + 2.066000000000000E+00 4.572554469208977E-01 + 2.067000000000000E+00 4.565176835776142E-01 + 2.068000000000000E+00 4.557807689564964E-01 + 2.069000000000000E+00 4.550447028848501E-01 + 2.070000000000000E+00 4.543094851880223E-01 + 2.071000000000000E+00 4.535751156893901E-01 + 2.072000000000000E+00 4.528415942103823E-01 + 2.073000000000000E+00 4.521089205704660E-01 + 2.074000000000000E+00 4.513770945871627E-01 + 2.075000000000000E+00 4.506461160760447E-01 + 2.076000000000000E+00 4.499159848507452E-01 + 2.077000000000000E+00 4.491867007229565E-01 + 2.078000000000000E+00 4.484582635024345E-01 + 2.079000000000000E+00 4.477306729970092E-01 + 2.080000000000000E+00 4.470039290125800E-01 + 2.081000000000000E+00 4.462780313531248E-01 + 2.082000000000000E+00 4.455529798207022E-01 + 2.083000000000000E+00 4.448287742154534E-01 + 2.084000000000000E+00 4.441054143356127E-01 + 2.085000000000000E+00 4.433828999775015E-01 + 2.086000000000000E+00 4.426612309355434E-01 + 2.087000000000000E+00 4.419404070022571E-01 + 2.088000000000000E+00 4.412204279682679E-01 + 2.089000000000000E+00 4.405012936223112E-01 + 2.090000000000000E+00 4.397830037512271E-01 + 2.091000000000000E+00 4.390655581399829E-01 + 2.092000000000000E+00 4.383489565716567E-01 + 2.093000000000000E+00 4.376331988274522E-01 + 2.094000000000000E+00 4.369182846867026E-01 + 2.095000000000000E+00 4.362042139268735E-01 + 2.096000000000000E+00 4.354909863235626E-01 + 2.097000000000000E+00 4.347786016505097E-01 + 2.098000000000000E+00 4.340670596795982E-01 + 2.099000000000000E+00 4.333563601808558E-01 + 2.100000000000000E+00 4.326465029224661E-01 + 2.101000000000000E+00 4.319374876707617E-01 + 2.102000000000000E+00 4.312293141902436E-01 + 2.103000000000000E+00 4.305219822435649E-01 + 2.104000000000000E+00 4.298154915915549E-01 + 2.105000000000000E+00 4.291098419932097E-01 + 2.106000000000000E+00 4.284050332057003E-01 + 2.107000000000000E+00 4.277010649843792E-01 + 2.108000000000000E+00 4.269979370827758E-01 + 2.109000000000000E+00 4.262956492526141E-01 + 2.110000000000000E+00 4.255942012438054E-01 + 2.111000000000000E+00 4.248935928044539E-01 + 2.112000000000000E+00 4.241938236808662E-01 + 2.113000000000000E+00 4.234948936175496E-01 + 2.114000000000000E+00 4.227968023572165E-01 + 2.115000000000000E+00 4.220995496407951E-01 + 2.116000000000000E+00 4.214031352074250E-01 + 2.117000000000000E+00 4.207075587944619E-01 + 2.118000000000000E+00 4.200128201374914E-01 + 2.119000000000000E+00 4.193189189703181E-01 + 2.120000000000000E+00 4.186258550249829E-01 + 2.121000000000000E+00 4.179336280317580E-01 + 2.122000000000000E+00 4.172422377191549E-01 + 2.123000000000000E+00 4.165516838139305E-01 + 2.124000000000000E+00 4.158619660410836E-01 + 2.125000000000000E+00 4.151730841238692E-01 + 2.126000000000000E+00 4.144850377837908E-01 + 2.127000000000000E+00 4.137978267406180E-01 + 2.128000000000000E+00 4.131114507123761E-01 + 2.129000000000000E+00 4.124259094153629E-01 + 2.130000000000000E+00 4.117412025641399E-01 + 2.131000000000000E+00 4.110573298715525E-01 + 2.132000000000000E+00 4.103742910487176E-01 + 2.133000000000000E+00 4.096920858050367E-01 + 2.134000000000000E+00 4.090107138482018E-01 + 2.135000000000000E+00 4.083301748841914E-01 + 2.136000000000000E+00 4.076504686172812E-01 + 2.137000000000000E+00 4.069715947500440E-01 + 2.138000000000000E+00 4.062935529833566E-01 + 2.139000000000000E+00 4.056163430164032E-01 + 2.140000000000000E+00 4.049399645466798E-01 + 2.141000000000000E+00 4.042644172699972E-01 + 2.142000000000000E+00 4.035897008804828E-01 + 2.143000000000000E+00 4.029158150705883E-01 + 2.144000000000000E+00 4.022427595310968E-01 + 2.145000000000000E+00 4.015705339511168E-01 + 2.146000000000000E+00 4.008991380180942E-01 + 2.147000000000000E+00 4.002285714178150E-01 + 2.148000000000000E+00 3.995588338344107E-01 + 2.149000000000000E+00 3.988899249503555E-01 + 2.150000000000000E+00 3.982218444464785E-01 + 2.151000000000000E+00 3.975545920019610E-01 + 2.152000000000000E+00 3.968881672943515E-01 + 2.153000000000000E+00 3.962225699995521E-01 + 2.154000000000000E+00 3.955577997918403E-01 + 2.155000000000000E+00 3.948938563438611E-01 + 2.156000000000000E+00 3.942307393266398E-01 + 2.157000000000000E+00 3.935684484095758E-01 + 2.158000000000000E+00 3.929069832604574E-01 + 2.159000000000000E+00 3.922463435454610E-01 + 2.160000000000000E+00 3.915865289291502E-01 + 2.161000000000000E+00 3.909275390744884E-01 + 2.162000000000000E+00 3.902693736428413E-01 + 2.163000000000000E+00 3.896120322939751E-01 + 2.164000000000000E+00 3.889555146860654E-01 + 2.165000000000000E+00 3.882998204757043E-01 + 2.166000000000000E+00 3.876449493178920E-01 + 2.167000000000000E+00 3.869909008660589E-01 + 2.168000000000000E+00 3.863376747720549E-01 + 2.169000000000000E+00 3.856852706861565E-01 + 2.170000000000000E+00 3.850336882570814E-01 + 2.171000000000000E+00 3.843829271319746E-01 + 2.172000000000000E+00 3.837329869564288E-01 + 2.173000000000000E+00 3.830838673744787E-01 + 2.174000000000000E+00 3.824355680286108E-01 + 2.175000000000000E+00 3.817880885597623E-01 + 2.176000000000000E+00 3.811414286073302E-01 + 2.177000000000000E+00 3.804955878091706E-01 + 2.178000000000000E+00 3.798505658016065E-01 + 2.179000000000000E+00 3.792063622194317E-01 + 2.180000000000000E+00 3.785629766959093E-01 + 2.181000000000000E+00 3.779204088627844E-01 + 2.182000000000000E+00 3.772786583502868E-01 + 2.183000000000000E+00 3.766377247871230E-01 + 2.184000000000000E+00 3.759976078004990E-01 + 2.185000000000000E+00 3.753583070161093E-01 + 2.186000000000000E+00 3.747198220581505E-01 + 2.187000000000000E+00 3.740821525493163E-01 + 2.188000000000000E+00 3.734452981108144E-01 + 2.189000000000000E+00 3.728092583623545E-01 + 2.190000000000000E+00 3.721740329221703E-01 + 2.191000000000000E+00 3.715396214070036E-01 + 2.192000000000000E+00 3.709060234321292E-01 + 2.193000000000000E+00 3.702732386113419E-01 + 2.194000000000000E+00 3.696412665569718E-01 + 2.195000000000000E+00 3.690101068798814E-01 + 2.196000000000000E+00 3.683797591894733E-01 + 2.197000000000000E+00 3.677502230936943E-01 + 2.198000000000000E+00 3.671214981990354E-01 + 2.199000000000000E+00 3.664935841105446E-01 + 2.200000000000000E+00 3.658664804318203E-01 + 2.201000000000000E+00 3.652401867650241E-01 + 2.202000000000000E+00 3.646147027108801E-01 + 2.203000000000000E+00 3.639900278686786E-01 + 2.204000000000000E+00 3.633661618362842E-01 + 2.205000000000000E+00 3.627431042101374E-01 + 2.206000000000000E+00 3.621208545852584E-01 + 2.207000000000000E+00 3.614994125552507E-01 + 2.208000000000000E+00 3.608787777123080E-01 + 2.209000000000000E+00 3.602589496472143E-01 + 2.210000000000000E+00 3.596399279493530E-01 + 2.211000000000000E+00 3.590217122067062E-01 + 2.212000000000000E+00 3.584043020058602E-01 + 2.213000000000000E+00 3.577876969320118E-01 + 2.214000000000000E+00 3.571718965689686E-01 + 2.215000000000000E+00 3.565569004991584E-01 + 2.216000000000000E+00 3.559427083036283E-01 + 2.217000000000000E+00 3.553293195620480E-01 + 2.218000000000000E+00 3.547167338527224E-01 + 2.219000000000000E+00 3.541049507525833E-01 + 2.220000000000000E+00 3.534939698372059E-01 + 2.221000000000000E+00 3.528837906808043E-01 + 2.222000000000000E+00 3.522744128562367E-01 + 2.223000000000000E+00 3.516658359350123E-01 + 2.224000000000000E+00 3.510580594872956E-01 + 2.225000000000000E+00 3.504510830819091E-01 + 2.226000000000000E+00 3.498449062863333E-01 + 2.227000000000000E+00 3.492395286667179E-01 + 2.228000000000000E+00 3.486349497878845E-01 + 2.229000000000000E+00 3.480311692133268E-01 + 2.230000000000000E+00 3.474281865052166E-01 + 2.231000000000000E+00 3.468260012244058E-01 + 2.232000000000000E+00 3.462246129304398E-01 + 2.233000000000000E+00 3.456240211815507E-01 + 2.234000000000000E+00 3.450242255346608E-01 + 2.235000000000000E+00 3.444252255453985E-01 + 2.236000000000000E+00 3.438270207680922E-01 + 2.237000000000000E+00 3.432296107557770E-01 + 2.238000000000000E+00 3.426329950601985E-01 + 2.239000000000000E+00 3.420371732318183E-01 + 2.240000000000000E+00 3.414421448198168E-01 + 2.241000000000000E+00 3.408479093720967E-01 + 2.242000000000000E+00 3.402544664352928E-01 + 2.243000000000000E+00 3.396618155547650E-01 + 2.244000000000000E+00 3.390699562746096E-01 + 2.245000000000000E+00 3.384788881376690E-01 + 2.246000000000000E+00 3.378886106855205E-01 + 2.247000000000000E+00 3.372991234584940E-01 + 2.248000000000000E+00 3.367104259956697E-01 + 2.249000000000000E+00 3.361225178348864E-01 + 2.250000000000000E+00 3.355353985127394E-01 + 2.251000000000000E+00 3.349490675645869E-01 + 2.252000000000000E+00 3.343635245245608E-01 + 2.253000000000000E+00 3.337787689255600E-01 + 2.254000000000000E+00 3.331948002992620E-01 + 2.255000000000000E+00 3.326116181761226E-01 + 2.256000000000000E+00 3.320292220853819E-01 + 2.257000000000000E+00 3.314476115550741E-01 + 2.258000000000000E+00 3.308667861120148E-01 + 2.259000000000000E+00 3.302867452818283E-01 + 2.260000000000000E+00 3.297074885889287E-01 + 2.261000000000000E+00 3.291290155565429E-01 + 2.262000000000000E+00 3.285513257067012E-01 + 2.263000000000000E+00 3.279744185602474E-01 + 2.264000000000000E+00 3.273982936368451E-01 + 2.265000000000000E+00 3.268229504549743E-01 + 2.266000000000000E+00 3.262483885319444E-01 + 2.267000000000000E+00 3.256746073838874E-01 + 2.268000000000000E+00 3.251016065257761E-01 + 2.269000000000000E+00 3.245293854714118E-01 + 2.270000000000000E+00 3.239579437334446E-01 + 2.271000000000000E+00 3.233872808233629E-01 + 2.272000000000000E+00 3.228173962515097E-01 + 2.273000000000000E+00 3.222482895270759E-01 + 2.274000000000000E+00 3.216799601581132E-01 + 2.275000000000000E+00 3.211124076515327E-01 + 2.276000000000000E+00 3.205456315131138E-01 + 2.277000000000000E+00 3.199796312474978E-01 + 2.278000000000000E+00 3.194144063582077E-01 + 2.279000000000000E+00 3.188499563476377E-01 + 2.280000000000000E+00 3.182862807170648E-01 + 2.281000000000000E+00 3.177233789666532E-01 + 2.282000000000000E+00 3.171612505954544E-01 + 2.283000000000000E+00 3.165998951014152E-01 + 2.284000000000000E+00 3.160393119813733E-01 + 2.285000000000000E+00 3.154795007310787E-01 + 2.286000000000000E+00 3.149204608451747E-01 + 2.287000000000000E+00 3.143621918172228E-01 + 2.288000000000000E+00 3.138046931396958E-01 + 2.289000000000000E+00 3.132479643039789E-01 + 2.290000000000000E+00 3.126920048003848E-01 + 2.291000000000000E+00 3.121368141181494E-01 + 2.292000000000000E+00 3.115823917454341E-01 + 2.293000000000000E+00 3.110287371693427E-01 + 2.294000000000000E+00 3.104758498759053E-01 + 2.295000000000000E+00 3.099237293500992E-01 + 2.296000000000000E+00 3.093723750758489E-01 + 2.297000000000000E+00 3.088217865360251E-01 + 2.298000000000000E+00 3.082719632124500E-01 + 2.299000000000000E+00 3.077229045859051E-01 + 2.300000000000000E+00 3.071746101361342E-01 + 2.301000000000000E+00 3.066270793418442E-01 + 2.302000000000000E+00 3.060803116807143E-01 + 2.303000000000000E+00 3.055343066293905E-01 + 2.304000000000000E+00 3.049890636635009E-01 + 2.305000000000000E+00 3.044445822576541E-01 + 2.306000000000000E+00 3.039008618854435E-01 + 2.307000000000000E+00 3.033579020194512E-01 + 2.308000000000000E+00 3.028157021312490E-01 + 2.309000000000000E+00 3.022742616914106E-01 + 2.310000000000000E+00 3.017335801695085E-01 + 2.311000000000000E+00 3.011936570341177E-01 + 2.312000000000000E+00 3.006544917528250E-01 + 2.313000000000000E+00 3.001160837922285E-01 + 2.314000000000000E+00 2.995784326179440E-01 + 2.315000000000000E+00 2.990415376946045E-01 + 2.316000000000000E+00 2.985053984858714E-01 + 2.317000000000000E+00 2.979700144544312E-01 + 2.318000000000000E+00 2.974353850620072E-01 + 2.319000000000000E+00 2.969015097693524E-01 + 2.320000000000000E+00 2.963683880362643E-01 + 2.321000000000000E+00 2.958360193215852E-01 + 2.322000000000000E+00 2.953044030832030E-01 + 2.323000000000000E+00 2.947735387780565E-01 + 2.324000000000000E+00 2.942434258621453E-01 + 2.325000000000000E+00 2.937140637905223E-01 + 2.326000000000000E+00 2.931854520173074E-01 + 2.327000000000000E+00 2.926575899956910E-01 + 2.328000000000000E+00 2.921304771779291E-01 + 2.329000000000000E+00 2.916041130153545E-01 + 2.330000000000000E+00 2.910784969583828E-01 + 2.331000000000000E+00 2.905536284565099E-01 + 2.332000000000000E+00 2.900295069583175E-01 + 2.333000000000000E+00 2.895061319114798E-01 + 2.334000000000000E+00 2.889835027627654E-01 + 2.335000000000000E+00 2.884616189580446E-01 + 2.336000000000000E+00 2.879404799422829E-01 + 2.337000000000000E+00 2.874200851595613E-01 + 2.338000000000000E+00 2.869004340530615E-01 + 2.339000000000000E+00 2.863815260650879E-01 + 2.340000000000000E+00 2.858633606370583E-01 + 2.341000000000000E+00 2.853459372095117E-01 + 2.342000000000000E+00 2.848292552221162E-01 + 2.343000000000000E+00 2.843133141136666E-01 + 2.344000000000000E+00 2.837981133220906E-01 + 2.345000000000000E+00 2.832836522844583E-01 + 2.346000000000000E+00 2.827699304369735E-01 + 2.347000000000000E+00 2.822569472149892E-01 + 2.348000000000000E+00 2.817447020530088E-01 + 2.349000000000000E+00 2.812331943846831E-01 + 2.350000000000000E+00 2.807224236428247E-01 + 2.351000000000000E+00 2.802123892594026E-01 + 2.352000000000000E+00 2.797030906655519E-01 + 2.353000000000000E+00 2.791945272915753E-01 + 2.354000000000000E+00 2.786866985669460E-01 + 2.355000000000000E+00 2.781796039203135E-01 + 2.356000000000000E+00 2.776732427795078E-01 + 2.357000000000000E+00 2.771676145715395E-01 + 2.358000000000000E+00 2.766627187226099E-01 + 2.359000000000000E+00 2.761585546581062E-01 + 2.360000000000000E+00 2.756551218026149E-01 + 2.361000000000000E+00 2.751524195799177E-01 + 2.362000000000000E+00 2.746504474130002E-01 + 2.363000000000000E+00 2.741492047240504E-01 + 2.364000000000000E+00 2.736486909344709E-01 + 2.365000000000000E+00 2.731489054648752E-01 + 2.366000000000000E+00 2.726498477350949E-01 + 2.367000000000000E+00 2.721515171641810E-01 + 2.368000000000000E+00 2.716539131704100E-01 + 2.369000000000000E+00 2.711570351712879E-01 + 2.370000000000000E+00 2.706608825835513E-01 + 2.371000000000000E+00 2.701654548231748E-01 + 2.372000000000000E+00 2.696707513053712E-01 + 2.373000000000000E+00 2.691767714445990E-01 + 2.374000000000000E+00 2.686835146545590E-01 + 2.375000000000000E+00 2.681909803482095E-01 + 2.376000000000000E+00 2.676991679377611E-01 + 2.377000000000000E+00 2.672080768346791E-01 + 2.378000000000000E+00 2.667177064496957E-01 + 2.379000000000000E+00 2.662280561928071E-01 + 2.380000000000000E+00 2.657391254732810E-01 + 2.381000000000000E+00 2.652509136996544E-01 + 2.382000000000000E+00 2.647634202797458E-01 + 2.383000000000000E+00 2.642766446206532E-01 + 2.384000000000000E+00 2.637905861287565E-01 + 2.385000000000000E+00 2.633052442097281E-01 + 2.386000000000000E+00 2.628206182685277E-01 + 2.387000000000000E+00 2.623367077094158E-01 + 2.388000000000000E+00 2.618535119359468E-01 + 2.389000000000000E+00 2.613710303509812E-01 + 2.390000000000000E+00 2.608892623566851E-01 + 2.391000000000000E+00 2.604082073545355E-01 + 2.392000000000000E+00 2.599278647453235E-01 + 2.393000000000000E+00 2.594482339291575E-01 + 2.394000000000000E+00 2.589693143054673E-01 + 2.395000000000000E+00 2.584911052730081E-01 + 2.396000000000000E+00 2.580136062298609E-01 + 2.397000000000000E+00 2.575368165734410E-01 + 2.398000000000000E+00 2.570607357005042E-01 + 2.399000000000000E+00 2.565853630071374E-01 + 2.400000000000000E+00 2.561106978887745E-01 + 2.401000000000000E+00 2.556367397402002E-01 + 2.402000000000000E+00 2.551634879555431E-01 + 2.403000000000000E+00 2.546909419282889E-01 + 2.404000000000000E+00 2.542191010512808E-01 + 2.405000000000000E+00 2.537479647167237E-01 + 2.406000000000000E+00 2.532775323161878E-01 + 2.407000000000000E+00 2.528078032406104E-01 + 2.408000000000000E+00 2.523387768803022E-01 + 2.409000000000000E+00 2.518704526249475E-01 + 2.410000000000000E+00 2.514028298636137E-01 + 2.411000000000000E+00 2.509359079847465E-01 + 2.412000000000000E+00 2.504696863761829E-01 + 2.413000000000000E+00 2.500041644251464E-01 + 2.414000000000000E+00 2.495393415182547E-01 + 2.415000000000000E+00 2.490752170415253E-01 + 2.416000000000000E+00 2.486117903803730E-01 + 2.417000000000000E+00 2.481490609196202E-01 + 2.418000000000000E+00 2.476870280434934E-01 + 2.419000000000000E+00 2.472256911356341E-01 + 2.420000000000000E+00 2.467650495790979E-01 + 2.421000000000000E+00 2.463051027563586E-01 + 2.422000000000000E+00 2.458458500493104E-01 + 2.423000000000000E+00 2.453872908392770E-01 + 2.424000000000000E+00 2.449294245070084E-01 + 2.425000000000000E+00 2.444722504326861E-01 + 2.426000000000000E+00 2.440157679959333E-01 + 2.427000000000000E+00 2.435599765758082E-01 + 2.428000000000000E+00 2.431048755508123E-01 + 2.429000000000000E+00 2.426504642988961E-01 + 2.430000000000000E+00 2.421967421974581E-01 + 2.431000000000000E+00 2.417437086233535E-01 + 2.432000000000000E+00 2.412913629528922E-01 + 2.433000000000000E+00 2.408397045618466E-01 + 2.434000000000000E+00 2.403887328254502E-01 + 2.435000000000000E+00 2.399384471184100E-01 + 2.436000000000000E+00 2.394888468148971E-01 + 2.437000000000000E+00 2.390399312885638E-01 + 2.438000000000000E+00 2.385916999125356E-01 + 2.439000000000000E+00 2.381441520594215E-01 + 2.440000000000000E+00 2.376972871013170E-01 + 2.441000000000000E+00 2.372511044098038E-01 + 2.442000000000000E+00 2.368056033559569E-01 + 2.443000000000000E+00 2.363607833103466E-01 + 2.444000000000000E+00 2.359166436430395E-01 + 2.445000000000000E+00 2.354731837236096E-01 + 2.446000000000000E+00 2.350304029211319E-01 + 2.447000000000000E+00 2.345883006041932E-01 + 2.448000000000000E+00 2.341468761408892E-01 + 2.449000000000000E+00 2.337061288988379E-01 + 2.450000000000000E+00 2.332660582451705E-01 + 2.451000000000000E+00 2.328266635465454E-01 + 2.452000000000000E+00 2.323879441691416E-01 + 2.453000000000000E+00 2.319498994786742E-01 + 2.454000000000000E+00 2.315125288403867E-01 + 2.455000000000000E+00 2.310758316190615E-01 + 2.456000000000000E+00 2.306398071790182E-01 + 2.457000000000000E+00 2.302044548841218E-01 + 2.458000000000000E+00 2.297697740977832E-01 + 2.459000000000000E+00 2.293357641829600E-01 + 2.460000000000000E+00 2.289024245021692E-01 + 2.461000000000000E+00 2.284697544174777E-01 + 2.462000000000000E+00 2.280377532905160E-01 + 2.463000000000000E+00 2.276064204824763E-01 + 2.464000000000000E+00 2.271757553541205E-01 + 2.465000000000000E+00 2.267457572657749E-01 + 2.466000000000000E+00 2.263164255773430E-01 + 2.467000000000000E+00 2.258877596483047E-01 + 2.468000000000000E+00 2.254597588377167E-01 + 2.469000000000000E+00 2.250324225042236E-01 + 2.470000000000000E+00 2.246057500060504E-01 + 2.471000000000000E+00 2.241797407010169E-01 + 2.472000000000000E+00 2.237543939465350E-01 + 2.473000000000000E+00 2.233297090996111E-01 + 2.474000000000000E+00 2.229056855168528E-01 + 2.475000000000000E+00 2.224823225544679E-01 + 2.476000000000000E+00 2.220596195682753E-01 + 2.477000000000000E+00 2.216375759136986E-01 + 2.478000000000000E+00 2.212161909457781E-01 + 2.479000000000000E+00 2.207954640191648E-01 + 2.480000000000000E+00 2.203753944881348E-01 + 2.481000000000000E+00 2.199559817065833E-01 + 2.482000000000000E+00 2.195372250280309E-01 + 2.483000000000000E+00 2.191191238056286E-01 + 2.484000000000000E+00 2.187016773921613E-01 + 2.485000000000000E+00 2.182848851400427E-01 + 2.486000000000000E+00 2.178687464013334E-01 + 2.487000000000000E+00 2.174532605277315E-01 + 2.488000000000000E+00 2.170384268705783E-01 + 2.489000000000000E+00 2.166242447808674E-01 + 2.490000000000000E+00 2.162107136092427E-01 + 2.491000000000000E+00 2.157978327060028E-01 + 2.492000000000000E+00 2.153856014211008E-01 + 2.493000000000000E+00 2.149740191041571E-01 + 2.494000000000000E+00 2.145630851044497E-01 + 2.495000000000000E+00 2.141527987709306E-01 + 2.496000000000000E+00 2.137431594522162E-01 + 2.497000000000000E+00 2.133341664966013E-01 + 2.498000000000000E+00 2.129258192520548E-01 + 2.499000000000000E+00 2.125181170662263E-01 + 2.500000000000000E+00 2.121110592864494E-01 + 2.501000000000000E+00 2.117046452597443E-01 + 2.502000000000000E+00 2.112988743328188E-01 + 2.503000000000000E+00 2.108937458520756E-01 + 2.504000000000000E+00 2.104892591636092E-01 + 2.505000000000000E+00 2.100854136132197E-01 + 2.506000000000000E+00 2.096822085464018E-01 + 2.507000000000000E+00 2.092796433083602E-01 + 2.508000000000000E+00 2.088777172440059E-01 + 2.509000000000000E+00 2.084764296979627E-01 + 2.510000000000000E+00 2.080757800145650E-01 + 2.511000000000000E+00 2.076757675378690E-01 + 2.512000000000000E+00 2.072763916116500E-01 + 2.513000000000000E+00 2.068776515794063E-01 + 2.514000000000000E+00 2.064795467843616E-01 + 2.515000000000000E+00 2.060820765694724E-01 + 2.516000000000000E+00 2.056852402774273E-01 + 2.517000000000000E+00 2.052890372506497E-01 + 2.518000000000000E+00 2.048934668313011E-01 + 2.519000000000000E+00 2.044985283612867E-01 + 2.520000000000000E+00 2.041042211822566E-01 + 2.521000000000000E+00 2.037105446356084E-01 + 2.522000000000000E+00 2.033174980624898E-01 + 2.523000000000000E+00 2.029250808038054E-01 + 2.524000000000000E+00 2.025332922002135E-01 + 2.525000000000000E+00 2.021421315921349E-01 + 2.526000000000000E+00 2.017515983197530E-01 + 2.527000000000000E+00 2.013616917230163E-01 + 2.528000000000000E+00 2.009724111416435E-01 + 2.529000000000000E+00 2.005837559151265E-01 + 2.530000000000000E+00 2.001957253827274E-01 + 2.531000000000000E+00 1.998083188834928E-01 + 2.532000000000000E+00 1.994215357562447E-01 + 2.533000000000000E+00 1.990353753395951E-01 + 2.534000000000000E+00 1.986498369719362E-01 + 2.535000000000000E+00 1.982649199914551E-01 + 2.536000000000000E+00 1.978806237361298E-01 + 2.537000000000000E+00 1.974969475437341E-01 + 2.538000000000000E+00 1.971138907518403E-01 + 2.539000000000000E+00 1.967314526978245E-01 + 2.540000000000000E+00 1.963496327188634E-01 + 2.541000000000000E+00 1.959684301519453E-01 + 2.542000000000000E+00 1.955878443338651E-01 + 2.543000000000000E+00 1.952078746012358E-01 + 2.544000000000000E+00 1.948285202904809E-01 + 2.545000000000000E+00 1.944497807378478E-01 + 2.546000000000000E+00 1.940716552794024E-01 + 2.547000000000000E+00 1.936941432510392E-01 + 2.548000000000000E+00 1.933172439884759E-01 + 2.549000000000000E+00 1.929409568272654E-01 + 2.550000000000000E+00 1.925652811027913E-01 + 2.551000000000000E+00 1.921902161502744E-01 + 2.552000000000000E+00 1.918157613047737E-01 + 2.553000000000000E+00 1.914419159011931E-01 + 2.554000000000000E+00 1.910686792742780E-01 + 2.555000000000000E+00 1.906960507586224E-01 + 2.556000000000000E+00 1.903240296886732E-01 + 2.557000000000000E+00 1.899526153987290E-01 + 2.558000000000000E+00 1.895818072229439E-01 + 2.559000000000000E+00 1.892116044953309E-01 + 2.560000000000000E+00 1.888420065497685E-01 + 2.561000000000000E+00 1.884730127199950E-01 + 2.562000000000000E+00 1.881046223396200E-01 + 2.563000000000000E+00 1.877368347421192E-01 + 2.564000000000000E+00 1.873696492608470E-01 + 2.565000000000000E+00 1.870030652290282E-01 + 2.566000000000000E+00 1.866370819797700E-01 + 2.567000000000000E+00 1.862716988460572E-01 + 2.568000000000000E+00 1.859069151607642E-01 + 2.569000000000000E+00 1.855427302566464E-01 + 2.570000000000000E+00 1.851791434663535E-01 + 2.571000000000000E+00 1.848161541224233E-01 + 2.572000000000000E+00 1.844537615572924E-01 + 2.573000000000000E+00 1.840919651032943E-01 + 2.574000000000000E+00 1.837307640926633E-01 + 2.575000000000000E+00 1.833701578575334E-01 + 2.576000000000000E+00 1.830101457299508E-01 + 2.577000000000000E+00 1.826507270418648E-01 + 2.578000000000000E+00 1.822919011251409E-01 + 2.579000000000000E+00 1.819336673115541E-01 + 2.580000000000000E+00 1.815760249327997E-01 + 2.581000000000000E+00 1.812189733204911E-01 + 2.582000000000000E+00 1.808625118061652E-01 + 2.583000000000000E+00 1.805066397212810E-01 + 2.584000000000000E+00 1.801513563972275E-01 + 2.585000000000000E+00 1.797966611653223E-01 + 2.586000000000000E+00 1.794425533568189E-01 + 2.587000000000000E+00 1.790890323029025E-01 + 2.588000000000000E+00 1.787360973346985E-01 + 2.589000000000000E+00 1.783837477832712E-01 + 2.590000000000000E+00 1.780319829796330E-01 + 2.591000000000000E+00 1.776808022547361E-01 + 2.592000000000000E+00 1.773302049394849E-01 + 2.593000000000000E+00 1.769801903647370E-01 + 2.594000000000000E+00 1.766307578612989E-01 + 2.595000000000000E+00 1.762819067599369E-01 + 2.596000000000000E+00 1.759336363913761E-01 + 2.597000000000000E+00 1.755859460863027E-01 + 2.598000000000000E+00 1.752388351753675E-01 + 2.599000000000000E+00 1.748923029891892E-01 + 2.600000000000000E+00 1.745463488583524E-01 + 2.601000000000000E+00 1.742009721134173E-01 + 2.602000000000000E+00 1.738561720849185E-01 + 2.603000000000000E+00 1.735119481033655E-01 + 2.604000000000000E+00 1.731682994992479E-01 + 2.605000000000000E+00 1.728252256030405E-01 + 2.606000000000000E+00 1.724827257451990E-01 + 2.607000000000000E+00 1.721407992561679E-01 + 2.608000000000000E+00 1.717994454663820E-01 + 2.609000000000000E+00 1.714586637062683E-01 + 2.610000000000000E+00 1.711184533062487E-01 + 2.611000000000000E+00 1.707788135967418E-01 + 2.612000000000000E+00 1.704397439081667E-01 + 2.613000000000000E+00 1.701012435709440E-01 + 2.614000000000000E+00 1.697633119155006E-01 + 2.615000000000000E+00 1.694259482722690E-01 + 2.616000000000000E+00 1.690891519716916E-01 + 2.617000000000000E+00 1.687529223442259E-01 + 2.618000000000000E+00 1.684172587203421E-01 + 2.619000000000000E+00 1.680821604305253E-01 + 2.620000000000000E+00 1.677476268052840E-01 + 2.621000000000000E+00 1.674136571751467E-01 + 2.622000000000000E+00 1.670802508706693E-01 + 2.623000000000000E+00 1.667474072224293E-01 + 2.624000000000000E+00 1.664151255610390E-01 + 2.625000000000000E+00 1.660834052171404E-01 + 2.626000000000000E+00 1.657522455214089E-01 + 2.627000000000000E+00 1.654216458045573E-01 + 2.628000000000000E+00 1.650916053973398E-01 + 2.629000000000000E+00 1.647621236305463E-01 + 2.630000000000000E+00 1.644331998350175E-01 + 2.631000000000000E+00 1.641048333416349E-01 + 2.632000000000000E+00 1.637770234813318E-01 + 2.633000000000000E+00 1.634497695850913E-01 + 2.634000000000000E+00 1.631230709839498E-01 + 2.635000000000000E+00 1.627969270090010E-01 + 2.636000000000000E+00 1.624713369913943E-01 + 2.637000000000000E+00 1.621463002623413E-01 + 2.638000000000000E+00 1.618218161531147E-01 + 2.639000000000000E+00 1.614978839950559E-01 + 2.640000000000000E+00 1.611745031195716E-01 + 2.641000000000000E+00 1.608516728581352E-01 + 2.642000000000000E+00 1.605293925422978E-01 + 2.643000000000000E+00 1.602076615036822E-01 + 2.644000000000000E+00 1.598864790739863E-01 + 2.645000000000000E+00 1.595658445849920E-01 + 2.646000000000000E+00 1.592457573685565E-01 + 2.647000000000000E+00 1.589262167566270E-01 + 2.648000000000000E+00 1.586072220812309E-01 + 2.649000000000000E+00 1.582887726744869E-01 + 2.650000000000000E+00 1.579708678686046E-01 + 2.651000000000000E+00 1.576535069958851E-01 + 2.652000000000000E+00 1.573366893887242E-01 + 2.653000000000000E+00 1.570204143796172E-01 + 2.654000000000000E+00 1.567046813011556E-01 + 2.655000000000000E+00 1.563894894860364E-01 + 2.656000000000000E+00 1.560748382670575E-01 + 2.657000000000000E+00 1.557607269771246E-01 + 2.658000000000000E+00 1.554471549492528E-01 + 2.659000000000000E+00 1.551341215165650E-01 + 2.660000000000000E+00 1.548216260123016E-01 + 2.661000000000000E+00 1.545096677698120E-01 + 2.662000000000000E+00 1.541982461225690E-01 + 2.663000000000000E+00 1.538873604041616E-01 + 2.664000000000000E+00 1.535770099483010E-01 + 2.665000000000000E+00 1.532671940888237E-01 + 2.666000000000000E+00 1.529579121596883E-01 + 2.667000000000000E+00 1.526491634949885E-01 + 2.668000000000000E+00 1.523409474289409E-01 + 2.669000000000000E+00 1.520332632959004E-01 + 2.670000000000000E+00 1.517261104303547E-01 + 2.671000000000000E+00 1.514194881669267E-01 + 2.672000000000000E+00 1.511133958403819E-01 + 2.673000000000000E+00 1.508078327856240E-01 + 2.674000000000000E+00 1.505027983377004E-01 + 2.675000000000000E+00 1.501982918318051E-01 + 2.676000000000000E+00 1.498943126032797E-01 + 2.677000000000000E+00 1.495908599876139E-01 + 2.678000000000000E+00 1.492879333204518E-01 + 2.679000000000000E+00 1.489855319375886E-01 + 2.680000000000000E+00 1.486836551749761E-01 + 2.681000000000000E+00 1.483823023687268E-01 + 2.682000000000000E+00 1.480814728551092E-01 + 2.683000000000000E+00 1.477811659705577E-01 + 2.684000000000000E+00 1.474813810516678E-01 + 2.685000000000000E+00 1.471821174352052E-01 + 2.686000000000000E+00 1.468833744580995E-01 + 2.687000000000000E+00 1.465851514574540E-01 + 2.688000000000000E+00 1.462874477705451E-01 + 2.689000000000000E+00 1.459902627348212E-01 + 2.690000000000000E+00 1.456935956879081E-01 + 2.691000000000000E+00 1.453974459676104E-01 + 2.692000000000000E+00 1.451018129119143E-01 + 2.693000000000000E+00 1.448066958589880E-01 + 2.694000000000000E+00 1.445120941471845E-01 + 2.695000000000000E+00 1.442180071150418E-01 + 2.696000000000000E+00 1.439244341012906E-01 + 2.697000000000000E+00 1.436313744448472E-01 + 2.698000000000000E+00 1.433388274848249E-01 + 2.699000000000000E+00 1.430467925605304E-01 + 2.700000000000000E+00 1.427552690114644E-01 + 2.701000000000000E+00 1.424642561773313E-01 + 2.702000000000000E+00 1.421737533980301E-01 + 2.703000000000000E+00 1.418837600136678E-01 + 2.704000000000000E+00 1.415942753645534E-01 + 2.705000000000000E+00 1.413052987912012E-01 + 2.706000000000000E+00 1.410168296343363E-01 + 2.707000000000000E+00 1.407288672348933E-01 + 2.708000000000000E+00 1.404414109340170E-01 + 2.709000000000000E+00 1.401544600730691E-01 + 2.710000000000000E+00 1.398680139936273E-01 + 2.711000000000000E+00 1.395820720374851E-01 + 2.712000000000000E+00 1.392966335466573E-01 + 2.713000000000000E+00 1.390116978633800E-01 + 2.714000000000000E+00 1.387272643301156E-01 + 2.715000000000000E+00 1.384433322895472E-01 + 2.716000000000000E+00 1.381599010845894E-01 + 2.717000000000000E+00 1.378769700583840E-01 + 2.718000000000000E+00 1.375945385543056E-01 + 2.719000000000000E+00 1.373126059159614E-01 + 2.720000000000000E+00 1.370311714871919E-01 + 2.721000000000000E+00 1.367502346120764E-01 + 2.722000000000000E+00 1.364697946349326E-01 + 2.723000000000000E+00 1.361898509003174E-01 + 2.724000000000000E+00 1.359104027530315E-01 + 2.725000000000000E+00 1.356314495381184E-01 + 2.726000000000000E+00 1.353529906008692E-01 + 2.727000000000000E+00 1.350750252868209E-01 + 2.728000000000000E+00 1.347975529417616E-01 + 2.729000000000000E+00 1.345205729117293E-01 + 2.730000000000000E+00 1.342440845430184E-01 + 2.731000000000000E+00 1.339680871821731E-01 + 2.732000000000000E+00 1.336925801759992E-01 + 2.733000000000000E+00 1.334175628715596E-01 + 2.734000000000000E+00 1.331430346161757E-01 + 2.735000000000000E+00 1.328689947574341E-01 + 2.736000000000000E+00 1.325954426431818E-01 + 2.737000000000000E+00 1.323223776215346E-01 + 2.738000000000000E+00 1.320497990408735E-01 + 2.739000000000000E+00 1.317777062498509E-01 + 2.740000000000000E+00 1.315060985973882E-01 + 2.741000000000000E+00 1.312349754326797E-01 + 2.742000000000000E+00 1.309643361051945E-01 + 2.743000000000000E+00 1.306941799646784E-01 + 2.744000000000000E+00 1.304245063611523E-01 + 2.745000000000000E+00 1.301553146449207E-01 + 2.746000000000000E+00 1.298866041665660E-01 + 2.747000000000000E+00 1.296183742769555E-01 + 2.748000000000000E+00 1.293506243272387E-01 + 2.749000000000000E+00 1.290833536688553E-01 + 2.750000000000000E+00 1.288165616535296E-01 + 2.751000000000000E+00 1.285502476332762E-01 + 2.752000000000000E+00 1.282844109604033E-01 + 2.753000000000000E+00 1.280190509875087E-01 + 2.754000000000000E+00 1.277541670674865E-01 + 2.755000000000000E+00 1.274897585535291E-01 + 2.756000000000000E+00 1.272258247991232E-01 + 2.757000000000000E+00 1.269623651580586E-01 + 2.758000000000000E+00 1.266993789844228E-01 + 2.759000000000000E+00 1.264368656326100E-01 + 2.760000000000000E+00 1.261748244573156E-01 + 2.761000000000000E+00 1.259132548135438E-01 + 2.762000000000000E+00 1.256521560566037E-01 + 2.763000000000000E+00 1.253915275421177E-01 + 2.764000000000000E+00 1.251313686260166E-01 + 2.765000000000000E+00 1.248716786645422E-01 + 2.766000000000000E+00 1.246124570142549E-01 + 2.767000000000000E+00 1.243537030320262E-01 + 2.768000000000000E+00 1.240954160750495E-01 + 2.769000000000000E+00 1.238375955008328E-01 + 2.770000000000000E+00 1.235802406672079E-01 + 2.771000000000000E+00 1.233233509323263E-01 + 2.772000000000000E+00 1.230669256546650E-01 + 2.773000000000000E+00 1.228109641930252E-01 + 2.774000000000000E+00 1.225554659065351E-01 + 2.775000000000000E+00 1.223004301546510E-01 + 2.776000000000000E+00 1.220458562971598E-01 + 2.777000000000000E+00 1.217917436941775E-01 + 2.778000000000000E+00 1.215380917061551E-01 + 2.779000000000000E+00 1.212848996938781E-01 + 2.780000000000000E+00 1.210321670184660E-01 + 2.781000000000000E+00 1.207798930413781E-01 + 2.782000000000000E+00 1.205280771244119E-01 + 2.783000000000000E+00 1.202767186297028E-01 + 2.784000000000000E+00 1.200258169197306E-01 + 2.785000000000000E+00 1.197753713573196E-01 + 2.786000000000000E+00 1.195253813056362E-01 + 2.787000000000000E+00 1.192758461281953E-01 + 2.788000000000000E+00 1.190267651888574E-01 + 2.789000000000000E+00 1.187781378518337E-01 + 2.790000000000000E+00 1.185299634816869E-01 + 2.791000000000000E+00 1.182822414433316E-01 + 2.792000000000000E+00 1.180349711020329E-01 + 2.793000000000000E+00 1.177881518234168E-01 + 2.794000000000000E+00 1.175417829734602E-01 + 2.795000000000000E+00 1.172958639185007E-01 + 2.796000000000000E+00 1.170503940252360E-01 + 2.797000000000000E+00 1.168053726607224E-01 + 2.798000000000000E+00 1.165607991923804E-01 + 2.799000000000000E+00 1.163166729879932E-01 + 2.800000000000000E+00 1.160729934157089E-01 + 2.801000000000000E+00 1.158297598440428E-01 + 2.802000000000000E+00 1.155869716418767E-01 + 2.803000000000000E+00 1.153446281784625E-01 + 2.804000000000000E+00 1.151027288234230E-01 + 2.805000000000000E+00 1.148612729467526E-01 + 2.806000000000000E+00 1.146202599188188E-01 + 2.807000000000000E+00 1.143796891103646E-01 + 2.808000000000000E+00 1.141395598925080E-01 + 2.809000000000000E+00 1.138998716367453E-01 + 2.810000000000000E+00 1.136606237149517E-01 + 2.811000000000000E+00 1.134218154993809E-01 + 2.812000000000000E+00 1.131834463626700E-01 + 2.813000000000000E+00 1.129455156778386E-01 + 2.814000000000000E+00 1.127080228182886E-01 + 2.815000000000000E+00 1.124709671578103E-01 + 2.816000000000000E+00 1.122343480705789E-01 + 2.817000000000000E+00 1.119981649311570E-01 + 2.818000000000000E+00 1.117624171144980E-01 + 2.819000000000000E+00 1.115271039959461E-01 + 2.820000000000000E+00 1.112922249512365E-01 + 2.821000000000000E+00 1.110577793564980E-01 + 2.822000000000000E+00 1.108237665882548E-01 + 2.823000000000000E+00 1.105901860234247E-01 + 2.824000000000000E+00 1.103570370393267E-01 + 2.825000000000000E+00 1.101243190136729E-01 + 2.826000000000000E+00 1.098920313245796E-01 + 2.827000000000000E+00 1.096601733505607E-01 + 2.828000000000000E+00 1.094287444705362E-01 + 2.829000000000000E+00 1.091977440638242E-01 + 2.830000000000000E+00 1.089671715101525E-01 + 2.831000000000000E+00 1.087370261896512E-01 + 2.832000000000000E+00 1.085073074828593E-01 + 2.833000000000000E+00 1.082780147707246E-01 + 2.834000000000000E+00 1.080491474346028E-01 + 2.835000000000000E+00 1.078207048562611E-01 + 2.836000000000000E+00 1.075926864178799E-01 + 2.837000000000000E+00 1.073650915020509E-01 + 2.838000000000000E+00 1.071379194917815E-01 + 2.839000000000000E+00 1.069111697704940E-01 + 2.840000000000000E+00 1.066848417220282E-01 + 2.841000000000000E+00 1.064589347306410E-01 + 2.842000000000000E+00 1.062334481810085E-01 + 2.843000000000000E+00 1.060083814582287E-01 + 2.844000000000000E+00 1.057837339478201E-01 + 2.845000000000000E+00 1.055595050357215E-01 + 2.846000000000000E+00 1.053356941083009E-01 + 2.847000000000000E+00 1.051123005523462E-01 + 2.848000000000000E+00 1.048893237550728E-01 + 2.849000000000000E+00 1.046667631041265E-01 + 2.850000000000000E+00 1.044446179875761E-01 + 2.851000000000000E+00 1.042228877939254E-01 + 2.852000000000000E+00 1.040015719121047E-01 + 2.853000000000000E+00 1.037806697314784E-01 + 2.854000000000000E+00 1.035601806418420E-01 + 2.855000000000000E+00 1.033401040334285E-01 + 2.856000000000000E+00 1.031204392969017E-01 + 2.857000000000000E+00 1.029011858233640E-01 + 2.858000000000000E+00 1.026823430043550E-01 + 2.859000000000000E+00 1.024639102318534E-01 + 2.860000000000000E+00 1.022458868982763E-01 + 2.861000000000000E+00 1.020282723964806E-01 + 2.862000000000000E+00 1.018110661197667E-01 + 2.863000000000000E+00 1.015942674618771E-01 + 2.864000000000000E+00 1.013778758169972E-01 + 2.865000000000000E+00 1.011618905797600E-01 + 2.866000000000000E+00 1.009463111452415E-01 + 2.867000000000000E+00 1.007311369089647E-01 + 2.868000000000000E+00 1.005163672669038E-01 + 2.869000000000000E+00 1.003020016154792E-01 + 2.870000000000000E+00 1.000880393515622E-01 + 2.871000000000000E+00 9.987447987247426E-02 + 2.872000000000000E+00 9.966132257599185E-02 + 2.873000000000000E+00 9.944856686034209E-02 + 2.874000000000000E+00 9.923621212420736E-02 + 2.875000000000000E+00 9.902425776672479E-02 + 2.876000000000000E+00 9.881270318748794E-02 + 2.877000000000000E+00 9.860154778654850E-02 + 2.878000000000000E+00 9.839079096441472E-02 + 2.879000000000000E+00 9.818043212205510E-02 + 2.880000000000000E+00 9.797047066089794E-02 + 2.881000000000000E+00 9.776090598283395E-02 + 2.882000000000000E+00 9.755173749021381E-02 + 2.883000000000000E+00 9.734296458585466E-02 + 2.884000000000000E+00 9.713458667303390E-02 + 2.885000000000000E+00 9.692660315549745E-02 + 2.886000000000000E+00 9.671901343745459E-02 + 2.887000000000000E+00 9.651181692358331E-02 + 2.888000000000000E+00 9.630501301902987E-02 + 2.889000000000000E+00 9.609860112940659E-02 + 2.890000000000000E+00 9.589258066079900E-02 + 2.891000000000000E+00 9.568695101976175E-02 + 2.892000000000000E+00 9.548171161332175E-02 + 2.893000000000000E+00 9.527686184897813E-02 + 2.894000000000000E+00 9.507240113470435E-02 + 2.895000000000000E+00 9.486832887894614E-02 + 2.896000000000000E+00 9.466464449062754E-02 + 2.897000000000000E+00 9.446134737914678E-02 + 2.898000000000000E+00 9.425843695437959E-02 + 2.899000000000000E+00 9.405591262668170E-02 + 2.900000000000000E+00 9.385377380688549E-02 + 2.901000000000000E+00 9.365201990630428E-02 + 2.902000000000000E+00 9.345065033673099E-02 + 2.903000000000000E+00 9.324966451044238E-02 + 2.904000000000000E+00 9.304906184019487E-02 + 2.905000000000000E+00 9.284884173923065E-02 + 2.906000000000000E+00 9.264900362127530E-02 + 2.907000000000000E+00 9.244954690053846E-02 + 2.908000000000000E+00 9.225047099171683E-02 + 2.909000000000000E+00 9.205177530999496E-02 + 2.910000000000000E+00 9.185345927104170E-02 + 2.911000000000000E+00 9.165552229101835E-02 + 2.912000000000000E+00 9.145796378657245E-02 + 2.913000000000000E+00 9.126078317484307E-02 + 2.914000000000000E+00 9.106397987345920E-02 + 2.915000000000000E+00 9.086755330054400E-02 + 2.916000000000000E+00 9.067150287470975E-02 + 2.917000000000000E+00 9.047582801506472E-02 + 2.918000000000000E+00 9.028052814121082E-02 + 2.919000000000000E+00 9.008560267324406E-02 + 2.920000000000000E+00 8.989105103175772E-02 + 2.921000000000000E+00 8.969687263784100E-02 + 2.922000000000000E+00 8.950306691308031E-02 + 2.923000000000000E+00 8.930963327955968E-02 + 2.924000000000000E+00 8.911657115986305E-02 + 2.925000000000000E+00 8.892387997707461E-02 + 2.926000000000000E+00 8.873155915477665E-02 + 2.927000000000000E+00 8.853960811705615E-02 + 2.928000000000000E+00 8.834802628849882E-02 + 2.929000000000000E+00 8.815681309419510E-02 + 2.930000000000000E+00 8.796596795973866E-02 + 2.931000000000000E+00 8.777549031122757E-02 + 2.932000000000000E+00 8.758537957526406E-02 + 2.933000000000000E+00 8.739563517895732E-02 + 2.934000000000000E+00 8.720625654992228E-02 + 2.935000000000000E+00 8.701724311627985E-02 + 2.936000000000000E+00 8.682859430666283E-02 + 2.937000000000000E+00 8.664030955020803E-02 + 2.938000000000000E+00 8.645238827656483E-02 + 2.939000000000000E+00 8.626482991589192E-02 + 2.940000000000000E+00 8.607763389885764E-02 + 2.941000000000000E+00 8.589079965664299E-02 + 2.942000000000000E+00 8.570432662094209E-02 + 2.943000000000000E+00 8.551821422395967E-02 + 2.944000000000000E+00 8.533246189841512E-02 + 2.945000000000000E+00 8.514706907754373E-02 + 2.946000000000000E+00 8.496203519509242E-02 + 2.947000000000000E+00 8.477735968532733E-02 + 2.948000000000000E+00 8.459304198302785E-02 + 2.949000000000000E+00 8.440908152349226E-02 + 2.950000000000000E+00 8.422547774253639E-02 + 2.951000000000000E+00 8.404223007649286E-02 + 2.952000000000000E+00 8.385933796221506E-02 + 2.953000000000000E+00 8.367680083707481E-02 + 2.954000000000000E+00 8.349461813896522E-02 + 2.955000000000000E+00 8.331278930629928E-02 + 2.956000000000000E+00 8.313131377801282E-02 + 2.957000000000000E+00 8.295019099356124E-02 + 2.958000000000000E+00 8.276942039292590E-02 + 2.959000000000000E+00 8.258900141661019E-02 + 2.960000000000000E+00 8.240893350564137E-02 + 2.961000000000000E+00 8.222921610157093E-02 + 2.962000000000000E+00 8.204984864647662E-02 + 2.963000000000000E+00 8.187083058296182E-02 + 2.964000000000000E+00 8.169216135415672E-02 + 2.965000000000000E+00 8.151384040371765E-02 + 2.966000000000000E+00 8.133586717582907E-02 + 2.967000000000000E+00 8.115824111520391E-02 + 2.968000000000000E+00 8.098096166708374E-02 + 2.969000000000000E+00 8.080402827724086E-02 + 2.970000000000000E+00 8.062744039197400E-02 + 2.971000000000000E+00 8.045119745811746E-02 + 2.972000000000000E+00 8.027529892303342E-02 + 2.973000000000000E+00 8.009974423461562E-02 + 2.974000000000000E+00 7.992453284129224E-02 + 2.975000000000000E+00 7.974966419202267E-02 + 2.976000000000000E+00 7.957513773629944E-02 + 2.977000000000000E+00 7.940095292415103E-02 + 2.978000000000000E+00 7.922710920613853E-02 + 2.979000000000000E+00 7.905360603335868E-02 + 2.980000000000000E+00 7.888044285744465E-02 + 2.981000000000000E+00 7.870761913056308E-02 + 2.982000000000000E+00 7.853513430542174E-02 + 2.983000000000000E+00 7.836298783526049E-02 + 2.984000000000000E+00 7.819117917386084E-02 + 2.985000000000000E+00 7.801970777554093E-02 + 2.986000000000000E+00 7.784857309515668E-02 + 2.987000000000000E+00 7.767777458810532E-02 + 2.988000000000000E+00 7.750731171032303E-02 + 2.989000000000000E+00 7.733718391828512E-02 + 2.990000000000000E+00 7.716739066900873E-02 + 2.991000000000000E+00 7.699793142005217E-02 + 2.992000000000000E+00 7.682880562951598E-02 + 2.993000000000000E+00 7.666001275604038E-02 + 2.994000000000000E+00 7.649155225881250E-02 + 2.995000000000000E+00 7.632342359755938E-02 + 2.996000000000000E+00 7.615562623255183E-02 + 2.997000000000000E+00 7.598815962460616E-02 + 2.998000000000000E+00 7.582102323508343E-02 + 2.999000000000000E+00 7.565421652588790E-02 + 3.000000000000000E+00 7.548773895947065E-02 + 3.001000000000000E+00 7.532158999882876E-02 + 3.002000000000000E+00 7.515576910750466E-02 + 3.003000000000000E+00 7.499027574958957E-02 + 3.004000000000000E+00 7.482510938971949E-02 + 3.005000000000000E+00 7.466026949308115E-02 + 3.006000000000000E+00 7.449575552540537E-02 + 3.007000000000000E+00 7.433156695297657E-02 + 3.008000000000000E+00 7.416770324262342E-02 + 3.009000000000000E+00 7.400416386172665E-02 + 3.010000000000000E+00 7.384094827821745E-02 + 3.011000000000000E+00 7.367805596057508E-02 + 3.012000000000000E+00 7.351548637783102E-02 + 3.013000000000000E+00 7.335323899956757E-02 + 3.014000000000000E+00 7.319131329591863E-02 + 3.015000000000000E+00 7.302970873756905E-02 + 3.016000000000000E+00 7.286842479575631E-02 + 3.017000000000000E+00 7.270746094227235E-02 + 3.018000000000000E+00 7.254681664945938E-02 + 3.019000000000000E+00 7.238649139021583E-02 + 3.020000000000000E+00 7.222648463799146E-02 + 3.021000000000000E+00 7.206679586679153E-02 + 3.022000000000000E+00 7.190742455117687E-02 + 3.023000000000000E+00 7.174837016626069E-02 + 3.024000000000000E+00 7.158963218771430E-02 + 3.025000000000000E+00 7.143121009176316E-02 + 3.026000000000000E+00 7.127310335518855E-02 + 3.027000000000000E+00 7.111531145532837E-02 + 3.028000000000000E+00 7.095783387007891E-02 + 3.029000000000000E+00 7.080067007789079E-02 + 3.030000000000000E+00 7.064381955777466E-02 + 3.031000000000000E+00 7.048728178929722E-02 + 3.032000000000000E+00 7.033105625258369E-02 + 3.033000000000000E+00 7.017514242831864E-02 + 3.034000000000000E+00 7.001953979774353E-02 + 3.035000000000000E+00 6.986424784266258E-02 + 3.036000000000000E+00 6.970926604543444E-02 + 3.037000000000000E+00 6.955459388898139E-02 + 3.038000000000000E+00 6.940023085678511E-02 + 3.039000000000000E+00 6.924617643288591E-02 + 3.040000000000000E+00 6.909243010188693E-02 + 3.041000000000000E+00 6.893899134895069E-02 + 3.042000000000000E+00 6.878585965980254E-02 + 3.043000000000000E+00 6.863303452072725E-02 + 3.044000000000000E+00 6.848051541857401E-02 + 3.045000000000000E+00 6.832830184075310E-02 + 3.046000000000000E+00 6.817639327523664E-02 + 3.047000000000000E+00 6.802478921056038E-02 + 3.048000000000000E+00 6.787348913582261E-02 + 3.049000000000000E+00 6.772249254068524E-02 + 3.050000000000000E+00 6.757179891537436E-02 + 3.051000000000000E+00 6.742140775067873E-02 + 3.052000000000000E+00 6.727131853795122E-02 + 3.053000000000000E+00 6.712153076911061E-02 + 3.054000000000000E+00 6.697204393663812E-02 + 3.055000000000000E+00 6.682285753358236E-02 + 3.056000000000000E+00 6.667397105355596E-02 + 3.057000000000000E+00 6.652538399073642E-02 + 3.058000000000000E+00 6.637709583986677E-02 + 3.059000000000000E+00 6.622910609625725E-02 + 3.060000000000000E+00 6.608141425578350E-02 + 3.061000000000000E+00 6.593401981488747E-02 + 3.062000000000000E+00 6.578692227057728E-02 + 3.063000000000000E+00 6.564012112042947E-02 + 3.064000000000000E+00 6.549361586258595E-02 + 3.065000000000000E+00 6.534740599575618E-02 + 3.066000000000000E+00 6.520149101921868E-02 + 3.067000000000000E+00 6.505587043281787E-02 + 3.068000000000000E+00 6.491054373696632E-02 + 3.069000000000000E+00 6.476551043264632E-02 + 3.070000000000000E+00 6.462077002140647E-02 + 3.071000000000000E+00 6.447632200536423E-02 + 3.072000000000000E+00 6.433216588720798E-02 + 3.073000000000000E+00 6.418830117019306E-02 + 3.074000000000000E+00 6.404472735814412E-02 + 3.075000000000000E+00 6.390144395545497E-02 + 3.076000000000000E+00 6.375845046708994E-02 + 3.077000000000000E+00 6.361574639858245E-02 + 3.078000000000000E+00 6.347333125603628E-02 + 3.079000000000000E+00 6.333120454612401E-02 + 3.080000000000000E+00 6.318936577608920E-02 + 3.081000000000000E+00 6.304781445374714E-02 + 3.082000000000000E+00 6.290655008748149E-02 + 3.083000000000000E+00 6.276557218624818E-02 + 3.084000000000000E+00 6.262488025957291E-02 + 3.085000000000000E+00 6.248447381755267E-02 + 3.086000000000000E+00 6.234435237085775E-02 + 3.087000000000000E+00 6.220451543072639E-02 + 3.088000000000000E+00 6.206496250896999E-02 + 3.089000000000000E+00 6.192569311797298E-02 + 3.090000000000000E+00 6.178670677068888E-02 + 3.091000000000000E+00 6.164800298064545E-02 + 3.092000000000000E+00 6.150958126194082E-02 + 3.093000000000000E+00 6.137144112924642E-02 + 3.094000000000000E+00 6.123358209780518E-02 + 3.095000000000000E+00 6.109600368343390E-02 + 3.096000000000000E+00 6.095870540252059E-02 + 3.097000000000000E+00 6.082168677202670E-02 + 3.098000000000000E+00 6.068494730948557E-02 + 3.099000000000000E+00 6.054848653300430E-02 + 3.100000000000000E+00 6.041230396126386E-02 + 3.101000000000000E+00 6.027639911351572E-02 + 3.102000000000000E+00 6.014077150958785E-02 + 3.103000000000000E+00 6.000542066987841E-02 + 3.104000000000000E+00 5.987034611536252E-02 + 3.105000000000000E+00 5.973554736758596E-02 + 3.106000000000000E+00 5.960102394866874E-02 + 3.107000000000000E+00 5.946677538130578E-02 + 3.108000000000000E+00 5.933280118876522E-02 + 3.109000000000000E+00 5.919910089488887E-02 + 3.110000000000000E+00 5.906567402409219E-02 + 3.111000000000000E+00 5.893252010136631E-02 + 3.112000000000000E+00 5.879963865227403E-02 + 3.113000000000000E+00 5.866702920295494E-02 + 3.114000000000000E+00 5.853469128012149E-02 + 3.115000000000000E+00 5.840262441106032E-02 + 3.116000000000000E+00 5.827082812363272E-02 + 3.117000000000000E+00 5.813930194627601E-02 + 3.118000000000000E+00 5.800804540799959E-02 + 3.119000000000000E+00 5.787705803838921E-02 + 3.120000000000000E+00 5.774633936760453E-02 + 3.121000000000000E+00 5.761588892638042E-02 + 3.122000000000000E+00 5.748570624602523E-02 + 3.123000000000000E+00 5.735579085842360E-02 + 3.124000000000000E+00 5.722614229603474E-02 + 3.125000000000000E+00 5.709676009189290E-02 + 3.126000000000000E+00 5.696764377960580E-02 + 3.127000000000000E+00 5.683879289335728E-02 + 3.128000000000000E+00 5.671020696790632E-02 + 3.129000000000000E+00 5.658188553858614E-02 + 3.130000000000000E+00 5.645382814130621E-02 + 3.131000000000000E+00 5.632603431254968E-02 + 3.132000000000000E+00 5.619850358937624E-02 + 3.133000000000000E+00 5.607123550941816E-02 + 3.134000000000000E+00 5.594422961088585E-02 + 3.135000000000000E+00 5.581748543256337E-02 + 3.136000000000000E+00 5.569100251380885E-02 + 3.137000000000000E+00 5.556478039455784E-02 + 3.138000000000000E+00 5.543881861531953E-02 + 3.139000000000000E+00 5.531311671717861E-02 + 3.140000000000000E+00 5.518767424179441E-02 + 3.141000000000000E+00 5.506249073140263E-02 + 3.142000000000000E+00 5.493756572881240E-02 + 3.143000000000000E+00 5.481289877740881E-02 + 3.144000000000000E+00 5.468848942115336E-02 + 3.145000000000000E+00 5.456433720458021E-02 + 3.146000000000000E+00 5.444044167279936E-02 + 3.147000000000000E+00 5.431680237149729E-02 + 3.148000000000000E+00 5.419341884693363E-02 + 3.149000000000000E+00 5.407029064594395E-02 + 3.150000000000000E+00 5.394741731593867E-02 + 3.151000000000000E+00 5.382479840490353E-02 + 3.152000000000000E+00 5.370243346139713E-02 + 3.153000000000000E+00 5.358032203455648E-02 + 3.154000000000000E+00 5.345846367408948E-02 + 3.155000000000000E+00 5.333685793028186E-02 + 3.156000000000000E+00 5.321550435399325E-02 + 3.157000000000000E+00 5.309440249665628E-02 + 3.158000000000000E+00 5.297355191028046E-02 + 3.159000000000000E+00 5.285295214744916E-02 + 3.160000000000000E+00 5.273260276131995E-02 + 3.161000000000000E+00 5.261250330562509E-02 + 3.162000000000000E+00 5.249265333467115E-02 + 3.163000000000000E+00 5.237305240333880E-02 + 3.164000000000000E+00 5.225370006708319E-02 + 3.165000000000000E+00 5.213459588193503E-02 + 3.166000000000000E+00 5.201573940449613E-02 + 3.167000000000000E+00 5.189713019194540E-02 + 3.168000000000000E+00 5.177876780203430E-02 + 3.169000000000000E+00 5.166065179308867E-02 + 3.170000000000000E+00 5.154278172400709E-02 + 3.171000000000000E+00 5.142515715426320E-02 + 3.172000000000000E+00 5.130777764390487E-02 + 3.173000000000000E+00 5.119064275355098E-02 + 3.174000000000000E+00 5.107375204439674E-02 + 3.175000000000000E+00 5.095710507820917E-02 + 3.176000000000000E+00 5.084070141732887E-02 + 3.177000000000000E+00 5.072454062466975E-02 + 3.178000000000000E+00 5.060862226371864E-02 + 3.179000000000000E+00 5.049294589853705E-02 + 3.180000000000000E+00 5.037751109375605E-02 + 3.181000000000000E+00 5.026231741458284E-02 + 3.182000000000000E+00 5.014736442679556E-02 + 3.183000000000000E+00 5.003265169674506E-02 + 3.184000000000000E+00 4.991817879135520E-02 + 3.185000000000000E+00 4.980394527812262E-02 + 3.186000000000000E+00 4.968995072511426E-02 + 3.187000000000000E+00 4.957619470097117E-02 + 3.188000000000000E+00 4.946267677490606E-02 + 3.189000000000000E+00 4.934939651670307E-02 + 3.190000000000000E+00 4.923635349671801E-02 + 3.191000000000000E+00 4.912354728587809E-02 + 3.192000000000000E+00 4.901097745568352E-02 + 3.193000000000000E+00 4.889864357820387E-02 + 3.194000000000000E+00 4.878654522608174E-02 + 3.195000000000000E+00 4.867468197252906E-02 + 3.196000000000000E+00 4.856305339133068E-02 + 3.197000000000000E+00 4.845165905684082E-02 + 3.198000000000000E+00 4.834049854398457E-02 + 3.199000000000000E+00 4.822957142825831E-02 + 3.200000000000000E+00 4.811887728572798E-02 + 3.201000000000000E+00 4.800841569302937E-02 + 3.202000000000000E+00 4.789818622736981E-02 + 3.203000000000000E+00 4.778818846652507E-02 + 3.204000000000000E+00 4.767842198884242E-02 + 3.205000000000000E+00 4.756888637323615E-02 + 3.206000000000000E+00 4.745958119919264E-02 + 3.207000000000000E+00 4.735050604676593E-02 + 3.208000000000000E+00 4.724166049658003E-02 + 3.209000000000000E+00 4.713304412982657E-02 + 3.210000000000000E+00 4.702465652826769E-02 + 3.211000000000000E+00 4.691649727423310E-02 + 3.212000000000000E+00 4.680856595062089E-02 + 3.213000000000000E+00 4.670086214089800E-02 + 3.214000000000000E+00 4.659338542909899E-02 + 3.215000000000000E+00 4.648613539982577E-02 + 3.216000000000000E+00 4.637911163824984E-02 + 3.217000000000000E+00 4.627231373010726E-02 + 3.218000000000000E+00 4.616574126170486E-02 + 3.219000000000000E+00 4.605939381991390E-02 + 3.220000000000000E+00 4.595327099217374E-02 + 3.221000000000000E+00 4.584737236649063E-02 + 3.222000000000000E+00 4.574169753143675E-02 + 3.223000000000000E+00 4.563624607615043E-02 + 3.224000000000000E+00 4.553101759033786E-02 + 3.225000000000000E+00 4.542601166426977E-02 + 3.226000000000000E+00 4.532122788878271E-02 + 3.227000000000000E+00 4.521666585527893E-02 + 3.228000000000000E+00 4.511232515572570E-02 + 3.229000000000000E+00 4.500820538265716E-02 + 3.230000000000000E+00 4.490430612917026E-02 + 3.231000000000000E+00 4.480062698892812E-02 + 3.232000000000000E+00 4.469716755615643E-02 + 3.233000000000000E+00 4.459392742564820E-02 + 3.234000000000000E+00 4.449090619275755E-02 + 3.235000000000000E+00 4.438810345340380E-02 + 3.236000000000000E+00 4.428551880407040E-02 + 3.237000000000000E+00 4.418315184180391E-02 + 3.238000000000000E+00 4.408100216421223E-02 + 3.239000000000000E+00 4.397906936946939E-02 + 3.240000000000000E+00 4.387735305630994E-02 + 3.241000000000000E+00 4.377585282403117E-02 + 3.242000000000000E+00 4.367456827249258E-02 + 3.243000000000000E+00 4.357349900211747E-02 + 3.244000000000000E+00 4.347264461388798E-02 + 3.245000000000000E+00 4.337200470935042E-02 + 3.246000000000000E+00 4.327157889061040E-02 + 3.247000000000000E+00 4.317136676033622E-02 + 3.248000000000000E+00 4.307136792175588E-02 + 3.249000000000000E+00 4.297158197865789E-02 + 3.250000000000000E+00 4.287200853539216E-02 + 3.251000000000000E+00 4.277264719686764E-02 + 3.252000000000000E+00 4.267349756855315E-02 + 3.253000000000000E+00 4.257455925647818E-02 + 3.254000000000000E+00 4.247583186722999E-02 + 3.255000000000000E+00 4.237731500795625E-02 + 3.256000000000000E+00 4.227900828636210E-02 + 3.257000000000000E+00 4.218091131071232E-02 + 3.258000000000000E+00 4.208302368982878E-02 + 3.259000000000000E+00 4.198534503309336E-02 + 3.260000000000000E+00 4.188787495044301E-02 + 3.261000000000000E+00 4.179061305237433E-02 + 3.262000000000000E+00 4.169355894994058E-02 + 3.263000000000000E+00 4.159671225475063E-02 + 3.264000000000000E+00 4.150007257897169E-02 + 3.265000000000000E+00 4.140363953532689E-02 + 3.266000000000000E+00 4.130741273709487E-02 + 3.267000000000000E+00 4.121139179811056E-02 + 3.268000000000000E+00 4.111557633276414E-02 + 3.269000000000000E+00 4.101996595600114E-02 + 3.270000000000000E+00 4.092456028332264E-02 + 3.271000000000000E+00 4.082935893078418E-02 + 3.272000000000000E+00 4.073436151499468E-02 + 3.273000000000000E+00 4.063956765311844E-02 + 3.274000000000000E+00 4.054497696287283E-02 + 3.275000000000000E+00 4.045058906252907E-02 + 3.276000000000000E+00 4.035640357091177E-02 + 3.277000000000000E+00 4.026242010739781E-02 + 3.278000000000000E+00 4.016863829191773E-02 + 3.279000000000000E+00 4.007505774495344E-02 + 3.280000000000000E+00 3.998167808753954E-02 + 3.281000000000000E+00 3.988849894126231E-02 + 3.282000000000000E+00 3.979551992825858E-02 + 3.283000000000000E+00 3.970274067121826E-02 + 3.284000000000000E+00 3.961016079337967E-02 + 3.285000000000000E+00 3.951777991853396E-02 + 3.286000000000000E+00 3.942559767102088E-02 + 3.287000000000000E+00 3.933361367573020E-02 + 3.288000000000000E+00 3.924182755810239E-02 + 3.289000000000000E+00 3.915023894412640E-02 + 3.290000000000000E+00 3.905884746034031E-02 + 3.291000000000000E+00 3.896765273383029E-02 + 3.292000000000000E+00 3.887665439223188E-02 + 3.293000000000000E+00 3.878585206372777E-02 + 3.294000000000000E+00 3.869524537704905E-02 + 3.295000000000000E+00 3.860483396147293E-02 + 3.296000000000000E+00 3.851461744682592E-02 + 3.297000000000000E+00 3.842459546347843E-02 + 3.298000000000000E+00 3.833476764234977E-02 + 3.299000000000000E+00 3.824513361490342E-02 + 3.300000000000000E+00 3.815569301315014E-02 + 3.301000000000000E+00 3.806644546964450E-02 + 3.302000000000000E+00 3.797739061748674E-02 + 3.303000000000000E+00 3.788852809032349E-02 + 3.304000000000000E+00 3.779985752234311E-02 + 3.305000000000000E+00 3.771137854827932E-02 + 3.306000000000000E+00 3.762309080340958E-02 + 3.307000000000000E+00 3.753499392355453E-02 + 3.308000000000000E+00 3.744708754507868E-02 + 3.309000000000000E+00 3.735937130488698E-02 + 3.310000000000000E+00 3.727184484042963E-02 + 3.311000000000000E+00 3.718450778969683E-02 + 3.312000000000000E+00 3.709735979122063E-02 + 3.313000000000000E+00 3.701040048407568E-02 + 3.314000000000000E+00 3.692362950787564E-02 + 3.315000000000000E+00 3.683704650277579E-02 + 3.316000000000000E+00 3.675065110947234E-02 + 3.317000000000000E+00 3.666444296920091E-02 + 3.318000000000000E+00 3.657842172373586E-02 + 3.319000000000000E+00 3.649258701539112E-02 + 3.320000000000000E+00 3.640693848702011E-02 + 3.321000000000000E+00 3.632147578201358E-02 + 3.322000000000000E+00 3.623619854430197E-02 + 3.323000000000000E+00 3.615110641835197E-02 + 3.324000000000000E+00 3.606619904916894E-02 + 3.325000000000000E+00 3.598147608229348E-02 + 3.326000000000000E+00 3.589693716380381E-02 + 3.327000000000000E+00 3.581258194031584E-02 + 3.328000000000000E+00 3.572841005897857E-02 + 3.329000000000000E+00 3.564442116747884E-02 + 3.330000000000000E+00 3.556061491403784E-02 + 3.331000000000000E+00 3.547699094741124E-02 + 3.332000000000000E+00 3.539354891688917E-02 + 3.333000000000000E+00 3.531028847229692E-02 + 3.334000000000000E+00 3.522720926399147E-02 + 3.335000000000000E+00 3.514431094286565E-02 + 3.336000000000000E+00 3.506159316034234E-02 + 3.337000000000000E+00 3.497905556837862E-02 + 3.338000000000000E+00 3.489669781946466E-02 + 3.339000000000000E+00 3.481451956661968E-02 + 3.340000000000000E+00 3.473252046339722E-02 + 3.341000000000000E+00 3.465070016387945E-02 + 3.342000000000000E+00 3.456905832268006E-02 + 3.343000000000000E+00 3.448759459494370E-02 + 3.344000000000000E+00 3.440630863634379E-02 + 3.345000000000000E+00 3.432520010308422E-02 + 3.346000000000000E+00 3.424426865189656E-02 + 3.347000000000000E+00 3.416351394004181E-02 + 3.348000000000000E+00 3.408293562530981E-02 + 3.349000000000000E+00 3.400253336601711E-02 + 3.350000000000000E+00 3.392230682100914E-02 + 3.351000000000000E+00 3.384225564965636E-02 + 3.352000000000000E+00 3.376237951185879E-02 + 3.353000000000000E+00 3.368267806803978E-02 + 3.354000000000000E+00 3.360315097915120E-02 + 3.355000000000000E+00 3.352379790666774E-02 + 3.356000000000000E+00 3.344461851259150E-02 + 3.357000000000000E+00 3.336561245944802E-02 + 3.358000000000000E+00 3.328677941028744E-02 + 3.359000000000000E+00 3.320811902868400E-02 + 3.360000000000000E+00 3.312963097873488E-02 + 3.361000000000000E+00 3.305131492506133E-02 + 3.362000000000000E+00 3.297317053280539E-02 + 3.363000000000000E+00 3.289519746763320E-02 + 3.364000000000000E+00 3.281739539573223E-02 + 3.365000000000000E+00 3.273976398381074E-02 + 3.366000000000000E+00 3.266230289909834E-02 + 3.367000000000000E+00 3.258501180934602E-02 + 3.368000000000000E+00 3.250789038282333E-02 + 3.369000000000000E+00 3.243093828832122E-02 + 3.370000000000000E+00 3.235415519514921E-02 + 3.371000000000000E+00 3.227754077313544E-02 + 3.372000000000000E+00 3.220109469262720E-02 + 3.373000000000000E+00 3.212481662448927E-02 + 3.374000000000000E+00 3.204870624010450E-02 + 3.375000000000000E+00 3.197276321137320E-02 + 3.376000000000000E+00 3.189698721071211E-02 + 3.377000000000000E+00 3.182137791105431E-02 + 3.378000000000000E+00 3.174593498584929E-02 + 3.379000000000000E+00 3.167065810906122E-02 + 3.380000000000000E+00 3.159554695517069E-02 + 3.381000000000000E+00 3.152060119917185E-02 + 3.382000000000000E+00 3.144582051657357E-02 + 3.383000000000000E+00 3.137120458339827E-02 + 3.384000000000000E+00 3.129675307618253E-02 + 3.385000000000000E+00 3.122246567197482E-02 + 3.386000000000000E+00 3.114834204833664E-02 + 3.387000000000000E+00 3.107438188334245E-02 + 3.388000000000000E+00 3.100058485557694E-02 + 3.389000000000000E+00 3.092695064413723E-02 + 3.390000000000000E+00 3.085347892863005E-02 + 3.391000000000000E+00 3.078016938917292E-02 + 3.392000000000000E+00 3.070702170639457E-02 + 3.393000000000000E+00 3.063403556143114E-02 + 3.394000000000000E+00 3.056121063592947E-02 + 3.395000000000000E+00 3.048854661204376E-02 + 3.396000000000000E+00 3.041604317243718E-02 + 3.397000000000000E+00 3.034370000028026E-02 + 3.398000000000000E+00 3.027151677925136E-02 + 3.399000000000000E+00 3.019949319353503E-02 + 3.400000000000000E+00 3.012762892782199E-02 + 3.401000000000000E+00 3.005592366730964E-02 + 3.402000000000000E+00 2.998437709770042E-02 + 3.403000000000000E+00 2.991298890520229E-02 + 3.404000000000000E+00 2.984175877652709E-02 + 3.405000000000000E+00 2.977068639889160E-02 + 3.406000000000000E+00 2.969977146001484E-02 + 3.407000000000000E+00 2.962901364812117E-02 + 3.408000000000000E+00 2.955841265193657E-02 + 3.409000000000000E+00 2.948796816068862E-02 + 3.410000000000000E+00 2.941767986410852E-02 + 3.411000000000000E+00 2.934754745242789E-02 + 3.412000000000000E+00 2.927757061637879E-02 + 3.413000000000000E+00 2.920774904719462E-02 + 3.414000000000000E+00 2.913808243660912E-02 + 3.415000000000000E+00 2.906857047685516E-02 + 3.416000000000000E+00 2.899921286066481E-02 + 3.417000000000000E+00 2.893000928126816E-02 + 3.418000000000000E+00 2.886095943239433E-02 + 3.419000000000000E+00 2.879206300827093E-02 + 3.420000000000000E+00 2.872331970362134E-02 + 3.421000000000000E+00 2.865472921366624E-02 + 3.422000000000000E+00 2.858629123412307E-02 + 3.423000000000000E+00 2.851800546120488E-02 + 3.424000000000000E+00 2.844987159162082E-02 + 3.425000000000000E+00 2.838188932257397E-02 + 3.426000000000000E+00 2.831405835176290E-02 + 3.427000000000000E+00 2.824637837737998E-02 + 3.428000000000000E+00 2.817884909811035E-02 + 3.429000000000000E+00 2.811147021313284E-02 + 3.430000000000000E+00 2.804424142211993E-02 + 3.431000000000000E+00 2.797716242523458E-02 + 3.432000000000000E+00 2.791023292313226E-02 + 3.433000000000000E+00 2.784345261696029E-02 + 3.434000000000000E+00 2.777682120835581E-02 + 3.435000000000000E+00 2.771033839944666E-02 + 3.436000000000000E+00 2.764400389285034E-02 + 3.437000000000000E+00 2.757781739167391E-02 + 3.438000000000000E+00 2.751177859951342E-02 + 3.439000000000000E+00 2.744588722045230E-02 + 3.440000000000000E+00 2.738014295906381E-02 + 3.441000000000000E+00 2.731454552040697E-02 + 3.442000000000000E+00 2.724909461002892E-02 + 3.443000000000000E+00 2.718378993396188E-02 + 3.444000000000000E+00 2.711863119872557E-02 + 3.445000000000000E+00 2.705361811132463E-02 + 3.446000000000000E+00 2.698875037924898E-02 + 3.447000000000000E+00 2.692402771047282E-02 + 3.448000000000000E+00 2.685944981345445E-02 + 3.449000000000000E+00 2.679501639713580E-02 + 3.450000000000000E+00 2.673072717094275E-02 + 3.451000000000000E+00 2.666658184478204E-02 + 3.452000000000000E+00 2.660258012904478E-02 + 3.453000000000000E+00 2.653872173460227E-02 + 3.454000000000000E+00 2.647500637280795E-02 + 3.455000000000000E+00 2.641143375549429E-02 + 3.456000000000000E+00 2.634800359497625E-02 + 3.457000000000000E+00 2.628471560404762E-02 + 3.458000000000000E+00 2.622156949598051E-02 + 3.459000000000000E+00 2.615856498452720E-02 + 3.460000000000000E+00 2.609570178391709E-02 + 3.461000000000000E+00 2.603297960885906E-02 + 3.462000000000000E+00 2.597039817453744E-02 + 3.463000000000000E+00 2.590795719661440E-02 + 3.464000000000000E+00 2.584565639122783E-02 + 3.465000000000000E+00 2.578349547499276E-02 + 3.466000000000000E+00 2.572147416499833E-02 + 3.467000000000000E+00 2.565959217880858E-02 + 3.468000000000000E+00 2.559784923446247E-02 + 3.469000000000000E+00 2.553624505047273E-02 + 3.470000000000000E+00 2.547477934582578E-02 + 3.471000000000000E+00 2.541345183997965E-02 + 3.472000000000000E+00 2.535226225286633E-02 + 3.473000000000000E+00 2.529121030488878E-02 + 3.474000000000000E+00 2.523029571692173E-02 + 3.475000000000000E+00 2.516951821031064E-02 + 3.476000000000000E+00 2.510887750687210E-02 + 3.477000000000000E+00 2.504837332889125E-02 + 3.478000000000000E+00 2.498800539912366E-02 + 3.479000000000000E+00 2.492777344079370E-02 + 3.480000000000000E+00 2.486767717759454E-02 + 3.481000000000000E+00 2.480771633368647E-02 + 3.482000000000000E+00 2.474789063369736E-02 + 3.483000000000000E+00 2.468819980272251E-02 + 3.484000000000000E+00 2.462864356632310E-02 + 3.485000000000000E+00 2.456922165052707E-02 + 3.486000000000000E+00 2.450993378182748E-02 + 3.487000000000000E+00 2.445077968718107E-02 + 3.488000000000000E+00 2.439175909401144E-02 + 3.489000000000000E+00 2.433287173020362E-02 + 3.490000000000000E+00 2.427411732410792E-02 + 3.491000000000000E+00 2.421549560453680E-02 + 3.492000000000000E+00 2.415700630076483E-02 + 3.493000000000000E+00 2.409864914252952E-02 + 3.494000000000000E+00 2.404042386002929E-02 + 3.495000000000000E+00 2.398233018392240E-02 + 3.496000000000000E+00 2.392436784532966E-02 + 3.497000000000000E+00 2.386653657583007E-02 + 3.498000000000000E+00 2.380883610746306E-02 + 3.499000000000000E+00 2.375126617272601E-02 + 3.500000000000000E+00 2.369382650457551E-02 + 3.501000000000000E+00 2.363651683642569E-02 + 3.502000000000000E+00 2.357933690214805E-02 + 3.503000000000000E+00 2.352228643607107E-02 + 3.504000000000000E+00 2.346536517297955E-02 + 3.505000000000000E+00 2.340857284811412E-02 + 3.506000000000000E+00 2.335190919717079E-02 + 3.507000000000000E+00 2.329537395630041E-02 + 3.508000000000000E+00 2.323896686210815E-02 + 3.509000000000000E+00 2.318268765165301E-02 + 3.510000000000000E+00 2.312653606244730E-02 + 3.511000000000000E+00 2.307051183245614E-02 + 3.512000000000000E+00 2.301461470009693E-02 + 3.513000000000000E+00 2.295884440423886E-02 + 3.514000000000000E+00 2.290320068420239E-02 + 3.515000000000000E+00 2.284768327975875E-02 + 3.516000000000000E+00 2.279229193112939E-02 + 3.517000000000000E+00 2.273702637898553E-02 + 3.518000000000000E+00 2.268188636444757E-02 + 3.519000000000000E+00 2.262687162908469E-02 + 3.520000000000000E+00 2.257198191491419E-02 + 3.521000000000000E+00 2.251721696440112E-02 + 3.522000000000000E+00 2.246257652045766E-02 + 3.523000000000000E+00 2.240806032644267E-02 + 3.524000000000000E+00 2.235366812616114E-02 + 3.525000000000000E+00 2.229939966386372E-02 + 3.526000000000000E+00 2.224525468424612E-02 + 3.527000000000000E+00 2.219123293244870E-02 + 3.528000000000000E+00 2.213733415405590E-02 + 3.529000000000000E+00 2.208355809509571E-02 + 3.530000000000000E+00 2.202990450203916E-02 + 3.531000000000000E+00 2.197637312179987E-02 + 3.532000000000000E+00 2.192296370173346E-02 + 3.533000000000000E+00 2.186967598963702E-02 + 3.534000000000000E+00 2.181650973374867E-02 + 3.535000000000000E+00 2.176346468274701E-02 + 3.536000000000000E+00 2.171054058575056E-02 + 3.537000000000000E+00 2.165773719231730E-02 + 3.538000000000000E+00 2.160505425244411E-02 + 3.539000000000000E+00 2.155249151656630E-02 + 3.540000000000000E+00 2.150004873555705E-02 + 3.541000000000000E+00 2.144772566072690E-02 + 3.542000000000000E+00 2.139552204382325E-02 + 3.543000000000000E+00 2.134343763702981E-02 + 3.544000000000000E+00 2.129147219296613E-02 + 3.545000000000000E+00 2.123962546468701E-02 + 3.546000000000000E+00 2.118789720568204E-02 + 3.547000000000000E+00 2.113628716987508E-02 + 3.548000000000000E+00 2.108479511162371E-02 + 3.549000000000000E+00 2.103342078571870E-02 + 3.550000000000000E+00 2.098216394738352E-02 + 3.551000000000000E+00 2.093102435227383E-02 + 3.552000000000000E+00 2.088000175647695E-02 + 3.553000000000000E+00 2.082909591651128E-02 + 3.554000000000000E+00 2.077830658932586E-02 + 3.555000000000000E+00 2.072763353229982E-02 + 3.556000000000000E+00 2.067707650324186E-02 + 3.557000000000000E+00 2.062663526038971E-02 + 3.558000000000000E+00 2.057630956240963E-02 + 3.559000000000000E+00 2.052609916839588E-02 + 3.560000000000000E+00 2.047600383787021E-02 + 3.561000000000000E+00 2.042602333078130E-02 + 3.562000000000000E+00 2.037615740750431E-02 + 3.563000000000000E+00 2.032640582884028E-02 + 3.564000000000000E+00 2.027676835601564E-02 + 3.565000000000000E+00 2.022724475068172E-02 + 3.566000000000000E+00 2.017783477491415E-02 + 3.567000000000000E+00 2.012853819121241E-02 + 3.568000000000000E+00 2.007935476249929E-02 + 3.569000000000000E+00 2.003028425212032E-02 + 3.570000000000000E+00 1.998132642384332E-02 + 3.571000000000000E+00 1.993248104185781E-02 + 3.572000000000000E+00 1.988374787077454E-02 + 3.573000000000000E+00 1.983512667562494E-02 + 3.574000000000000E+00 1.978661722186058E-02 + 3.575000000000000E+00 1.973821927535269E-02 + 3.576000000000000E+00 1.968993260239157E-02 + 3.577000000000000E+00 1.964175696968616E-02 + 3.578000000000000E+00 1.959369214436342E-02 + 3.579000000000000E+00 1.954573789396787E-02 + 3.580000000000000E+00 1.949789398646105E-02 + 3.581000000000000E+00 1.945016019022097E-02 + 3.582000000000000E+00 1.940253627404162E-02 + 3.583000000000000E+00 1.935502200713241E-02 + 3.584000000000000E+00 1.930761715911771E-02 + 3.585000000000000E+00 1.926032150003623E-02 + 3.586000000000000E+00 1.921313480034057E-02 + 3.587000000000000E+00 1.916605683089667E-02 + 3.588000000000000E+00 1.911908736298331E-02 + 3.589000000000000E+00 1.907222616829151E-02 + 3.590000000000000E+00 1.902547301892411E-02 + 3.591000000000000E+00 1.897882768739515E-02 + 3.592000000000000E+00 1.893228994662942E-02 + 3.593000000000000E+00 1.888585956996186E-02 + 3.594000000000000E+00 1.883953633113713E-02 + 3.595000000000000E+00 1.879332000430898E-02 + 3.596000000000000E+00 1.874721036403981E-02 + 3.597000000000000E+00 1.870120718530009E-02 + 3.598000000000000E+00 1.865531024346787E-02 + 3.599000000000000E+00 1.860951931432822E-02 + 3.600000000000000E+00 1.856383417407272E-02 + 3.601000000000000E+00 1.851825459929898E-02 + 3.602000000000000E+00 1.847278036701003E-02 + 3.603000000000000E+00 1.842741125461385E-02 + 3.604000000000000E+00 1.838214703992283E-02 + 3.605000000000000E+00 1.833698750115325E-02 + 3.606000000000000E+00 1.829193241692474E-02 + 3.607000000000000E+00 1.824698156625978E-02 + 3.608000000000000E+00 1.820213472858315E-02 + 3.609000000000000E+00 1.815739168372140E-02 + 3.610000000000000E+00 1.811275221190238E-02 + 3.611000000000000E+00 1.806821609375462E-02 + 3.612000000000000E+00 1.802378311030688E-02 + 3.613000000000000E+00 1.797945304298762E-02 + 3.614000000000000E+00 1.793522567362442E-02 + 3.615000000000000E+00 1.789110078444350E-02 + 3.616000000000000E+00 1.784707815806920E-02 + 3.617000000000000E+00 1.780315757752343E-02 + 3.618000000000000E+00 1.775933882622515E-02 + 3.619000000000000E+00 1.771562168798983E-02 + 3.620000000000000E+00 1.767200594702898E-02 + 3.621000000000000E+00 1.762849138794956E-02 + 3.622000000000000E+00 1.758507779575350E-02 + 3.623000000000000E+00 1.754176495583712E-02 + 3.624000000000000E+00 1.749855265399069E-02 + 3.625000000000000E+00 1.745544067639782E-02 + 3.626000000000000E+00 1.741242880963497E-02 + 3.627000000000000E+00 1.736951684067095E-02 + 3.628000000000000E+00 1.732670455686635E-02 + 3.629000000000000E+00 1.728399174597304E-02 + 3.630000000000000E+00 1.724137819613364E-02 + 3.631000000000000E+00 1.719886369588098E-02 + 3.632000000000000E+00 1.715644803413762E-02 + 3.633000000000000E+00 1.711413100021528E-02 + 3.634000000000000E+00 1.707191238381433E-02 + 3.635000000000000E+00 1.702979197502324E-02 + 3.636000000000000E+00 1.698776956431813E-02 + 3.637000000000000E+00 1.694584494256216E-02 + 3.638000000000000E+00 1.690401790100505E-02 + 3.639000000000000E+00 1.686228823128256E-02 + 3.640000000000000E+00 1.682065572541593E-02 + 3.641000000000000E+00 1.677912017581141E-02 + 3.642000000000000E+00 1.673768137525967E-02 + 3.643000000000000E+00 1.669633911693532E-02 + 3.644000000000000E+00 1.665509319439640E-02 + 3.645000000000000E+00 1.661394340158381E-02 + 3.646000000000000E+00 1.657288953282082E-02 + 3.647000000000000E+00 1.653193138281251E-02 + 3.648000000000000E+00 1.649106874664532E-02 + 3.649000000000000E+00 1.645030141978643E-02 + 3.650000000000000E+00 1.640962919808330E-02 + 3.651000000000000E+00 1.636905187776315E-02 + 3.652000000000000E+00 1.632856925543240E-02 + 3.653000000000000E+00 1.628818112807616E-02 + 3.654000000000000E+00 1.624788729305773E-02 + 3.655000000000000E+00 1.620768754811805E-02 + 3.656000000000000E+00 1.616758169137519E-02 + 3.657000000000000E+00 1.612756952132381E-02 + 3.658000000000000E+00 1.608765083683467E-02 + 3.659000000000000E+00 1.604782543715409E-02 + 3.660000000000000E+00 1.600809312190341E-02 + 3.661000000000000E+00 1.596845369107850E-02 + 3.662000000000000E+00 1.592890694504923E-02 + 3.663000000000000E+00 1.588945268455891E-02 + 3.664000000000000E+00 1.585009071072383E-02 + 3.665000000000000E+00 1.581082082503271E-02 + 3.666000000000000E+00 1.577164282934614E-02 + 3.667000000000000E+00 1.573255652589613E-02 + 3.668000000000000E+00 1.569356171728556E-02 + 3.669000000000000E+00 1.565465820648763E-02 + 3.670000000000000E+00 1.561584579684539E-02 + 3.671000000000000E+00 1.557712429207114E-02 + 3.672000000000000E+00 1.553849349624603E-02 + 3.673000000000000E+00 1.549995321381944E-02 + 3.674000000000000E+00 1.546150324960848E-02 + 3.675000000000000E+00 1.542314340879750E-02 + 3.676000000000000E+00 1.538487349693755E-02 + 3.677000000000000E+00 1.534669331994584E-02 + 3.678000000000000E+00 1.530860268410527E-02 + 3.679000000000000E+00 1.527060139606388E-02 + 3.680000000000000E+00 1.523268926283434E-02 + 3.681000000000000E+00 1.519486609179339E-02 + 3.682000000000000E+00 1.515713169068141E-02 + 3.683000000000000E+00 1.511948586760179E-02 + 3.684000000000000E+00 1.508192843102053E-02 + 3.685000000000000E+00 1.504445918976562E-02 + 3.686000000000000E+00 1.500707795302658E-02 + 3.687000000000000E+00 1.496978453035390E-02 + 3.688000000000000E+00 1.493257873165860E-02 + 3.689000000000000E+00 1.489546036721164E-02 + 3.690000000000000E+00 1.485842924764338E-02 + 3.691000000000000E+00 1.482148518394317E-02 + 3.692000000000000E+00 1.478462798745874E-02 + 3.693000000000000E+00 1.474785746989570E-02 + 3.694000000000000E+00 1.471117344331708E-02 + 3.695000000000000E+00 1.467457572014272E-02 + 3.696000000000000E+00 1.463806411314885E-02 + 3.697000000000000E+00 1.460163843546749E-02 + 3.698000000000000E+00 1.456529850058601E-02 + 3.699000000000000E+00 1.452904412234654E-02 + 3.700000000000000E+00 1.449287511494553E-02 + 3.701000000000000E+00 1.445679129293317E-02 + 3.702000000000000E+00 1.442079247121293E-02 + 3.703000000000000E+00 1.438487846504098E-02 + 3.704000000000000E+00 1.434904909002576E-02 + 3.705000000000000E+00 1.431330416212738E-02 + 3.706000000000000E+00 1.427764349765718E-02 + 3.707000000000000E+00 1.424206691327716E-02 + 3.708000000000000E+00 1.420657422599951E-02 + 3.709000000000000E+00 1.417116525318605E-02 + 3.710000000000000E+00 1.413583981254777E-02 + 3.711000000000000E+00 1.410059772214428E-02 + 3.712000000000000E+00 1.406543880038332E-02 + 3.713000000000000E+00 1.403036286602021E-02 + 3.714000000000000E+00 1.399536973815738E-02 + 3.715000000000000E+00 1.396045923624387E-02 + 3.716000000000000E+00 1.392563118007474E-02 + 3.717000000000000E+00 1.389088538979067E-02 + 3.718000000000000E+00 1.385622168587733E-02 + 3.719000000000000E+00 1.382163988916497E-02 + 3.720000000000000E+00 1.378713982082785E-02 + 3.721000000000000E+00 1.375272130238376E-02 + 3.722000000000000E+00 1.371838415569351E-02 + 3.723000000000000E+00 1.368412820296037E-02 + 3.724000000000000E+00 1.364995326672964E-02 + 3.725000000000000E+00 1.361585916988808E-02 + 3.726000000000000E+00 1.358184573566342E-02 + 3.727000000000000E+00 1.354791278762387E-02 + 3.728000000000000E+00 1.351406014967759E-02 + 3.729000000000000E+00 1.348028764607218E-02 + 3.730000000000000E+00 1.344659510139417E-02 + 3.731000000000000E+00 1.341298234056854E-02 + 3.732000000000000E+00 1.337944918885821E-02 + 3.733000000000000E+00 1.334599547186348E-02 + 3.734000000000000E+00 1.331262101552157E-02 + 3.735000000000000E+00 1.327932564610614E-02 + 3.736000000000000E+00 1.324610919022669E-02 + 3.737000000000000E+00 1.321297147482819E-02 + 3.738000000000000E+00 1.317991232719041E-02 + 3.739000000000000E+00 1.314693157492758E-02 + 3.740000000000000E+00 1.311402904598776E-02 + 3.741000000000000E+00 1.308120456865239E-02 + 3.742000000000000E+00 1.304845797153580E-02 + 3.743000000000000E+00 1.301578908358466E-02 + 3.744000000000000E+00 1.298319773407752E-02 + 3.745000000000000E+00 1.295068375262428E-02 + 3.746000000000000E+00 1.291824696916570E-02 + 3.747000000000000E+00 1.288588721397285E-02 + 3.748000000000000E+00 1.285360431764673E-02 + 3.749000000000000E+00 1.282139811111761E-02 + 3.750000000000000E+00 1.278926842564465E-02 + 3.751000000000000E+00 1.275721509281533E-02 + 3.752000000000000E+00 1.272523794454498E-02 + 3.753000000000000E+00 1.269333681307629E-02 + 3.754000000000000E+00 1.266151153097874E-02 + 3.755000000000000E+00 1.262976193114822E-02 + 3.756000000000000E+00 1.259808784680638E-02 + 3.757000000000000E+00 1.256648911150028E-02 + 3.758000000000000E+00 1.253496555910179E-02 + 3.759000000000000E+00 1.250351702380711E-02 + 3.760000000000000E+00 1.247214334013630E-02 + 3.761000000000000E+00 1.244084434293277E-02 + 3.762000000000000E+00 1.240961986736276E-02 + 3.763000000000000E+00 1.237846974891488E-02 + 3.764000000000000E+00 1.234739382339955E-02 + 3.765000000000000E+00 1.231639192694859E-02 + 3.766000000000000E+00 1.228546389601464E-02 + 3.767000000000000E+00 1.225460956737074E-02 + 3.768000000000000E+00 1.222382877810975E-02 + 3.769000000000000E+00 1.219312136564393E-02 + 3.770000000000000E+00 1.216248716770440E-02 + 3.771000000000000E+00 1.213192602234066E-02 + 3.772000000000000E+00 1.210143776792009E-02 + 3.773000000000000E+00 1.207102224312748E-02 + 3.774000000000000E+00 1.204067928696448E-02 + 3.775000000000000E+00 1.201040873874916E-02 + 3.776000000000000E+00 1.198021043811549E-02 + 3.777000000000000E+00 1.195008422501287E-02 + 3.778000000000000E+00 1.192002993970560E-02 + 3.779000000000000E+00 1.189004742277243E-02 + 3.780000000000000E+00 1.186013651510602E-02 + 3.781000000000000E+00 1.183029705791251E-02 + 3.782000000000000E+00 1.180052889271096E-02 + 3.783000000000000E+00 1.177083186133291E-02 + 3.784000000000000E+00 1.174120580592187E-02 + 3.785000000000000E+00 1.171165056893283E-02 + 3.786000000000000E+00 1.168216599313178E-02 + 3.787000000000000E+00 1.165275192159521E-02 + 3.788000000000000E+00 1.162340819770960E-02 + 3.789000000000000E+00 1.159413466517098E-02 + 3.790000000000000E+00 1.156493116798442E-02 + 3.791000000000000E+00 1.153579755046353E-02 + 3.792000000000000E+00 1.150673365722995E-02 + 3.793000000000000E+00 1.147773933321294E-02 + 3.794000000000000E+00 1.144881442364883E-02 + 3.795000000000000E+00 1.141995877408053E-02 + 3.796000000000000E+00 1.139117223035708E-02 + 3.797000000000000E+00 1.136245463863315E-02 + 3.798000000000000E+00 1.133380584536853E-02 + 3.799000000000000E+00 1.130522569732770E-02 + 3.800000000000000E+00 1.127671404157927E-02 + 3.801000000000000E+00 1.124827072549558E-02 + 3.802000000000000E+00 1.121989559675214E-02 + 3.803000000000000E+00 1.119158850332718E-02 + 3.804000000000000E+00 1.116334929350120E-02 + 3.805000000000000E+00 1.113517781585640E-02 + 3.806000000000000E+00 1.110707391927631E-02 + 3.807000000000000E+00 1.107903745294519E-02 + 3.808000000000000E+00 1.105106826634765E-02 + 3.809000000000000E+00 1.102316620926810E-02 + 3.810000000000000E+00 1.099533113179031E-02 + 3.811000000000000E+00 1.096756288429690E-02 + 3.812000000000000E+00 1.093986131746888E-02 + 3.813000000000000E+00 1.091222628228517E-02 + 3.814000000000000E+00 1.088465763002211E-02 + 3.815000000000000E+00 1.085715521225296E-02 + 3.816000000000000E+00 1.082971888084749E-02 + 3.817000000000000E+00 1.080234848797143E-02 + 3.818000000000000E+00 1.077504388608603E-02 + 3.819000000000000E+00 1.074780492794757E-02 + 3.820000000000000E+00 1.072063146660687E-02 + 3.821000000000000E+00 1.069352335540888E-02 + 3.822000000000000E+00 1.066648044799208E-02 + 3.823000000000000E+00 1.063950259828814E-02 + 3.824000000000000E+00 1.061258966052134E-02 + 3.825000000000000E+00 1.058574148920816E-02 + 3.826000000000000E+00 1.055895793915678E-02 + 3.827000000000000E+00 1.053223886546660E-02 + 3.828000000000000E+00 1.050558412352776E-02 + 3.829000000000000E+00 1.047899356902072E-02 + 3.830000000000000E+00 1.045246705791571E-02 + 3.831000000000000E+00 1.042600444647231E-02 + 3.832000000000000E+00 1.039960559123896E-02 + 3.833000000000000E+00 1.037327034905250E-02 + 3.834000000000000E+00 1.034699857703766E-02 + 3.835000000000000E+00 1.032079013260666E-02 + 3.836000000000000E+00 1.029464487345866E-02 + 3.837000000000000E+00 1.026856265757936E-02 + 3.838000000000000E+00 1.024254334324047E-02 + 3.839000000000000E+00 1.021658678899929E-02 + 3.840000000000000E+00 1.019069285369820E-02 + 3.841000000000000E+00 1.016486139646423E-02 + 3.842000000000000E+00 1.013909227670856E-02 + 3.843000000000000E+00 1.011338535412606E-02 + 3.844000000000000E+00 1.008774048869486E-02 + 3.845000000000000E+00 1.006215754067582E-02 + 3.846000000000000E+00 1.003663637061209E-02 + 3.847000000000000E+00 1.001117683932868E-02 + 3.848000000000000E+00 9.985778807931944E-03 + 3.849000000000000E+00 9.960442137809139E-03 + 3.850000000000000E+00 9.935166690627951E-03 + 3.851000000000000E+00 9.909952328336035E-03 + 3.852000000000000E+00 9.884798913160565E-03 + 3.853000000000000E+00 9.859706307607734E-03 + 3.854000000000000E+00 9.834674374462348E-03 + 3.855000000000000E+00 9.809702976787295E-03 + 3.856000000000000E+00 9.784791977923136E-03 + 3.857000000000000E+00 9.759941241487621E-03 + 3.858000000000000E+00 9.735150631375235E-03 + 3.859000000000000E+00 9.710420011756732E-03 + 3.860000000000000E+00 9.685749247078669E-03 + 3.861000000000000E+00 9.661138202062970E-03 + 3.862000000000000E+00 9.636586741706442E-03 + 3.863000000000000E+00 9.612094731280319E-03 + 3.864000000000000E+00 9.587662036329813E-03 + 3.865000000000000E+00 9.563288522673645E-03 + 3.866000000000000E+00 9.538974056403613E-03 + 3.867000000000000E+00 9.514718503884094E-03 + 3.868000000000000E+00 9.490521731751619E-03 + 3.869000000000000E+00 9.466383606914397E-03 + 3.870000000000000E+00 9.442303996551880E-03 + 3.871000000000000E+00 9.418282768114293E-03 + 3.872000000000000E+00 9.394319789322172E-03 + 3.873000000000000E+00 9.370414928165928E-03 + 3.874000000000000E+00 9.346568052905379E-03 + 3.875000000000000E+00 9.322779032069311E-03 + 3.876000000000000E+00 9.299047734454995E-03 + 3.877000000000000E+00 9.275374029127769E-03 + 3.878000000000000E+00 9.251757785420561E-03 + 3.879000000000000E+00 9.228198872933462E-03 + 3.880000000000000E+00 9.204697161533241E-03 + 3.881000000000000E+00 9.181252521352915E-03 + 3.882000000000000E+00 9.157864822791300E-03 + 3.883000000000000E+00 9.134533936512555E-03 + 3.884000000000000E+00 9.111259733445736E-03 + 3.885000000000000E+00 9.088042084784333E-03 + 3.886000000000000E+00 9.064880861985850E-03 + 3.887000000000000E+00 9.041775936771324E-03 + 3.888000000000000E+00 9.018727181124894E-03 + 3.889000000000000E+00 8.995734467293348E-03 + 3.890000000000000E+00 8.972797667785699E-03 + 3.891000000000000E+00 8.949916655372699E-03 + 3.892000000000000E+00 8.927091303086417E-03 + 3.893000000000000E+00 8.904321484219786E-03 + 3.894000000000000E+00 8.881607072326179E-03 + 3.895000000000000E+00 8.858947941218923E-03 + 3.896000000000000E+00 8.836343964970895E-03 + 3.897000000000000E+00 8.813795017914048E-03 + 3.898000000000000E+00 8.791300974638995E-03 + 3.899000000000000E+00 8.768861709994549E-03 + 3.900000000000000E+00 8.746477099087274E-03 + 3.901000000000000E+00 8.724147017281058E-03 + 3.902000000000000E+00 8.701871340196675E-03 + 3.903000000000000E+00 8.679649943711320E-03 + 3.904000000000000E+00 8.657482703958204E-03 + 3.905000000000000E+00 8.635369497326071E-03 + 3.906000000000000E+00 8.613310200458798E-03 + 3.907000000000000E+00 8.591304690254934E-03 + 3.908000000000000E+00 8.569352843867268E-03 + 3.909000000000000E+00 8.547454538702381E-03 + 3.910000000000000E+00 8.525609652420236E-03 + 3.911000000000000E+00 8.503818062933696E-03 + 3.912000000000000E+00 8.482079648408138E-03 + 3.913000000000000E+00 8.460394287260965E-03 + 3.914000000000000E+00 8.438761858161222E-03 + 3.915000000000000E+00 8.417182240029120E-03 + 3.916000000000000E+00 8.395655312035614E-03 + 3.917000000000000E+00 8.374180953601972E-03 + 3.918000000000000E+00 8.352759044399362E-03 + 3.919000000000000E+00 8.331389464348365E-03 + 3.920000000000000E+00 8.310072093618590E-03 + 3.921000000000000E+00 8.288806812628216E-03 + 3.922000000000000E+00 8.267593502043582E-03 + 3.923000000000000E+00 8.246432042778726E-03 + 3.924000000000000E+00 8.225322315994980E-03 + 3.925000000000000E+00 8.204264203100527E-03 + 3.926000000000000E+00 8.183257585749976E-03 + 3.927000000000000E+00 8.162302345843917E-03 + 3.928000000000000E+00 8.141398365528523E-03 + 3.929000000000000E+00 8.120545527195086E-03 + 3.930000000000000E+00 8.099743713479617E-03 + 3.931000000000000E+00 8.078992807262399E-03 + 3.932000000000000E+00 8.058292691667572E-03 + 3.933000000000000E+00 8.037643250062693E-03 + 3.934000000000000E+00 8.017044366058332E-03 + 3.935000000000000E+00 7.996495923507620E-03 + 3.936000000000000E+00 7.975997806505835E-03 + 3.937000000000000E+00 7.955549899389991E-03 + 3.938000000000000E+00 7.935152086738388E-03 + 3.939000000000000E+00 7.914804253370203E-03 + 3.940000000000000E+00 7.894506284345069E-03 + 3.941000000000000E+00 7.874258064962636E-03 + 3.942000000000000E+00 7.854059480762177E-03 + 3.943000000000000E+00 7.833910417522134E-03 + 3.944000000000000E+00 7.813810761259712E-03 + 3.945000000000000E+00 7.793760398230466E-03 + 3.946000000000000E+00 7.773759214927863E-03 + 3.947000000000000E+00 7.753807098082873E-03 + 3.948000000000000E+00 7.733903934663553E-03 + 3.949000000000000E+00 7.714049611874607E-03 + 3.950000000000000E+00 7.694244017156991E-03 + 3.951000000000000E+00 7.674487038187500E-03 + 3.952000000000000E+00 7.654778562878307E-03 + 3.953000000000000E+00 7.635118479376595E-03 + 3.954000000000000E+00 7.615506676064119E-03 + 3.955000000000000E+00 7.595943041556783E-03 + 3.956000000000000E+00 7.576427464704245E-03 + 3.957000000000000E+00 7.556959834589472E-03 + 3.958000000000000E+00 7.537540040528366E-03 + 3.959000000000000E+00 7.518167972069301E-03 + 3.960000000000000E+00 7.498843518992753E-03 + 3.961000000000000E+00 7.479566571310860E-03 + 3.962000000000000E+00 7.460337019267027E-03 + 3.963000000000000E+00 7.441154753335492E-03 + 3.964000000000000E+00 7.422019664220935E-03 + 3.965000000000000E+00 7.402931642858055E-03 + 3.966000000000000E+00 7.383890580411169E-03 + 3.967000000000000E+00 7.364896368273784E-03 + 3.968000000000000E+00 7.345948898068205E-03 + 3.969000000000000E+00 7.327048061645117E-03 + 3.970000000000000E+00 7.308193751083188E-03 + 3.971000000000000E+00 7.289385858688637E-03 + 3.972000000000000E+00 7.270624276994851E-03 + 3.973000000000000E+00 7.251908898761961E-03 + 3.974000000000000E+00 7.233239616976442E-03 + 3.975000000000000E+00 7.214616324850705E-03 + 3.976000000000000E+00 7.196038915822696E-03 + 3.977000000000000E+00 7.177507283555482E-03 + 3.978000000000000E+00 7.159021321936848E-03 + 3.979000000000000E+00 7.140580925078904E-03 + 3.980000000000000E+00 7.122185987317668E-03 + 3.981000000000000E+00 7.103836403212663E-03 + 3.982000000000000E+00 7.085532067546524E-03 + 3.983000000000000E+00 7.067272875324584E-03 + 3.984000000000000E+00 7.049058721774482E-03 + 3.985000000000000E+00 7.030889502345754E-03 + 3.986000000000000E+00 7.012765112709434E-03 + 3.987000000000000E+00 6.994685448757668E-03 + 3.988000000000000E+00 6.976650406603281E-03 + 3.989000000000000E+00 6.958659882579414E-03 + 3.990000000000000E+00 6.940713773239095E-03 + 3.991000000000000E+00 6.922811975354866E-03 + 3.992000000000000E+00 6.904954385918365E-03 + 3.993000000000000E+00 6.887140902139945E-03 + 3.994000000000000E+00 6.869371421448257E-03 + 3.995000000000000E+00 6.851645841489879E-03 + 3.996000000000000E+00 6.833964060128895E-03 + 3.997000000000000E+00 6.816325975446515E-03 + 3.998000000000000E+00 6.798731485740680E-03 + 3.999000000000000E+00 6.781180489525661E-03 + 4.000000000000000E+00 6.763672885531663E-03 + 4.001000000000000E+00 6.746208572704439E-03 + 4.002000000000000E+00 6.728787450204903E-03 + 4.003000000000000E+00 6.711409417408708E-03 + 4.004000000000000E+00 6.694074373905893E-03 + 4.005000000000000E+00 6.676782219500473E-03 + 4.006000000000000E+00 6.659532854210037E-03 + 4.007000000000000E+00 6.642326178265384E-03 + 4.008000000000000E+00 6.625162092110098E-03 + 4.009000000000000E+00 6.608040496400192E-03 + 4.010000000000000E+00 6.590961292003708E-03 + 4.011000000000000E+00 6.573924380000312E-03 + 4.012000000000000E+00 6.556929661680937E-03 + 4.013000000000000E+00 6.539977038547370E-03 + 4.014000000000000E+00 6.523066412311867E-03 + 4.015000000000000E+00 6.506197684896787E-03 + 4.016000000000000E+00 6.489370758434178E-03 + 4.017000000000000E+00 6.472585535265417E-03 + 4.018000000000000E+00 6.455841917940812E-03 + 4.019000000000000E+00 6.439139809219215E-03 + 4.020000000000000E+00 6.422479112067640E-03 + 4.021000000000000E+00 6.405859729660891E-03 + 4.022000000000000E+00 6.389281565381164E-03 + 4.023000000000000E+00 6.372744522817666E-03 + 4.024000000000000E+00 6.356248505766246E-03 + 4.025000000000000E+00 6.339793418229002E-03 + 4.026000000000000E+00 6.323379164413906E-03 + 4.027000000000000E+00 6.307005648734408E-03 + 4.028000000000000E+00 6.290672775809084E-03 + 4.029000000000000E+00 6.274380450461236E-03 + 4.030000000000000E+00 6.258128577718510E-03 + 4.031000000000000E+00 6.241917062812539E-03 + 4.032000000000000E+00 6.225745811178542E-03 + 4.033000000000000E+00 6.209614728454959E-03 + 4.034000000000000E+00 6.193523720483077E-03 + 4.035000000000000E+00 6.177472693306639E-03 + 4.036000000000000E+00 6.161461553171476E-03 + 4.037000000000000E+00 6.145490206525144E-03 + 4.038000000000000E+00 6.129558560016530E-03 + 4.039000000000000E+00 6.113666520495485E-03 + 4.040000000000000E+00 6.097813995012451E-03 + 4.041000000000000E+00 6.082000890818087E-03 + 4.042000000000000E+00 6.066227115362902E-03 + 4.043000000000000E+00 6.050492576296856E-03 + 4.044000000000000E+00 6.034797181469029E-03 + 4.045000000000000E+00 6.019140838927234E-03 + 4.046000000000000E+00 6.003523456917615E-03 + 4.047000000000000E+00 5.987944943884326E-03 + 4.048000000000000E+00 5.972405208469115E-03 + 4.049000000000000E+00 5.956904159511008E-03 + 4.050000000000000E+00 5.941441706045885E-03 + 4.051000000000000E+00 5.926017757306144E-03 + 4.052000000000000E+00 5.910632222720326E-03 + 4.053000000000000E+00 5.895285011912743E-03 + 4.054000000000000E+00 5.879976034703117E-03 + 4.055000000000000E+00 5.864705201106215E-03 + 4.056000000000000E+00 5.849472421331467E-03 + 4.057000000000000E+00 5.834277605782629E-03 + 4.058000000000000E+00 5.819120665057394E-03 + 4.059000000000000E+00 5.804001509947026E-03 + 4.060000000000000E+00 5.788920051436030E-03 + 4.061000000000000E+00 5.773876200701745E-03 + 4.062000000000000E+00 5.758869869113998E-03 + 4.063000000000000E+00 5.743900968234758E-03 + 4.064000000000000E+00 5.728969409817750E-03 + 4.065000000000000E+00 5.714075105808108E-03 + 4.066000000000000E+00 5.699217968342012E-03 + 4.067000000000000E+00 5.684397909746318E-03 + 4.068000000000000E+00 5.669614842538211E-03 + 4.069000000000000E+00 5.654868679424837E-03 + 4.070000000000000E+00 5.640159333302948E-03 + 4.071000000000000E+00 5.625486717258549E-03 + 4.072000000000000E+00 5.610850744566518E-03 + 4.073000000000000E+00 5.596251328690282E-03 + 4.074000000000000E+00 5.581688383281437E-03 + 4.075000000000000E+00 5.567161822179385E-03 + 4.076000000000000E+00 5.552671559411011E-03 + 4.077000000000000E+00 5.538217509190291E-03 + 4.078000000000000E+00 5.523799585917957E-03 + 4.079000000000000E+00 5.509417704181146E-03 + 4.080000000000000E+00 5.495071778753028E-03 + 4.081000000000000E+00 5.480761724592467E-03 + 4.082000000000000E+00 5.466487456843669E-03 + 4.083000000000000E+00 5.452248890835815E-03 + 4.084000000000000E+00 5.438045942082731E-03 + 4.085000000000000E+00 5.423878526282515E-03 + 4.086000000000000E+00 5.409746559317198E-03 + 4.087000000000000E+00 5.395649957252399E-03 + 4.088000000000000E+00 5.381588636336952E-03 + 4.089000000000000E+00 5.367562513002590E-03 + 4.090000000000000E+00 5.353571503863564E-03 + 4.091000000000000E+00 5.339615525716317E-03 + 4.092000000000000E+00 5.325694495539120E-03 + 4.093000000000000E+00 5.311808330491748E-03 + 4.094000000000000E+00 5.297956947915096E-03 + 4.095000000000000E+00 5.284140265330871E-03 + 4.096000000000000E+00 5.270358200441218E-03 + 4.097000000000000E+00 5.256610671128390E-03 + 4.098000000000000E+00 5.242897595454409E-03 + 4.099000000000000E+00 5.229218891660691E-03 + 4.100000000000000E+00 5.215574478167740E-03 + 4.101000000000000E+00 5.201964273574780E-03 + 4.102000000000000E+00 5.188388196659417E-03 + 4.103000000000000E+00 5.174846166377305E-03 + 4.104000000000000E+00 5.161338101861787E-03 + 4.105000000000000E+00 5.147863922423579E-03 + 4.106000000000000E+00 5.134423547550405E-03 + 4.107000000000000E+00 5.121016896906663E-03 + 4.108000000000000E+00 5.107643890333097E-03 + 4.109000000000000E+00 5.094304447846444E-03 + 4.110000000000000E+00 5.080998489639096E-03 + 4.111000000000000E+00 5.067725936078773E-03 + 4.112000000000000E+00 5.054486707708169E-03 + 4.113000000000000E+00 5.041280725244629E-03 + 4.114000000000000E+00 5.028107909579806E-03 + 4.115000000000000E+00 5.014968181779313E-03 + 4.116000000000000E+00 5.001861463082414E-03 + 4.117000000000000E+00 4.988787674901657E-03 + 4.118000000000000E+00 4.975746738822570E-03 + 4.119000000000000E+00 4.962738576603306E-03 + 4.120000000000000E+00 4.949763110174300E-03 + 4.121000000000000E+00 4.936820261637973E-03 + 4.122000000000000E+00 4.923909953268362E-03 + 4.123000000000000E+00 4.911032107510799E-03 + 4.124000000000000E+00 4.898186646981594E-03 + 4.125000000000000E+00 4.885373494467671E-03 + 4.126000000000000E+00 4.872592572926277E-03 + 4.127000000000000E+00 4.859843805484616E-03 + 4.128000000000000E+00 4.847127115439536E-03 + 4.129000000000000E+00 4.834442426257207E-03 + 4.130000000000000E+00 4.821789661572777E-03 + 4.131000000000000E+00 4.809168745190042E-03 + 4.132000000000000E+00 4.796579601081134E-03 + 4.133000000000000E+00 4.784022153386172E-03 + 4.134000000000000E+00 4.771496326412961E-03 + 4.135000000000000E+00 4.759002044636640E-03 + 4.136000000000000E+00 4.746539232699375E-03 + 4.137000000000000E+00 4.734107815410015E-03 + 4.138000000000000E+00 4.721707717743796E-03 + 4.139000000000000E+00 4.709338864841974E-03 + 4.140000000000000E+00 4.697001182011542E-03 + 4.141000000000000E+00 4.684694594724874E-03 + 4.142000000000000E+00 4.672419028619432E-03 + 4.143000000000000E+00 4.660174409497421E-03 + 4.144000000000000E+00 4.647960663325465E-03 + 4.145000000000000E+00 4.635777716234309E-03 + 4.146000000000000E+00 4.623625494518475E-03 + 4.147000000000000E+00 4.611503924635944E-03 + 4.148000000000000E+00 4.599412933207849E-03 + 4.149000000000000E+00 4.587352447018143E-03 + 4.150000000000000E+00 4.575322393013278E-03 + 4.151000000000000E+00 4.563322698301904E-03 + 4.152000000000000E+00 4.551353290154530E-03 + 4.153000000000000E+00 4.539414096003213E-03 + 4.154000000000000E+00 4.527505043441248E-03 + 4.155000000000000E+00 4.515626060222840E-03 + 4.156000000000000E+00 4.503777074262797E-03 + 4.157000000000000E+00 4.491958013636205E-03 + 4.158000000000000E+00 4.480168806578121E-03 + 4.159000000000000E+00 4.468409381483259E-03 + 4.160000000000000E+00 4.456679666905659E-03 + 4.161000000000000E+00 4.444979591558399E-03 + 4.162000000000000E+00 4.433309084313260E-03 + 4.163000000000000E+00 4.421668074200419E-03 + 4.164000000000000E+00 4.410056490408146E-03 + 4.165000000000000E+00 4.398474262282476E-03 + 4.166000000000000E+00 4.386921319326909E-03 + 4.167000000000000E+00 4.375397591202101E-03 + 4.168000000000000E+00 4.363903007725538E-03 + 4.169000000000000E+00 4.352437498871243E-03 + 4.170000000000000E+00 4.341000994769461E-03 + 4.171000000000000E+00 4.329593425706340E-03 + 4.172000000000000E+00 4.318214722123639E-03 + 4.173000000000000E+00 4.306864814618405E-03 + 4.174000000000000E+00 4.295543633942677E-03 + 4.175000000000000E+00 4.284251111003172E-03 + 4.176000000000000E+00 4.272987176860982E-03 + 4.177000000000000E+00 4.261751762731254E-03 + 4.178000000000000E+00 4.250544799982913E-03 + 4.179000000000000E+00 4.239366220138327E-03 + 4.180000000000000E+00 4.228215954873024E-03 + 4.181000000000000E+00 4.217093936015368E-03 + 4.182000000000000E+00 4.206000095546271E-03 + 4.183000000000000E+00 4.194934365598890E-03 + 4.184000000000000E+00 4.183896678458309E-03 + 4.185000000000000E+00 4.172886966561248E-03 + 4.186000000000000E+00 4.161905162495767E-03 + 4.187000000000000E+00 4.150951199000939E-03 + 4.188000000000000E+00 4.140025008966586E-03 + 4.189000000000000E+00 4.129126525432947E-03 + 4.190000000000000E+00 4.118255681590395E-03 + 4.191000000000000E+00 4.107412410779132E-03 + 4.192000000000000E+00 4.096596646488884E-03 + 4.193000000000000E+00 4.085808322358616E-03 + 4.194000000000000E+00 4.075047372176228E-03 + 4.195000000000000E+00 4.064313729878247E-03 + 4.196000000000000E+00 4.053607329549546E-03 + 4.197000000000000E+00 4.042928105423034E-03 + 4.198000000000000E+00 4.032275991879375E-03 + 4.199000000000000E+00 4.021650923446678E-03 + 4.200000000000000E+00 4.011052834800195E-03 + 4.201000000000000E+00 4.000481660762062E-03 + 4.202000000000000E+00 3.989937336300962E-03 + 4.203000000000000E+00 3.979419796531852E-03 + 4.204000000000000E+00 3.968928976715676E-03 + 4.205000000000000E+00 3.958464812259049E-03 + 4.206000000000000E+00 3.948027238713995E-03 + 4.207000000000000E+00 3.937616191777626E-03 + 4.208000000000000E+00 3.927231607291870E-03 + 4.209000000000000E+00 3.916873421243169E-03 + 4.210000000000000E+00 3.906541569762196E-03 + 4.211000000000000E+00 3.896235989123561E-03 + 4.212000000000000E+00 3.885956615745518E-03 + 4.213000000000000E+00 3.875703386189681E-03 + 4.214000000000000E+00 3.865476237160740E-03 + 4.215000000000000E+00 3.855275105506158E-03 + 4.216000000000000E+00 3.845099928215893E-03 + 4.217000000000000E+00 3.834950642422117E-03 + 4.218000000000000E+00 3.824827185398915E-03 + 4.219000000000000E+00 3.814729494562006E-03 + 4.220000000000000E+00 3.804657507468452E-03 + 4.221000000000000E+00 3.794611161816388E-03 + 4.222000000000000E+00 3.784590395444716E-03 + 4.223000000000000E+00 3.774595146332837E-03 + 4.224000000000000E+00 3.764625352600353E-03 + 4.225000000000000E+00 3.754680952506794E-03 + 4.226000000000000E+00 3.744761884451335E-03 + 4.227000000000000E+00 3.734868086972507E-03 + 4.228000000000000E+00 3.724999498747914E-03 + 4.229000000000000E+00 3.715156058593960E-03 + 4.230000000000000E+00 3.705337705465556E-03 + 4.231000000000000E+00 3.695544378455856E-03 + 4.232000000000000E+00 3.685776016795957E-03 + 4.233000000000000E+00 3.676032559854633E-03 + 4.234000000000000E+00 3.666313947138046E-03 + 4.235000000000000E+00 3.656620118289479E-03 + 4.236000000000000E+00 3.646951013089045E-03 + 4.237000000000000E+00 3.637306571453415E-03 + 4.238000000000000E+00 3.627686733435542E-03 + 4.239000000000000E+00 3.618091439224383E-03 + 4.240000000000000E+00 3.608520629144611E-03 + 4.241000000000000E+00 3.598974243656362E-03 + 4.242000000000000E+00 3.589452223354935E-03 + 4.243000000000000E+00 3.579954508970532E-03 + 4.244000000000000E+00 3.570481041367981E-03 + 4.245000000000000E+00 3.561031761546454E-03 + 4.246000000000000E+00 3.551606610639198E-03 + 4.247000000000000E+00 3.542205529913269E-03 + 4.248000000000000E+00 3.532828460769242E-03 + 4.249000000000000E+00 3.523475344740959E-03 + 4.250000000000000E+00 3.514146123495233E-03 + 4.251000000000000E+00 3.504840738831595E-03 + 4.252000000000000E+00 3.495559132682023E-03 + 4.253000000000000E+00 3.486301247110659E-03 + 4.254000000000000E+00 3.477067024313539E-03 + 4.255000000000000E+00 3.467856406618341E-03 + 4.256000000000000E+00 3.458669336484093E-03 + 4.257000000000000E+00 3.449505756500925E-03 + 4.258000000000000E+00 3.440365609389777E-03 + 4.259000000000000E+00 3.431248838002156E-03 + 4.260000000000000E+00 3.422155385319852E-03 + 4.261000000000000E+00 3.413085194454672E-03 + 4.262000000000000E+00 3.404038208648174E-03 + 4.263000000000000E+00 3.395014371271415E-03 + 4.264000000000000E+00 3.386013625824658E-03 + 4.265000000000000E+00 3.377035915937136E-03 + 4.266000000000000E+00 3.368081185366759E-03 + 4.267000000000000E+00 3.359149377999877E-03 + 4.268000000000000E+00 3.350240437850992E-03 + 4.269000000000000E+00 3.341354309062509E-03 + 4.270000000000000E+00 3.332490935904468E-03 + 4.271000000000000E+00 3.323650262774280E-03 + 4.272000000000000E+00 3.314832234196473E-03 + 4.273000000000000E+00 3.306036794822411E-03 + 4.274000000000000E+00 3.297263889430058E-03 + 4.275000000000000E+00 3.288513462923698E-03 + 4.276000000000000E+00 3.279785460333686E-03 + 4.277000000000000E+00 3.271079826816169E-03 + 4.278000000000000E+00 3.262396507652861E-03 + 4.279000000000000E+00 3.253735448250749E-03 + 4.280000000000000E+00 3.245096594141848E-03 + 4.281000000000000E+00 3.236479890982951E-03 + 4.282000000000000E+00 3.227885284555356E-03 + 4.283000000000000E+00 3.219312720764619E-03 + 4.284000000000000E+00 3.210762145640296E-03 + 4.285000000000000E+00 3.202233505335674E-03 + 4.286000000000000E+00 3.193726746127542E-03 + 4.287000000000000E+00 3.185241814415905E-03 + 4.288000000000000E+00 3.176778656723744E-03 + 4.289000000000000E+00 3.168337219696763E-03 + 4.290000000000000E+00 3.159917450103135E-03 + 4.291000000000000E+00 3.151519294833234E-03 + 4.292000000000000E+00 3.143142700899401E-03 + 4.293000000000000E+00 3.134787615435674E-03 + 4.294000000000000E+00 3.126453985697550E-03 + 4.295000000000000E+00 3.118141759061723E-03 + 4.296000000000000E+00 3.109850883025831E-03 + 4.297000000000000E+00 3.101581305208221E-03 + 4.298000000000000E+00 3.093332973347675E-03 + 4.299000000000000E+00 3.085105835303172E-03 + 4.300000000000000E+00 3.076899839053640E-03 + 4.301000000000000E+00 3.068714932697707E-03 + 4.302000000000000E+00 3.060551064453438E-03 + 4.303000000000000E+00 3.052408182658103E-03 + 4.304000000000000E+00 3.044286235767922E-03 + 4.305000000000000E+00 3.036185172357816E-03 + 4.306000000000000E+00 3.028104941121156E-03 + 4.307000000000000E+00 3.020045490869527E-03 + 4.308000000000000E+00 3.012006770532475E-03 + 4.309000000000000E+00 3.003988729157261E-03 + 4.310000000000000E+00 2.995991315908611E-03 + 4.311000000000000E+00 2.988014480068483E-03 + 4.312000000000000E+00 2.980058171035807E-03 + 4.313000000000000E+00 2.972122338326250E-03 + 4.314000000000000E+00 2.964206931571969E-03 + 4.315000000000000E+00 2.956311900521374E-03 + 4.316000000000000E+00 2.948437195038873E-03 + 4.317000000000000E+00 2.940582765104638E-03 + 4.318000000000000E+00 2.932748560814361E-03 + 4.319000000000000E+00 2.924934532379011E-03 + 4.320000000000000E+00 2.917140630124588E-03 + 4.321000000000000E+00 2.909366804491897E-03 + 4.322000000000000E+00 2.901613006036289E-03 + 4.323000000000000E+00 2.893879185427429E-03 + 4.324000000000000E+00 2.886165293449066E-03 + 4.325000000000000E+00 2.878471280998773E-03 + 4.326000000000000E+00 2.870797099087721E-03 + 4.327000000000000E+00 2.863142698840448E-03 + 4.328000000000000E+00 2.855508031494598E-03 + 4.329000000000000E+00 2.847893048400708E-03 + 4.330000000000000E+00 2.840297701021958E-03 + 4.331000000000000E+00 2.832721940933925E-03 + 4.332000000000000E+00 2.825165719824374E-03 + 4.333000000000000E+00 2.817628989492996E-03 + 4.334000000000000E+00 2.810111701851180E-03 + 4.335000000000000E+00 2.802613808921790E-03 + 4.336000000000000E+00 2.795135262838908E-03 + 4.337000000000000E+00 2.787676015847620E-03 + 4.338000000000000E+00 2.780236020303772E-03 + 4.339000000000000E+00 2.772815228673737E-03 + 4.340000000000000E+00 2.765413593534185E-03 + 4.341000000000000E+00 2.758031067571848E-03 + 4.342000000000000E+00 2.750667603583288E-03 + 4.343000000000000E+00 2.743323154474672E-03 + 4.344000000000000E+00 2.735997673261523E-03 + 4.345000000000000E+00 2.728691113068505E-03 + 4.346000000000000E+00 2.721403427129193E-03 + 4.347000000000000E+00 2.714134568785830E-03 + 4.348000000000000E+00 2.706884491489109E-03 + 4.349000000000000E+00 2.699653148797940E-03 + 4.350000000000000E+00 2.692440494379220E-03 + 4.351000000000000E+00 2.685246482007601E-03 + 4.352000000000000E+00 2.678071065565270E-03 + 4.353000000000000E+00 2.670914199041715E-03 + 4.354000000000000E+00 2.663775836533501E-03 + 4.355000000000000E+00 2.656655932244036E-03 + 4.356000000000000E+00 2.649554440483363E-03 + 4.357000000000000E+00 2.642471315667913E-03 + 4.358000000000000E+00 2.635406512320288E-03 + 4.359000000000000E+00 2.628359985069031E-03 + 4.360000000000000E+00 2.621331688648415E-03 + 4.361000000000000E+00 2.614321577898201E-03 + 4.362000000000000E+00 2.607329607763426E-03 + 4.363000000000000E+00 2.600355733294174E-03 + 4.364000000000000E+00 2.593399909645357E-03 + 4.365000000000000E+00 2.586462092076480E-03 + 4.366000000000000E+00 2.579542235951439E-03 + 4.367000000000000E+00 2.572640296738280E-03 + 4.368000000000000E+00 2.565756230008986E-03 + 4.369000000000000E+00 2.558889991439257E-03 + 4.370000000000000E+00 2.552041536808287E-03 + 4.371000000000000E+00 2.545210821998539E-03 + 4.372000000000000E+00 2.538397802995535E-03 + 4.373000000000000E+00 2.531602435887624E-03 + 4.374000000000000E+00 2.524824676865778E-03 + 4.375000000000000E+00 2.518064482223357E-03 + 4.376000000000000E+00 2.511321808355896E-03 + 4.377000000000000E+00 2.504596611760902E-03 + 4.378000000000000E+00 2.497888849037608E-03 + 4.379000000000000E+00 2.491198476886782E-03 + 4.380000000000000E+00 2.484525452110494E-03 + 4.381000000000000E+00 2.477869731611903E-03 + 4.382000000000000E+00 2.471231272395049E-03 + 4.383000000000000E+00 2.464610031564623E-03 + 4.384000000000000E+00 2.458005966325766E-03 + 4.385000000000000E+00 2.451419033983848E-03 + 4.386000000000000E+00 2.444849191944244E-03 + 4.387000000000000E+00 2.438296397712137E-03 + 4.388000000000000E+00 2.431760608892298E-03 + 4.389000000000000E+00 2.425241783188864E-03 + 4.390000000000000E+00 2.418739878405137E-03 + 4.391000000000000E+00 2.412254852443363E-03 + 4.392000000000000E+00 2.405786663304525E-03 + 4.393000000000000E+00 2.399335269088132E-03 + 4.394000000000000E+00 2.392900627992000E-03 + 4.395000000000000E+00 2.386482698312049E-03 + 4.396000000000000E+00 2.380081438442088E-03 + 4.397000000000000E+00 2.373696806873605E-03 + 4.398000000000000E+00 2.367328762195564E-03 + 4.399000000000000E+00 2.360977263094184E-03 + 4.400000000000000E+00 2.354642268352737E-03 + 4.401000000000000E+00 2.348323736851341E-03 + 4.402000000000000E+00 2.342021627566743E-03 + 4.403000000000000E+00 2.335735899572122E-03 + 4.404000000000000E+00 2.329466512036877E-03 + 4.405000000000000E+00 2.323213424226412E-03 + 4.406000000000000E+00 2.316976595501944E-03 + 4.407000000000000E+00 2.310755985320284E-03 + 4.408000000000000E+00 2.304551553233640E-03 + 4.409000000000000E+00 2.298363258889404E-03 + 4.410000000000000E+00 2.292191062029952E-03 + 4.411000000000000E+00 2.286034922492435E-03 + 4.412000000000000E+00 2.279894800208581E-03 + 4.413000000000000E+00 2.273770655204480E-03 + 4.414000000000000E+00 2.267662447600393E-03 + 4.415000000000000E+00 2.261570137610538E-03 + 4.416000000000000E+00 2.255493685542895E-03 + 4.417000000000000E+00 2.249433051799000E-03 + 4.418000000000000E+00 2.243388196873738E-03 + 4.419000000000000E+00 2.237359081355153E-03 + 4.420000000000000E+00 2.231345665924231E-03 + 4.421000000000000E+00 2.225347911354712E-03 + 4.422000000000000E+00 2.219365778512887E-03 + 4.423000000000000E+00 2.213399228357392E-03 + 4.424000000000000E+00 2.207448221939011E-03 + 4.425000000000000E+00 2.201512720400478E-03 + 4.426000000000000E+00 2.195592684976273E-03 + 4.427000000000000E+00 2.189688076992433E-03 + 4.428000000000000E+00 2.183798857866342E-03 + 4.429000000000000E+00 2.177924989106538E-03 + 4.430000000000000E+00 2.172066432312519E-03 + 4.431000000000000E+00 2.166223149174538E-03 + 4.432000000000000E+00 2.160395101473411E-03 + 4.433000000000000E+00 2.154582251080321E-03 + 4.434000000000000E+00 2.148784559956617E-03 + 4.435000000000000E+00 2.143001990153623E-03 + 4.436000000000000E+00 2.137234503812442E-03 + 4.437000000000000E+00 2.131482063163755E-03 + 4.438000000000000E+00 2.125744630527632E-03 + 4.439000000000000E+00 2.120022168313339E-03 + 4.440000000000000E+00 2.114314639019142E-03 + 4.441000000000000E+00 2.108622005232105E-03 + 4.442000000000000E+00 2.102944229627909E-03 + 4.443000000000000E+00 2.097281274970657E-03 + 4.444000000000000E+00 2.091633104112676E-03 + 4.445000000000000E+00 2.085999679994322E-03 + 4.446000000000000E+00 2.080380965643803E-03 + 4.447000000000000E+00 2.074776924176971E-03 + 4.448000000000000E+00 2.069187518797139E-03 + 4.449000000000000E+00 2.063612712794889E-03 + 4.450000000000000E+00 2.058052469547883E-03 + 4.451000000000000E+00 2.052506752520672E-03 + 4.452000000000000E+00 2.046975525264503E-03 + 4.453000000000000E+00 2.041458751417133E-03 + 4.454000000000000E+00 2.035956394702643E-03 + 4.455000000000000E+00 2.030468418931239E-03 + 4.456000000000000E+00 2.024994787999077E-03 + 4.457000000000000E+00 2.019535465888067E-03 + 4.458000000000000E+00 2.014090416665683E-03 + 4.459000000000000E+00 2.008659604484784E-03 + 4.460000000000000E+00 2.003242993583424E-03 + 4.461000000000000E+00 1.997840548284657E-03 + 4.462000000000000E+00 1.992452232996369E-03 + 4.463000000000000E+00 1.987078012211073E-03 + 4.464000000000000E+00 1.981717850505737E-03 + 4.465000000000000E+00 1.976371712541592E-03 + 4.466000000000000E+00 1.971039563063950E-03 + 4.467000000000000E+00 1.965721366902016E-03 + 4.468000000000000E+00 1.960417088968713E-03 + 4.469000000000000E+00 1.955126694260487E-03 + 4.470000000000000E+00 1.949850147857134E-03 + 4.471000000000000E+00 1.944587414921604E-03 + 4.472000000000000E+00 1.939338460699835E-03 + 4.473000000000000E+00 1.934103250520558E-03 + 4.474000000000000E+00 1.928881749795118E-03 + 4.475000000000000E+00 1.923673924017297E-03 + 4.476000000000000E+00 1.918479738763128E-03 + 4.477000000000000E+00 1.913299159690713E-03 + 4.478000000000000E+00 1.908132152540050E-03 + 4.479000000000000E+00 1.902978683132843E-03 + 4.480000000000000E+00 1.897838717372332E-03 + 4.481000000000000E+00 1.892712221243104E-03 + 4.482000000000000E+00 1.887599160810920E-03 + 4.483000000000000E+00 1.882499502222536E-03 + 4.484000000000000E+00 1.877413211705522E-03 + 4.485000000000000E+00 1.872340255568085E-03 + 4.486000000000000E+00 1.867280600198893E-03 + 4.487000000000000E+00 1.862234212066890E-03 + 4.488000000000000E+00 1.857201057721133E-03 + 4.489000000000000E+00 1.852181103790602E-03 + 4.490000000000000E+00 1.847174316984030E-03 + 4.491000000000000E+00 1.842180664089726E-03 + 4.492000000000000E+00 1.837200111975394E-03 + 4.493000000000000E+00 1.832232627587973E-03 + 4.494000000000000E+00 1.827278177953443E-03 + 4.495000000000000E+00 1.822336730176660E-03 + 4.496000000000000E+00 1.817408251441182E-03 + 4.497000000000000E+00 1.812492709009094E-03 + 4.498000000000000E+00 1.807590070220832E-03 + 4.499000000000000E+00 1.802700302495013E-03 + 4.500000000000000E+00 1.797823373328257E-03 + 4.501000000000000E+00 1.792959250295021E-03 + 4.502000000000000E+00 1.788107901047425E-03 + 4.503000000000000E+00 1.783269293315072E-03 + 4.504000000000000E+00 1.778443394904887E-03 + 4.505000000000000E+00 1.773630173700945E-03 + 4.506000000000000E+00 1.768829597664287E-03 + 4.507000000000000E+00 1.764041634832766E-03 + 4.508000000000000E+00 1.759266253320865E-03 + 4.509000000000000E+00 1.754503421319536E-03 + 4.510000000000000E+00 1.749753107096022E-03 + 4.511000000000000E+00 1.745015278993693E-03 + 4.512000000000000E+00 1.740289905431872E-03 + 4.513000000000000E+00 1.735576954905674E-03 + 4.514000000000000E+00 1.730876395985831E-03 + 4.515000000000000E+00 1.726188197318527E-03 + 4.516000000000000E+00 1.721512327625227E-03 + 4.517000000000000E+00 1.716848755702517E-03 + 4.518000000000000E+00 1.712197450421927E-03 + 4.519000000000000E+00 1.707558380729774E-03 + 4.520000000000000E+00 1.702931515646986E-03 + 4.521000000000000E+00 1.698316824268945E-03 + 4.522000000000000E+00 1.693714275765314E-03 + 4.523000000000000E+00 1.689123839379880E-03 + 4.524000000000000E+00 1.684545484430377E-03 + 4.525000000000000E+00 1.679979180308331E-03 + 4.526000000000000E+00 1.675424896478896E-03 + 4.527000000000000E+00 1.670882602480680E-03 + 4.528000000000000E+00 1.666352267925590E-03 + 4.529000000000000E+00 1.661833862498668E-03 + 4.530000000000000E+00 1.657327355957924E-03 + 4.531000000000000E+00 1.652832718134177E-03 + 4.532000000000000E+00 1.648349918930887E-03 + 4.533000000000000E+00 1.643878928324000E-03 + 4.534000000000000E+00 1.639419716361782E-03 + 4.535000000000000E+00 1.634972253164656E-03 + 4.536000000000000E+00 1.630536508925044E-03 + 4.537000000000000E+00 1.626112453907205E-03 + 4.538000000000000E+00 1.621700058447074E-03 + 4.539000000000000E+00 1.617299292952102E-03 + 4.540000000000000E+00 1.612910127901097E-03 + 4.541000000000000E+00 1.608532533844061E-03 + 4.542000000000000E+00 1.604166481402035E-03 + 4.543000000000000E+00 1.599811941266939E-03 + 4.544000000000000E+00 1.595468884201409E-03 + 4.545000000000000E+00 1.591137281038644E-03 + 4.546000000000000E+00 1.586817102682244E-03 + 4.547000000000000E+00 1.582508320106060E-03 + 4.548000000000000E+00 1.578210904354023E-03 + 4.549000000000000E+00 1.573924826539999E-03 + 4.550000000000000E+00 1.569650057847627E-03 + 4.551000000000000E+00 1.565386569530161E-03 + 4.552000000000000E+00 1.561134332910320E-03 + 4.553000000000000E+00 1.556893319380125E-03 + 4.554000000000000E+00 1.552663500400747E-03 + 4.555000000000000E+00 1.548444847502352E-03 + 4.556000000000000E+00 1.544237332283946E-03 + 4.557000000000000E+00 1.540040926413217E-03 + 4.558000000000000E+00 1.535855601626388E-03 + 4.559000000000000E+00 1.531681329728051E-03 + 4.560000000000000E+00 1.527518082591028E-03 + 4.561000000000000E+00 1.523365832156205E-03 + 4.562000000000000E+00 1.519224550432388E-03 + 4.563000000000000E+00 1.515094209496142E-03 + 4.564000000000000E+00 1.510974781491646E-03 + 4.565000000000000E+00 1.506866238630536E-03 + 4.566000000000000E+00 1.502768553191757E-03 + 4.567000000000000E+00 1.498681697521404E-03 + 4.568000000000000E+00 1.494605644032579E-03 + 4.569000000000000E+00 1.490540365205238E-03 + 4.570000000000000E+00 1.486485833586036E-03 + 4.571000000000000E+00 1.482442021788182E-03 + 4.572000000000000E+00 1.478408902491286E-03 + 4.573000000000000E+00 1.474386448441207E-03 + 4.574000000000000E+00 1.470374632449913E-03 + 4.575000000000000E+00 1.466373427395317E-03 + 4.576000000000000E+00 1.462382806221143E-03 + 4.577000000000000E+00 1.458402741936767E-03 + 4.578000000000000E+00 1.454433207617073E-03 + 4.579000000000000E+00 1.450474176402307E-03 + 4.580000000000000E+00 1.446525621497920E-03 + 4.581000000000000E+00 1.442587516174436E-03 + 4.582000000000000E+00 1.438659833767290E-03 + 4.583000000000000E+00 1.434742547676690E-03 + 4.584000000000000E+00 1.430835631367468E-03 + 4.585000000000000E+00 1.426939058368934E-03 + 4.586000000000000E+00 1.423052802274729E-03 + 4.587000000000000E+00 1.419176836742677E-03 + 4.588000000000000E+00 1.415311135494650E-03 + 4.589000000000000E+00 1.411455672316412E-03 + 4.590000000000000E+00 1.407610421057476E-03 + 4.591000000000000E+00 1.403775355630967E-03 + 4.592000000000000E+00 1.399950450013466E-03 + 4.593000000000000E+00 1.396135678244878E-03 + 4.594000000000000E+00 1.392331014428282E-03 + 4.595000000000000E+00 1.388536432729790E-03 + 4.596000000000000E+00 1.384751907378395E-03 + 4.597000000000000E+00 1.380977412665848E-03 + 4.598000000000000E+00 1.377212922946494E-03 + 4.599000000000000E+00 1.373458412637146E-03 + 4.600000000000000E+00 1.369713856216933E-03 + 4.601000000000000E+00 1.365979228227164E-03 + 4.602000000000000E+00 1.362254503271185E-03 + 4.603000000000000E+00 1.358539656014236E-03 + 4.604000000000000E+00 1.354834661183314E-03 + 4.605000000000000E+00 1.351139493567033E-03 + 4.606000000000000E+00 1.347454128015478E-03 + 4.607000000000000E+00 1.343778539440069E-03 + 4.608000000000000E+00 1.340112702813424E-03 + 4.609000000000000E+00 1.336456593169217E-03 + 4.610000000000000E+00 1.332810185602038E-03 + 4.611000000000000E+00 1.329173455267255E-03 + 4.612000000000000E+00 1.325546377380877E-03 + 4.613000000000000E+00 1.321928927219415E-03 + 4.614000000000000E+00 1.318321080119745E-03 + 4.615000000000000E+00 1.314722811478966E-03 + 4.616000000000000E+00 1.311134096754271E-03 + 4.617000000000000E+00 1.307554911462802E-03 + 4.618000000000000E+00 1.303985231181517E-03 + 4.619000000000000E+00 1.300425031547054E-03 + 4.620000000000000E+00 1.296874288255594E-03 + 4.621000000000000E+00 1.293332977062723E-03 + 4.622000000000000E+00 1.289801073783303E-03 + 4.623000000000000E+00 1.286278554291324E-03 + 4.624000000000000E+00 1.282765394519786E-03 + 4.625000000000000E+00 1.279261570460550E-03 + 4.626000000000000E+00 1.275767058164209E-03 + 4.627000000000000E+00 1.272281833739957E-03 + 4.628000000000000E+00 1.268805873355447E-03 + 4.629000000000000E+00 1.265339153236662E-03 + 4.630000000000000E+00 1.261881649667788E-03 + 4.631000000000000E+00 1.258433338991066E-03 + 4.632000000000000E+00 1.254994197606672E-03 + 4.633000000000000E+00 1.251564201972579E-03 + 4.634000000000000E+00 1.248143328604426E-03 + 4.635000000000000E+00 1.244731554075386E-03 + 4.636000000000000E+00 1.241328855016031E-03 + 4.637000000000000E+00 1.237935208114206E-03 + 4.638000000000000E+00 1.234550590114895E-03 + 4.639000000000000E+00 1.231174977820089E-03 + 4.640000000000000E+00 1.227808348088656E-03 + 4.641000000000000E+00 1.224450677836213E-03 + 4.642000000000000E+00 1.221101944034993E-03 + 4.643000000000000E+00 1.217762123713713E-03 + 4.644000000000000E+00 1.214431193957452E-03 + 4.645000000000000E+00 1.211109131907515E-03 + 4.646000000000000E+00 1.207795914761305E-03 + 4.647000000000000E+00 1.204491519772198E-03 + 4.648000000000000E+00 1.201195924249408E-03 + 4.649000000000000E+00 1.197909105557864E-03 + 4.650000000000000E+00 1.194631041118080E-03 + 4.651000000000000E+00 1.191361708406029E-03 + 4.652000000000000E+00 1.188101084953012E-03 + 4.653000000000000E+00 1.184849148345534E-03 + 4.654000000000000E+00 1.181605876225176E-03 + 4.655000000000000E+00 1.178371246288466E-03 + 4.656000000000000E+00 1.175145236286759E-03 + 4.657000000000000E+00 1.171927824026103E-03 + 4.658000000000000E+00 1.168718987367117E-03 + 4.659000000000000E+00 1.165518704224867E-03 + 4.660000000000000E+00 1.162326952568738E-03 + 4.661000000000000E+00 1.159143710422307E-03 + 4.662000000000000E+00 1.155968955863225E-03 + 4.663000000000000E+00 1.152802667023084E-03 + 4.664000000000000E+00 1.149644822087301E-03 + 4.665000000000000E+00 1.146495399294984E-03 + 4.666000000000000E+00 1.143354376938818E-03 + 4.667000000000000E+00 1.140221733364938E-03 + 4.668000000000000E+00 1.137097446972800E-03 + 4.669000000000000E+00 1.133981496215068E-03 + 4.670000000000000E+00 1.130873859597485E-03 + 4.671000000000000E+00 1.127774515678747E-03 + 4.672000000000000E+00 1.124683443070392E-03 + 4.673000000000000E+00 1.121600620436665E-03 + 4.674000000000000E+00 1.118526026494409E-03 + 4.675000000000000E+00 1.115459640012929E-03 + 4.676000000000000E+00 1.112401439813886E-03 + 4.677000000000000E+00 1.109351404771163E-03 + 4.678000000000000E+00 1.106309513810755E-03 + 4.679000000000000E+00 1.103275745910638E-03 + 4.680000000000000E+00 1.100250080100658E-03 + 4.681000000000000E+00 1.097232495462404E-03 + 4.682000000000000E+00 1.094222971129093E-03 + 4.683000000000000E+00 1.091221486285451E-03 + 4.684000000000000E+00 1.088228020167587E-03 + 4.685000000000000E+00 1.085242552062880E-03 + 4.686000000000000E+00 1.082265061309862E-03 + 4.687000000000000E+00 1.079295527298091E-03 + 4.688000000000000E+00 1.076333929468041E-03 + 4.689000000000000E+00 1.073380247310981E-03 + 4.690000000000000E+00 1.070434460368858E-03 + 4.691000000000000E+00 1.067496548234175E-03 + 4.692000000000000E+00 1.064566490549882E-03 + 4.693000000000000E+00 1.061644267009250E-03 + 4.694000000000000E+00 1.058729857355761E-03 + 4.695000000000000E+00 1.055823241382990E-03 + 4.696000000000000E+00 1.052924398934487E-03 + 4.697000000000000E+00 1.050033309903659E-03 + 4.698000000000000E+00 1.047149954233660E-03 + 4.699000000000000E+00 1.044274311917274E-03 + 4.700000000000000E+00 1.041406362996792E-03 + 4.701000000000000E+00 1.038546087563909E-03 + 4.702000000000000E+00 1.035693465759601E-03 + 4.703000000000000E+00 1.032848477774010E-03 + 4.704000000000000E+00 1.030011103846336E-03 + 4.705000000000000E+00 1.027181324264719E-03 + 4.706000000000000E+00 1.024359119366122E-03 + 4.707000000000000E+00 1.021544469536223E-03 + 4.708000000000000E+00 1.018737355209299E-03 + 4.709000000000000E+00 1.015937756868115E-03 + 4.710000000000000E+00 1.013145655043804E-03 + 4.711000000000000E+00 1.010361030315764E-03 + 4.712000000000000E+00 1.007583863311541E-03 + 4.713000000000000E+00 1.004814134706714E-03 + 4.714000000000000E+00 1.002051825224790E-03 + 4.715000000000000E+00 9.992969156370846E-04 + 4.716000000000000E+00 9.965493867626150E-04 + 4.717000000000000E+00 9.938092194679907E-04 + 4.718000000000000E+00 9.910763946672965E-04 + 4.719000000000000E+00 9.883508933219852E-04 + 4.720000000000000E+00 9.856326964407702E-04 + 4.721000000000000E+00 9.829217850795082E-04 + 4.722000000000000E+00 9.802181403410931E-04 + 4.723000000000000E+00 9.775217433753483E-04 + 4.724000000000000E+00 9.748325753789127E-04 + 4.725000000000000E+00 9.721506175951337E-04 + 4.726000000000000E+00 9.694758513139576E-04 + 4.727000000000000E+00 9.668082578718199E-04 + 4.728000000000000E+00 9.641478186515396E-04 + 4.729000000000000E+00 9.614945150822077E-04 + 4.730000000000000E+00 9.588483286390779E-04 + 4.731000000000000E+00 9.562092408434640E-04 + 4.732000000000000E+00 9.535772332626267E-04 + 4.733000000000000E+00 9.509522875096683E-04 + 4.734000000000000E+00 9.483343852434254E-04 + 4.735000000000000E+00 9.457235081683623E-04 + 4.736000000000000E+00 9.431196380344641E-04 + 4.737000000000000E+00 9.405227566371262E-04 + 4.738000000000000E+00 9.379328458170565E-04 + 4.739000000000000E+00 9.353498874601600E-04 + 4.740000000000000E+00 9.327738634974383E-04 + 4.741000000000000E+00 9.302047559048836E-04 + 4.742000000000000E+00 9.276425467033689E-04 + 4.743000000000000E+00 9.250872179585499E-04 + 4.744000000000000E+00 9.225387517807550E-04 + 4.745000000000000E+00 9.199971303248788E-04 + 4.746000000000000E+00 9.174623357902838E-04 + 4.747000000000000E+00 9.149343504206908E-04 + 4.748000000000000E+00 9.124131565040772E-04 + 4.749000000000000E+00 9.098987363725731E-04 + 4.750000000000000E+00 9.073910724023538E-04 + 4.751000000000000E+00 9.048901470135435E-04 + 4.752000000000000E+00 9.023959426701069E-04 + 4.753000000000000E+00 8.999084418797444E-04 + 4.754000000000000E+00 8.974276271937968E-04 + 4.755000000000000E+00 8.949534812071353E-04 + 4.756000000000000E+00 8.924859865580630E-04 + 4.757000000000000E+00 8.900251259282105E-04 + 4.758000000000000E+00 8.875708820424363E-04 + 4.759000000000000E+00 8.851232376687253E-04 + 4.760000000000000E+00 8.826821756180848E-04 + 4.761000000000000E+00 8.802476787444429E-04 + 4.762000000000000E+00 8.778197299445534E-04 + 4.763000000000000E+00 8.753983121578850E-04 + 4.764000000000000E+00 8.729834083665323E-04 + 4.765000000000000E+00 8.705750015951053E-04 + 4.766000000000000E+00 8.681730749106343E-04 + 4.767000000000000E+00 8.657776114224698E-04 + 4.768000000000000E+00 8.633885942821826E-04 + 4.769000000000000E+00 8.610060066834613E-04 + 4.770000000000000E+00 8.586298318620173E-04 + 4.771000000000000E+00 8.562600530954849E-04 + 4.772000000000000E+00 8.538966537033165E-04 + 4.773000000000000E+00 8.515396170466940E-04 + 4.774000000000000E+00 8.491889265284218E-04 + 4.775000000000000E+00 8.468445655928340E-04 + 4.776000000000000E+00 8.445065177256917E-04 + 4.777000000000000E+00 8.421747664540897E-04 + 4.778000000000000E+00 8.398492953463554E-04 + 4.779000000000000E+00 8.375300880119541E-04 + 4.780000000000000E+00 8.352171281013902E-04 + 4.781000000000000E+00 8.329103993061100E-04 + 4.782000000000000E+00 8.306098853584056E-04 + 4.783000000000000E+00 8.283155700313168E-04 + 4.784000000000000E+00 8.260274371385404E-04 + 4.785000000000000E+00 8.237454705343265E-04 + 4.786000000000000E+00 8.214696541133842E-04 + 4.787000000000000E+00 8.191999718107935E-04 + 4.788000000000000E+00 8.169364076018976E-04 + 4.789000000000000E+00 8.146789455022175E-04 + 4.790000000000000E+00 8.124275695673511E-04 + 4.791000000000000E+00 8.101822638928831E-04 + 4.792000000000000E+00 8.079430126142859E-04 + 4.793000000000000E+00 8.057097999068259E-04 + 4.794000000000000E+00 8.034826099854721E-04 + 4.795000000000000E+00 8.012614271047998E-04 + 4.796000000000000E+00 7.990462355588954E-04 + 4.797000000000000E+00 7.968370196812658E-04 + 4.798000000000000E+00 7.946337638447433E-04 + 4.799000000000000E+00 7.924364524613924E-04 + 4.800000000000000E+00 7.902450699824173E-04 + 4.801000000000000E+00 7.880596008980664E-04 + 4.802000000000000E+00 7.858800297375460E-04 + 4.803000000000000E+00 7.837063410689200E-04 + 4.804000000000000E+00 7.815385194990222E-04 + 4.805000000000000E+00 7.793765496733646E-04 + 4.806000000000000E+00 7.772204162760445E-04 + 4.807000000000000E+00 7.750701040296490E-04 + 4.808000000000000E+00 7.729255976951736E-04 + 4.809000000000000E+00 7.707868820719185E-04 + 4.810000000000000E+00 7.686539419974077E-04 + 4.811000000000000E+00 7.665267623472919E-04 + 4.812000000000000E+00 7.644053280352617E-04 + 4.813000000000000E+00 7.622896240129532E-04 + 4.814000000000000E+00 7.601796352698624E-04 + 4.815000000000000E+00 7.580753468332520E-04 + 4.816000000000000E+00 7.559767437680615E-04 + 4.817000000000000E+00 7.538838111768194E-04 + 4.818000000000000E+00 7.517965341995530E-04 + 4.819000000000000E+00 7.497148980136968E-04 + 4.820000000000000E+00 7.476388878340078E-04 + 4.821000000000000E+00 7.455684889124727E-04 + 4.822000000000000E+00 7.435036865382215E-04 + 4.823000000000000E+00 7.414444660374382E-04 + 4.824000000000000E+00 7.393908127732718E-04 + 4.825000000000000E+00 7.373427121457490E-04 + 4.826000000000000E+00 7.353001495916882E-04 + 4.827000000000000E+00 7.332631105846079E-04 + 4.828000000000000E+00 7.312315806346424E-04 + 4.829000000000000E+00 7.292055452884508E-04 + 4.830000000000000E+00 7.271849901291342E-04 + 4.831000000000000E+00 7.251699007761478E-04 + 4.832000000000000E+00 7.231602628852099E-04 + 4.833000000000000E+00 7.211560621482207E-04 + 4.834000000000000E+00 7.191572842931726E-04 + 4.835000000000000E+00 7.171639150840682E-04 + 4.836000000000000E+00 7.151759403208266E-04 + 4.837000000000000E+00 7.131933458392058E-04 + 4.838000000000000E+00 7.112161175107113E-04 + 4.839000000000000E+00 7.092442412425140E-04 + 4.840000000000000E+00 7.072777029773652E-04 + 4.841000000000000E+00 7.053164886935063E-04 + 4.842000000000000E+00 7.033605844045915E-04 + 4.843000000000000E+00 7.014099761595981E-04 + 4.844000000000000E+00 6.994646500427436E-04 + 4.845000000000000E+00 6.975245921733995E-04 + 4.846000000000000E+00 6.955897887060107E-04 + 4.847000000000000E+00 6.936602258300086E-04 + 4.848000000000000E+00 6.917358897697294E-04 + 4.849000000000000E+00 6.898167667843287E-04 + 4.850000000000000E+00 6.879028431676987E-04 + 4.851000000000000E+00 6.859941052483873E-04 + 4.852000000000000E+00 6.840905393895091E-04 + 4.853000000000000E+00 6.821921319886703E-04 + 4.854000000000000E+00 6.802988694778797E-04 + 4.855000000000000E+00 6.784107383234703E-04 + 4.856000000000000E+00 6.765277250260148E-04 + 4.857000000000000E+00 6.746498161202444E-04 + 4.858000000000000E+00 6.727769981749665E-04 + 4.859000000000000E+00 6.709092577929822E-04 + 4.860000000000000E+00 6.690465816110083E-04 + 4.861000000000000E+00 6.671889562995905E-04 + 4.862000000000000E+00 6.653363685630256E-04 + 4.863000000000000E+00 6.634888051392801E-04 + 4.864000000000000E+00 6.616462527999108E-04 + 4.865000000000000E+00 6.598086983499798E-04 + 4.866000000000000E+00 6.579761286279783E-04 + 4.867000000000000E+00 6.561485305057444E-04 + 4.868000000000000E+00 6.543258908883818E-04 + 4.869000000000000E+00 6.525081967141841E-04 + 4.870000000000000E+00 6.506954349545494E-04 + 4.871000000000000E+00 6.488875926139046E-04 + 4.872000000000000E+00 6.470846567296268E-04 + 4.873000000000000E+00 6.452866143719591E-04 + 4.874000000000000E+00 6.434934526439367E-04 + 4.875000000000000E+00 6.417051586813056E-04 + 4.876000000000000E+00 6.399217196524427E-04 + 4.877000000000000E+00 6.381431227582808E-04 + 4.878000000000000E+00 6.363693552322281E-04 + 4.879000000000000E+00 6.346004043400882E-04 + 4.880000000000000E+00 6.328362573799870E-04 + 4.881000000000000E+00 6.310769016822890E-04 + 4.882000000000000E+00 6.293223246095242E-04 + 4.883000000000000E+00 6.275725135563083E-04 + 4.884000000000000E+00 6.258274559492672E-04 + 4.885000000000000E+00 6.240871392469571E-04 + 4.886000000000000E+00 6.223515509397895E-04 + 4.887000000000000E+00 6.206206785499555E-04 + 4.888000000000000E+00 6.188945096313450E-04 + 4.889000000000000E+00 6.171730317694753E-04 + 4.890000000000000E+00 6.154562325814119E-04 + 4.891000000000000E+00 6.137440997156925E-04 + 4.892000000000000E+00 6.120366208522498E-04 + 4.893000000000000E+00 6.103337837023409E-04 + 4.894000000000000E+00 6.086355760084665E-04 + 4.895000000000000E+00 6.069419855442960E-04 + 4.896000000000000E+00 6.052530001145948E-04 + 4.897000000000000E+00 6.035686075551472E-04 + 4.898000000000000E+00 6.018887957326833E-04 + 4.899000000000000E+00 6.002135525448004E-04 + 4.900000000000000E+00 5.985428659198924E-04 + 4.901000000000000E+00 5.968767238170754E-04 + 4.902000000000000E+00 5.952151142261092E-04 + 4.903000000000000E+00 5.935580251673269E-04 + 4.904000000000000E+00 5.919054446915615E-04 + 4.905000000000000E+00 5.902573608800692E-04 + 4.906000000000000E+00 5.886137618444571E-04 + 4.907000000000000E+00 5.869746357266113E-04 + 4.908000000000000E+00 5.853399706986207E-04 + 4.909000000000000E+00 5.837097549627062E-04 + 4.910000000000000E+00 5.820839767511467E-04 + 4.911000000000000E+00 5.804626243262080E-04 + 4.912000000000000E+00 5.788456859800663E-04 + 4.913000000000000E+00 5.772331500347405E-04 + 4.914000000000000E+00 5.756250048420156E-04 + 4.915000000000000E+00 5.740212387833755E-04 + 4.916000000000000E+00 5.724218402699248E-04 + 4.917000000000000E+00 5.708267977423220E-04 + 4.918000000000000E+00 5.692360996707084E-04 + 4.919000000000000E+00 5.676497345546292E-04 + 4.920000000000000E+00 5.660676909229734E-04 + 4.921000000000000E+00 5.644899573338919E-04 + 4.922000000000000E+00 5.629165223747337E-04 + 4.923000000000000E+00 5.613473746619719E-04 + 4.924000000000000E+00 5.597825028411342E-04 + 4.925000000000000E+00 5.582218955867307E-04 + 4.926000000000000E+00 5.566655416021868E-04 + 4.927000000000000E+00 5.551134296197696E-04 + 4.928000000000000E+00 5.535655484005184E-04 + 4.929000000000000E+00 5.520218867341785E-04 + 4.930000000000000E+00 5.504824334391254E-04 + 4.931000000000000E+00 5.489471773622997E-04 + 4.932000000000000E+00 5.474161073791371E-04 + 4.933000000000000E+00 5.458892123934981E-04 + 4.934000000000000E+00 5.443664813375985E-04 + 4.935000000000000E+00 5.428479031719422E-04 + 4.936000000000000E+00 5.413334668852507E-04 + 4.937000000000000E+00 5.398231614943955E-04 + 4.938000000000000E+00 5.383169760443287E-04 + 4.939000000000000E+00 5.368148996080175E-04 + 4.940000000000000E+00 5.353169212863699E-04 + 4.941000000000000E+00 5.338230302081750E-04 + 4.942000000000000E+00 5.323332155300281E-04 + 4.943000000000000E+00 5.308474664362660E-04 + 4.944000000000000E+00 5.293657721388994E-04 + 4.945000000000000E+00 5.278881218775443E-04 + 4.946000000000000E+00 5.264145049193575E-04 + 4.947000000000000E+00 5.249449105589663E-04 + 4.948000000000000E+00 5.234793281184033E-04 + 4.949000000000000E+00 5.220177469470386E-04 + 4.950000000000000E+00 5.205601564215146E-04 + 4.951000000000000E+00 5.191065459456785E-04 + 4.952000000000000E+00 5.176569049505163E-04 + 4.953000000000000E+00 5.162112228940847E-04 + 4.954000000000000E+00 5.147694892614504E-04 + 4.955000000000000E+00 5.133316935646177E-04 + 4.956000000000000E+00 5.118978253424666E-04 + 4.957000000000000E+00 5.104678741606857E-04 + 4.958000000000000E+00 5.090418296117088E-04 + 4.959000000000000E+00 5.076196813146471E-04 + 4.960000000000000E+00 5.062014189152254E-04 + 4.961000000000000E+00 5.047870320857174E-04 + 4.962000000000000E+00 5.033765105248788E-04 + 4.963000000000000E+00 5.019698439578854E-04 + 4.964000000000000E+00 5.005670221362675E-04 + 4.965000000000000E+00 4.991680348378448E-04 + 4.966000000000000E+00 4.977728718666617E-04 + 4.967000000000000E+00 4.963815230529255E-04 + 4.968000000000000E+00 4.949939782529407E-04 + 4.969000000000000E+00 4.936102273490454E-04 + 4.970000000000000E+00 4.922302602495466E-04 + 4.971000000000000E+00 4.908540668886604E-04 + 4.972000000000000E+00 4.894816372264434E-04 + 4.973000000000000E+00 4.881129612487332E-04 + 4.974000000000000E+00 4.867480289670849E-04 + 4.975000000000000E+00 4.853868304187062E-04 + 4.976000000000000E+00 4.840293556663978E-04 + 4.977000000000000E+00 4.826755947984848E-04 + 4.978000000000000E+00 4.813255379287632E-04 + 4.979000000000000E+00 4.799791751964288E-04 + 4.980000000000000E+00 4.786364967660200E-04 + 4.981000000000000E+00 4.772974928273546E-04 + 4.982000000000000E+00 4.759621535954682E-04 + 4.983000000000000E+00 4.746304693105492E-04 + 4.984000000000000E+00 4.733024302378826E-04 + 4.985000000000000E+00 4.719780266677847E-04 + 4.986000000000000E+00 4.706572489155413E-04 + 4.987000000000000E+00 4.693400873213501E-04 + 4.988000000000000E+00 4.680265322502554E-04 + 4.989000000000000E+00 4.667165740920901E-04 + 4.990000000000000E+00 4.654102032614134E-04 + 4.991000000000000E+00 4.641074101974499E-04 + 4.992000000000000E+00 4.628081853640321E-04 + 4.993000000000000E+00 4.615125192495340E-04 + 4.994000000000000E+00 4.602204023668167E-04 + 4.995000000000000E+00 4.589318252531656E-04 + 4.996000000000000E+00 4.576467784702307E-04 + 4.997000000000000E+00 4.563652526039671E-04 + 4.998000000000000E+00 4.550872382645733E-04 + 4.999000000000000E+00 4.538127260864364E-04 + 5.000000000000000E+00 4.525417067280670E-04 + 5.001000000000000E+00 4.512741708720436E-04 + 5.002000000000000E+00 4.500101092249521E-04 + 5.003000000000000E+00 4.487495125173260E-04 + 5.004000000000000E+00 4.474923715035914E-04 + 5.005000000000000E+00 4.462386769620016E-04 + 5.006000000000000E+00 4.449884196945838E-04 + 5.007000000000000E+00 4.437415905270808E-04 + 5.008000000000000E+00 4.424981803088869E-04 + 5.009000000000000E+00 4.412581799129979E-04 + 5.010000000000000E+00 4.400215802359455E-04 + 5.011000000000000E+00 4.387883721977434E-04 + 5.012000000000000E+00 4.375585467418298E-04 + 5.013000000000000E+00 4.363320948350068E-04 + 5.014000000000000E+00 4.351090074673866E-04 + 5.015000000000000E+00 4.338892756523304E-04 + 5.016000000000000E+00 4.326728904263929E-04 + 5.017000000000000E+00 4.314598428492659E-04 + 5.018000000000000E+00 4.302501240037198E-04 + 5.019000000000000E+00 4.290437249955476E-04 + 5.020000000000000E+00 4.278406369535078E-04 + 5.021000000000000E+00 4.266408510292675E-04 + 5.022000000000000E+00 4.254443583973456E-04 + 5.023000000000000E+00 4.242511502550590E-04 + 5.024000000000000E+00 4.230612178224627E-04 + 5.025000000000000E+00 4.218745523422955E-04 + 5.026000000000000E+00 4.206911450799244E-04 + 5.027000000000000E+00 4.195109873232880E-04 + 5.028000000000000E+00 4.183340703828411E-04 + 5.029000000000000E+00 4.171603855914988E-04 + 5.030000000000000E+00 4.159899243045812E-04 + 5.031000000000000E+00 4.148226778997589E-04 + 5.032000000000000E+00 4.136586377769957E-04 + 5.033000000000000E+00 4.124977953584962E-04 + 5.034000000000000E+00 4.113401420886476E-04 + 5.035000000000000E+00 4.101856694339689E-04 + 5.036000000000000E+00 4.090343688830527E-04 + 5.037000000000000E+00 4.078862319465115E-04 + 5.038000000000000E+00 4.067412501569257E-04 + 5.039000000000000E+00 4.055994150687854E-04 + 5.040000000000000E+00 4.044607182584378E-04 + 5.041000000000000E+00 4.033251513240356E-04 + 5.042000000000000E+00 4.021927058854798E-04 + 5.043000000000000E+00 4.010633735843651E-04 + 5.044000000000000E+00 3.999371460839311E-04 + 5.045000000000000E+00 3.988140150690037E-04 + 5.046000000000000E+00 3.976939722459444E-04 + 5.047000000000000E+00 3.965770093425962E-04 + 5.048000000000000E+00 3.954631181082293E-04 + 5.049000000000000E+00 3.943522903134909E-04 + 5.050000000000000E+00 3.932445177503498E-04 + 5.051000000000000E+00 3.921397922320443E-04 + 5.052000000000000E+00 3.910381055930279E-04 + 5.053000000000000E+00 3.899394496889218E-04 + 5.054000000000000E+00 3.888438163964549E-04 + 5.055000000000000E+00 3.877511976134184E-04 + 5.056000000000000E+00 3.866615852586092E-04 + 5.057000000000000E+00 3.855749712717799E-04 + 5.058000000000000E+00 3.844913476135859E-04 + 5.059000000000000E+00 3.834107062655343E-04 + 5.060000000000000E+00 3.823330392299308E-04 + 5.061000000000000E+00 3.812583385298300E-04 + 5.062000000000000E+00 3.801865962089825E-04 + 5.063000000000000E+00 3.791178043317831E-04 + 5.064000000000000E+00 3.780519549832217E-04 + 5.065000000000000E+00 3.769890402688305E-04 + 5.066000000000000E+00 3.759290523146329E-04 + 5.067000000000000E+00 3.748719832670938E-04 + 5.068000000000000E+00 3.738178252930660E-04 + 5.069000000000000E+00 3.727665705797453E-04 + 5.070000000000000E+00 3.717182113346128E-04 + 5.071000000000000E+00 3.706727397853896E-04 + 5.072000000000000E+00 3.696301481799838E-04 + 5.073000000000000E+00 3.685904287864429E-04 + 5.074000000000000E+00 3.675535738929018E-04 + 5.075000000000000E+00 3.665195758075318E-04 + 5.076000000000000E+00 3.654884268584940E-04 + 5.077000000000000E+00 3.644601193938860E-04 + 5.078000000000000E+00 3.634346457816962E-04 + 5.079000000000000E+00 3.624119984097507E-04 + 5.080000000000000E+00 3.613921696856650E-04 + 5.081000000000000E+00 3.603751520367974E-04 + 5.082000000000000E+00 3.593609379101958E-04 + 5.083000000000000E+00 3.583495197725500E-04 + 5.084000000000000E+00 3.573408901101451E-04 + 5.085000000000000E+00 3.563350414288104E-04 + 5.086000000000000E+00 3.553319662538696E-04 + 5.087000000000000E+00 3.543316571300960E-04 + 5.088000000000000E+00 3.533341066216615E-04 + 5.089000000000000E+00 3.523393073120870E-04 + 5.090000000000000E+00 3.513472518041971E-04 + 5.091000000000000E+00 3.503579327200719E-04 + 5.092000000000000E+00 3.493713427009955E-04 + 5.093000000000000E+00 3.483874744074113E-04 + 5.094000000000000E+00 3.474063205188744E-04 + 5.095000000000000E+00 3.464278737340013E-04 + 5.096000000000000E+00 3.454521267704252E-04 + 5.097000000000000E+00 3.444790723647469E-04 + 5.098000000000000E+00 3.435087032724871E-04 + 5.099000000000000E+00 3.425410122680416E-04 + 5.100000000000000E+00 3.415759921446303E-04 + 5.101000000000000E+00 3.406136357142544E-04 + 5.102000000000000E+00 3.396539358076473E-04 + 5.103000000000000E+00 3.386968852742273E-04 + 5.104000000000000E+00 3.377424769820516E-04 + 5.105000000000000E+00 3.367907038177711E-04 + 5.106000000000000E+00 3.358415586865819E-04 + 5.107000000000000E+00 3.348950345121797E-04 + 5.108000000000000E+00 3.339511242367136E-04 + 5.109000000000000E+00 3.330098208207413E-04 + 5.110000000000000E+00 3.320711172431794E-04 + 5.111000000000000E+00 3.311350065012625E-04 + 5.112000000000000E+00 3.302014816104933E-04 + 5.113000000000000E+00 3.292705356045985E-04 + 5.114000000000000E+00 3.283421615354840E-04 + 5.115000000000000E+00 3.274163524731872E-04 + 5.116000000000000E+00 3.264931015058354E-04 + 5.117000000000000E+00 3.255724017395952E-04 + 5.118000000000000E+00 3.246542462986328E-04 + 5.119000000000000E+00 3.237386283250654E-04 + 5.120000000000000E+00 3.228255409789164E-04 + 5.121000000000000E+00 3.219149774380739E-04 + 5.122000000000000E+00 3.210069308982421E-04 + 5.123000000000000E+00 3.201013945728970E-04 + 5.124000000000000E+00 3.191983616932453E-04 + 5.125000000000000E+00 3.182978255081772E-04 + 5.126000000000000E+00 3.173997792842209E-04 + 5.127000000000000E+00 3.165042163055026E-04 + 5.128000000000000E+00 3.156111298736987E-04 + 5.129000000000000E+00 3.147205133079922E-04 + 5.130000000000000E+00 3.138323599450312E-04 + 5.131000000000000E+00 3.129466631388831E-04 + 5.132000000000000E+00 3.120634162609907E-04 + 5.133000000000000E+00 3.111826127001307E-04 + 5.134000000000000E+00 3.103042458623667E-04 + 5.135000000000000E+00 3.094283091710100E-04 + 5.136000000000000E+00 3.085547960665737E-04 + 5.137000000000000E+00 3.076837000067292E-04 + 5.138000000000000E+00 3.068150144662661E-04 + 5.139000000000000E+00 3.059487329370442E-04 + 5.140000000000000E+00 3.050848489279572E-04 + 5.141000000000000E+00 3.042233559648830E-04 + 5.142000000000000E+00 3.033642475906472E-04 + 5.143000000000000E+00 3.025075173649758E-04 + 5.144000000000000E+00 3.016531588644562E-04 + 5.145000000000000E+00 3.008011656824916E-04 + 5.146000000000000E+00 2.999515314292619E-04 + 5.147000000000000E+00 2.991042497316801E-04 + 5.148000000000000E+00 2.982593142333502E-04 + 5.149000000000000E+00 2.974167185945243E-04 + 5.150000000000000E+00 2.965764564920630E-04 + 5.151000000000000E+00 2.957385216193920E-04 + 5.152000000000000E+00 2.949029076864607E-04 + 5.153000000000000E+00 2.940696084197018E-04 + 5.154000000000000E+00 2.932386175619871E-04 + 5.155000000000000E+00 2.924099288725892E-04 + 5.156000000000000E+00 2.915835361271388E-04 + 5.157000000000000E+00 2.907594331175832E-04 + 5.158000000000000E+00 2.899376136521463E-04 + 5.159000000000000E+00 2.891180715552861E-04 + 5.160000000000000E+00 2.883008006676555E-04 + 5.161000000000000E+00 2.874857948460607E-04 + 5.162000000000000E+00 2.866730479634214E-04 + 5.163000000000000E+00 2.858625539087272E-04 + 5.164000000000000E+00 2.850543065870018E-04 + 5.165000000000000E+00 2.842482999192580E-04 + 5.166000000000000E+00 2.834445278424615E-04 + 5.167000000000000E+00 2.826429843094876E-04 + 5.168000000000000E+00 2.818436632890826E-04 + 5.169000000000000E+00 2.810465587658232E-04 + 5.170000000000000E+00 2.802516647400782E-04 + 5.171000000000000E+00 2.794589752279647E-04 + 5.172000000000000E+00 2.786684842613135E-04 + 5.173000000000000E+00 2.778801858876261E-04 + 5.174000000000000E+00 2.770940741700351E-04 + 5.175000000000000E+00 2.763101431872681E-04 + 5.176000000000000E+00 2.755283870336038E-04 + 5.177000000000000E+00 2.747487998188355E-04 + 5.178000000000000E+00 2.739713756682325E-04 + 5.179000000000000E+00 2.731961087224977E-04 + 5.180000000000000E+00 2.724229931377336E-04 + 5.181000000000000E+00 2.716520230853981E-04 + 5.182000000000000E+00 2.708831927522705E-04 + 5.183000000000000E+00 2.701164963404091E-04 + 5.184000000000000E+00 2.693519280671142E-04 + 5.185000000000000E+00 2.685894821648913E-04 + 5.186000000000000E+00 2.678291528814086E-04 + 5.187000000000000E+00 2.670709344794622E-04 + 5.188000000000000E+00 2.663148212369364E-04 + 5.189000000000000E+00 2.655608074467661E-04 + 5.190000000000000E+00 2.648088874168975E-04 + 5.191000000000000E+00 2.640590554702529E-04 + 5.192000000000000E+00 2.633113059446894E-04 + 5.193000000000000E+00 2.625656331929633E-04 + 5.194000000000000E+00 2.618220315826922E-04 + 5.195000000000000E+00 2.610804954963170E-04 + 5.196000000000000E+00 2.603410193310646E-04 + 5.197000000000000E+00 2.596035974989095E-04 + 5.198000000000000E+00 2.588682244265391E-04 + 5.199000000000000E+00 2.581348945553127E-04 + 5.200000000000000E+00 2.574036023412280E-04 + 5.201000000000000E+00 2.566743422548817E-04 + 5.202000000000000E+00 2.559471087814333E-04 + 5.203000000000000E+00 2.552218964205684E-04 + 5.204000000000000E+00 2.544986996864617E-04 + 5.205000000000000E+00 2.537775131077405E-04 + 5.206000000000000E+00 2.530583312274462E-04 + 5.207000000000000E+00 2.523411486030027E-04 + 5.208000000000000E+00 2.516259598061734E-04 + 5.209000000000000E+00 2.509127594230305E-04 + 5.210000000000000E+00 2.502015420539155E-04 + 5.211000000000000E+00 2.494923023134033E-04 + 5.212000000000000E+00 2.487850348302680E-04 + 5.213000000000000E+00 2.480797342474449E-04 + 5.214000000000000E+00 2.473763952219960E-04 + 5.215000000000000E+00 2.466750124250720E-04 + 5.216000000000000E+00 2.459755805418797E-04 + 5.217000000000000E+00 2.452780942716433E-04 + 5.218000000000000E+00 2.445825483275722E-04 + 5.219000000000000E+00 2.438889374368210E-04 + 5.220000000000000E+00 2.431972563404584E-04 + 5.221000000000000E+00 2.425074997934301E-04 + 5.222000000000000E+00 2.418196625645226E-04 + 5.223000000000000E+00 2.411337394363298E-04 + 5.224000000000000E+00 2.404497252052162E-04 + 5.225000000000000E+00 2.397676146812849E-04 + 5.226000000000000E+00 2.390874026883385E-04 + 5.227000000000000E+00 2.384090840638474E-04 + 5.228000000000000E+00 2.377326536589150E-04 + 5.229000000000000E+00 2.370581063382407E-04 + 5.230000000000000E+00 2.363854369800878E-04 + 5.231000000000000E+00 2.357146404762482E-04 + 5.232000000000000E+00 2.350457117320075E-04 + 5.233000000000000E+00 2.343786456661112E-04 + 5.234000000000000E+00 2.337134372107306E-04 + 5.235000000000000E+00 2.330500813114279E-04 + 5.236000000000000E+00 2.323885729271234E-04 + 5.237000000000000E+00 2.317289070300602E-04 + 5.238000000000000E+00 2.310710786057712E-04 + 5.239000000000000E+00 2.304150826530450E-04 + 5.240000000000000E+00 2.297609141838917E-04 + 5.241000000000000E+00 2.291085682235105E-04 + 5.242000000000000E+00 2.284580398102548E-04 + 5.243000000000000E+00 2.278093239955990E-04 + 5.244000000000000E+00 2.271624158441060E-04 + 5.245000000000000E+00 2.265173104333925E-04 + 5.246000000000000E+00 2.258740028540969E-04 + 5.247000000000000E+00 2.252324882098458E-04 + 5.248000000000000E+00 2.245927616172205E-04 + 5.249000000000000E+00 2.239548182057245E-04 + 5.250000000000000E+00 2.233186531177499E-04 + 5.251000000000000E+00 2.226842615085457E-04 + 5.252000000000000E+00 2.220516385461838E-04 + 5.253000000000000E+00 2.214207794115272E-04 + 5.254000000000000E+00 2.207916792981971E-04 + 5.255000000000000E+00 2.201643334125400E-04 + 5.256000000000000E+00 2.195387369735959E-04 + 5.257000000000000E+00 2.189148852130652E-04 + 5.258000000000000E+00 2.182927733752774E-04 + 5.259000000000000E+00 2.176723967171576E-04 + 5.260000000000000E+00 2.170537505081956E-04 + 5.261000000000000E+00 2.164368300304132E-04 + 5.262000000000000E+00 2.158216305783321E-04 + 5.263000000000000E+00 2.152081474589424E-04 + 5.264000000000000E+00 2.145963759916703E-04 + 5.265000000000000E+00 2.139863115083469E-04 + 5.266000000000000E+00 2.133779493531764E-04 + 5.267000000000000E+00 2.127712848827038E-04 + 5.268000000000000E+00 2.121663134657845E-04 + 5.269000000000000E+00 2.115630304835520E-04 + 5.270000000000000E+00 2.109614313293868E-04 + 5.271000000000000E+00 2.103615114088855E-04 + 5.272000000000000E+00 2.097632661398286E-04 + 5.273000000000000E+00 2.091666909521506E-04 + 5.274000000000000E+00 2.085717812879079E-04 + 5.275000000000000E+00 2.079785326012484E-04 + 5.276000000000000E+00 2.073869403583805E-04 + 5.277000000000000E+00 2.067970000375420E-04 + 5.278000000000000E+00 2.062087071289695E-04 + 5.279000000000000E+00 2.056220571348681E-04 + 5.280000000000000E+00 2.050370455693798E-04 + 5.281000000000000E+00 2.044536679585544E-04 + 5.282000000000000E+00 2.038719198403173E-04 + 5.283000000000000E+00 2.032917967644405E-04 + 5.284000000000000E+00 2.027132942925120E-04 + 5.285000000000000E+00 2.021364079979049E-04 + 5.286000000000000E+00 2.015611334657481E-04 + 5.287000000000000E+00 2.009874662928956E-04 + 5.288000000000000E+00 2.004154020878965E-04 + 5.289000000000000E+00 1.998449364709657E-04 + 5.290000000000000E+00 1.992760650739531E-04 + 5.291000000000000E+00 1.987087835403145E-04 + 5.292000000000000E+00 1.981430875250816E-04 + 5.293000000000000E+00 1.975789726948322E-04 + 5.294000000000000E+00 1.970164347276609E-04 + 5.295000000000000E+00 1.964554693131495E-04 + 5.296000000000000E+00 1.958960721523374E-04 + 5.297000000000000E+00 1.953382389576925E-04 + 5.298000000000000E+00 1.947819654530815E-04 + 5.299000000000000E+00 1.942272473737411E-04 + 5.300000000000000E+00 1.936740804662488E-04 + 5.301000000000000E+00 1.931224604884933E-04 + 5.302000000000000E+00 1.925723832096462E-04 + 5.303000000000000E+00 1.920238444101328E-04 + 5.304000000000000E+00 1.914768398816027E-04 + 5.305000000000000E+00 1.909313654269019E-04 + 5.306000000000000E+00 1.903874168600433E-04 + 5.307000000000000E+00 1.898449900061785E-04 + 5.308000000000000E+00 1.893040807015693E-04 + 5.309000000000000E+00 1.887646847935585E-04 + 5.310000000000000E+00 1.882267981405422E-04 + 5.311000000000000E+00 1.876904166119410E-04 + 5.312000000000000E+00 1.871555360881719E-04 + 5.313000000000000E+00 1.866221524606199E-04 + 5.314000000000000E+00 1.860902616316097E-04 + 5.315000000000000E+00 1.855598595143782E-04 + 5.316000000000000E+00 1.850309420330456E-04 + 5.317000000000000E+00 1.845035051225883E-04 + 5.318000000000000E+00 1.839775447288102E-04 + 5.319000000000000E+00 1.834530568083155E-04 + 5.320000000000000E+00 1.829300373284805E-04 + 5.321000000000000E+00 1.824084822674262E-04 + 5.322000000000000E+00 1.818883876139906E-04 + 5.323000000000000E+00 1.813697493677009E-04 + 5.324000000000000E+00 1.808525635387465E-04 + 5.325000000000000E+00 1.803368261479510E-04 + 5.326000000000000E+00 1.798225332267453E-04 + 5.327000000000000E+00 1.793096808171402E-04 + 5.328000000000000E+00 1.787982649716989E-04 + 5.329000000000000E+00 1.782882817535103E-04 + 5.330000000000000E+00 1.777797272361614E-04 + 5.331000000000000E+00 1.772725975037107E-04 + 5.332000000000000E+00 1.767668886506612E-04 + 5.333000000000000E+00 1.762625967819331E-04 + 5.334000000000000E+00 1.757597180128376E-04 + 5.335000000000000E+00 1.752582484690496E-04 + 5.336000000000000E+00 1.747581842865812E-04 + 5.337000000000000E+00 1.742595216117552E-04 + 5.338000000000000E+00 1.737622566011785E-04 + 5.339000000000000E+00 1.732663854217152E-04 + 5.340000000000000E+00 1.727719042504611E-04 + 5.341000000000000E+00 1.722788092747159E-04 + 5.342000000000000E+00 1.717870966919585E-04 + 5.343000000000000E+00 1.712967627098196E-04 + 5.344000000000000E+00 1.708078035460559E-04 + 5.345000000000000E+00 1.703202154285243E-04 + 5.346000000000000E+00 1.698339945951552E-04 + 5.347000000000000E+00 1.693491372939270E-04 + 5.348000000000000E+00 1.688656397828404E-04 + 5.349000000000000E+00 1.683834983298917E-04 + 5.350000000000000E+00 1.679027092130478E-04 + 5.351000000000000E+00 1.674232687202202E-04 + 5.352000000000000E+00 1.669451731492392E-04 + 5.353000000000000E+00 1.664684188078287E-04 + 5.354000000000000E+00 1.659930020135801E-04 + 5.355000000000000E+00 1.655189190939273E-04 + 5.356000000000000E+00 1.650461663861211E-04 + 5.357000000000000E+00 1.645747402372037E-04 + 5.358000000000000E+00 1.641046370039839E-04 + 5.359000000000000E+00 1.636358530530113E-04 + 5.360000000000000E+00 1.631683847605515E-04 + 5.361000000000000E+00 1.627022285125610E-04 + 5.362000000000000E+00 1.622373807046616E-04 + 5.363000000000000E+00 1.617738377421165E-04 + 5.364000000000000E+00 1.613115960398044E-04 + 5.365000000000000E+00 1.608506520221952E-04 + 5.366000000000000E+00 1.603910021233249E-04 + 5.367000000000000E+00 1.599326427867710E-04 + 5.368000000000000E+00 1.594755704656279E-04 + 5.369000000000000E+00 1.590197816224823E-04 + 5.370000000000000E+00 1.585652727293883E-04 + 5.371000000000000E+00 1.581120402678433E-04 + 5.372000000000000E+00 1.576600807287637E-04 + 5.373000000000000E+00 1.572093906124600E-04 + 5.374000000000000E+00 1.567599664286129E-04 + 5.375000000000000E+00 1.563118046962491E-04 + 5.376000000000000E+00 1.558649019437166E-04 + 5.377000000000000E+00 1.554192547086612E-04 + 5.378000000000000E+00 1.549748595380020E-04 + 5.379000000000000E+00 1.545317129879077E-04 + 5.380000000000000E+00 1.540898116237725E-04 + 5.381000000000000E+00 1.536491520201921E-04 + 5.382000000000000E+00 1.532097307609402E-04 + 5.383000000000000E+00 1.527715444389442E-04 + 5.384000000000000E+00 1.523345896562621E-04 + 5.385000000000000E+00 1.518988630240587E-04 + 5.386000000000000E+00 1.514643611625811E-04 + 5.387000000000000E+00 1.510310807011370E-04 + 5.388000000000000E+00 1.505990182780693E-04 + 5.389000000000000E+00 1.501681705407339E-04 + 5.390000000000000E+00 1.497385341454759E-04 + 5.391000000000000E+00 1.493101057576064E-04 + 5.392000000000000E+00 1.488828820513791E-04 + 5.393000000000000E+00 1.484568597099675E-04 + 5.394000000000000E+00 1.480320354254412E-04 + 5.395000000000000E+00 1.476084058987433E-04 + 5.396000000000000E+00 1.471859678396672E-04 + 5.397000000000000E+00 1.467647179668334E-04 + 5.398000000000000E+00 1.463446530076674E-04 + 5.399000000000000E+00 1.459257696983757E-04 + 5.400000000000000E+00 1.455080647839241E-04 + 5.401000000000000E+00 1.450915350180142E-04 + 5.402000000000000E+00 1.446761771630610E-04 + 5.403000000000000E+00 1.442619879901704E-04 + 5.404000000000000E+00 1.438489642791166E-04 + 5.405000000000000E+00 1.434371028183192E-04 + 5.406000000000000E+00 1.430264004048215E-04 + 5.407000000000000E+00 1.426168538442674E-04 + 5.408000000000000E+00 1.422084599508792E-04 + 5.409000000000000E+00 1.418012155474359E-04 + 5.410000000000000E+00 1.413951174652500E-04 + 5.411000000000000E+00 1.409901625441463E-04 + 5.412000000000000E+00 1.405863476324389E-04 + 5.413000000000000E+00 1.401836695869098E-04 + 5.414000000000000E+00 1.397821252727868E-04 + 5.415000000000000E+00 1.393817115637209E-04 + 5.416000000000000E+00 1.389824253417655E-04 + 5.417000000000000E+00 1.385842634973536E-04 + 5.418000000000000E+00 1.381872229292762E-04 + 5.419000000000000E+00 1.377913005446611E-04 + 5.420000000000000E+00 1.373964932589506E-04 + 5.421000000000000E+00 1.370027979958804E-04 + 5.422000000000000E+00 1.366102116874572E-04 + 5.423000000000000E+00 1.362187312739383E-04 + 5.424000000000000E+00 1.358283537038092E-04 + 5.425000000000000E+00 1.354390759337626E-04 + 5.426000000000000E+00 1.350508949286769E-04 + 5.427000000000000E+00 1.346638076615952E-04 + 5.428000000000000E+00 1.342778111137035E-04 + 5.429000000000000E+00 1.338929022743102E-04 + 5.430000000000000E+00 1.335090781408243E-04 + 5.431000000000000E+00 1.331263357187343E-04 + 5.432000000000000E+00 1.327446720215880E-04 + 5.433000000000000E+00 1.323640840709706E-04 + 5.434000000000000E+00 1.319845688964840E-04 + 5.435000000000000E+00 1.316061235357263E-04 + 5.436000000000000E+00 1.312287450342704E-04 + 5.437000000000000E+00 1.308524304456436E-04 + 5.438000000000000E+00 1.304771768313068E-04 + 5.439000000000000E+00 1.301029812606336E-04 + 5.440000000000000E+00 1.297298408108901E-04 + 5.441000000000000E+00 1.293577525672140E-04 + 5.442000000000000E+00 1.289867136225939E-04 + 5.443000000000000E+00 1.286167210778494E-04 + 5.444000000000000E+00 1.282477720416102E-04 + 5.445000000000000E+00 1.278798636302960E-04 + 5.446000000000000E+00 1.275129929680958E-04 + 5.447000000000000E+00 1.271471571869483E-04 + 5.448000000000000E+00 1.267823534265208E-04 + 5.449000000000000E+00 1.264185788341899E-04 + 5.450000000000000E+00 1.260558305650207E-04 + 5.451000000000000E+00 1.256941057817475E-04 + 5.452000000000000E+00 1.253334016547526E-04 + 5.453000000000000E+00 1.249737153620476E-04 + 5.454000000000000E+00 1.246150440892527E-04 + 5.455000000000000E+00 1.242573850295771E-04 + 5.456000000000000E+00 1.239007353837990E-04 + 5.457000000000000E+00 1.235450923602463E-04 + 5.458000000000000E+00 1.231904531747762E-04 + 5.459000000000000E+00 1.228368150507559E-04 + 5.460000000000000E+00 1.224841752190433E-04 + 5.461000000000000E+00 1.221325309179667E-04 + 5.462000000000000E+00 1.217818793933059E-04 + 5.463000000000000E+00 1.214322178982724E-04 + 5.464000000000000E+00 1.210835436934901E-04 + 5.465000000000000E+00 1.207358540469759E-04 + 5.466000000000000E+00 1.203891462341202E-04 + 5.467000000000000E+00 1.200434175376680E-04 + 5.468000000000000E+00 1.196986652476995E-04 + 5.469000000000000E+00 1.193548866616107E-04 + 5.470000000000000E+00 1.190120790840944E-04 + 5.471000000000000E+00 1.186702398271213E-04 + 5.472000000000000E+00 1.183293662099209E-04 + 5.473000000000000E+00 1.179894555589621E-04 + 5.474000000000000E+00 1.176505052079349E-04 + 5.475000000000000E+00 1.173125124977310E-04 + 5.476000000000000E+00 1.169754747764252E-04 + 5.477000000000000E+00 1.166393893992566E-04 + 5.478000000000000E+00 1.163042537286097E-04 + 5.479000000000000E+00 1.159700651339958E-04 + 5.480000000000000E+00 1.156368209920342E-04 + 5.481000000000000E+00 1.153045186864340E-04 + 5.482000000000000E+00 1.149731556079751E-04 + 5.483000000000000E+00 1.146427291544895E-04 + 5.484000000000000E+00 1.143132367308438E-04 + 5.485000000000000E+00 1.139846757489193E-04 + 5.486000000000000E+00 1.136570436275954E-04 + 5.487000000000000E+00 1.133303377927295E-04 + 5.488000000000000E+00 1.130045556771400E-04 + 5.489000000000000E+00 1.126796947205873E-04 + 5.490000000000000E+00 1.123557523697559E-04 + 5.491000000000000E+00 1.120327260782364E-04 + 5.492000000000000E+00 1.117106133065073E-04 + 5.493000000000000E+00 1.113894115219165E-04 + 5.494000000000000E+00 1.110691181986640E-04 + 5.495000000000000E+00 1.107497308177833E-04 + 5.496000000000000E+00 1.104312468671241E-04 + 5.497000000000000E+00 1.101136638413339E-04 + 5.498000000000000E+00 1.097969792418402E-04 + 5.499000000000000E+00 1.094811905768332E-04 + 5.500000000000000E+00 1.091662953612474E-04 + 5.501000000000000E+00 1.088522911167445E-04 + 5.502000000000000E+00 1.085391753716953E-04 + 5.503000000000000E+00 1.082269456611623E-04 + 5.504000000000000E+00 1.079155995268821E-04 + 5.505000000000000E+00 1.076051345172479E-04 + 5.506000000000000E+00 1.072955481872918E-04 + 5.507000000000000E+00 1.069868380986679E-04 + 5.508000000000000E+00 1.066790018196344E-04 + 5.509000000000000E+00 1.063720369250364E-04 + 5.510000000000000E+00 1.060659409962888E-04 + 5.511000000000000E+00 1.057607116213585E-04 + 5.512000000000000E+00 1.054563463947479E-04 + 5.513000000000000E+00 1.051528429174774E-04 + 5.514000000000000E+00 1.048501987970680E-04 + 5.515000000000000E+00 1.045484116475247E-04 + 5.516000000000000E+00 1.042474790893190E-04 + 5.517000000000000E+00 1.039473987493726E-04 + 5.518000000000000E+00 1.036481682610394E-04 + 5.519000000000000E+00 1.033497852640896E-04 + 5.520000000000000E+00 1.030522474046921E-04 + 5.521000000000000E+00 1.027555523353982E-04 + 5.522000000000000E+00 1.024596977151246E-04 + 5.523000000000000E+00 1.021646812091364E-04 + 5.524000000000000E+00 1.018705004890308E-04 + 5.525000000000000E+00 1.015771532327204E-04 + 5.526000000000000E+00 1.012846371244163E-04 + 5.527000000000000E+00 1.009929498546118E-04 + 5.528000000000000E+00 1.007020891200656E-04 + 5.529000000000000E+00 1.004120526237858E-04 + 5.530000000000000E+00 1.001228380750128E-04 + 5.531000000000000E+00 9.983444318920343E-05 + 5.532000000000000E+00 9.954686568801426E-05 + 5.533000000000000E+00 9.926010329928550E-05 + 5.534000000000000E+00 9.897415375702453E-05 + 5.535000000000000E+00 9.868901480138980E-05 + 5.536000000000000E+00 9.840468417867449E-05 + 5.537000000000000E+00 9.812115964129055E-05 + 5.538000000000000E+00 9.783843894775231E-05 + 5.539000000000000E+00 9.755651986266084E-05 + 5.540000000000000E+00 9.727540015668718E-05 + 5.541000000000000E+00 9.699507760655724E-05 + 5.542000000000000E+00 9.671554999503511E-05 + 5.543000000000000E+00 9.643681511090757E-05 + 5.544000000000000E+00 9.615887074896808E-05 + 5.545000000000000E+00 9.588171471000087E-05 + 5.546000000000000E+00 9.560534480076525E-05 + 5.547000000000000E+00 9.532975883397987E-05 + 5.548000000000000E+00 9.505495462830684E-05 + 5.549000000000000E+00 9.478093000833640E-05 + 5.550000000000000E+00 9.450768280457084E-05 + 5.551000000000000E+00 9.423521085340916E-05 + 5.552000000000000E+00 9.396351199713162E-05 + 5.553000000000000E+00 9.369258408388392E-05 + 5.554000000000000E+00 9.342242496766197E-05 + 5.555000000000000E+00 9.315303250829640E-05 + 5.556000000000000E+00 9.288440457143703E-05 + 5.557000000000000E+00 9.261653902853774E-05 + 5.558000000000000E+00 9.234943375684093E-05 + 5.559000000000000E+00 9.208308663936224E-05 + 5.560000000000000E+00 9.181749556487564E-05 + 5.561000000000000E+00 9.155265842789782E-05 + 5.562000000000000E+00 9.128857312867319E-05 + 5.563000000000000E+00 9.102523757315882E-05 + 5.564000000000000E+00 9.076264967300918E-05 + 5.565000000000000E+00 9.050080734556129E-05 + 5.566000000000000E+00 9.023970851381957E-05 + 5.567000000000000E+00 8.997935110644085E-05 + 5.568000000000000E+00 8.971973305771963E-05 + 5.569000000000000E+00 8.946085230757296E-05 + 5.570000000000000E+00 8.920270680152557E-05 + 5.571000000000000E+00 8.894529449069535E-05 + 5.572000000000000E+00 8.868861333177814E-05 + 5.573000000000000E+00 8.843266128703331E-05 + 5.574000000000000E+00 8.817743632426901E-05 + 5.575000000000000E+00 8.792293641682721E-05 + 5.576000000000000E+00 8.766915954356949E-05 + 5.577000000000000E+00 8.741610368886224E-05 + 5.578000000000000E+00 8.716376684256192E-05 + 5.579000000000000E+00 8.691214700000085E-05 + 5.580000000000000E+00 8.666124216197254E-05 + 5.581000000000000E+00 8.641105033471728E-05 + 5.582000000000000E+00 8.616156952990783E-05 + 5.583000000000000E+00 8.591279776463475E-05 + 5.584000000000000E+00 8.566473306139252E-05 + 5.585000000000000E+00 8.541737344806473E-05 + 5.586000000000000E+00 8.517071695791025E-05 + 5.587000000000000E+00 8.492476162954864E-05 + 5.588000000000000E+00 8.467950550694631E-05 + 5.589000000000000E+00 8.443494663940205E-05 + 5.590000000000000E+00 8.419108308153310E-05 + 5.591000000000000E+00 8.394791289326096E-05 + 5.592000000000000E+00 8.370543413979742E-05 + 5.593000000000000E+00 8.346364489163052E-05 + 5.594000000000000E+00 8.322254322451052E-05 + 5.595000000000000E+00 8.298212721943605E-05 + 5.596000000000000E+00 8.274239496264001E-05 + 5.597000000000000E+00 8.250334454557610E-05 + 5.598000000000000E+00 8.226497406490455E-05 + 5.599000000000000E+00 8.202728162247848E-05 + 5.600000000000000E+00 8.179026532533026E-05 + 5.601000000000000E+00 8.155392328565759E-05 + 5.602000000000000E+00 8.131825362080988E-05 + 5.603000000000000E+00 8.108325445327474E-05 + 5.604000000000000E+00 8.084892391066397E-05 + 5.605000000000000E+00 8.061526012570041E-05 + 5.606000000000000E+00 8.038226123620410E-05 + 5.607000000000000E+00 8.014992538507885E-05 + 5.608000000000000E+00 7.991825072029876E-05 + 5.609000000000000E+00 7.968723539489478E-05 + 5.610000000000000E+00 7.945687756694123E-05 + 5.611000000000000E+00 7.922717539954244E-05 + 5.612000000000000E+00 7.899812706081940E-05 + 5.613000000000000E+00 7.876973072389658E-05 + 5.614000000000000E+00 7.854198456688845E-05 + 5.615000000000000E+00 7.831488677288618E-05 + 5.616000000000000E+00 7.808843552994482E-05 + 5.617000000000000E+00 7.786262903106966E-05 + 5.618000000000000E+00 7.763746547420337E-05 + 5.619000000000000E+00 7.741294306221279E-05 + 5.620000000000000E+00 7.718906000287583E-05 + 5.621000000000000E+00 7.696581450886849E-05 + 5.622000000000000E+00 7.674320479775186E-05 + 5.623000000000000E+00 7.652122909195899E-05 + 5.624000000000000E+00 7.629988561878215E-05 + 5.625000000000000E+00 7.607917261035975E-05 + 5.626000000000000E+00 7.585908830366357E-05 + 5.627000000000000E+00 7.563963094048592E-05 + 5.628000000000000E+00 7.542079876742669E-05 + 5.629000000000000E+00 7.520259003588070E-05 + 5.630000000000000E+00 7.498500300202495E-05 + 5.631000000000000E+00 7.476803592680584E-05 + 5.632000000000000E+00 7.455168707592657E-05 + 5.633000000000000E+00 7.433595471983432E-05 + 5.634000000000000E+00 7.412083713370787E-05 + 5.635000000000000E+00 7.390633259744490E-05 + 5.636000000000000E+00 7.369243939564930E-05 + 5.637000000000000E+00 7.347915581761895E-05 + 5.638000000000000E+00 7.326648015733293E-05 + 5.639000000000000E+00 7.305441071343930E-05 + 5.640000000000000E+00 7.284294578924254E-05 + 5.641000000000000E+00 7.263208369269113E-05 + 5.642000000000000E+00 7.242182273636542E-05 + 5.643000000000000E+00 7.221216123746500E-05 + 5.644000000000000E+00 7.200309751779649E-05 + 5.645000000000000E+00 7.179462990376143E-05 + 5.646000000000000E+00 7.158675672634393E-05 + 5.647000000000000E+00 7.137947632109838E-05 + 5.648000000000000E+00 7.117278702813753E-05 + 5.649000000000000E+00 7.096668719212002E-05 + 5.650000000000000E+00 7.076117516223854E-05 + 5.651000000000000E+00 7.055624929220767E-05 + 5.652000000000000E+00 7.035190794025169E-05 + 5.653000000000000E+00 7.014814946909287E-05 + 5.654000000000000E+00 6.994497224593924E-05 + 5.655000000000000E+00 6.974237464247260E-05 + 5.656000000000000E+00 6.954035503483687E-05 + 5.657000000000000E+00 6.933891180362585E-05 + 5.658000000000000E+00 6.913804333387172E-05 + 5.659000000000000E+00 6.893774801503290E-05 + 5.660000000000000E+00 6.873802424098235E-05 + 5.661000000000000E+00 6.853887040999591E-05 + 5.662000000000000E+00 6.834028492474043E-05 + 5.663000000000000E+00 6.814226619226207E-05 + 5.664000000000000E+00 6.794481262397470E-05 + 5.665000000000000E+00 6.774792263564815E-05 + 5.666000000000000E+00 6.755159464739668E-05 + 5.667000000000000E+00 6.735582708366731E-05 + 5.668000000000000E+00 6.716061837322838E-05 + 5.669000000000000E+00 6.696596694915778E-05 + 5.670000000000000E+00 6.677187124883173E-05 + 5.671000000000000E+00 6.657832971391317E-05 + 5.672000000000000E+00 6.638534079034032E-05 + 5.673000000000000E+00 6.619290292831518E-05 + 5.674000000000000E+00 6.600101458229241E-05 + 5.675000000000000E+00 6.580967421096771E-05 + 5.676000000000000E+00 6.561888027726663E-05 + 5.677000000000000E+00 6.542863124833321E-05 + 5.678000000000000E+00 6.523892559551881E-05 + 5.679000000000000E+00 6.504976179437078E-05 + 5.680000000000000E+00 6.486113832462119E-05 + 5.681000000000000E+00 6.467305367017594E-05 + 5.682000000000000E+00 6.448550631910314E-05 + 5.683000000000000E+00 6.429849476362251E-05 + 5.684000000000000E+00 6.411201750009390E-05 + 5.685000000000000E+00 6.392607302900640E-05 + 5.686000000000000E+00 6.374065985496732E-05 + 5.687000000000000E+00 6.355577648669096E-05 + 5.688000000000000E+00 6.337142143698797E-05 + 5.689000000000000E+00 6.318759322275417E-05 + 5.690000000000000E+00 6.300429036495962E-05 + 5.691000000000000E+00 6.282151138863795E-05 + 5.692000000000000E+00 6.263925482287520E-05 + 5.693000000000000E+00 6.245751920079912E-05 + 5.694000000000000E+00 6.227630305956847E-05 + 5.695000000000000E+00 6.209560494036201E-05 + 5.696000000000000E+00 6.191542338836790E-05 + 5.697000000000000E+00 6.173575695277294E-05 + 5.698000000000000E+00 6.155660418675184E-05 + 5.699000000000000E+00 6.137796364745664E-05 + 5.700000000000000E+00 6.119983389600591E-05 + 5.701000000000000E+00 6.102221349747432E-05 + 5.702000000000000E+00 6.084510102088190E-05 + 5.703000000000000E+00 6.066849503918352E-05 + 5.704000000000000E+00 6.049239412925845E-05 + 5.705000000000000E+00 6.031679687189969E-05 + 5.706000000000000E+00 6.014170185180360E-05 + 5.707000000000000E+00 5.996710765755949E-05 + 5.708000000000000E+00 5.979301288163899E-05 + 5.709000000000000E+00 5.961941612038592E-05 + 5.710000000000000E+00 5.944631597400575E-05 + 5.711000000000000E+00 5.927371104655524E-05 + 5.712000000000000E+00 5.910159994593227E-05 + 5.713000000000000E+00 5.892998128386534E-05 + 5.714000000000000E+00 5.875885367590353E-05 + 5.715000000000000E+00 5.858821574140609E-05 + 5.716000000000000E+00 5.841806610353235E-05 + 5.717000000000000E+00 5.824840338923134E-05 + 5.718000000000000E+00 5.807922622923191E-05 + 5.719000000000000E+00 5.791053325803240E-05 + 5.720000000000000E+00 5.774232311389057E-05 + 5.721000000000000E+00 5.757459443881358E-05 + 5.722000000000000E+00 5.740734587854787E-05 + 5.723000000000000E+00 5.724057608256919E-05 + 5.724000000000000E+00 5.707428370407245E-05 + 5.725000000000000E+00 5.690846739996204E-05 + 5.726000000000000E+00 5.674312583084156E-05 + 5.727000000000000E+00 5.657825766100411E-05 + 5.728000000000000E+00 5.641386155842229E-05 + 5.729000000000000E+00 5.624993619473831E-05 + 5.730000000000000E+00 5.608648024525427E-05 + 5.731000000000000E+00 5.592349238892224E-05 + 5.732000000000000E+00 5.576097130833442E-05 + 5.733000000000000E+00 5.559891568971346E-05 + 5.734000000000000E+00 5.543732422290275E-05 + 5.735000000000000E+00 5.527619560135652E-05 + 5.736000000000000E+00 5.511552852213035E-05 + 5.737000000000000E+00 5.495532168587134E-05 + 5.738000000000000E+00 5.479557379680859E-05 + 5.739000000000000E+00 5.463628356274352E-05 + 5.740000000000000E+00 5.447744969504021E-05 + 5.741000000000000E+00 5.431907090861601E-05 + 5.742000000000000E+00 5.416114592193185E-05 + 5.743000000000000E+00 5.400367345698267E-05 + 5.744000000000000E+00 5.384665223928814E-05 + 5.745000000000000E+00 5.369008099788300E-05 + 5.746000000000000E+00 5.353395846530763E-05 + 5.747000000000000E+00 5.337828337759877E-05 + 5.748000000000000E+00 5.322305447427993E-05 + 5.749000000000000E+00 5.306827049835222E-05 + 5.750000000000000E+00 5.291393019628480E-05 + 5.751000000000000E+00 5.276003231800567E-05 + 5.752000000000000E+00 5.260657561689241E-05 + 5.753000000000000E+00 5.245355884976278E-05 + 5.754000000000000E+00 5.230098077686556E-05 + 5.755000000000000E+00 5.214884016187134E-05 + 5.756000000000000E+00 5.199713577186320E-05 + 5.757000000000000E+00 5.184586637732761E-05 + 5.758000000000000E+00 5.169503075214542E-05 + 5.759000000000000E+00 5.154462767358235E-05 + 5.760000000000000E+00 5.139465592228027E-05 + 5.761000000000000E+00 5.124511428224792E-05 + 5.762000000000000E+00 5.109600154085186E-05 + 5.763000000000000E+00 5.094731648880750E-05 + 5.764000000000000E+00 5.079905792017000E-05 + 5.765000000000000E+00 5.065122463232533E-05 + 5.766000000000000E+00 5.050381542598137E-05 + 5.767000000000000E+00 5.035682910515884E-05 + 5.768000000000000E+00 5.021026447718243E-05 + 5.769000000000000E+00 5.006412035267192E-05 + 5.770000000000000E+00 4.991839554553330E-05 + 5.771000000000000E+00 4.977308887294996E-05 + 5.772000000000000E+00 4.962819915537371E-05 + 5.773000000000000E+00 4.948372521651625E-05 + 5.774000000000000E+00 4.933966588334005E-05 + 5.775000000000000E+00 4.919601998604989E-05 + 5.776000000000000E+00 4.905278635808394E-05 + 5.777000000000000E+00 4.890996383610513E-05 + 5.778000000000000E+00 4.876755125999244E-05 + 5.779000000000000E+00 4.862554747283223E-05 + 5.780000000000000E+00 4.848395132090955E-05 + 5.781000000000000E+00 4.834276165369966E-05 + 5.782000000000000E+00 4.820197732385923E-05 + 5.783000000000000E+00 4.806159718721795E-05 + 5.784000000000000E+00 4.792162010276984E-05 + 5.785000000000000E+00 4.778204493266476E-05 + 5.786000000000000E+00 4.764287054219999E-05 + 5.787000000000000E+00 4.750409579981158E-05 + 5.788000000000000E+00 4.736571957706597E-05 + 5.789000000000000E+00 4.722774074865160E-05 + 5.790000000000000E+00 4.709015819237035E-05 + 5.791000000000000E+00 4.695297078912930E-05 + 5.792000000000000E+00 4.681617742293225E-05 + 5.793000000000000E+00 4.667977698087130E-05 + 5.794000000000000E+00 4.654376835311871E-05 + 5.795000000000000E+00 4.640815043291845E-05 + 5.796000000000000E+00 4.627292211657791E-05 + 5.797000000000000E+00 4.613808230345972E-05 + 5.798000000000000E+00 4.600362989597336E-05 + 5.799000000000000E+00 4.586956379956707E-05 + 5.800000000000000E+00 4.573588292271958E-05 + 5.801000000000000E+00 4.560258617693199E-05 + 5.802000000000000E+00 4.546967247671946E-05 + 5.803000000000000E+00 4.533714073960324E-05 + 5.804000000000000E+00 4.520498988610245E-05 + 5.805000000000000E+00 4.507321883972606E-05 + 5.806000000000000E+00 4.494182652696468E-05 + 5.807000000000000E+00 4.481081187728269E-05 + 5.808000000000000E+00 4.468017382311004E-05 + 5.809000000000000E+00 4.454991129983431E-05 + 5.810000000000000E+00 4.442002324579270E-05 + 5.811000000000000E+00 4.429050860226412E-05 + 5.812000000000000E+00 4.416136631346118E-05 + 5.813000000000000E+00 4.403259532652225E-05 + 5.814000000000000E+00 4.390419459150353E-05 + 5.815000000000000E+00 4.377616306137126E-05 + 5.816000000000000E+00 4.364849969199384E-05 + 5.817000000000000E+00 4.352120344213380E-05 + 5.818000000000000E+00 4.339427327344025E-05 + 5.819000000000000E+00 4.326770815044087E-05 + 5.820000000000000E+00 4.314150704053421E-05 + 5.821000000000000E+00 4.301566891398189E-05 + 5.822000000000000E+00 4.289019274390088E-05 + 5.823000000000000E+00 4.276507750625576E-05 + 5.824000000000000E+00 4.264032217985109E-05 + 5.825000000000000E+00 4.251592574632357E-05 + 5.826000000000000E+00 4.239188719013445E-05 + 5.827000000000000E+00 4.226820549856205E-05 + 5.828000000000000E+00 4.214487966169382E-05 + 5.829000000000000E+00 4.202190867241902E-05 + 5.830000000000000E+00 4.189929152642100E-05 + 5.831000000000000E+00 4.177702722216961E-05 + 5.832000000000000E+00 4.165511476091373E-05 + 5.833000000000000E+00 4.153355314667371E-05 + 5.834000000000000E+00 4.141234138623396E-05 + 5.835000000000000E+00 4.129147848913527E-05 + 5.836000000000000E+00 4.117096346766751E-05 + 5.837000000000000E+00 4.105079533686214E-05 + 5.838000000000000E+00 4.093097311448473E-05 + 5.839000000000000E+00 4.081149582102763E-05 + 5.840000000000000E+00 4.069236247970258E-05 + 5.841000000000000E+00 4.057357211643327E-05 + 5.842000000000000E+00 4.045512375984803E-05 + 5.843000000000000E+00 4.033701644127255E-05 + 5.844000000000000E+00 4.021924919472249E-05 + 5.845000000000000E+00 4.010182105689629E-05 + 5.846000000000000E+00 3.998473106716774E-05 + 5.847000000000000E+00 3.986797826757889E-05 + 5.848000000000000E+00 3.975156170283275E-05 + 5.849000000000000E+00 3.963548042028603E-05 + 5.850000000000000E+00 3.951973346994208E-05 + 5.851000000000000E+00 3.940431990444353E-05 + 5.852000000000000E+00 3.928923877906528E-05 + 5.853000000000000E+00 3.917448915170730E-05 + 5.854000000000000E+00 3.906007008288751E-05 + 5.855000000000000E+00 3.894598063573471E-05 + 5.856000000000000E+00 3.883221987598145E-05 + 5.857000000000000E+00 3.871878687195704E-05 + 5.858000000000000E+00 3.860568069458039E-05 + 5.859000000000000E+00 3.849290041735313E-05 + 5.860000000000000E+00 3.838044511635243E-05 + 5.861000000000000E+00 3.826831387022418E-05 + 5.862000000000000E+00 3.815650576017592E-05 + 5.863000000000000E+00 3.804501986996991E-05 + 5.864000000000000E+00 3.793385528591618E-05 + 5.865000000000000E+00 3.782301109686563E-05 + 5.866000000000000E+00 3.771248639420315E-05 + 5.867000000000000E+00 3.760228027184075E-05 + 5.868000000000000E+00 3.749239182621051E-05 + 5.869000000000000E+00 3.738282015625814E-05 + 5.870000000000000E+00 3.727356436343573E-05 + 5.871000000000000E+00 3.716462355169513E-05 + 5.872000000000000E+00 3.705599682748127E-05 + 5.873000000000000E+00 3.694768329972513E-05 + 5.874000000000000E+00 3.683968207983722E-05 + 5.875000000000000E+00 3.673199228170070E-05 + 5.876000000000000E+00 3.662461302166470E-05 + 5.877000000000000E+00 3.651754341853774E-05 + 5.878000000000000E+00 3.641078259358076E-05 + 5.879000000000000E+00 3.630432967050076E-05 + 5.880000000000000E+00 3.619818377544397E-05 + 5.881000000000000E+00 3.609234403698930E-05 + 5.882000000000000E+00 3.598680958614167E-05 + 5.883000000000000E+00 3.588157955632549E-05 + 5.884000000000000E+00 3.577665308337794E-05 + 5.885000000000000E+00 3.567202930554264E-05 + 5.886000000000000E+00 3.556770736346285E-05 + 5.887000000000000E+00 3.546368640017512E-05 + 5.888000000000000E+00 3.535996556110276E-05 + 5.889000000000000E+00 3.525654399404921E-05 + 5.890000000000000E+00 3.515342084919179E-05 + 5.891000000000000E+00 3.505059527907499E-05 + 5.892000000000000E+00 3.494806643860429E-05 + 5.893000000000000E+00 3.484583348503959E-05 + 5.894000000000000E+00 3.474389557798870E-05 + 5.895000000000000E+00 3.464225187940121E-05 + 5.896000000000000E+00 3.454090155356190E-05 + 5.897000000000000E+00 3.443984376708450E-05 + 5.898000000000000E+00 3.433907768890534E-05 + 5.899000000000000E+00 3.423860249027687E-05 + 5.900000000000000E+00 3.413841734476166E-05 + 5.901000000000000E+00 3.403852142822581E-05 + 5.902000000000000E+00 3.393891391883288E-05 + 5.903000000000000E+00 3.383959399703749E-05 + 5.904000000000000E+00 3.374056084557923E-05 + 5.905000000000000E+00 3.364181364947628E-05 + 5.906000000000000E+00 3.354335159601931E-05 + 5.907000000000000E+00 3.344517387476528E-05 + 5.908000000000000E+00 3.334727967753121E-05 + 5.909000000000000E+00 3.324966819838807E-05 + 5.910000000000000E+00 3.315233863365468E-05 + 5.911000000000000E+00 3.305529018189144E-05 + 5.912000000000000E+00 3.295852204389439E-05 + 5.913000000000000E+00 3.286203342268901E-05 + 5.914000000000000E+00 3.276582352352418E-05 + 5.915000000000000E+00 3.266989155386610E-05 + 5.916000000000000E+00 3.257423672339231E-05 + 5.917000000000000E+00 3.247885824398559E-05 + 5.918000000000000E+00 3.238375532972791E-05 + 5.919000000000000E+00 3.228892719689461E-05 + 5.920000000000000E+00 3.219437306394821E-05 + 5.921000000000000E+00 3.210009215153259E-05 + 5.922000000000000E+00 3.200608368246698E-05 + 5.923000000000000E+00 3.191234688174004E-05 + 5.924000000000000E+00 3.181888097650393E-05 + 5.925000000000000E+00 3.172568519606843E-05 + 5.926000000000000E+00 3.163275877189504E-05 + 5.927000000000000E+00 3.154010093759114E-05 + 5.928000000000000E+00 3.144771092890404E-05 + 5.929000000000000E+00 3.135558798371530E-05 + 5.930000000000000E+00 3.126373134203474E-05 + 5.931000000000000E+00 3.117214024599474E-05 + 5.932000000000000E+00 3.108081393984441E-05 + 5.933000000000000E+00 3.098975166994384E-05 + 5.934000000000000E+00 3.089895268475827E-05 + 5.935000000000000E+00 3.080841623485243E-05 + 5.936000000000000E+00 3.071814157288473E-05 + 5.937000000000000E+00 3.062812795360161E-05 + 5.938000000000000E+00 3.053837463383176E-05 + 5.939000000000000E+00 3.044888087248054E-05 + 5.940000000000000E+00 3.035964593052421E-05 + 5.941000000000000E+00 3.027066907100435E-05 + 5.942000000000000E+00 3.018194955902212E-05 + 5.943000000000000E+00 3.009348666173278E-05 + 5.944000000000000E+00 3.000527964833993E-05 + 5.945000000000000E+00 2.991732779008998E-05 + 5.946000000000000E+00 2.982963036026663E-05 + 5.947000000000000E+00 2.974218663418515E-05 + 5.948000000000000E+00 2.965499588918698E-05 + 5.949000000000000E+00 2.956805740463415E-05 + 5.950000000000000E+00 2.948137046190366E-05 + 5.951000000000000E+00 2.939493434438212E-05 + 5.952000000000000E+00 2.930874833746020E-05 + 5.953000000000000E+00 2.922281172852705E-05 + 5.954000000000000E+00 2.913712380696500E-05 + 5.955000000000000E+00 2.905168386414403E-05 + 5.956000000000000E+00 2.896649119341630E-05 + 5.957000000000000E+00 2.888154509011081E-05 + 5.958000000000000E+00 2.879684485152795E-05 + 5.959000000000000E+00 2.871238977693408E-05 + 5.960000000000000E+00 2.862817916755625E-05 + 5.961000000000000E+00 2.854421232657669E-05 + 5.962000000000000E+00 2.846048855912759E-05 + 5.963000000000000E+00 2.837700717228573E-05 + 5.964000000000000E+00 2.829376747506710E-05 + 5.965000000000000E+00 2.821076877842171E-05 + 5.966000000000000E+00 2.812801039522814E-05 + 5.967000000000000E+00 2.804549164028840E-05 + 5.968000000000000E+00 2.796321183032267E-05 + 5.969000000000000E+00 2.788117028396388E-05 + 5.970000000000000E+00 2.779936632175268E-05 + 5.971000000000000E+00 2.771779926613209E-05 + 5.972000000000000E+00 2.763646844144233E-05 + 5.973000000000000E+00 2.755537317391565E-05 + 5.974000000000000E+00 2.747451279167110E-05 + 5.975000000000000E+00 2.739388662470938E-05 + 5.976000000000000E+00 2.731349400490773E-05 + 5.977000000000000E+00 2.723333426601473E-05 + 5.978000000000000E+00 2.715340674364522E-05 + 5.979000000000000E+00 2.707371077527508E-05 + 5.980000000000000E+00 2.699424570023637E-05 + 5.981000000000000E+00 2.691501085971200E-05 + 5.982000000000000E+00 2.683600559673075E-05 + 5.983000000000000E+00 2.675722925616221E-05 + 5.984000000000000E+00 2.667868118471179E-05 + 5.985000000000000E+00 2.660036073091560E-05 + 5.986000000000000E+00 2.652226724513550E-05 + 5.987000000000000E+00 2.644440007955402E-05 + 5.988000000000000E+00 2.636675858816948E-05 + 5.989000000000000E+00 2.628934212679093E-05 + 5.990000000000000E+00 2.621215005303315E-05 + 5.991000000000000E+00 2.613518172631183E-05 + 5.992000000000000E+00 2.605843650783853E-05 + 5.993000000000000E+00 2.598191376061573E-05 + 5.994000000000000E+00 2.590561284943209E-05 + 5.995000000000000E+00 2.582953314085731E-05 + 5.996000000000000E+00 2.575367400323745E-05 + 5.997000000000000E+00 2.567803480668992E-05 + 5.998000000000000E+00 2.560261492309872E-05 + 5.999000000000000E+00 2.552741372610952E-05 + 6.000000000000000E+00 2.545243059112487E-05 + 6.001000000000000E+00 2.537766489529936E-05 + 6.002000000000000E+00 2.530311601753483E-05 + 6.003000000000000E+00 2.522878333847551E-05 + 6.004000000000000E+00 2.515466624050337E-05 + 6.005000000000000E+00 2.508076410773326E-05 + 6.006000000000000E+00 2.500707632600808E-05 + 6.007000000000000E+00 2.493360228289424E-05 + 6.008000000000000E+00 2.486034136767672E-05 + 6.009000000000000E+00 2.478729297135448E-05 + 6.010000000000000E+00 2.471445648663573E-05 + 6.011000000000000E+00 2.464183130793318E-05 + 6.012000000000000E+00 2.456941683135945E-05 + 6.013000000000000E+00 2.449721245472232E-05 + 6.014000000000000E+00 2.442521757752013E-05 + 6.015000000000000E+00 2.435343160093710E-05 + 6.016000000000000E+00 2.428185392783871E-05 + 6.017000000000000E+00 2.421048396276711E-05 + 6.018000000000000E+00 2.413932111193648E-05 + 6.019000000000000E+00 2.406836478322841E-05 + 6.020000000000000E+00 2.399761438618743E-05 + 6.021000000000000E+00 2.392706933201628E-05 + 6.022000000000000E+00 2.385672903357148E-05 + 6.023000000000000E+00 2.378659290535875E-05 + 6.024000000000000E+00 2.371666036352847E-05 + 6.025000000000000E+00 2.364693082587111E-05 + 6.026000000000000E+00 2.357740371181282E-05 + 6.027000000000000E+00 2.350807844241091E-05 + 6.028000000000000E+00 2.343895444034922E-05 + 6.029000000000000E+00 2.337003112993394E-05 + 6.030000000000000E+00 2.330130793708880E-05 + 6.031000000000000E+00 2.323278428935095E-05 + 6.032000000000000E+00 2.316445961586624E-05 + 6.033000000000000E+00 2.309633334738504E-05 + 6.034000000000000E+00 2.302840491625764E-05 + 6.035000000000000E+00 2.296067375642993E-05 + 6.036000000000000E+00 2.289313930343904E-05 + 6.037000000000000E+00 2.282580099440887E-05 + 6.038000000000000E+00 2.275865826804584E-05 + 6.039000000000000E+00 2.269171056463445E-05 + 6.040000000000000E+00 2.262495732603290E-05 + 6.041000000000000E+00 2.255839799566894E-05 + 6.042000000000000E+00 2.249203201853538E-05 + 6.043000000000000E+00 2.242585884118578E-05 + 6.044000000000000E+00 2.235987791173027E-05 + 6.045000000000000E+00 2.229408867983121E-05 + 6.046000000000000E+00 2.222849059669888E-05 + 6.047000000000000E+00 2.216308311508726E-05 + 6.048000000000000E+00 2.209786568928974E-05 + 6.049000000000000E+00 2.203283777513496E-05 + 6.050000000000000E+00 2.196799882998249E-05 + 6.051000000000000E+00 2.190334831271870E-05 + 6.052000000000000E+00 2.183888568375247E-05 + 6.053000000000000E+00 2.177461040501106E-05 + 6.054000000000000E+00 2.171052193993591E-05 + 6.055000000000000E+00 2.164661975347842E-05 + 6.056000000000000E+00 2.158290331209588E-05 + 6.057000000000000E+00 2.151937208374724E-05 + 6.058000000000000E+00 2.145602553788906E-05 + 6.059000000000000E+00 2.139286314547127E-05 + 6.060000000000000E+00 2.132988437893316E-05 + 6.061000000000000E+00 2.126708871219922E-05 + 6.062000000000000E+00 2.120447562067502E-05 + 6.063000000000000E+00 2.114204458124323E-05 + 6.064000000000000E+00 2.107979507225941E-05 + 6.065000000000000E+00 2.101772657354809E-05 + 6.066000000000000E+00 2.095583856639862E-05 + 6.067000000000000E+00 2.089413053356116E-05 + 6.068000000000000E+00 2.083260195924265E-05 + 6.069000000000000E+00 2.077125232910284E-05 + 6.070000000000000E+00 2.071008113025021E-05 + 6.071000000000000E+00 2.064908785123800E-05 + 6.072000000000000E+00 2.058827198206025E-05 + 6.073000000000000E+00 2.052763301414782E-05 + 6.074000000000000E+00 2.046717044036437E-05 + 6.075000000000000E+00 2.040688375500249E-05 + 6.076000000000000E+00 2.034677245377971E-05 + 6.077000000000000E+00 2.028683603383457E-05 + 6.078000000000000E+00 2.022707399372270E-05 + 6.079000000000000E+00 2.016748583341296E-05 + 6.080000000000000E+00 2.010807105428345E-05 + 6.081000000000000E+00 2.004882915911768E-05 + 6.082000000000000E+00 1.998975965210070E-05 + 6.083000000000000E+00 1.993086203881515E-05 + 6.084000000000000E+00 1.987213582623753E-05 + 6.085000000000000E+00 1.981358052273425E-05 + 6.086000000000000E+00 1.975519563805781E-05 + 6.087000000000000E+00 1.969698068334303E-05 + 6.088000000000000E+00 1.963893517110316E-05 + 6.089000000000000E+00 1.958105861522612E-05 + 6.090000000000000E+00 1.952335053097067E-05 + 6.091000000000000E+00 1.946581043496266E-05 + 6.092000000000000E+00 1.940843784519122E-05 + 6.093000000000000E+00 1.935123228100506E-05 + 6.094000000000000E+00 1.929419326310859E-05 + 6.095000000000000E+00 1.923732031355828E-05 + 6.096000000000000E+00 1.918061295575893E-05 + 6.097000000000000E+00 1.912407071445985E-05 + 6.098000000000000E+00 1.906769311575126E-05 + 6.099000000000000E+00 1.901147968706049E-05 + 6.100000000000000E+00 1.895542995714831E-05 + 6.101000000000000E+00 1.889954345610531E-05 + 6.102000000000000E+00 1.884381971534811E-05 + 6.103000000000000E+00 1.878825826761583E-05 + 6.104000000000000E+00 1.873285864696629E-05 + 6.105000000000000E+00 1.867762038877243E-05 + 6.106000000000000E+00 1.862254302971875E-05 + 6.107000000000000E+00 1.856762610779757E-05 + 6.108000000000000E+00 1.851286916230543E-05 + 6.109000000000000E+00 1.845827173383955E-05 + 6.110000000000000E+00 1.840383336429418E-05 + 6.111000000000000E+00 1.834955359685702E-05 + 6.112000000000000E+00 1.829543197600561E-05 + 6.113000000000000E+00 1.824146804750389E-05 + 6.114000000000000E+00 1.818766135839847E-05 + 6.115000000000000E+00 1.813401145701517E-05 + 6.116000000000000E+00 1.808051789295550E-05 + 6.117000000000000E+00 1.802718021709312E-05 + 6.118000000000000E+00 1.797399798157022E-05 + 6.119000000000000E+00 1.792097073979418E-05 + 6.120000000000000E+00 1.786809804643394E-05 + 6.121000000000000E+00 1.781537945741653E-05 + 6.122000000000000E+00 1.776281452992368E-05 + 6.123000000000000E+00 1.771040282238818E-05 + 6.124000000000000E+00 1.765814389449057E-05 + 6.125000000000000E+00 1.760603730715560E-05 + 6.126000000000000E+00 1.755408262254881E-05 + 6.127000000000000E+00 1.750227940407313E-05 + 6.128000000000000E+00 1.745062721636537E-05 + 6.129000000000000E+00 1.739912562529288E-05 + 6.130000000000000E+00 1.734777419795012E-05 + 6.131000000000000E+00 1.729657250265524E-05 + 6.132000000000000E+00 1.724552010894669E-05 + 6.133000000000000E+00 1.719461658757988E-05 + 6.134000000000000E+00 1.714386151052380E-05 + 6.135000000000000E+00 1.709325445095761E-05 + 6.136000000000000E+00 1.704279498326730E-05 + 6.137000000000000E+00 1.699248268304244E-05 + 6.138000000000000E+00 1.694231712707269E-05 + 6.139000000000000E+00 1.689229789334461E-05 + 6.140000000000000E+00 1.684242456103828E-05 + 6.141000000000000E+00 1.679269671052395E-05 + 6.142000000000000E+00 1.674311392335886E-05 + 6.143000000000000E+00 1.669367578228382E-05 + 6.144000000000000E+00 1.664438187122003E-05 + 6.145000000000000E+00 1.659523177526575E-05 + 6.146000000000000E+00 1.654622508069308E-05 + 6.147000000000000E+00 1.649736137494462E-05 + 6.148000000000000E+00 1.644864024663036E-05 + 6.149000000000000E+00 1.640006128552430E-05 + 6.150000000000000E+00 1.635162408256133E-05 + 6.151000000000000E+00 1.630332822983393E-05 + 6.152000000000000E+00 1.625517332058902E-05 + 6.153000000000000E+00 1.620715894922476E-05 + 6.154000000000000E+00 1.615928471128729E-05 + 6.155000000000000E+00 1.611155020346760E-05 + 6.156000000000000E+00 1.606395502359836E-05 + 6.157000000000000E+00 1.601649877065069E-05 + 6.158000000000000E+00 1.596918104473109E-05 + 6.159000000000000E+00 1.592200144707821E-05 + 6.160000000000000E+00 1.587495958005977E-05 + 6.161000000000000E+00 1.582805504716937E-05 + 6.162000000000000E+00 1.578128745302341E-05 + 6.163000000000000E+00 1.573465640335795E-05 + 6.164000000000000E+00 1.568816150502562E-05 + 6.165000000000000E+00 1.564180236599247E-05 + 6.166000000000000E+00 1.559557859533496E-05 + 6.167000000000000E+00 1.554948980323684E-05 + 6.168000000000000E+00 1.550353560098603E-05 + 6.169000000000000E+00 1.545771560097159E-05 + 6.170000000000000E+00 1.541202941668072E-05 + 6.171000000000000E+00 1.536647666269562E-05 + 6.172000000000000E+00 1.532105695469047E-05 + 6.173000000000000E+00 1.527576990942844E-05 + 6.174000000000000E+00 1.523061514475864E-05 + 6.175000000000000E+00 1.518559227961306E-05 + 6.176000000000000E+00 1.514070093400364E-05 + 6.177000000000000E+00 1.509594072901919E-05 + 6.178000000000000E+00 1.505131128682250E-05 + 6.179000000000000E+00 1.500681223064724E-05 + 6.180000000000000E+00 1.496244318479507E-05 + 6.181000000000000E+00 1.491820377463261E-05 + 6.182000000000000E+00 1.487409362658854E-05 + 6.183000000000000E+00 1.483011236815061E-05 + 6.184000000000000E+00 1.478625962786269E-05 + 6.185000000000000E+00 1.474253503532187E-05 + 6.186000000000000E+00 1.469893822117549E-05 + 6.187000000000000E+00 1.465546881711825E-05 + 6.188000000000000E+00 1.461212645588931E-05 + 6.189000000000000E+00 1.456891077126933E-05 + 6.190000000000000E+00 1.452582139807760E-05 + 6.191000000000000E+00 1.448285797216921E-05 + 6.192000000000000E+00 1.444002013043209E-05 + 6.193000000000000E+00 1.439730751078415E-05 + 6.194000000000000E+00 1.435471975217045E-05 + 6.195000000000000E+00 1.431225649456034E-05 + 6.196000000000000E+00 1.426991737894455E-05 + 6.197000000000000E+00 1.422770204733245E-05 + 6.198000000000000E+00 1.418561014274911E-05 + 6.199000000000000E+00 1.414364130923254E-05 + 6.200000000000000E+00 1.410179519183086E-05 + 6.201000000000000E+00 1.406007143659949E-05 + 6.202000000000000E+00 1.401846969059830E-05 + 6.203000000000000E+00 1.397698960188891E-05 + 6.204000000000000E+00 1.393563081953181E-05 + 6.205000000000000E+00 1.389439299358361E-05 + 6.206000000000000E+00 1.385327577509430E-05 + 6.207000000000000E+00 1.381227881610446E-05 + 6.208000000000000E+00 1.377140176964246E-05 + 6.209000000000000E+00 1.373064428972176E-05 + 6.210000000000000E+00 1.369000603133820E-05 + 6.211000000000000E+00 1.364948665046717E-05 + 6.212000000000000E+00 1.360908580406095E-05 + 6.213000000000000E+00 1.356880315004595E-05 + 6.214000000000000E+00 1.352863834732008E-05 + 6.215000000000000E+00 1.348859105574992E-05 + 6.216000000000000E+00 1.344866093616810E-05 + 6.217000000000000E+00 1.340884765037062E-05 + 6.218000000000000E+00 1.336915086111410E-05 + 6.219000000000000E+00 1.332957023211316E-05 + 6.220000000000000E+00 1.329010542803775E-05 + 6.221000000000000E+00 1.325075611451042E-05 + 6.222000000000000E+00 1.321152195810380E-05 + 6.223000000000000E+00 1.317240262633779E-05 + 6.224000000000000E+00 1.313339778767702E-05 + 6.225000000000000E+00 1.309450711152821E-05 + 6.226000000000000E+00 1.305573026823753E-05 + 6.227000000000000E+00 1.301706692908798E-05 + 6.228000000000000E+00 1.297851676629676E-05 + 6.229000000000000E+00 1.294007945301270E-05 + 6.230000000000000E+00 1.290175466331364E-05 + 6.231000000000000E+00 1.286354207220385E-05 + 6.232000000000000E+00 1.282544135561145E-05 + 6.233000000000000E+00 1.278745219038582E-05 + 6.234000000000000E+00 1.274957425429504E-05 + 6.235000000000000E+00 1.271180722602330E-05 + 6.236000000000000E+00 1.267415078516843E-05 + 6.237000000000000E+00 1.263660461223922E-05 + 6.238000000000000E+00 1.259916838865300E-05 + 6.239000000000000E+00 1.256184179673304E-05 + 6.240000000000000E+00 1.252462451970602E-05 + 6.241000000000000E+00 1.248751624169956E-05 + 6.242000000000000E+00 1.245051664773966E-05 + 6.243000000000000E+00 1.241362542374819E-05 + 6.244000000000000E+00 1.237684225654043E-05 + 6.245000000000000E+00 1.234016683382253E-05 + 6.246000000000000E+00 1.230359884418908E-05 + 6.247000000000000E+00 1.226713797712056E-05 + 6.248000000000000E+00 1.223078392298092E-05 + 6.249000000000000E+00 1.219453637301511E-05 + 6.250000000000000E+00 1.215839501934659E-05 + 6.251000000000000E+00 1.212235955497488E-05 + 6.252000000000000E+00 1.208642967377316E-05 + 6.253000000000000E+00 1.205060507048579E-05 + 6.254000000000000E+00 1.201488544072588E-05 + 6.255000000000000E+00 1.197927048097288E-05 + 6.256000000000000E+00 1.194375988857014E-05 + 6.257000000000000E+00 1.190835336172251E-05 + 6.258000000000000E+00 1.187305059949394E-05 + 6.259000000000000E+00 1.183785130180506E-05 + 6.260000000000000E+00 1.180275516943081E-05 + 6.261000000000000E+00 1.176776190399804E-05 + 6.262000000000000E+00 1.173287120798312E-05 + 6.263000000000000E+00 1.169808278470958E-05 + 6.264000000000000E+00 1.166339633834577E-05 + 6.265000000000000E+00 1.162881157390242E-05 + 6.266000000000000E+00 1.159432819723039E-05 + 6.267000000000000E+00 1.155994591501821E-05 + 6.268000000000000E+00 1.152566443478985E-05 + 6.269000000000000E+00 1.149148346490229E-05 + 6.270000000000000E+00 1.145740271454326E-05 + 6.271000000000000E+00 1.142342189372886E-05 + 6.272000000000000E+00 1.138954071330134E-05 + 6.273000000000000E+00 1.135575888492663E-05 + 6.274000000000000E+00 1.132207612109220E-05 + 6.275000000000000E+00 1.128849213510468E-05 + 6.276000000000000E+00 1.125500664108756E-05 + 6.277000000000000E+00 1.122161935397896E-05 + 6.278000000000000E+00 1.118832998952931E-05 + 6.279000000000000E+00 1.115513826429907E-05 + 6.280000000000000E+00 1.112204389565651E-05 + 6.281000000000000E+00 1.108904660177541E-05 + 6.282000000000000E+00 1.105614610163281E-05 + 6.283000000000000E+00 1.102334211500679E-05 + 6.284000000000000E+00 1.099063436247422E-05 + 6.285000000000000E+00 1.095802256540848E-05 + 6.286000000000000E+00 1.092550644597728E-05 + 6.287000000000000E+00 1.089308572714045E-05 + 6.288000000000000E+00 1.086076013264769E-05 + 6.289000000000000E+00 1.082852938703633E-05 + 6.290000000000000E+00 1.079639321562919E-05 + 6.291000000000000E+00 1.076435134453237E-05 + 6.292000000000000E+00 1.073240350063301E-05 + 6.293000000000000E+00 1.070054941159716E-05 + 6.294000000000000E+00 1.066878880586754E-05 + 6.295000000000000E+00 1.063712141266146E-05 + 6.296000000000000E+00 1.060554696196851E-05 + 6.297000000000000E+00 1.057406518454855E-05 + 6.298000000000000E+00 1.054267581192943E-05 + 6.299000000000000E+00 1.051137857640494E-05 + 6.300000000000000E+00 1.048017321103256E-05 + 6.301000000000000E+00 1.044905944963143E-05 + 6.302000000000000E+00 1.041803702678011E-05 + 6.303000000000000E+00 1.038710567781453E-05 + 6.304000000000000E+00 1.035626513882587E-05 + 6.305000000000000E+00 1.032551514665839E-05 + 6.306000000000000E+00 1.029485543890732E-05 + 6.307000000000000E+00 1.026428575391686E-05 + 6.308000000000000E+00 1.023380583077792E-05 + 6.309000000000000E+00 1.020341540932617E-05 + 6.310000000000000E+00 1.017311423013989E-05 + 6.311000000000000E+00 1.014290203453785E-05 + 6.312000000000000E+00 1.011277856457735E-05 + 6.313000000000000E+00 1.008274356305200E-05 + 6.314000000000000E+00 1.005279677348980E-05 + 6.315000000000000E+00 1.002293794015098E-05 + 6.316000000000000E+00 9.993166808026006E-06 + 6.317000000000000E+00 9.963483122833486E-06 + 6.318000000000000E+00 9.933886631018167E-06 + 6.319000000000000E+00 9.904377079748875E-06 + 6.320000000000000E+00 9.874954216916517E-06 + 6.321000000000000E+00 9.845617791131991E-06 + 6.322000000000000E+00 9.816367551724251E-06 + 6.323000000000000E+00 9.787203248738215E-06 + 6.324000000000000E+00 9.758124632932823E-06 + 6.325000000000000E+00 9.729131455778987E-06 + 6.326000000000000E+00 9.700223469457610E-06 + 6.327000000000000E+00 9.671400426857606E-06 + 6.328000000000000E+00 9.642662081573882E-06 + 6.329000000000000E+00 9.614008187905394E-06 + 6.330000000000000E+00 9.585438500853149E-06 + 6.331000000000000E+00 9.556952776118242E-06 + 6.332000000000000E+00 9.528550770099891E-06 + 6.333000000000000E+00 9.500232239893465E-06 + 6.334000000000000E+00 9.471996943288568E-06 + 6.335000000000000E+00 9.443844638767029E-06 + 6.336000000000000E+00 9.415775085501031E-06 + 6.337000000000000E+00 9.387788043351113E-06 + 6.338000000000000E+00 9.359883272864258E-06 + 6.339000000000000E+00 9.332060535271992E-06 + 6.340000000000000E+00 9.304319592488410E-06 + 6.341000000000000E+00 9.276660207108313E-06 + 6.342000000000000E+00 9.249082142405268E-06 + 6.343000000000000E+00 9.221585162329681E-06 + 6.344000000000000E+00 9.194169031506959E-06 + 6.345000000000000E+00 9.166833515235541E-06 + 6.346000000000000E+00 9.139578379485068E-06 + 6.347000000000000E+00 9.112403390894461E-06 + 6.348000000000000E+00 9.085308316770051E-06 + 6.349000000000000E+00 9.058292925083721E-06 + 6.350000000000000E+00 9.031356984470995E-06 + 6.351000000000000E+00 9.004500264229224E-06 + 6.352000000000000E+00 8.977722534315692E-06 + 6.353000000000000E+00 8.951023565345772E-06 + 6.354000000000000E+00 8.924403128591064E-06 + 6.355000000000000E+00 8.897860995977595E-06 + 6.356000000000000E+00 8.871396940083906E-06 + 6.357000000000000E+00 8.845010734139305E-06 + 6.358000000000000E+00 8.818702152021954E-06 + 6.359000000000000E+00 8.792470968257110E-06 + 6.360000000000000E+00 8.766316958015251E-06 + 6.361000000000000E+00 8.740239897110333E-06 + 6.362000000000000E+00 8.714239561997902E-06 + 6.363000000000000E+00 8.688315729773340E-06 + 6.364000000000000E+00 8.662468178170068E-06 + 6.365000000000000E+00 8.636696685557700E-06 + 6.366000000000000E+00 8.611001030940334E-06 + 6.367000000000000E+00 8.585380993954703E-06 + 6.368000000000000E+00 8.559836354868405E-06 + 6.369000000000000E+00 8.534366894578160E-06 + 6.370000000000000E+00 8.508972394608031E-06 + 6.371000000000000E+00 8.483652637107605E-06 + 6.372000000000000E+00 8.458407404850333E-06 + 6.373000000000000E+00 8.433236481231687E-06 + 6.374000000000000E+00 8.408139650267451E-06 + 6.375000000000000E+00 8.383116696591964E-06 + 6.376000000000000E+00 8.358167405456380E-06 + 6.377000000000000E+00 8.333291562726963E-06 + 6.378000000000000E+00 8.308488954883280E-06 + 6.379000000000000E+00 8.283759369016559E-06 + 6.380000000000000E+00 8.259102592827934E-06 + 6.381000000000000E+00 8.234518414626703E-06 + 6.382000000000000E+00 8.210006623328653E-06 + 6.383000000000000E+00 8.185567008454337E-06 + 6.384000000000000E+00 8.161199360127374E-06 + 6.385000000000000E+00 8.136903469072755E-06 + 6.386000000000000E+00 8.112679126615131E-06 + 6.387000000000000E+00 8.088526124677163E-06 + 6.388000000000000E+00 8.064444255777786E-06 + 6.389000000000000E+00 8.040433313030574E-06 + 6.390000000000000E+00 8.016493090142052E-06 + 6.391000000000000E+00 7.992623381410020E-06 + 6.392000000000000E+00 7.968823981721898E-06 + 6.393000000000000E+00 7.945094686553040E-06 + 6.394000000000000E+00 7.921435291965114E-06 + 6.395000000000000E+00 7.897845594604414E-06 + 6.396000000000000E+00 7.874325391700254E-06 + 6.397000000000000E+00 7.850874481063299E-06 + 6.398000000000000E+00 7.827492661083922E-06 + 6.399000000000000E+00 7.804179730730580E-06 + 6.400000000000000E+00 7.780935489548185E-06 + 6.401000000000000E+00 7.757759737656487E-06 + 6.402000000000000E+00 7.734652275748446E-06 + 6.403000000000000E+00 7.711612905088613E-06 + 6.404000000000000E+00 7.688641427511516E-06 + 6.405000000000000E+00 7.665737645420069E-06 + 6.406000000000000E+00 7.642901361783969E-06 + 6.407000000000000E+00 7.620132380138073E-06 + 6.408000000000000E+00 7.597430504580830E-06 + 6.409000000000000E+00 7.574795539772689E-06 + 6.410000000000000E+00 7.552227290934496E-06 + 6.411000000000000E+00 7.529725563845952E-06 + 6.412000000000000E+00 7.507290164843976E-06 + 6.413000000000000E+00 7.484920900821211E-06 + 6.414000000000000E+00 7.462617579224386E-06 + 6.415000000000000E+00 7.440380008052803E-06 + 6.416000000000000E+00 7.418207995856741E-06 + 6.417000000000000E+00 7.396101351735930E-06 + 6.418000000000000E+00 7.374059885337984E-06 + 6.419000000000000E+00 7.352083406856873E-06 + 6.420000000000000E+00 7.330171727031368E-06 + 6.421000000000000E+00 7.308324657143498E-06 + 6.422000000000000E+00 7.286542009017045E-06 + 6.423000000000000E+00 7.264823595015963E-06 + 6.424000000000000E+00 7.243169228042915E-06 + 6.425000000000000E+00 7.221578721537725E-06 + 6.426000000000000E+00 7.200051889475840E-06 + 6.427000000000000E+00 7.178588546366873E-06 + 6.428000000000000E+00 7.157188507253021E-06 + 6.429000000000000E+00 7.135851587707641E-06 + 6.430000000000000E+00 7.114577603833696E-06 + 6.431000000000000E+00 7.093366372262277E-06 + 6.432000000000000E+00 7.072217710151114E-06 + 6.433000000000000E+00 7.051131435183084E-06 + 6.434000000000000E+00 7.030107365564737E-06 + 6.435000000000000E+00 7.009145320024799E-06 + 6.436000000000000E+00 6.988245117812733E-06 + 6.437000000000000E+00 6.967406578697220E-06 + 6.438000000000000E+00 6.946629522964744E-06 + 6.439000000000000E+00 6.925913771418072E-06 + 6.440000000000000E+00 6.905259145374855E-06 + 6.441000000000000E+00 6.884665466666139E-06 + 6.442000000000000E+00 6.864132557634916E-06 + 6.443000000000000E+00 6.843660241134683E-06 + 6.444000000000000E+00 6.823248340528005E-06 + 6.445000000000000E+00 6.802896679685077E-06 + 6.446000000000000E+00 6.782605082982282E-06 + 6.447000000000000E+00 6.762373375300753E-06 + 6.448000000000000E+00 6.742201382024971E-06 + 6.449000000000000E+00 6.722088929041325E-06 + 6.450000000000000E+00 6.702035842736697E-06 + 6.451000000000000E+00 6.682041949997042E-06 + 6.452000000000000E+00 6.662107078205997E-06 + 6.453000000000000E+00 6.642231055243441E-06 + 6.454000000000000E+00 6.622413709484131E-06 + 6.455000000000000E+00 6.602654869796277E-06 + 6.456000000000000E+00 6.582954365540156E-06 + 6.457000000000000E+00 6.563312026566705E-06 + 6.458000000000000E+00 6.543727683216175E-06 + 6.459000000000000E+00 6.524201166316691E-06 + 6.460000000000000E+00 6.504732307182913E-06 + 6.461000000000000E+00 6.485320937614657E-06 + 6.462000000000000E+00 6.465966889895505E-06 + 6.463000000000000E+00 6.446669996791450E-06 + 6.464000000000000E+00 6.427430091549516E-06 + 6.465000000000000E+00 6.408247007896438E-06 + 6.466000000000000E+00 6.389120580037239E-06 + 6.467000000000000E+00 6.370050642653943E-06 + 6.468000000000000E+00 6.351037030904177E-06 + 6.469000000000000E+00 6.332079580419873E-06 + 6.470000000000000E+00 6.313178127305864E-06 + 6.471000000000000E+00 6.294332508138598E-06 + 6.472000000000000E+00 6.275542559964791E-06 + 6.473000000000000E+00 6.256808120300084E-06 + 6.474000000000000E+00 6.238129027127717E-06 + 6.475000000000000E+00 6.219505118897223E-06 + 6.476000000000000E+00 6.200936234523090E-06 + 6.477000000000000E+00 6.182422213383452E-06 + 6.478000000000000E+00 6.163962895318778E-06 + 6.479000000000000E+00 6.145558120630565E-06 + 6.480000000000000E+00 6.127207730080012E-06 + 6.481000000000000E+00 6.108911564886768E-06 + 6.482000000000000E+00 6.090669466727578E-06 + 6.483000000000000E+00 6.072481277735007E-06 + 6.484000000000000E+00 6.054346840496179E-06 + 6.485000000000000E+00 6.036265998051445E-06 + 6.486000000000000E+00 6.018238593893141E-06 + 6.487000000000000E+00 6.000264471964256E-06 + 6.488000000000000E+00 5.982343476657222E-06 + 6.489000000000000E+00 5.964475452812584E-06 + 6.490000000000000E+00 5.946660245717757E-06 + 6.491000000000000E+00 5.928897701105760E-06 + 6.492000000000000E+00 5.911187665153940E-06 + 6.493000000000000E+00 5.893529984482743E-06 + 6.494000000000000E+00 5.875924506154408E-06 + 6.495000000000000E+00 5.858371077671774E-06 + 6.496000000000000E+00 5.840869546976988E-06 + 6.497000000000000E+00 5.823419762450281E-06 + 6.498000000000000E+00 5.806021572908715E-06 + 6.499000000000000E+00 5.788674827604950E-06 + 6.500000000000000E+00 5.771379376226021E-06 + 6.501000000000000E+00 5.754135068892089E-06 + 6.502000000000000E+00 5.736941756155223E-06 + 6.503000000000000E+00 5.719799288998162E-06 + 6.504000000000000E+00 5.702707518833127E-06 + 6.505000000000000E+00 5.685666297500562E-06 + 6.506000000000000E+00 5.668675477267950E-06 + 6.507000000000000E+00 5.651734910828581E-06 + 6.508000000000000E+00 5.634844451300377E-06 + 6.509000000000000E+00 5.618003952224641E-06 + 6.510000000000000E+00 5.601213267564906E-06 + 6.511000000000000E+00 5.584472251705681E-06 + 6.512000000000000E+00 5.567780759451335E-06 + 6.513000000000000E+00 5.551138646024817E-06 + 6.514000000000000E+00 5.534545767066545E-06 + 6.515000000000000E+00 5.518001978633166E-06 + 6.516000000000000E+00 5.501507137196419E-06 + 6.517000000000000E+00 5.485061099641914E-06 + 6.518000000000000E+00 5.468663723268003E-06 + 6.519000000000000E+00 5.452314865784574E-06 + 6.520000000000000E+00 5.436014385311901E-06 + 6.521000000000000E+00 5.419762140379471E-06 + 6.522000000000000E+00 5.403557989924837E-06 + 6.523000000000000E+00 5.387401793292438E-06 + 6.524000000000000E+00 5.371293410232456E-06 + 6.525000000000000E+00 5.355232700899672E-06 + 6.526000000000000E+00 5.339219525852313E-06 + 6.527000000000000E+00 5.323253746050891E-06 + 6.528000000000000E+00 5.307335222857081E-06 + 6.529000000000000E+00 5.291463818032584E-06 + 6.530000000000000E+00 5.275639393737961E-06 + 6.531000000000000E+00 5.259861812531540E-06 + 6.532000000000000E+00 5.244130937368266E-06 + 6.533000000000000E+00 5.228446631598571E-06 + 6.534000000000000E+00 5.212808758967266E-06 + 6.535000000000000E+00 5.197217183612403E-06 + 6.536000000000000E+00 5.181671770064190E-06 + 6.537000000000000E+00 5.166172383243817E-06 + 6.538000000000000E+00 5.150718888462424E-06 + 6.539000000000000E+00 5.135311151419928E-06 + 6.540000000000000E+00 5.119949038203955E-06 + 6.541000000000000E+00 5.104632415288724E-06 + 6.542000000000000E+00 5.089361149533958E-06 + 6.543000000000000E+00 5.074135108183769E-06 + 6.544000000000000E+00 5.058954158865592E-06 + 6.545000000000000E+00 5.043818169589091E-06 + 6.546000000000000E+00 5.028727008745045E-06 + 6.547000000000000E+00 5.013680545104308E-06 + 6.548000000000000E+00 4.998678647816691E-06 + 6.549000000000000E+00 4.983721186409920E-06 + 6.550000000000000E+00 4.968808030788514E-06 + 6.551000000000000E+00 4.953939051232771E-06 + 6.552000000000000E+00 4.939114118397653E-06 + 6.553000000000000E+00 4.924333103311759E-06 + 6.554000000000000E+00 4.909595877376224E-06 + 6.555000000000000E+00 4.894902312363698E-06 + 6.556000000000000E+00 4.880252280417255E-06 + 6.557000000000000E+00 4.865645654049372E-06 + 6.558000000000000E+00 4.851082306140852E-06 + 6.559000000000000E+00 4.836562109939797E-06 + 6.560000000000000E+00 4.822084939060540E-06 + 6.561000000000000E+00 4.807650667482641E-06 + 6.562000000000000E+00 4.793259169549801E-06 + 6.563000000000000E+00 4.778910319968877E-06 + 6.564000000000000E+00 4.764603993808789E-06 + 6.565000000000000E+00 4.750340066499564E-06 + 6.566000000000000E+00 4.736118413831236E-06 + 6.567000000000000E+00 4.721938911952877E-06 + 6.568000000000000E+00 4.707801437371532E-06 + 6.569000000000000E+00 4.693705866951249E-06 + 6.570000000000000E+00 4.679652077912011E-06 + 6.571000000000000E+00 4.665639947828767E-06 + 6.572000000000000E+00 4.651669354630388E-06 + 6.573000000000000E+00 4.637740176598694E-06 + 6.574000000000000E+00 4.623852292367424E-06 + 6.575000000000000E+00 4.610005580921227E-06 + 6.576000000000000E+00 4.596199921594698E-06 + 6.577000000000000E+00 4.582435194071349E-06 + 6.578000000000000E+00 4.568711278382635E-06 + 6.579000000000000E+00 4.555028054906961E-06 + 6.580000000000000E+00 4.541385404368683E-06 + 6.581000000000000E+00 4.527783207837132E-06 + 6.582000000000000E+00 4.514221346725637E-06 + 6.583000000000000E+00 4.500699702790532E-06 + 6.584000000000000E+00 4.487218158130187E-06 + 6.585000000000000E+00 4.473776595184048E-06 + 6.586000000000000E+00 4.460374896731633E-06 + 6.587000000000000E+00 4.447012945891587E-06 + 6.588000000000000E+00 4.433690626120718E-06 + 6.589000000000000E+00 4.420407821213027E-06 + 6.590000000000000E+00 4.407164415298739E-06 + 6.591000000000000E+00 4.393960292843371E-06 + 6.592000000000000E+00 4.380795338646732E-06 + 6.593000000000000E+00 4.367669437842029E-06 + 6.594000000000000E+00 4.354582475894873E-06 + 6.595000000000000E+00 4.341534338602349E-06 + 6.596000000000000E+00 4.328524912092056E-06 + 6.597000000000000E+00 4.315554082821204E-06 + 6.598000000000000E+00 4.302621737575629E-06 + 6.599000000000000E+00 4.289727763468881E-06 + 6.600000000000000E+00 4.276872047941289E-06 + 6.601000000000000E+00 4.264054478759019E-06 + 6.602000000000000E+00 4.251274944013161E-06 + 6.603000000000000E+00 4.238533332118795E-06 + 6.604000000000000E+00 4.225829531814062E-06 + 6.605000000000000E+00 4.213163432159243E-06 + 6.606000000000000E+00 4.200534922535858E-06 + 6.607000000000000E+00 4.187943892645736E-06 + 6.608000000000000E+00 4.175390232510100E-06 + 6.609000000000000E+00 4.162873832468656E-06 + 6.610000000000000E+00 4.150394583178705E-06 + 6.611000000000000E+00 4.137952375614204E-06 + 6.612000000000000E+00 4.125547101064886E-06 + 6.613000000000000E+00 4.113178651135369E-06 + 6.614000000000000E+00 4.100846917744222E-06 + 6.615000000000000E+00 4.088551793123104E-06 + 6.616000000000000E+00 4.076293169815854E-06 + 6.617000000000000E+00 4.064070940677613E-06 + 6.618000000000000E+00 4.051884998873909E-06 + 6.619000000000000E+00 4.039735237879807E-06 + 6.620000000000000E+00 4.027621551479002E-06 + 6.621000000000000E+00 4.015543833762946E-06 + 6.622000000000000E+00 4.003501979129975E-06 + 6.623000000000000E+00 3.991495882284423E-06 + 6.624000000000000E+00 3.979525438235756E-06 + 6.625000000000000E+00 3.967590542297703E-06 + 6.626000000000000E+00 3.955691090087379E-06 + 6.627000000000000E+00 3.943826977524416E-06 + 6.628000000000000E+00 3.931998100830135E-06 + 6.629000000000000E+00 3.920204356526624E-06 + 6.630000000000000E+00 3.908445641435940E-06 + 6.631000000000000E+00 3.896721852679215E-06 + 6.632000000000000E+00 3.885032887675812E-06 + 6.633000000000000E+00 3.873378644142481E-06 + 6.634000000000000E+00 3.861759020092502E-06 + 6.635000000000000E+00 3.850173913834850E-06 + 6.636000000000000E+00 3.838623223973313E-06 + 6.637000000000000E+00 3.827106849405708E-06 + 6.638000000000000E+00 3.815624689323003E-06 + 6.639000000000000E+00 3.804176643208485E-06 + 6.640000000000000E+00 3.792762610836936E-06 + 6.641000000000000E+00 3.781382492273791E-06 + 6.642000000000000E+00 3.770036187874296E-06 + 6.643000000000000E+00 3.758723598282729E-06 + 6.644000000000000E+00 3.747444624431501E-06 + 6.645000000000000E+00 3.736199167540403E-06 + 6.646000000000000E+00 3.724987129115744E-06 + 6.647000000000000E+00 3.713808410949537E-06 + 6.648000000000000E+00 3.702662915118689E-06 + 6.649000000000000E+00 3.691550543984201E-06 + 6.650000000000000E+00 3.680471200190324E-06 + 6.651000000000000E+00 3.669424786663783E-06 + 6.652000000000000E+00 3.658411206612948E-06 + 6.653000000000000E+00 3.647430363527023E-06 + 6.654000000000000E+00 3.636482161175284E-06 + 6.655000000000000E+00 3.625566503606223E-06 + 6.656000000000000E+00 3.614683295146799E-06 + 6.657000000000000E+00 3.603832440401603E-06 + 6.658000000000000E+00 3.593013844252099E-06 + 6.659000000000000E+00 3.582227411855802E-06 + 6.660000000000000E+00 3.571473048645507E-06 + 6.661000000000000E+00 3.560750660328503E-06 + 6.662000000000000E+00 3.550060152885775E-06 + 6.663000000000000E+00 3.539401432571242E-06 + 6.664000000000000E+00 3.528774405910939E-06 + 6.665000000000000E+00 3.518178979702300E-06 + 6.666000000000000E+00 3.507615061013304E-06 + 6.667000000000000E+00 3.497082557181784E-06 + 6.668000000000000E+00 3.486581375814584E-06 + 6.669000000000000E+00 3.476111424786835E-06 + 6.670000000000000E+00 3.465672612241175E-06 + 6.671000000000000E+00 3.455264846586959E-06 + 6.672000000000000E+00 3.444888036499556E-06 + 6.673000000000000E+00 3.434542090919513E-06 + 6.674000000000000E+00 3.424226919051857E-06 + 6.675000000000000E+00 3.413942430365312E-06 + 6.676000000000000E+00 3.403688534591543E-06 + 6.677000000000000E+00 3.393465141724412E-06 + 6.678000000000000E+00 3.383272162019222E-06 + 6.679000000000000E+00 3.373109505991974E-06 + 6.680000000000000E+00 3.362977084418619E-06 + 6.681000000000000E+00 3.352874808334306E-06 + 6.682000000000000E+00 3.342802589032664E-06 + 6.683000000000000E+00 3.332760338065023E-06 + 6.684000000000000E+00 3.322747967239711E-06 + 6.685000000000000E+00 3.312765388621325E-06 + 6.686000000000000E+00 3.302812514529944E-06 + 6.687000000000000E+00 3.292889257540450E-06 + 6.688000000000000E+00 3.282995530481793E-06 + 6.689000000000000E+00 3.273131246436231E-06 + 6.690000000000000E+00 3.263296318738632E-06 + 6.691000000000000E+00 3.253490660975760E-06 + 6.692000000000000E+00 3.243714186985513E-06 + 6.693000000000000E+00 3.233966810856244E-06 + 6.694000000000000E+00 3.224248446926032E-06 + 6.695000000000000E+00 3.214559009781951E-06 + 6.696000000000000E+00 3.204898414259382E-06 + 6.697000000000000E+00 3.195266575441284E-06 + 6.698000000000000E+00 3.185663408657486E-06 + 6.699000000000000E+00 3.176088829483990E-06 + 6.700000000000000E+00 3.166542753742255E-06 + 6.701000000000000E+00 3.157025097498510E-06 + 6.702000000000000E+00 3.147535777063029E-06 + 6.703000000000000E+00 3.138074708989449E-06 + 6.704000000000000E+00 3.128641810074067E-06 + 6.705000000000000E+00 3.119236997355151E-06 + 6.706000000000000E+00 3.109860188112234E-06 + 6.707000000000000E+00 3.100511299865439E-06 + 6.708000000000000E+00 3.091190250374774E-06 + 6.709000000000000E+00 3.081896957639445E-06 + 6.710000000000000E+00 3.072631339897198E-06 + 6.711000000000000E+00 3.063393315623596E-06 + 6.712000000000000E+00 3.054182803531353E-06 + 6.713000000000000E+00 3.044999722569674E-06 + 6.714000000000000E+00 3.035843991923545E-06 + 6.715000000000000E+00 3.026715531013079E-06 + 6.716000000000000E+00 3.017614259492834E-06 + 6.717000000000000E+00 3.008540097251137E-06 + 6.718000000000000E+00 2.999492964409423E-06 + 6.719000000000000E+00 2.990472781321563E-06 + 6.720000000000000E+00 2.981479468573186E-06 + 6.721000000000000E+00 2.972512946981045E-06 + 6.722000000000000E+00 2.963573137592314E-06 + 6.723000000000000E+00 2.954659961683960E-06 + 6.724000000000000E+00 2.945773340762061E-06 + 6.725000000000000E+00 2.936913196561177E-06 + 6.726000000000000E+00 2.928079451043657E-06 + 6.727000000000000E+00 2.919272026399012E-06 + 6.728000000000000E+00 2.910490845043263E-06 + 6.729000000000000E+00 2.901735829618284E-06 + 6.730000000000000E+00 2.893006902991150E-06 + 6.731000000000000E+00 2.884303988253495E-06 + 6.732000000000000E+00 2.875627008720867E-06 + 6.733000000000000E+00 2.866975887932106E-06 + 6.734000000000000E+00 2.858350549648663E-06 + 6.735000000000000E+00 2.849750917853990E-06 + 6.736000000000000E+00 2.841176916752898E-06 + 6.737000000000000E+00 2.832628470770918E-06 + 6.738000000000000E+00 2.824105504553664E-06 + 6.739000000000000E+00 2.815607942966220E-06 + 6.740000000000000E+00 2.807135711092481E-06 + 6.741000000000000E+00 2.798688734234553E-06 + 6.742000000000000E+00 2.790266937912106E-06 + 6.743000000000000E+00 2.781870247861750E-06 + 6.744000000000000E+00 2.773498590036447E-06 + 6.745000000000000E+00 2.765151890604831E-06 + 6.746000000000000E+00 2.756830075950632E-06 + 6.747000000000000E+00 2.748533072672062E-06 + 6.748000000000000E+00 2.740260807581160E-06 + 6.749000000000000E+00 2.732013207703215E-06 + 6.750000000000000E+00 2.723790200276136E-06 + 6.751000000000000E+00 2.715591712749849E-06 + 6.752000000000000E+00 2.707417672785690E-06 + 6.753000000000000E+00 2.699268008255770E-06 + 6.754000000000000E+00 2.691142647242424E-06 + 6.755000000000000E+00 2.683041518037554E-06 + 6.756000000000000E+00 2.674964549142052E-06 + 6.757000000000000E+00 2.666911669265201E-06 + 6.758000000000000E+00 2.658882807324068E-06 + 6.759000000000000E+00 2.650877892442911E-06 + 6.760000000000000E+00 2.642896853952588E-06 + 6.761000000000000E+00 2.634939621389954E-06 + 6.762000000000000E+00 2.627006124497270E-06 + 6.763000000000000E+00 2.619096293221622E-06 + 6.764000000000000E+00 2.611210057714330E-06 + 6.765000000000000E+00 2.603347348330350E-06 + 6.766000000000000E+00 2.595508095627699E-06 + 6.767000000000000E+00 2.587692230366875E-06 + 6.768000000000000E+00 2.579899683510259E-06 + 6.769000000000000E+00 2.572130386221557E-06 + 6.770000000000000E+00 2.564384269865202E-06 + 6.771000000000000E+00 2.556661266005778E-06 + 6.772000000000000E+00 2.548961306407468E-06 + 6.773000000000000E+00 2.541284323033445E-06 + 6.774000000000000E+00 2.533630248045335E-06 + 6.775000000000000E+00 2.525999013802608E-06 + 6.776000000000000E+00 2.518390552862049E-06 + 6.777000000000000E+00 2.510804797977167E-06 + 6.778000000000000E+00 2.503241682097626E-06 + 6.779000000000000E+00 2.495701138368705E-06 + 6.780000000000000E+00 2.488183100130700E-06 + 6.781000000000000E+00 2.480687500918406E-06 + 6.782000000000000E+00 2.473214274460509E-06 + 6.783000000000000E+00 2.465763354679076E-06 + 6.784000000000000E+00 2.458334675688965E-06 + 6.785000000000000E+00 2.450928171797285E-06 + 6.786000000000000E+00 2.443543777502832E-06 + 6.787000000000000E+00 2.436181427495557E-06 + 6.788000000000000E+00 2.428841056655995E-06 + 6.789000000000000E+00 2.421522600054739E-06 + 6.790000000000000E+00 2.414225992951862E-06 + 6.791000000000000E+00 2.406951170796407E-06 + 6.792000000000000E+00 2.399698069225818E-06 + 6.793000000000000E+00 2.392466624065404E-06 + 6.794000000000000E+00 2.385256771327802E-06 + 6.795000000000000E+00 2.378068447212443E-06 + 6.796000000000000E+00 2.370901588104998E-06 + 6.797000000000000E+00 2.363756130576861E-06 + 6.798000000000000E+00 2.356632011384595E-06 + 6.799000000000000E+00 2.349529167469416E-06 + 6.800000000000000E+00 2.342447535956651E-06 + 6.801000000000000E+00 2.335387054155216E-06 + 6.802000000000000E+00 2.328347659557079E-06 + 6.803000000000000E+00 2.321329289836738E-06 + 6.804000000000000E+00 2.314331882850693E-06 + 6.805000000000000E+00 2.307355376636925E-06 + 6.806000000000000E+00 2.300399709414371E-06 + 6.807000000000000E+00 2.293464819582406E-06 + 6.808000000000000E+00 2.286550645720317E-06 + 6.809000000000000E+00 2.279657126586791E-06 + 6.810000000000000E+00 2.272784201119397E-06 + 6.811000000000000E+00 2.265931808434069E-06 + 6.812000000000000E+00 2.259099887824592E-06 + 6.813000000000000E+00 2.252288378762096E-06 + 6.814000000000000E+00 2.245497220894532E-06 + 6.815000000000000E+00 2.238726354046177E-06 + 6.816000000000000E+00 2.231975718217118E-06 + 6.817000000000000E+00 2.225245253582748E-06 + 6.818000000000000E+00 2.218534900493258E-06 + 6.819000000000000E+00 2.211844599473137E-06 + 6.820000000000000E+00 2.205174291220667E-06 + 6.821000000000000E+00 2.198523916607429E-06 + 6.822000000000000E+00 2.191893416677789E-06 + 6.823000000000000E+00 2.185282732648416E-06 + 6.824000000000000E+00 2.178691805907776E-06 + 6.825000000000000E+00 2.172120578015641E-06 + 6.826000000000000E+00 2.165568990702591E-06 + 6.827000000000000E+00 2.159036985869527E-06 + 6.828000000000000E+00 2.152524505587178E-06 + 6.829000000000000E+00 2.146031492095606E-06 + 6.830000000000000E+00 2.139557887803728E-06 + 6.831000000000000E+00 2.133103635288822E-06 + 6.832000000000000E+00 2.126668677296043E-06 + 6.833000000000000E+00 2.120252956737940E-06 + 6.834000000000000E+00 2.113856416693974E-06 + 6.835000000000000E+00 2.107479000410033E-06 + 6.836000000000000E+00 2.101120651297957E-06 + 6.837000000000000E+00 2.094781312935056E-06 + 6.838000000000000E+00 2.088460929063632E-06 + 6.839000000000000E+00 2.082159443590510E-06 + 6.840000000000000E+00 2.075876800586554E-06 + 6.841000000000000E+00 2.069612944286200E-06 + 6.842000000000000E+00 2.063367819086983E-06 + 6.843000000000000E+00 2.057141369549066E-06 + 6.844000000000000E+00 2.050933540394771E-06 + 6.845000000000000E+00 2.044744276508110E-06 + 6.846000000000000E+00 2.038573522934321E-06 + 6.847000000000000E+00 2.032421224879401E-06 + 6.848000000000000E+00 2.026287327709644E-06 + 6.849000000000000E+00 2.020171776951174E-06 + 6.850000000000000E+00 2.014074518289491E-06 + 6.851000000000000E+00 2.007995497569006E-06 + 6.852000000000000E+00 2.001934660792581E-06 + 6.853000000000000E+00 1.995891954121077E-06 + 6.854000000000000E+00 1.989867323872894E-06 + 6.855000000000000E+00 1.983860716523518E-06 + 6.856000000000000E+00 1.977872078705068E-06 + 6.857000000000000E+00 1.971901357205842E-06 + 6.858000000000000E+00 1.965948498969866E-06 + 6.859000000000000E+00 1.960013451096449E-06 + 6.860000000000000E+00 1.954096160839728E-06 + 6.861000000000000E+00 1.948196575608228E-06 + 6.862000000000000E+00 1.942314642964409E-06 + 6.863000000000000E+00 1.936450310624228E-06 + 6.864000000000000E+00 1.930603526456692E-06 + 6.865000000000000E+00 1.924774238483416E-06 + 6.866000000000000E+00 1.918962394878186E-06 + 6.867000000000000E+00 1.913167943966515E-06 + 6.868000000000000E+00 1.907390834225207E-06 + 6.869000000000000E+00 1.901631014281921E-06 + 6.870000000000000E+00 1.895888432914732E-06 + 6.871000000000000E+00 1.890163039051701E-06 + 6.872000000000000E+00 1.884454781770438E-06 + 6.873000000000000E+00 1.878763610297673E-06 + 6.874000000000000E+00 1.873089474008821E-06 + 6.875000000000000E+00 1.867432322427559E-06 + 6.876000000000000E+00 1.861792105225390E-06 + 6.877000000000000E+00 1.856168772221223E-06 + 6.878000000000000E+00 1.850562273380942E-06 + 6.879000000000000E+00 1.844972558816983E-06 + 6.880000000000000E+00 1.839399578787912E-06 + 6.881000000000000E+00 1.833843283698000E-06 + 6.882000000000000E+00 1.828303624096804E-06 + 6.883000000000000E+00 1.822780550678748E-06 + 6.884000000000000E+00 1.817274014282701E-06 + 6.885000000000000E+00 1.811783965891561E-06 + 6.886000000000000E+00 1.806310356631842E-06 + 6.887000000000000E+00 1.800853137773251E-06 + 6.888000000000000E+00 1.795412260728286E-06 + 6.889000000000000E+00 1.789987677051810E-06 + 6.890000000000000E+00 1.784579338440647E-06 + 6.891000000000000E+00 1.779187196733174E-06 + 6.892000000000000E+00 1.773811203908904E-06 + 6.893000000000000E+00 1.768451312088083E-06 + 6.894000000000000E+00 1.763107473531283E-06 + 6.895000000000000E+00 1.757779640638994E-06 + 6.896000000000000E+00 1.752467765951223E-06 + 6.897000000000000E+00 1.747171802147086E-06 + 6.898000000000000E+00 1.741891702044410E-06 + 6.899000000000000E+00 1.736627418599326E-06 + 6.900000000000000E+00 1.731378904905878E-06 + 6.901000000000000E+00 1.726146114195614E-06 + 6.902000000000000E+00 1.720928999837197E-06 + 6.903000000000000E+00 1.715727515336002E-06 + 6.904000000000000E+00 1.710541614333726E-06 + 6.905000000000000E+00 1.705371250607986E-06 + 6.906000000000000E+00 1.700216378071935E-06 + 6.907000000000000E+00 1.695076950773864E-06 + 6.908000000000000E+00 1.689952922896812E-06 + 6.909000000000000E+00 1.684844248758177E-06 + 6.910000000000000E+00 1.679750882809325E-06 + 6.911000000000000E+00 1.674672779635206E-06 + 6.912000000000000E+00 1.669609893953967E-06 + 6.913000000000000E+00 1.664562180616561E-06 + 6.914000000000000E+00 1.659529594606370E-06 + 6.915000000000000E+00 1.654512091038816E-06 + 6.916000000000000E+00 1.649509625160984E-06 + 6.917000000000000E+00 1.644522152351237E-06 + 6.918000000000000E+00 1.639549628118836E-06 + 6.919000000000000E+00 1.634592008103562E-06 + 6.920000000000000E+00 1.629649248075343E-06 + 6.921000000000000E+00 1.624721303933868E-06 + 6.922000000000000E+00 1.619808131708217E-06 + 6.923000000000000E+00 1.614909687556485E-06 + 6.924000000000000E+00 1.610025927765411E-06 + 6.925000000000000E+00 1.605156808750002E-06 + 6.926000000000000E+00 1.600302287053162E-06 + 6.927000000000000E+00 1.595462319345326E-06 + 6.928000000000000E+00 1.590636862424082E-06 + 6.929000000000000E+00 1.585825873213811E-06 + 6.930000000000000E+00 1.581029308765319E-06 + 6.931000000000000E+00 1.576247126255462E-06 + 6.932000000000000E+00 1.571479282986797E-06 + 6.933000000000000E+00 1.566725736387199E-06 + 6.934000000000000E+00 1.561986444009515E-06 + 6.935000000000000E+00 1.557261363531189E-06 + 6.936000000000000E+00 1.552550452753910E-06 + 6.937000000000000E+00 1.547853669603246E-06 + 6.938000000000000E+00 1.543170972128290E-06 + 6.939000000000000E+00 1.538502318501298E-06 + 6.940000000000000E+00 1.533847667017335E-06 + 6.941000000000000E+00 1.529206976093917E-06 + 6.942000000000000E+00 1.524580204270657E-06 + 6.943000000000000E+00 1.519967310208914E-06 + 6.944000000000000E+00 1.515368252691435E-06 + 6.945000000000000E+00 1.510782990622005E-06 + 6.946000000000000E+00 1.506211483025101E-06 + 6.947000000000000E+00 1.501653689045534E-06 + 6.948000000000000E+00 1.497109567948107E-06 + 6.949000000000000E+00 1.492579079117263E-06 + 6.950000000000000E+00 1.488062182056740E-06 + 6.951000000000000E+00 1.483558836389225E-06 + 6.952000000000000E+00 1.479069001856010E-06 + 6.953000000000000E+00 1.474592638316648E-06 + 6.954000000000000E+00 1.470129705748607E-06 + 6.955000000000000E+00 1.465680164246931E-06 + 6.956000000000000E+00 1.461243974023899E-06 + 6.957000000000000E+00 1.456821095408687E-06 + 6.958000000000000E+00 1.452411488847022E-06 + 6.959000000000000E+00 1.448015114900852E-06 + 6.960000000000000E+00 1.443631934248006E-06 + 6.961000000000000E+00 1.439261907681854E-06 + 6.962000000000000E+00 1.434904996110980E-06 + 6.963000000000000E+00 1.430561160558839E-06 + 6.964000000000000E+00 1.426230362163432E-06 + 6.965000000000000E+00 1.421912562176968E-06 + 6.966000000000000E+00 1.417607721965533E-06 + 6.967000000000000E+00 1.413315803008765E-06 + 6.968000000000000E+00 1.409036766899515E-06 + 6.969000000000000E+00 1.404770575343531E-06 + 6.970000000000000E+00 1.400517190159120E-06 + 6.971000000000000E+00 1.396276573276824E-06 + 6.972000000000000E+00 1.392048686739099E-06 + 6.973000000000000E+00 1.387833492699985E-06 + 6.974000000000000E+00 1.383630953424783E-06 + 6.975000000000000E+00 1.379441031289733E-06 + 6.976000000000000E+00 1.375263688781697E-06 + 6.977000000000000E+00 1.371098888497826E-06 + 6.978000000000000E+00 1.366946593145251E-06 + 6.979000000000000E+00 1.362806765540760E-06 + 6.980000000000000E+00 1.358679368610476E-06 + 6.981000000000000E+00 1.354564365389548E-06 + 6.982000000000000E+00 1.350461719021827E-06 + 6.983000000000000E+00 1.346371392759552E-06 + 6.984000000000000E+00 1.342293349963039E-06 + 6.985000000000000E+00 1.338227554100362E-06 + 6.986000000000000E+00 1.334173968747045E-06 + 6.987000000000000E+00 1.330132557585746E-06 + 6.988000000000000E+00 1.326103284405950E-06 + 6.989000000000000E+00 1.322086113103653E-06 + 6.990000000000000E+00 1.318081007681058E-06 + 6.991000000000000E+00 1.314087932246267E-06 + 6.992000000000000E+00 1.310106851012969E-06 + 6.993000000000000E+00 1.306137728300133E-06 + 6.994000000000000E+00 1.302180528531710E-06 + 6.995000000000000E+00 1.298235216236319E-06 + 6.996000000000000E+00 1.294301756046950E-06 + 6.997000000000000E+00 1.290380112700655E-06 + 6.998000000000000E+00 1.286470251038248E-06 + 6.999000000000000E+00 1.282572136004006E-06 + 7.000000000000000E+00 1.278685732645366E-06 + 7.001000000000000E+00 1.274811006112625E-06 + 7.002000000000000E+00 1.270947921658642E-06 + 7.003000000000000E+00 1.267096444638541E-06 + 7.004000000000000E+00 1.263256540509408E-06 + 7.005000000000000E+00 1.259428174830007E-06 + 7.006000000000000E+00 1.255611313260471E-06 + 7.007000000000000E+00 1.251805921562014E-06 + 7.008000000000000E+00 1.248011965596640E-06 + 7.009000000000000E+00 1.244229411326842E-06 + 7.010000000000000E+00 1.240458224815318E-06 + 7.011000000000000E+00 1.236698372224676E-06 + 7.012000000000000E+00 1.232949819817142E-06 + 7.013000000000000E+00 1.229212533954275E-06 + 7.014000000000000E+00 1.225486481096672E-06 + 7.015000000000000E+00 1.221771627803686E-06 + 7.016000000000000E+00 1.218067940733139E-06 + 7.017000000000000E+00 1.214375386641028E-06 + 7.018000000000000E+00 1.210693932381249E-06 + 7.019000000000000E+00 1.207023544905305E-06 + 7.020000000000000E+00 1.203364191262029E-06 + 7.021000000000000E+00 1.199715838597295E-06 + 7.022000000000000E+00 1.196078454153738E-06 + 7.023000000000000E+00 1.192452005270474E-06 + 7.024000000000000E+00 1.188836459382819E-06 + 7.025000000000000E+00 1.185231784022005E-06 + 7.026000000000000E+00 1.181637946814910E-06 + 7.027000000000000E+00 1.178054915483767E-06 + 7.028000000000000E+00 1.174482657845900E-06 + 7.029000000000000E+00 1.170921141813440E-06 + 7.030000000000000E+00 1.167370335393049E-06 + 7.031000000000000E+00 1.163830206685648E-06 + 7.032000000000000E+00 1.160300723886139E-06 + 7.033000000000000E+00 1.156781855283137E-06 + 7.034000000000000E+00 1.153273569258692E-06 + 7.035000000000000E+00 1.149775834288021E-06 + 7.036000000000000E+00 1.146288618939235E-06 + 7.037000000000000E+00 1.142811891873067E-06 + 7.038000000000000E+00 1.139345621842607E-06 + 7.039000000000000E+00 1.135889777693030E-06 + 7.040000000000000E+00 1.132444328361328E-06 + 7.041000000000000E+00 1.129009242876044E-06 + 7.042000000000000E+00 1.125584490357005E-06 + 7.043000000000000E+00 1.122170040015057E-06 + 7.044000000000000E+00 1.118765861151798E-06 + 7.045000000000000E+00 1.115371923159316E-06 + 7.046000000000000E+00 1.111988195519927E-06 + 7.047000000000000E+00 1.108614647805906E-06 + 7.048000000000000E+00 1.105251249679232E-06 + 7.049000000000000E+00 1.101897970891325E-06 + 7.050000000000000E+00 1.098554781282782E-06 + 7.051000000000000E+00 1.095221650783122E-06 + 7.052000000000000E+00 1.091898549410525E-06 + 7.053000000000000E+00 1.088585447271574E-06 + 7.054000000000000E+00 1.085282314560997E-06 + 7.055000000000000E+00 1.081989121561412E-06 + 7.056000000000000E+00 1.078705838643068E-06 + 7.057000000000000E+00 1.075432436263594E-06 + 7.058000000000000E+00 1.072168884967743E-06 + 7.059000000000000E+00 1.068915155387134E-06 + 7.060000000000000E+00 1.065671218240005E-06 + 7.061000000000000E+00 1.062437044330957E-06 + 7.062000000000000E+00 1.059212604550706E-06 + 7.063000000000000E+00 1.055997869875827E-06 + 7.064000000000000E+00 1.052792811368508E-06 + 7.065000000000000E+00 1.049597400176299E-06 + 7.066000000000000E+00 1.046411607531865E-06 + 7.067000000000000E+00 1.043235404752733E-06 + 7.068000000000000E+00 1.040068763241052E-06 + 7.069000000000000E+00 1.036911654483341E-06 + 7.070000000000000E+00 1.033764050050245E-06 + 7.071000000000000E+00 1.030625921596290E-06 + 7.072000000000000E+00 1.027497240859639E-06 + 7.073000000000000E+00 1.024377979661845E-06 + 7.074000000000000E+00 1.021268109907615E-06 + 7.075000000000000E+00 1.018167603584557E-06 + 7.076000000000000E+00 1.015076432762951E-06 + 7.077000000000000E+00 1.011994569595499E-06 + 7.078000000000000E+00 1.008921986317084E-06 + 7.079000000000000E+00 1.005858655244540E-06 + 7.080000000000000E+00 1.002804548776401E-06 + 7.081000000000000E+00 9.997596393926724E-07 + 7.082000000000000E+00 9.967238996545897E-07 + 7.083000000000000E+00 9.936973022043794E-07 + 7.084000000000000E+00 9.906798197650273E-07 + 7.085000000000000E+00 9.876714251400409E-07 + 7.086000000000000E+00 9.846720912132123E-07 + 7.087000000000000E+00 9.816817909483900E-07 + 7.088000000000000E+00 9.787004973892384E-07 + 7.089000000000000E+00 9.757281836590108E-07 + 7.090000000000000E+00 9.727648229603144E-07 + 7.091000000000000E+00 9.698103885748787E-07 + 7.092000000000000E+00 9.668648538633276E-07 + 7.093000000000000E+00 9.639281922649457E-07 + 7.094000000000000E+00 9.610003772974492E-07 + 7.095000000000000E+00 9.580813825567605E-07 + 7.096000000000000E+00 9.551711817167768E-07 + 7.097000000000000E+00 9.522697485291432E-07 + 7.098000000000000E+00 9.493770568230281E-07 + 7.099000000000000E+00 9.464930805048933E-07 + 7.100000000000000E+00 9.436177935582714E-07 + 7.101000000000000E+00 9.407511700435399E-07 + 7.102000000000000E+00 9.378931840976969E-07 + 7.103000000000000E+00 9.350438099341381E-07 + 7.104000000000000E+00 9.322030218424331E-07 + 7.105000000000000E+00 9.293707941881038E-07 + 7.106000000000000E+00 9.265471014124021E-07 + 7.107000000000000E+00 9.237319180320894E-07 + 7.108000000000000E+00 9.209252186392157E-07 + 7.109000000000000E+00 9.181269779009009E-07 + 7.110000000000000E+00 9.153371705591148E-07 + 7.111000000000000E+00 9.125557714304586E-07 + 7.112000000000000E+00 9.097827554059467E-07 + 7.113000000000000E+00 9.070180974507907E-07 + 7.114000000000000E+00 9.042617726041828E-07 + 7.115000000000000E+00 9.015137559790772E-07 + 7.116000000000000E+00 8.987740227619788E-07 + 7.117000000000000E+00 8.960425482127254E-07 + 7.118000000000000E+00 8.933193076642744E-07 + 7.119000000000000E+00 8.906042765224895E-07 + 7.120000000000000E+00 8.878974302659278E-07 + 7.121000000000000E+00 8.851987444456274E-07 + 7.122000000000000E+00 8.825081946848971E-07 + 7.123000000000000E+00 8.798257566791012E-07 + 7.124000000000000E+00 8.771514061954546E-07 + 7.125000000000000E+00 8.744851190728098E-07 + 7.126000000000000E+00 8.718268712214466E-07 + 7.127000000000000E+00 8.691766386228673E-07 + 7.128000000000000E+00 8.665343973295846E-07 + 7.129000000000000E+00 8.639001234649167E-07 + 7.130000000000000E+00 8.612737932227793E-07 + 7.131000000000000E+00 8.586553828674804E-07 + 7.132000000000000E+00 8.560448687335134E-07 + 7.133000000000000E+00 8.534422272253533E-07 + 7.134000000000000E+00 8.508474348172508E-07 + 7.135000000000000E+00 8.482604680530304E-07 + 7.136000000000000E+00 8.456813035458841E-07 + 7.137000000000000E+00 8.431099179781732E-07 + 7.138000000000000E+00 8.405462881012214E-07 + 7.139000000000000E+00 8.379903907351159E-07 + 7.140000000000000E+00 8.354422027685065E-07 + 7.141000000000000E+00 8.329017011584045E-07 + 7.142000000000000E+00 8.303688629299820E-07 + 7.143000000000000E+00 8.278436651763759E-07 + 7.144000000000000E+00 8.253260850584850E-07 + 7.145000000000000E+00 8.228160998047753E-07 + 7.146000000000000E+00 8.203136867110810E-07 + 7.147000000000000E+00 8.178188231404074E-07 + 7.148000000000000E+00 8.153314865227348E-07 + 7.149000000000000E+00 8.128516543548248E-07 + 7.150000000000000E+00 8.103793042000195E-07 + 7.151000000000000E+00 8.079144136880542E-07 + 7.152000000000000E+00 8.054569605148570E-07 + 7.153000000000000E+00 8.030069224423587E-07 + 7.154000000000000E+00 8.005642772982990E-07 + 7.155000000000000E+00 7.981290029760335E-07 + 7.156000000000000E+00 7.957010774343420E-07 + 7.157000000000000E+00 7.932804786972391E-07 + 7.158000000000000E+00 7.908671848537793E-07 + 7.159000000000000E+00 7.884611740578713E-07 + 7.160000000000000E+00 7.860624245280850E-07 + 7.161000000000000E+00 7.836709145474635E-07 + 7.162000000000000E+00 7.812866224633356E-07 + 7.163000000000000E+00 7.789095266871267E-07 + 7.164000000000000E+00 7.765396056941702E-07 + 7.165000000000000E+00 7.741768380235237E-07 + 7.166000000000000E+00 7.718212022777783E-07 + 7.167000000000000E+00 7.694726771228765E-07 + 7.168000000000000E+00 7.671312412879249E-07 + 7.169000000000000E+00 7.647968735650100E-07 + 7.170000000000000E+00 7.624695528090142E-07 + 7.171000000000000E+00 7.601492579374314E-07 + 7.172000000000000E+00 7.578359679301831E-07 + 7.173000000000000E+00 7.555296618294379E-07 + 7.174000000000000E+00 7.532303187394274E-07 + 7.175000000000000E+00 7.509379178262661E-07 + 7.176000000000000E+00 7.486524383177680E-07 + 7.177000000000000E+00 7.463738595032687E-07 + 7.178000000000000E+00 7.441021607334440E-07 + 7.179000000000000E+00 7.418373214201295E-07 + 7.180000000000000E+00 7.395793210361437E-07 + 7.181000000000000E+00 7.373281391151072E-07 + 7.182000000000000E+00 7.350837552512675E-07 + 7.183000000000000E+00 7.328461490993178E-07 + 7.184000000000000E+00 7.306153003742235E-07 + 7.185000000000000E+00 7.283911888510432E-07 + 7.186000000000000E+00 7.261737943647558E-07 + 7.187000000000000E+00 7.239630968100810E-07 + 7.188000000000000E+00 7.217590761413072E-07 + 7.189000000000000E+00 7.195617123721169E-07 + 7.190000000000000E+00 7.173709855754118E-07 + 7.191000000000000E+00 7.151868758831404E-07 + 7.192000000000000E+00 7.130093634861233E-07 + 7.193000000000000E+00 7.108384286338833E-07 + 7.194000000000000E+00 7.086740516344715E-07 + 7.195000000000000E+00 7.065162128542965E-07 + 7.196000000000000E+00 7.043648927179539E-07 + 7.197000000000000E+00 7.022200717080546E-07 + 7.198000000000000E+00 7.000817303650572E-07 + 7.199000000000000E+00 6.979498492870956E-07 + 7.200000000000000E+00 6.958244091298125E-07 + 7.201000000000000E+00 6.937053906061894E-07 + 7.202000000000000E+00 6.915927744863796E-07 + 7.203000000000000E+00 6.894865415975398E-07 + 7.204000000000000E+00 6.873866728236641E-07 + 7.205000000000000E+00 6.852931491054161E-07 + 7.206000000000000E+00 6.832059514399643E-07 + 7.207000000000000E+00 6.811250608808155E-07 + 7.208000000000000E+00 6.790504585376502E-07 + 7.209000000000000E+00 6.769821255761579E-07 + 7.210000000000000E+00 6.749200432178729E-07 + 7.211000000000000E+00 6.728641927400104E-07 + 7.212000000000000E+00 6.708145554753045E-07 + 7.213000000000000E+00 6.687711128118425E-07 + 7.214000000000000E+00 6.667338461929070E-07 + 7.215000000000000E+00 6.647027371168105E-07 + 7.216000000000000E+00 6.626777671367353E-07 + 7.217000000000000E+00 6.606589178605733E-07 + 7.218000000000000E+00 6.586461709507649E-07 + 7.219000000000000E+00 6.566395081241388E-07 + 7.220000000000000E+00 6.546389111517534E-07 + 7.221000000000000E+00 6.526443618587367E-07 + 7.222000000000000E+00 6.506558421241297E-07 + 7.223000000000000E+00 6.486733338807263E-07 + 7.224000000000000E+00 6.466968191149156E-07 + 7.225000000000000E+00 6.447262798665269E-07 + 7.226000000000000E+00 6.427616982286716E-07 + 7.227000000000000E+00 6.408030563475855E-07 + 7.228000000000000E+00 6.388503364224768E-07 + 7.229000000000000E+00 6.369035207053663E-07 + 7.230000000000000E+00 6.349625915009356E-07 + 7.231000000000000E+00 6.330275311663717E-07 + 7.232000000000000E+00 6.310983221112132E-07 + 7.233000000000000E+00 6.291749467971958E-07 + 7.234000000000000E+00 6.272573877381008E-07 + 7.235000000000000E+00 6.253456274996006E-07 + 7.236000000000000E+00 6.234396486991077E-07 + 7.237000000000000E+00 6.215394340056232E-07 + 7.238000000000000E+00 6.196449661395837E-07 + 7.239000000000000E+00 6.177562278727128E-07 + 7.240000000000000E+00 6.158732020278683E-07 + 7.241000000000000E+00 6.139958714788935E-07 + 7.242000000000000E+00 6.121242191504680E-07 + 7.243000000000000E+00 6.102582280179569E-07 + 7.244000000000000E+00 6.083978811072633E-07 + 7.245000000000000E+00 6.065431614946797E-07 + 7.246000000000000E+00 6.046940523067397E-07 + 7.247000000000000E+00 6.028505367200720E-07 + 7.248000000000000E+00 6.010125979612513E-07 + 7.249000000000000E+00 5.991802193066527E-07 + 7.250000000000000E+00 5.973533840823064E-07 + 7.251000000000000E+00 5.955320756637498E-07 + 7.252000000000000E+00 5.937162774758847E-07 + 7.253000000000000E+00 5.919059729928304E-07 + 7.254000000000000E+00 5.901011457377798E-07 + 7.255000000000000E+00 5.883017792828561E-07 + 7.256000000000000E+00 5.865078572489681E-07 + 7.257000000000000E+00 5.847193633056672E-07 + 7.258000000000000E+00 5.829362811710057E-07 + 7.259000000000000E+00 5.811585946113919E-07 + 7.260000000000000E+00 5.793862874414505E-07 + 7.261000000000000E+00 5.776193435238805E-07 + 7.262000000000000E+00 5.758577467693130E-07 + 7.263000000000000E+00 5.741014811361721E-07 + 7.264000000000000E+00 5.723505306305319E-07 + 7.265000000000000E+00 5.706048793059793E-07 + 7.266000000000000E+00 5.688645112634742E-07 + 7.267000000000000E+00 5.671294106512074E-07 + 7.268000000000000E+00 5.653995616644660E-07 + 7.269000000000000E+00 5.636749485454915E-07 + 7.270000000000000E+00 5.619555555833443E-07 + 7.271000000000000E+00 5.602413671137654E-07 + 7.272000000000000E+00 5.585323675190383E-07 + 7.273000000000000E+00 5.568285412278535E-07 + 7.274000000000000E+00 5.551298727151725E-07 + 7.275000000000000E+00 5.534363465020900E-07 + 7.276000000000000E+00 5.517479471556999E-07 + 7.277000000000000E+00 5.500646592889595E-07 + 7.278000000000000E+00 5.483864675605558E-07 + 7.279000000000000E+00 5.467133566747692E-07 + 7.280000000000000E+00 5.450453113813406E-07 + 7.281000000000000E+00 5.433823164753387E-07 + 7.282000000000000E+00 5.417243567970250E-07 + 7.283000000000000E+00 5.400714172317224E-07 + 7.284000000000000E+00 5.384234827096815E-07 + 7.285000000000000E+00 5.367805382059499E-07 + 7.286000000000000E+00 5.351425687402395E-07 + 7.287000000000000E+00 5.335095593767958E-07 + 7.288000000000000E+00 5.318814952242668E-07 + 7.289000000000000E+00 5.302583614355718E-07 + 7.290000000000000E+00 5.286401432077729E-07 + 7.291000000000000E+00 5.270268257819435E-07 + 7.292000000000000E+00 5.254183944430404E-07 + 7.293000000000000E+00 5.238148345197724E-07 + 7.294000000000000E+00 5.222161313844747E-07 + 7.295000000000000E+00 5.206222704529793E-07 + 7.296000000000000E+00 5.190332371844855E-07 + 7.297000000000000E+00 5.174490170814359E-07 + 7.298000000000000E+00 5.158695956893852E-07 + 7.299000000000000E+00 5.142949585968764E-07 + 7.300000000000000E+00 5.127250914353136E-07 + 7.301000000000000E+00 5.111599798788352E-07 + 7.302000000000000E+00 5.095996096441890E-07 + 7.303000000000000E+00 5.080439664906065E-07 + 7.304000000000000E+00 5.064930362196781E-07 + 7.305000000000000E+00 5.049468046752283E-07 + 7.306000000000000E+00 5.034052577431919E-07 + 7.307000000000000E+00 5.018683813514898E-07 + 7.308000000000000E+00 5.003361614699052E-07 + 7.309000000000000E+00 4.988085841099612E-07 + 7.310000000000000E+00 4.972856353247973E-07 + 7.311000000000000E+00 4.957673012090469E-07 + 7.312000000000000E+00 4.942535678987168E-07 + 7.313000000000000E+00 4.927444215710627E-07 + 7.314000000000000E+00 4.912398484444700E-07 + 7.315000000000000E+00 4.897398347783325E-07 + 7.316000000000000E+00 4.882443668729305E-07 + 7.317000000000000E+00 4.867534310693117E-07 + 7.318000000000000E+00 4.852670137491713E-07 + 7.319000000000000E+00 4.837851013347309E-07 + 7.320000000000000E+00 4.823076802886212E-07 + 7.321000000000000E+00 4.808347371137617E-07 + 7.322000000000000E+00 4.793662583532423E-07 + 7.323000000000000E+00 4.779022305902054E-07 + 7.324000000000000E+00 4.764426404477284E-07 + 7.325000000000000E+00 4.749874745887044E-07 + 7.326000000000000E+00 4.735367197157276E-07 + 7.327000000000000E+00 4.720903625709741E-07 + 7.328000000000000E+00 4.706483899360870E-07 + 7.329000000000000E+00 4.692107886320588E-07 + 7.330000000000000E+00 4.677775455191163E-07 + 7.331000000000000E+00 4.663486474966056E-07 + 7.332000000000000E+00 4.649240815028762E-07 + 7.333000000000000E+00 4.635038345151657E-07 + 7.334000000000000E+00 4.620878935494863E-07 + 7.335000000000000E+00 4.606762456605104E-07 + 7.336000000000000E+00 4.592688779414560E-07 + 7.337000000000000E+00 4.578657775239740E-07 + 7.338000000000000E+00 4.564669315780357E-07 + 7.339000000000000E+00 4.550723273118166E-07 + 7.340000000000000E+00 4.536819519715890E-07 + 7.341000000000000E+00 4.522957928416049E-07 + 7.342000000000000E+00 4.509138372439877E-07 + 7.343000000000000E+00 4.495360725386181E-07 + 7.344000000000000E+00 4.481624861230248E-07 + 7.345000000000000E+00 4.467930654322719E-07 + 7.346000000000000E+00 4.454277979388502E-07 + 7.347000000000000E+00 4.440666711525654E-07 + 7.348000000000000E+00 4.427096726204290E-07 + 7.349000000000000E+00 4.413567899265472E-07 + 7.350000000000000E+00 4.400080106920148E-07 + 7.351000000000000E+00 4.386633225748024E-07 + 7.352000000000000E+00 4.373227132696501E-07 + 7.353000000000000E+00 4.359861705079592E-07 + 7.354000000000000E+00 4.346536820576824E-07 + 7.355000000000000E+00 4.333252357232180E-07 + 7.356000000000000E+00 4.320008193453017E-07 + 7.357000000000000E+00 4.306804208008987E-07 + 7.358000000000000E+00 4.293640280030989E-07 + 7.359000000000000E+00 4.280516289010083E-07 + 7.360000000000000E+00 4.267432114796444E-07 + 7.361000000000000E+00 4.254387637598291E-07 + 7.362000000000000E+00 4.241382737980846E-07 + 7.363000000000000E+00 4.228417296865266E-07 + 7.364000000000000E+00 4.215491195527606E-07 + 7.365000000000000E+00 4.202604315597768E-07 + 7.366000000000000E+00 4.189756539058455E-07 + 7.367000000000000E+00 4.176947748244133E-07 + 7.368000000000000E+00 4.164177825839997E-07 + 7.369000000000000E+00 4.151446654880935E-07 + 7.370000000000000E+00 4.138754118750496E-07 + 7.371000000000000E+00 4.126100101179854E-07 + 7.372000000000000E+00 4.113484486246805E-07 + 7.373000000000000E+00 4.100907158374718E-07 + 7.374000000000000E+00 4.088368002331537E-07 + 7.375000000000000E+00 4.075866903228753E-07 + 7.376000000000000E+00 4.063403746520390E-07 + 7.377000000000000E+00 4.050978418002012E-07 + 7.378000000000000E+00 4.038590803809686E-07 + 7.379000000000000E+00 4.026240790419007E-07 + 7.380000000000000E+00 4.013928264644079E-07 + 7.381000000000000E+00 4.001653113636516E-07 + 7.382000000000000E+00 3.989415224884461E-07 + 7.383000000000000E+00 3.977214486211578E-07 + 7.384000000000000E+00 3.965050785776067E-07 + 7.385000000000000E+00 3.952924012069685E-07 + 7.386000000000000E+00 3.940834053916743E-07 + 7.387000000000000E+00 3.928780800473147E-07 + 7.388000000000000E+00 3.916764141225406E-07 + 7.389000000000000E+00 3.904783965989654E-07 + 7.390000000000000E+00 3.892840164910692E-07 + 7.391000000000000E+00 3.880932628461006E-07 + 7.392000000000000E+00 3.869061247439798E-07 + 7.393000000000000E+00 3.857225912972034E-07 + 7.394000000000000E+00 3.845426516507473E-07 + 7.395000000000000E+00 3.833662949819705E-07 + 7.396000000000000E+00 3.821935105005213E-07 + 7.397000000000000E+00 3.810242874482398E-07 + 7.398000000000000E+00 3.798586150990643E-07 + 7.399000000000000E+00 3.786964827589363E-07 + 7.400000000000000E+00 3.775378797657054E-07 + 7.401000000000000E+00 3.763827954890359E-07 + 7.402000000000000E+00 3.752312193303124E-07 + 7.403000000000000E+00 3.740831407225466E-07 + 7.404000000000000E+00 3.729385491302834E-07 + 7.405000000000000E+00 3.717974340495082E-07 + 7.406000000000000E+00 3.706597850075534E-07 + 7.407000000000000E+00 3.695255915630072E-07 + 7.408000000000000E+00 3.683948433056197E-07 + 7.409000000000000E+00 3.672675298562123E-07 + 7.410000000000000E+00 3.661436408665843E-07 + 7.411000000000000E+00 3.650231660194236E-07 + 7.412000000000000E+00 3.639060950282139E-07 + 7.413000000000000E+00 3.627924176371434E-07 + 7.414000000000000E+00 3.616821236210161E-07 + 7.415000000000000E+00 3.605752027851590E-07 + 7.416000000000000E+00 3.594716449653337E-07 + 7.417000000000000E+00 3.583714400276459E-07 + 7.418000000000000E+00 3.572745778684555E-07 + 7.419000000000000E+00 3.561810484142877E-07 + 7.420000000000000E+00 3.550908416217438E-07 + 7.421000000000000E+00 3.540039474774113E-07 + 7.422000000000000E+00 3.529203559977777E-07 + 7.423000000000000E+00 3.518400572291397E-07 + 7.424000000000000E+00 3.507630412475162E-07 + 7.425000000000000E+00 3.496892981585609E-07 + 7.426000000000000E+00 3.486188180974741E-07 + 7.427000000000000E+00 3.475515912289152E-07 + 7.428000000000000E+00 3.464876077469161E-07 + 7.429000000000000E+00 3.454268578747945E-07 + 7.430000000000000E+00 3.443693318650676E-07 + 7.431000000000000E+00 3.433150199993643E-07 + 7.432000000000000E+00 3.422639125883407E-07 + 7.433000000000000E+00 3.412159999715950E-07 + 7.434000000000000E+00 3.401712725175788E-07 + 7.435000000000000E+00 3.391297206235152E-07 + 7.436000000000000E+00 3.380913347153123E-07 + 7.437000000000000E+00 3.370561052474778E-07 + 7.438000000000000E+00 3.360240227030359E-07 + 7.439000000000000E+00 3.349950775934416E-07 + 7.440000000000000E+00 3.339692604584979E-07 + 7.441000000000000E+00 3.329465618662711E-07 + 7.442000000000000E+00 3.319269724130081E-07 + 7.443000000000000E+00 3.309104827230517E-07 + 7.444000000000000E+00 3.298970834487588E-07 + 7.445000000000000E+00 3.288867652704172E-07 + 7.446000000000000E+00 3.278795188961630E-07 + 7.447000000000000E+00 3.268753350618981E-07 + 7.448000000000000E+00 3.258742045312079E-07 + 7.449000000000000E+00 3.248761180952804E-07 + 7.450000000000000E+00 3.238810665728235E-07 + 7.451000000000000E+00 3.228890408099841E-07 + 7.452000000000000E+00 3.219000316802670E-07 + 7.453000000000000E+00 3.209140300844537E-07 + 7.454000000000000E+00 3.199310269505221E-07 + 7.455000000000000E+00 3.189510132335656E-07 + 7.456000000000000E+00 3.179739799157135E-07 + 7.457000000000000E+00 3.169999180060501E-07 + 7.458000000000000E+00 3.160288185405363E-07 + 7.459000000000000E+00 3.150606725819289E-07 + 7.460000000000000E+00 3.140954712197017E-07 + 7.461000000000000E+00 3.131332055699668E-07 + 7.462000000000000E+00 3.121738667753957E-07 + 7.463000000000000E+00 3.112174460051395E-07 + 7.464000000000000E+00 3.102639344547530E-07 + 7.465000000000000E+00 3.093133233461144E-07 + 7.466000000000000E+00 3.083656039273483E-07 + 7.467000000000000E+00 3.074207674727477E-07 + 7.468000000000000E+00 3.064788052826974E-07 + 7.469000000000000E+00 3.055397086835955E-07 + 7.470000000000000E+00 3.046034690277776E-07 + 7.471000000000000E+00 3.036700776934394E-07 + 7.472000000000000E+00 3.027395260845596E-07 + 7.473000000000000E+00 3.018118056308261E-07 + 7.474000000000000E+00 3.008869077875558E-07 + 7.475000000000000E+00 2.999648240356227E-07 + 7.476000000000000E+00 2.990455458813804E-07 + 7.477000000000000E+00 2.981290648565858E-07 + 7.478000000000000E+00 2.972153725183263E-07 + 7.479000000000000E+00 2.963044604489426E-07 + 7.480000000000000E+00 2.953963202559551E-07 + 7.481000000000000E+00 2.944909435719895E-07 + 7.482000000000000E+00 2.935883220547013E-07 + 7.483000000000000E+00 2.926884473867029E-07 + 7.484000000000000E+00 2.917913112754891E-07 + 7.485000000000000E+00 2.908969054533640E-07 + 7.486000000000000E+00 2.900052216773666E-07 + 7.487000000000000E+00 2.891162517291985E-07 + 7.488000000000000E+00 2.882299874151497E-07 + 7.489000000000000E+00 2.873464205660276E-07 + 7.490000000000000E+00 2.864655430370825E-07 + 7.491000000000000E+00 2.855873467079367E-07 + 7.492000000000000E+00 2.847118234825110E-07 + 7.493000000000000E+00 2.838389652889537E-07 + 7.494000000000000E+00 2.829687640795687E-07 + 7.495000000000000E+00 2.821012118307439E-07 + 7.496000000000000E+00 2.812363005428789E-07 + 7.497000000000000E+00 2.803740222403158E-07 + 7.498000000000000E+00 2.795143689712666E-07 + 7.499000000000000E+00 2.786573328077431E-07 + 7.500000000000000E+00 2.778029058454868E-07 + 7.501000000000000E+00 2.769510802038976E-07 + 7.502000000000000E+00 2.761018480259648E-07 + 7.503000000000000E+00 2.752552014781963E-07 + 7.504000000000000E+00 2.744111327505497E-07 + 7.505000000000000E+00 2.735696340563623E-07 + 7.506000000000000E+00 2.727306976322817E-07 + 7.507000000000000E+00 2.718943157381974E-07 + 7.508000000000000E+00 2.710604806571712E-07 + 7.509000000000000E+00 2.702291846953693E-07 + 7.510000000000000E+00 2.694004201819927E-07 + 7.511000000000000E+00 2.685741794692099E-07 + 7.512000000000000E+00 2.677504549320892E-07 + 7.513000000000000E+00 2.669292389685294E-07 + 7.514000000000000E+00 2.661105239991929E-07 + 7.515000000000000E+00 2.652943024674384E-07 + 7.516000000000000E+00 2.644805668392539E-07 + 7.517000000000000E+00 2.636693096031885E-07 + 7.518000000000000E+00 2.628605232702868E-07 + 7.519000000000000E+00 2.620542003740210E-07 + 7.520000000000000E+00 2.612503334702254E-07 + 7.521000000000000E+00 2.604489151370303E-07 + 7.522000000000000E+00 2.596499379747940E-07 + 7.523000000000000E+00 2.588533946060392E-07 + 7.524000000000000E+00 2.580592776753863E-07 + 7.525000000000000E+00 2.572675798494875E-07 + 7.526000000000000E+00 2.564782938169621E-07 + 7.527000000000000E+00 2.556914122883313E-07 + 7.528000000000000E+00 2.549069279959526E-07 + 7.529000000000000E+00 2.541248336939562E-07 + 7.530000000000000E+00 2.533451221581790E-07 + 7.531000000000000E+00 2.525677861861016E-07 + 7.532000000000000E+00 2.517928185967832E-07 + 7.533000000000000E+00 2.510202122307980E-07 + 7.534000000000000E+00 2.502499599501713E-07 + 7.535000000000000E+00 2.494820546383158E-07 + 7.536000000000000E+00 2.487164891999682E-07 + 7.537000000000000E+00 2.479532565611262E-07 + 7.538000000000000E+00 2.471923496689847E-07 + 7.539000000000000E+00 2.464337614918742E-07 + 7.540000000000000E+00 2.456774850191966E-07 + 7.541000000000000E+00 2.449235132613635E-07 + 7.542000000000000E+00 2.441718392497345E-07 + 7.543000000000000E+00 2.434224560365536E-07 + 7.544000000000000E+00 2.426753566948878E-07 + 7.545000000000000E+00 2.419305343185663E-07 + 7.546000000000000E+00 2.411879820221173E-07 + 7.547000000000000E+00 2.404476929407081E-07 + 7.548000000000000E+00 2.397096602300825E-07 + 7.549000000000000E+00 2.389738770665003E-07 + 7.550000000000000E+00 2.382403366466772E-07 + 7.551000000000000E+00 2.375090321877223E-07 + 7.552000000000000E+00 2.367799569270797E-07 + 7.553000000000000E+00 2.360531041224666E-07 + 7.554000000000000E+00 2.353284670518134E-07 + 7.555000000000000E+00 2.346060390132043E-07 + 7.556000000000000E+00 2.338858133248170E-07 + 7.557000000000000E+00 2.331677833248629E-07 + 7.558000000000000E+00 2.324519423715284E-07 + 7.559000000000000E+00 2.317382838429145E-07 + 7.560000000000000E+00 2.310268011369791E-07 + 7.561000000000000E+00 2.303174876714762E-07 + 7.562000000000000E+00 2.296103368838989E-07 + 7.563000000000000E+00 2.289053422314197E-07 + 7.564000000000000E+00 2.282024971908326E-07 + 7.565000000000000E+00 2.275017952584946E-07 + 7.566000000000000E+00 2.268032299502679E-07 + 7.567000000000000E+00 2.261067948014612E-07 + 7.568000000000000E+00 2.254124833667732E-07 + 7.569000000000000E+00 2.247202892202338E-07 + 7.570000000000000E+00 2.240302059551474E-07 + 7.571000000000000E+00 2.233422271840359E-07 + 7.572000000000000E+00 2.226563465385803E-07 + 7.573000000000000E+00 2.219725576695657E-07 + 7.574000000000000E+00 2.212908542468230E-07 + 7.575000000000000E+00 2.206112299591733E-07 + 7.576000000000000E+00 2.199336785143707E-07 + 7.577000000000000E+00 2.192581936390465E-07 + 7.578000000000000E+00 2.185847690786536E-07 + 7.579000000000000E+00 2.179133985974095E-07 + 7.580000000000000E+00 2.172440759782413E-07 + 7.581000000000000E+00 2.165767950227303E-07 + 7.582000000000000E+00 2.159115495510559E-07 + 7.583000000000000E+00 2.152483334019407E-07 + 7.584000000000000E+00 2.145871404325955E-07 + 7.585000000000000E+00 2.139279645186644E-07 + 7.586000000000000E+00 2.132707995541696E-07 + 7.587000000000000E+00 2.126156394514575E-07 + 7.588000000000000E+00 2.119624781411431E-07 + 7.589000000000000E+00 2.113113095720574E-07 + 7.590000000000000E+00 2.106621277111917E-07 + 7.591000000000000E+00 2.100149265436443E-07 + 7.592000000000000E+00 2.093697000725671E-07 + 7.593000000000000E+00 2.087264423191111E-07 + 7.594000000000000E+00 2.080851473223730E-07 + 7.595000000000000E+00 2.074458091393430E-07 + 7.596000000000000E+00 2.068084218448501E-07 + 7.597000000000000E+00 2.061729795315101E-07 + 7.598000000000000E+00 2.055394763096722E-07 + 7.599000000000000E+00 2.049079063073667E-07 + 7.600000000000000E+00 2.042782636702520E-07 + 7.601000000000000E+00 2.036505425615621E-07 + 7.602000000000000E+00 2.030247371620552E-07 + 7.603000000000000E+00 2.024008416699614E-07 + 7.604000000000000E+00 2.017788503009296E-07 + 7.605000000000000E+00 2.011587572879766E-07 + 7.606000000000000E+00 2.005405568814360E-07 + 7.607000000000000E+00 1.999242433489057E-07 + 7.608000000000000E+00 1.993098109751969E-07 + 7.609000000000000E+00 1.986972540622831E-07 + 7.610000000000000E+00 1.980865669292494E-07 + 7.611000000000000E+00 1.974777439122403E-07 + 7.612000000000000E+00 1.968707793644104E-07 + 7.613000000000000E+00 1.962656676558732E-07 + 7.614000000000000E+00 1.956624031736505E-07 + 7.615000000000000E+00 1.950609803216227E-07 + 7.616000000000000E+00 1.944613935204779E-07 + 7.617000000000000E+00 1.938636372076625E-07 + 7.618000000000000E+00 1.932677058373311E-07 + 7.619000000000000E+00 1.926735938802967E-07 + 7.620000000000000E+00 1.920812958239819E-07 + 7.621000000000000E+00 1.914908061723681E-07 + 7.622000000000000E+00 1.909021194459474E-07 + 7.623000000000000E+00 1.903152301816733E-07 + 7.624000000000000E+00 1.897301329329112E-07 + 7.625000000000000E+00 1.891468222693900E-07 + 7.626000000000000E+00 1.885652927771532E-07 + 7.627000000000000E+00 1.879855390585111E-07 + 7.628000000000000E+00 1.874075557319911E-07 + 7.629000000000000E+00 1.868313374322904E-07 + 7.630000000000000E+00 1.862568788102277E-07 + 7.631000000000000E+00 1.856841745326948E-07 + 7.632000000000000E+00 1.851132192826094E-07 + 7.633000000000000E+00 1.845440077588674E-07 + 7.634000000000000E+00 1.839765346762945E-07 + 7.635000000000000E+00 1.834107947655998E-07 + 7.636000000000000E+00 1.828467827733278E-07 + 7.637000000000000E+00 1.822844934618115E-07 + 7.638000000000000E+00 1.817239216091261E-07 + 7.639000000000000E+00 1.811650620090408E-07 + 7.640000000000000E+00 1.806079094709729E-07 + 7.641000000000000E+00 1.800524588199415E-07 + 7.642000000000000E+00 1.794987048965204E-07 + 7.643000000000000E+00 1.789466425567923E-07 + 7.644000000000000E+00 1.783962666723020E-07 + 7.645000000000000E+00 1.778475721300110E-07 + 7.646000000000000E+00 1.773005538322516E-07 + 7.647000000000000E+00 1.767552066966804E-07 + 7.648000000000000E+00 1.762115256562337E-07 + 7.649000000000000E+00 1.756695056590812E-07 + 7.650000000000000E+00 1.751291416685808E-07 + 7.651000000000000E+00 1.745904286632341E-07 + 7.652000000000000E+00 1.740533616366400E-07 + 7.653000000000000E+00 1.735179355974508E-07 + 7.654000000000000E+00 1.729841455693268E-07 + 7.655000000000000E+00 1.724519865908924E-07 + 7.656000000000000E+00 1.719214537156905E-07 + 7.657000000000000E+00 1.713925420121384E-07 + 7.658000000000000E+00 1.708652465634839E-07 + 7.659000000000000E+00 1.703395624677610E-07 + 7.660000000000000E+00 1.698154848377453E-07 + 7.661000000000000E+00 1.692930088009108E-07 + 7.662000000000000E+00 1.687721294993859E-07 + 7.663000000000000E+00 1.682528420899095E-07 + 7.664000000000000E+00 1.677351417437876E-07 + 7.665000000000000E+00 1.672190236468501E-07 + 7.666000000000000E+00 1.667044829994072E-07 + 7.667000000000000E+00 1.661915150162067E-07 + 7.668000000000000E+00 1.656801149263907E-07 + 7.669000000000000E+00 1.651702779734525E-07 + 7.670000000000000E+00 1.646619994151945E-07 + 7.671000000000000E+00 1.641552745236846E-07 + 7.672000000000000E+00 1.636500985852147E-07 + 7.673000000000000E+00 1.631464669002578E-07 + 7.674000000000000E+00 1.626443747834254E-07 + 7.675000000000000E+00 1.621438175634264E-07 + 7.676000000000000E+00 1.616447905830238E-07 + 7.677000000000000E+00 1.611472891989941E-07 + 7.678000000000000E+00 1.606513087820844E-07 + 7.679000000000000E+00 1.601568447169717E-07 + 7.680000000000000E+00 1.596638924022205E-07 + 7.681000000000000E+00 1.591724472502424E-07 + 7.682000000000000E+00 1.586825046872535E-07 + 7.683000000000000E+00 1.581940601532351E-07 + 7.684000000000000E+00 1.577071091018905E-07 + 7.685000000000000E+00 1.572216470006062E-07 + 7.686000000000000E+00 1.567376693304092E-07 + 7.687000000000000E+00 1.562551715859281E-07 + 7.688000000000000E+00 1.557741492753509E-07 + 7.689000000000000E+00 1.552945979203860E-07 + 7.690000000000000E+00 1.548165130562212E-07 + 7.691000000000000E+00 1.543398902314829E-07 + 7.692000000000000E+00 1.538647250081975E-07 + 7.693000000000000E+00 1.533910129617503E-07 + 7.694000000000000E+00 1.529187496808462E-07 + 7.695000000000000E+00 1.524479307674692E-07 + 7.696000000000000E+00 1.519785518368445E-07 + 7.697000000000000E+00 1.515106085173965E-07 + 7.698000000000000E+00 1.510440964507124E-07 + 7.699000000000000E+00 1.505790112915001E-07 + 7.700000000000000E+00 1.501153487075509E-07 + 7.701000000000000E+00 1.496531043796999E-07 + 7.702000000000000E+00 1.491922740017874E-07 + 7.703000000000000E+00 1.487328532806190E-07 + 7.704000000000000E+00 1.482748379359290E-07 + 7.705000000000000E+00 1.478182237003397E-07 + 7.706000000000000E+00 1.473630063193240E-07 + 7.707000000000000E+00 1.469091815511670E-07 + 7.708000000000000E+00 1.464567451669280E-07 + 7.709000000000000E+00 1.460056929504017E-07 + 7.710000000000000E+00 1.455560206980807E-07 + 7.711000000000000E+00 1.451077242191178E-07 + 7.712000000000000E+00 1.446607993352874E-07 + 7.713000000000000E+00 1.442152418809488E-07 + 7.714000000000000E+00 1.437710477030082E-07 + 7.715000000000000E+00 1.433282126608812E-07 + 7.716000000000000E+00 1.428867326264557E-07 + 7.717000000000000E+00 1.424466034840544E-07 + 7.718000000000000E+00 1.420078211303979E-07 + 7.719000000000000E+00 1.415703814745676E-07 + 7.720000000000000E+00 1.411342804379693E-07 + 7.721000000000000E+00 1.406995139542949E-07 + 7.722000000000000E+00 1.402660779694882E-07 + 7.723000000000000E+00 1.398339684417059E-07 + 7.724000000000000E+00 1.394031813412827E-07 + 7.725000000000000E+00 1.389737126506943E-07 + 7.726000000000000E+00 1.385455583645211E-07 + 7.727000000000000E+00 1.381187144894127E-07 + 7.728000000000000E+00 1.376931770440512E-07 + 7.729000000000000E+00 1.372689420591153E-07 + 7.730000000000000E+00 1.368460055772453E-07 + 7.731000000000000E+00 1.364243636530062E-07 + 7.732000000000000E+00 1.360040123528532E-07 + 7.733000000000000E+00 1.355849477550952E-07 + 7.734000000000000E+00 1.351671659498603E-07 + 7.735000000000000E+00 1.347506630390601E-07 + 7.736000000000000E+00 1.343354351363542E-07 + 7.737000000000000E+00 1.339214783671158E-07 + 7.738000000000000E+00 1.335087888683965E-07 + 7.739000000000000E+00 1.330973627888907E-07 + 7.740000000000000E+00 1.326871962889021E-07 + 7.741000000000000E+00 1.322782855403079E-07 + 7.742000000000000E+00 1.318706267265251E-07 + 7.743000000000000E+00 1.314642160424753E-07 + 7.744000000000000E+00 1.310590496945510E-07 + 7.745000000000000E+00 1.306551239005807E-07 + 7.746000000000000E+00 1.302524348897954E-07 + 7.747000000000000E+00 1.298509789027938E-07 + 7.748000000000000E+00 1.294507521915091E-07 + 7.749000000000000E+00 1.290517510191748E-07 + 7.750000000000000E+00 1.286539716602910E-07 + 7.751000000000000E+00 1.282574104005902E-07 + 7.752000000000000E+00 1.278620635370045E-07 + 7.753000000000000E+00 1.274679273776321E-07 + 7.754000000000000E+00 1.270749982417037E-07 + 7.755000000000000E+00 1.266832724595488E-07 + 7.756000000000000E+00 1.262927463725634E-07 + 7.757000000000000E+00 1.259034163331766E-07 + 7.758000000000000E+00 1.255152787048170E-07 + 7.759000000000000E+00 1.251283298618811E-07 + 7.760000000000000E+00 1.247425661896994E-07 + 7.761000000000000E+00 1.243579840845042E-07 + 7.762000000000000E+00 1.239745799533970E-07 + 7.763000000000000E+00 1.235923502143162E-07 + 7.764000000000000E+00 1.232112912960042E-07 + 7.765000000000000E+00 1.228313996379754E-07 + 7.766000000000000E+00 1.224526716904845E-07 + 7.767000000000000E+00 1.220751039144932E-07 + 7.768000000000000E+00 1.216986927816394E-07 + 7.769000000000000E+00 1.213234347742048E-07 + 7.770000000000000E+00 1.209493263850828E-07 + 7.771000000000000E+00 1.205763641177476E-07 + 7.772000000000000E+00 1.202045444862215E-07 + 7.773000000000000E+00 1.198338640150440E-07 + 7.774000000000000E+00 1.194643192392407E-07 + 7.775000000000000E+00 1.190959067042911E-07 + 7.776000000000000E+00 1.187286229660978E-07 + 7.777000000000000E+00 1.183624645909556E-07 + 7.778000000000000E+00 1.179974281555198E-07 + 7.779000000000000E+00 1.176335102467758E-07 + 7.780000000000000E+00 1.172707074620078E-07 + 7.781000000000000E+00 1.169090164087684E-07 + 7.782000000000000E+00 1.165484337048476E-07 + 7.783000000000000E+00 1.161889559782419E-07 + 7.784000000000000E+00 1.158305798671248E-07 + 7.785000000000000E+00 1.154733020198152E-07 + 7.786000000000000E+00 1.151171190947476E-07 + 7.787000000000000E+00 1.147620277604424E-07 + 7.788000000000000E+00 1.144080246954743E-07 + 7.789000000000000E+00 1.140551065884438E-07 + 7.790000000000000E+00 1.137032701379459E-07 + 7.791000000000000E+00 1.133525120525412E-07 + 7.792000000000000E+00 1.130028290507258E-07 + 7.793000000000000E+00 1.126542178609009E-07 + 7.794000000000000E+00 1.123066752213444E-07 + 7.795000000000000E+00 1.119601978801803E-07 + 7.796000000000000E+00 1.116147825953498E-07 + 7.797000000000000E+00 1.112704261345817E-07 + 7.798000000000000E+00 1.109271252753633E-07 + 7.799000000000000E+00 1.105848768049110E-07 + 7.800000000000000E+00 1.102436775201413E-07 + 7.801000000000000E+00 1.099035242276419E-07 + 7.802000000000000E+00 1.095644137436425E-07 + 7.803000000000000E+00 1.092263428939861E-07 + 7.804000000000000E+00 1.088893085141004E-07 + 7.805000000000000E+00 1.085533074489685E-07 + 7.806000000000000E+00 1.082183365531014E-07 + 7.807000000000000E+00 1.078843926905083E-07 + 7.808000000000000E+00 1.075514727346689E-07 + 7.809000000000000E+00 1.072195735685048E-07 + 7.810000000000000E+00 1.068886920843514E-07 + 7.811000000000000E+00 1.065588251839298E-07 + 7.812000000000000E+00 1.062299697783181E-07 + 7.813000000000000E+00 1.059021227879242E-07 + 7.814000000000000E+00 1.055752811424573E-07 + 7.815000000000000E+00 1.052494417809007E-07 + 7.816000000000000E+00 1.049246016514830E-07 + 7.817000000000000E+00 1.046007577116514E-07 + 7.818000000000000E+00 1.042779069280436E-07 + 7.819000000000000E+00 1.039560462764607E-07 + 7.820000000000000E+00 1.036351727418392E-07 + 7.821000000000000E+00 1.033152833182241E-07 + 7.822000000000000E+00 1.029963750087414E-07 + 7.823000000000000E+00 1.026784448255711E-07 + 7.824000000000000E+00 1.023614897899198E-07 + 7.825000000000000E+00 1.020455069319940E-07 + 7.826000000000000E+00 1.017304932909731E-07 + 7.827000000000000E+00 1.014164459149820E-07 + 7.828000000000000E+00 1.011033618610653E-07 + 7.829000000000000E+00 1.007912381951598E-07 + 7.830000000000000E+00 1.004800719920682E-07 + 7.831000000000000E+00 1.001698603354321E-07 + 7.832000000000000E+00 9.986060031770646E-08 + 7.833000000000000E+00 9.955228904013232E-08 + 7.834000000000000E+00 9.924492361271066E-08 + 7.835000000000000E+00 9.893850115417657E-08 + 7.836000000000000E+00 9.863301879197290E-08 + 7.837000000000000E+00 9.832847366222379E-08 + 7.838000000000000E+00 9.802486290970920E-08 + 7.839000000000000E+00 9.772218368783866E-08 + 7.840000000000000E+00 9.742043315862556E-08 + 7.841000000000000E+00 9.711960849266147E-08 + 7.842000000000000E+00 9.681970686909016E-08 + 7.843000000000000E+00 9.652072547558203E-08 + 7.844000000000000E+00 9.622266150830897E-08 + 7.845000000000000E+00 9.592551217191829E-08 + 7.846000000000000E+00 9.562927467950782E-08 + 7.847000000000000E+00 9.533394625260046E-08 + 7.848000000000000E+00 9.503952412111849E-08 + 7.849000000000000E+00 9.474600552335921E-08 + 7.850000000000000E+00 9.445338770596917E-08 + 7.851000000000000E+00 9.416166792391956E-08 + 7.852000000000000E+00 9.387084344048087E-08 + 7.853000000000000E+00 9.358091152719854E-08 + 7.854000000000000E+00 9.329186946386764E-08 + 7.855000000000000E+00 9.300371453850849E-08 + 7.856000000000000E+00 9.271644404734199E-08 + 7.857000000000000E+00 9.243005529476474E-08 + 7.858000000000000E+00 9.214454559332493E-08 + 7.859000000000000E+00 9.185991226369761E-08 + 7.860000000000000E+00 9.157615263466055E-08 + 7.861000000000000E+00 9.129326404306977E-08 + 7.862000000000000E+00 9.101124383383533E-08 + 7.863000000000000E+00 9.073008935989760E-08 + 7.864000000000000E+00 9.044979798220252E-08 + 7.865000000000000E+00 9.017036706967790E-08 + 7.866000000000000E+00 8.989179399920980E-08 + 7.867000000000000E+00 8.961407615561820E-08 + 7.868000000000000E+00 8.933721093163346E-08 + 7.869000000000000E+00 8.906119572787259E-08 + 7.870000000000000E+00 8.878602795281544E-08 + 7.871000000000000E+00 8.851170502278141E-08 + 7.872000000000000E+00 8.823822436190566E-08 + 7.873000000000000E+00 8.796558340211578E-08 + 7.874000000000000E+00 8.769377958310870E-08 + 7.875000000000000E+00 8.742281035232677E-08 + 7.876000000000000E+00 8.715267316493508E-08 + 7.877000000000000E+00 8.688336548379830E-08 + 7.878000000000000E+00 8.661488477945687E-08 + 7.879000000000000E+00 8.634722853010511E-08 + 7.880000000000000E+00 8.608039422156730E-08 + 7.881000000000000E+00 8.581437934727525E-08 + 7.882000000000000E+00 8.554918140824566E-08 + 7.883000000000000E+00 8.528479791305663E-08 + 7.884000000000000E+00 8.502122637782587E-08 + 7.885000000000000E+00 8.475846432618749E-08 + 7.886000000000000E+00 8.449650928926953E-08 + 7.887000000000000E+00 8.423535880567184E-08 + 7.888000000000000E+00 8.397501042144333E-08 + 7.889000000000000E+00 8.371546169005949E-08 + 7.890000000000000E+00 8.345671017240064E-08 + 7.891000000000000E+00 8.319875343672919E-08 + 7.892000000000000E+00 8.294158905866788E-08 + 7.893000000000000E+00 8.268521462117729E-08 + 7.894000000000000E+00 8.242962771453415E-08 + 7.895000000000000E+00 8.217482593630941E-08 + 7.896000000000000E+00 8.192080689134596E-08 + 7.897000000000000E+00 8.166756819173752E-08 + 7.898000000000000E+00 8.141510745680595E-08 + 7.899000000000000E+00 8.116342231308036E-08 + 7.900000000000000E+00 8.091251039427503E-08 + 7.901000000000000E+00 8.066236934126820E-08 + 7.902000000000000E+00 8.041299680208003E-08 + 7.903000000000000E+00 8.016439043185181E-08 + 7.904000000000000E+00 7.991654789282413E-08 + 7.905000000000000E+00 7.966946685431570E-08 + 7.906000000000000E+00 7.942314499270214E-08 + 7.907000000000000E+00 7.917757999139491E-08 + 7.908000000000000E+00 7.893276954081980E-08 + 7.909000000000000E+00 7.868871133839641E-08 + 7.910000000000000E+00 7.844540308851671E-08 + 7.911000000000000E+00 7.820284250252432E-08 + 7.912000000000000E+00 7.796102729869367E-08 + 7.913000000000000E+00 7.771995520220890E-08 + 7.914000000000000E+00 7.747962394514366E-08 + 7.915000000000000E+00 7.724003126643993E-08 + 7.916000000000000E+00 7.700117491188760E-08 + 7.917000000000000E+00 7.676305263410378E-08 + 7.918000000000000E+00 7.652566219251265E-08 + 7.919000000000000E+00 7.628900135332462E-08 + 7.920000000000000E+00 7.605306788951605E-08 + 7.921000000000000E+00 7.581785958080908E-08 + 7.922000000000000E+00 7.558337421365136E-08 + 7.923000000000000E+00 7.534960958119566E-08 + 7.924000000000000E+00 7.511656348327985E-08 + 7.925000000000000E+00 7.488423372640687E-08 + 7.926000000000000E+00 7.465261812372464E-08 + 7.927000000000000E+00 7.442171449500622E-08 + 7.928000000000000E+00 7.419152066662973E-08 + 7.929000000000000E+00 7.396203447155872E-08 + 7.930000000000000E+00 7.373325374932204E-08 + 7.931000000000000E+00 7.350517634599460E-08 + 7.932000000000000E+00 7.327780011417739E-08 + 7.933000000000000E+00 7.305112291297789E-08 + 7.934000000000000E+00 7.282514260799062E-08 + 7.935000000000000E+00 7.259985707127772E-08 + 7.936000000000000E+00 7.237526418134917E-08 + 7.937000000000000E+00 7.215136182314394E-08 + 7.938000000000000E+00 7.192814788801027E-08 + 7.939000000000000E+00 7.170562027368645E-08 + 7.940000000000000E+00 7.148377688428196E-08 + 7.941000000000000E+00 7.126261563025789E-08 + 7.942000000000000E+00 7.104213442840804E-08 + 7.943000000000000E+00 7.082233120184004E-08 + 7.944000000000000E+00 7.060320387995612E-08 + 7.945000000000000E+00 7.038475039843442E-08 + 7.946000000000000E+00 7.016696869920993E-08 + 7.947000000000000E+00 6.994985673045584E-08 + 7.948000000000000E+00 6.973341244656466E-08 + 7.949000000000000E+00 6.951763380812975E-08 + 7.950000000000000E+00 6.930251878192632E-08 + 7.951000000000000E+00 6.908806534089325E-08 + 7.952000000000000E+00 6.887427146411443E-08 + 7.953000000000000E+00 6.866113513680006E-08 + 7.954000000000000E+00 6.844865435026846E-08 + 7.955000000000000E+00 6.823682710192781E-08 + 7.956000000000000E+00 6.802565139525752E-08 + 7.957000000000000E+00 6.781512523979043E-08 + 7.958000000000000E+00 6.760524665109405E-08 + 7.959000000000000E+00 6.739601365075277E-08 + 7.960000000000000E+00 6.718742426634995E-08 + 7.961000000000000E+00 6.697947653144941E-08 + 7.962000000000000E+00 6.677216848557776E-08 + 7.963000000000000E+00 6.656549817420652E-08 + 7.964000000000000E+00 6.635946364873399E-08 + 7.965000000000000E+00 6.615406296646770E-08 + 7.966000000000000E+00 6.594929419060629E-08 + 7.967000000000000E+00 6.574515539022235E-08 + 7.968000000000000E+00 6.554164464024411E-08 + 7.969000000000000E+00 6.533876002143835E-08 + 7.970000000000000E+00 6.513649962039260E-08 + 7.971000000000000E+00 6.493486152949766E-08 + 7.972000000000000E+00 6.473384384693018E-08 + 7.973000000000000E+00 6.453344467663521E-08 + 7.974000000000000E+00 6.433366212830894E-08 + 7.975000000000000E+00 6.413449431738126E-08 + 7.976000000000000E+00 6.393593936499889E-08 + 7.977000000000000E+00 6.373799539800749E-08 + 7.978000000000000E+00 6.354066054893521E-08 + 7.979000000000000E+00 6.334393295597521E-08 + 7.980000000000000E+00 6.314781076296877E-08 + 7.981000000000000E+00 6.295229211938832E-08 + 7.982000000000000E+00 6.275737518032025E-08 + 7.983000000000000E+00 6.256305810644838E-08 + 7.984000000000000E+00 6.236933906403699E-08 + 7.985000000000000E+00 6.217621622491368E-08 + 7.986000000000000E+00 6.198368776645344E-08 + 7.987000000000000E+00 6.179175187156098E-08 + 7.988000000000000E+00 6.160040672865485E-08 + 7.989000000000000E+00 6.140965053165064E-08 + 7.990000000000000E+00 6.121948147994418E-08 + 7.991000000000000E+00 6.102989777839524E-08 + 7.992000000000000E+00 6.084089763731129E-08 + 7.993000000000000E+00 6.065247927243079E-08 + 7.994000000000000E+00 6.046464090490708E-08 + 7.995000000000000E+00 6.027738076129175E-08 + 7.996000000000000E+00 6.009069707351884E-08 + 7.997000000000000E+00 5.990458807888837E-08 + 7.998000000000000E+00 5.971905202005030E-08 + 7.999000000000000E+00 5.953408714498808E-08 + 8.000000000000000E+00 5.934969170700334E-08 + 8.000999999999999E+00 5.916586396469907E-08 + 8.002000000000001E+00 5.898260218196419E-08 + 8.003000000000000E+00 5.879990462795746E-08 + 8.004000000000000E+00 5.861776957709166E-08 + 8.005000000000001E+00 5.843619530901763E-08 + 8.006000000000000E+00 5.825518010860881E-08 + 8.007000000000000E+00 5.807472226594515E-08 + 8.007999999999999E+00 5.789482007629766E-08 + 8.009000000000000E+00 5.771547184011296E-08 + 8.010000000000000E+00 5.753667586299708E-08 + 8.010999999999999E+00 5.735843045570052E-08 + 8.012000000000000E+00 5.718073393410274E-08 + 8.013000000000000E+00 5.700358461919629E-08 + 8.013999999999999E+00 5.682698083707177E-08 + 8.015000000000001E+00 5.665092091890225E-08 + 8.016000000000000E+00 5.647540320092835E-08 + 8.016999999999999E+00 5.630042602444260E-08 + 8.018000000000001E+00 5.612598773577418E-08 + 8.019000000000000E+00 5.595208668627420E-08 + 8.020000000000000E+00 5.577872123230009E-08 + 8.021000000000001E+00 5.560588973520077E-08 + 8.022000000000000E+00 5.543359056130177E-08 + 8.023000000000000E+00 5.526182208188981E-08 + 8.023999999999999E+00 5.509058267319827E-08 + 8.025000000000000E+00 5.491987071639199E-08 + 8.026000000000000E+00 5.474968459755266E-08 + 8.026999999999999E+00 5.458002270766380E-08 + 8.028000000000000E+00 5.441088344259615E-08 + 8.029000000000000E+00 5.424226520309297E-08 + 8.029999999999999E+00 5.407416639475508E-08 + 8.031000000000001E+00 5.390658542802669E-08 + 8.032000000000000E+00 5.373952071818033E-08 + 8.032999999999999E+00 5.357297068530268E-08 + 8.034000000000001E+00 5.340693375427976E-08 + 8.035000000000000E+00 5.324140835478282E-08 + 8.036000000000000E+00 5.307639292125353E-08 + 8.037000000000001E+00 5.291188589288989E-08 + 8.038000000000000E+00 5.274788571363194E-08 + 8.039000000000000E+00 5.258439083214719E-08 + 8.039999999999999E+00 5.242139970181642E-08 + 8.041000000000000E+00 5.225891078071992E-08 + 8.042000000000000E+00 5.209692253162271E-08 + 8.042999999999999E+00 5.193543342196085E-08 + 8.044000000000000E+00 5.177444192382717E-08 + 8.045000000000000E+00 5.161394651395735E-08 + 8.045999999999999E+00 5.145394567371575E-08 + 8.047000000000001E+00 5.129443788908174E-08 + 8.048000000000000E+00 5.113542165063545E-08 + 8.048999999999999E+00 5.097689545354434E-08 + 8.050000000000001E+00 5.081885779754878E-08 + 8.051000000000000E+00 5.066130718694891E-08 + 8.052000000000000E+00 5.050424213059043E-08 + 8.053000000000001E+00 5.034766114185112E-08 + 8.054000000000000E+00 5.019156273862703E-08 + 8.055000000000000E+00 5.003594544331912E-08 + 8.055999999999999E+00 4.988080778281924E-08 + 8.057000000000000E+00 4.972614828849715E-08 + 8.058000000000000E+00 4.957196549618660E-08 + 8.058999999999999E+00 4.941825794617195E-08 + 8.060000000000000E+00 4.926502418317490E-08 + 8.061000000000000E+00 4.911226275634098E-08 + 8.061999999999999E+00 4.895997221922615E-08 + 8.063000000000001E+00 4.880815112978379E-08 + 8.064000000000000E+00 4.865679805035110E-08 + 8.065000000000000E+00 4.850591154763619E-08 + 8.066000000000001E+00 4.835549019270451E-08 + 8.067000000000000E+00 4.820553256096614E-08 + 8.068000000000000E+00 4.805603723216240E-08 + 8.069000000000001E+00 4.790700279035297E-08 + 8.070000000000000E+00 4.775842782390266E-08 + 8.071000000000000E+00 4.761031092546870E-08 + 8.071999999999999E+00 4.746265069198741E-08 + 8.073000000000000E+00 4.731544572466180E-08 + 8.074000000000000E+00 4.716869462894812E-08 + 8.074999999999999E+00 4.702239601454367E-08 + 8.076000000000001E+00 4.687654849537341E-08 + 8.077000000000000E+00 4.673115068957760E-08 + 8.077999999999999E+00 4.658620121949887E-08 + 8.079000000000001E+00 4.644169871166979E-08 + 8.080000000000000E+00 4.629764179679994E-08 + 8.081000000000000E+00 4.615402910976349E-08 + 8.082000000000001E+00 4.601085928958651E-08 + 8.083000000000000E+00 4.586813097943470E-08 + 8.084000000000000E+00 4.572584282660063E-08 + 8.085000000000001E+00 4.558399348249129E-08 + 8.086000000000000E+00 4.544258160261593E-08 + 8.087000000000000E+00 4.530160584657341E-08 + 8.087999999999999E+00 4.516106487804001E-08 + 8.089000000000000E+00 4.502095736475718E-08 + 8.090000000000000E+00 4.488128197851904E-08 + 8.090999999999999E+00 4.474203739516045E-08 + 8.092000000000001E+00 4.460322229454444E-08 + 8.093000000000000E+00 4.446483536055060E-08 + 8.093999999999999E+00 4.432687528106235E-08 + 8.095000000000001E+00 4.418934074795527E-08 + 8.096000000000000E+00 4.405223045708501E-08 + 8.097000000000000E+00 4.391554310827499E-08 + 8.098000000000001E+00 4.377927740530480E-08 + 8.099000000000000E+00 4.364343205589805E-08 + 8.100000000000000E+00 4.350800577171045E-08 + 8.101000000000001E+00 4.337299726831813E-08 + 8.102000000000000E+00 4.323840526520550E-08 + 8.103000000000000E+00 4.310422848575379E-08 + 8.103999999999999E+00 4.297046565722897E-08 + 8.105000000000000E+00 4.283711551077040E-08 + 8.106000000000000E+00 4.270417678137867E-08 + 8.106999999999999E+00 4.257164820790438E-08 + 8.108000000000001E+00 4.243952853303628E-08 + 8.109000000000000E+00 4.230781650328958E-08 + 8.109999999999999E+00 4.217651086899476E-08 + 8.111000000000001E+00 4.204561038428582E-08 + 8.112000000000000E+00 4.191511380708863E-08 + 8.113000000000000E+00 4.178501989910981E-08 + 8.114000000000001E+00 4.165532742582527E-08 + 8.115000000000000E+00 4.152603515646848E-08 + 8.116000000000000E+00 4.139714186401960E-08 + 8.117000000000001E+00 4.126864632519375E-08 + 8.118000000000000E+00 4.114054732043018E-08 + 8.119000000000000E+00 4.101284363388049E-08 + 8.119999999999999E+00 4.088553405339784E-08 + 8.121000000000000E+00 4.075861737052559E-08 + 8.122000000000000E+00 4.063209238048634E-08 + 8.122999999999999E+00 4.050595788217040E-08 + 8.124000000000001E+00 4.038021267812514E-08 + 8.125000000000000E+00 4.025485557454385E-08 + 8.125999999999999E+00 4.012988538125450E-08 + 8.127000000000001E+00 4.000530091170905E-08 + 8.128000000000000E+00 3.988110098297240E-08 + 8.129000000000000E+00 3.975728441571142E-08 + 8.130000000000001E+00 3.963385003418402E-08 + 8.131000000000000E+00 3.951079666622851E-08 + 8.132000000000000E+00 3.938812314325263E-08 + 8.132999999999999E+00 3.926582830022281E-08 + 8.134000000000000E+00 3.914391097565339E-08 + 8.135000000000000E+00 3.902237001159589E-08 + 8.135999999999999E+00 3.890120425362843E-08 + 8.137000000000000E+00 3.878041255084501E-08 + 8.138000000000000E+00 3.865999375584479E-08 + 8.138999999999999E+00 3.853994672472158E-08 + 8.140000000000001E+00 3.842027031705351E-08 + 8.141000000000000E+00 3.830096339589195E-08 + 8.141999999999999E+00 3.818202482775154E-08 + 8.143000000000001E+00 3.806345348259958E-08 + 8.144000000000000E+00 3.794524823384535E-08 + 8.145000000000000E+00 3.782740795833012E-08 + 8.146000000000001E+00 3.770993153631645E-08 + 8.147000000000000E+00 3.759281785147796E-08 + 8.148000000000000E+00 3.747606579088902E-08 + 8.148999999999999E+00 3.735967424501449E-08 + 8.150000000000000E+00 3.724364210769959E-08 + 8.151000000000000E+00 3.712796827615927E-08 + 8.151999999999999E+00 3.701265165096858E-08 + 8.153000000000000E+00 3.689769113605218E-08 + 8.154000000000000E+00 3.678308563867409E-08 + 8.154999999999999E+00 3.666883406942808E-08 + 8.156000000000001E+00 3.655493534222704E-08 + 8.157000000000000E+00 3.644138837429342E-08 + 8.157999999999999E+00 3.632819208614889E-08 + 8.159000000000001E+00 3.621534540160446E-08 + 8.160000000000000E+00 3.610284724775083E-08 + 8.161000000000000E+00 3.599069655494789E-08 + 8.162000000000001E+00 3.587889225681539E-08 + 8.163000000000000E+00 3.576743329022274E-08 + 8.164000000000000E+00 3.565631859527932E-08 + 8.164999999999999E+00 3.554554711532471E-08 + 8.166000000000000E+00 3.543511779691892E-08 + 8.167000000000000E+00 3.532502958983241E-08 + 8.167999999999999E+00 3.521528144703682E-08 + 8.169000000000000E+00 3.510587232469488E-08 + 8.170000000000000E+00 3.499680118215110E-08 + 8.170999999999999E+00 3.488806698192181E-08 + 8.172000000000001E+00 3.477966868968578E-08 + 8.173000000000000E+00 3.467160527427476E-08 + 8.173999999999999E+00 3.456387570766368E-08 + 8.175000000000001E+00 3.445647896496117E-08 + 8.176000000000000E+00 3.434941402440038E-08 + 8.177000000000000E+00 3.424267986732917E-08 + 8.178000000000001E+00 3.413627547820095E-08 + 8.179000000000000E+00 3.403019984456512E-08 + 8.180000000000000E+00 3.392445195705774E-08 + 8.180999999999999E+00 3.381903080939226E-08 + 8.182000000000000E+00 3.371393539835028E-08 + 8.183000000000000E+00 3.360916472377188E-08 + 8.183999999999999E+00 3.350471778854698E-08 + 8.185000000000000E+00 3.340059359860554E-08 + 8.186000000000000E+00 3.329679116290873E-08 + 8.186999999999999E+00 3.319330949343953E-08 + 8.188000000000001E+00 3.309014760519378E-08 + 8.189000000000000E+00 3.298730451617098E-08 + 8.190000000000000E+00 3.288477924736511E-08 + 8.191000000000001E+00 3.278257082275578E-08 + 8.192000000000000E+00 3.268067826929896E-08 + 8.193000000000000E+00 3.257910061691817E-08 + 8.194000000000001E+00 3.247783689849532E-08 + 8.195000000000000E+00 3.237688614986204E-08 + 8.196000000000000E+00 3.227624740979034E-08 + 8.196999999999999E+00 3.217591971998411E-08 + 8.198000000000000E+00 3.207590212507009E-08 + 8.199000000000000E+00 3.197619367258879E-08 + 8.199999999999999E+00 3.187679341298622E-08 + 8.201000000000001E+00 3.177770039960451E-08 + 8.202000000000000E+00 3.167891368867356E-08 + 8.202999999999999E+00 3.158043233930208E-08 + 8.204000000000001E+00 3.148225541346894E-08 + 8.205000000000000E+00 3.138438197601452E-08 + 8.206000000000000E+00 3.128681109463203E-08 + 8.207000000000001E+00 3.118954183985875E-08 + 8.208000000000000E+00 3.109257328506767E-08 + 8.209000000000000E+00 3.099590450645874E-08 + 8.210000000000001E+00 3.089953458305024E-08 + 8.211000000000000E+00 3.080346259667047E-08 + 8.212000000000000E+00 3.070768763194906E-08 + 8.212999999999999E+00 3.061220877630847E-08 + 8.214000000000000E+00 3.051702511995575E-08 + 8.215000000000000E+00 3.042213575587394E-08 + 8.215999999999999E+00 3.032753977981370E-08 + 8.217000000000001E+00 3.023323629028477E-08 + 8.218000000000000E+00 3.013922438854806E-08 + 8.218999999999999E+00 3.004550317860681E-08 + 8.220000000000001E+00 2.995207176719862E-08 + 8.221000000000000E+00 2.985892926378699E-08 + 8.222000000000000E+00 2.976607478055314E-08 + 8.223000000000001E+00 2.967350743238787E-08 + 8.224000000000000E+00 2.958122633688318E-08 + 8.225000000000000E+00 2.948923061432419E-08 + 8.226000000000001E+00 2.939751938768093E-08 + 8.227000000000000E+00 2.930609178260028E-08 + 8.228000000000000E+00 2.921494692739784E-08 + 8.228999999999999E+00 2.912408395304976E-08 + 8.230000000000000E+00 2.903350199318486E-08 + 8.231000000000000E+00 2.894320018407641E-08 + 8.231999999999999E+00 2.885317766463426E-08 + 8.233000000000001E+00 2.876343357639670E-08 + 8.234000000000000E+00 2.867396706352268E-08 + 8.234999999999999E+00 2.858477727278369E-08 + 8.236000000000001E+00 2.849586335355606E-08 + 8.237000000000000E+00 2.840722445781293E-08 + 8.238000000000000E+00 2.831885974011625E-08 + 8.239000000000001E+00 2.823076835760931E-08 + 8.240000000000000E+00 2.814294947000848E-08 + 8.241000000000000E+00 2.805540223959576E-08 + 8.242000000000001E+00 2.796812583121092E-08 + 8.243000000000000E+00 2.788111941224353E-08 + 8.244000000000000E+00 2.779438215262565E-08 + 8.244999999999999E+00 2.770791322482366E-08 + 8.246000000000000E+00 2.762171180383101E-08 + 8.247000000000000E+00 2.753577706716021E-08 + 8.247999999999999E+00 2.745010819483538E-08 + 8.249000000000001E+00 2.736470436938468E-08 + 8.250000000000000E+00 2.727956477583264E-08 + 8.250999999999999E+00 2.719468860169254E-08 + 8.252000000000001E+00 2.711007503695891E-08 + 8.253000000000000E+00 2.702572327410018E-08 + 8.254000000000000E+00 2.694163250805089E-08 + 8.255000000000001E+00 2.685780193620440E-08 + 8.256000000000000E+00 2.677423075840545E-08 + 8.257000000000000E+00 2.669091817694268E-08 + 8.257999999999999E+00 2.660786339654107E-08 + 8.259000000000000E+00 2.652506562435494E-08 + 8.260000000000000E+00 2.644252406996013E-08 + 8.260999999999999E+00 2.636023794534709E-08 + 8.262000000000000E+00 2.627820646491314E-08 + 8.263000000000000E+00 2.619642884545559E-08 + 8.263999999999999E+00 2.611490430616412E-08 + 8.265000000000001E+00 2.603363206861367E-08 + 8.266000000000000E+00 2.595261135675735E-08 + 8.266999999999999E+00 2.587184139691893E-08 + 8.268000000000001E+00 2.579132141778583E-08 + 8.269000000000000E+00 2.571105065040208E-08 + 8.270000000000000E+00 2.563102832816082E-08 + 8.271000000000001E+00 2.555125368679749E-08 + 8.272000000000000E+00 2.547172596438267E-08 + 8.273000000000000E+00 2.539244440131485E-08 + 8.273999999999999E+00 2.531340824031354E-08 + 8.275000000000000E+00 2.523461672641217E-08 + 8.276000000000000E+00 2.515606910695102E-08 + 8.276999999999999E+00 2.507776463157032E-08 + 8.278000000000000E+00 2.499970255220321E-08 + 8.279000000000000E+00 2.492188212306878E-08 + 8.279999999999999E+00 2.484430260066526E-08 + 8.281000000000001E+00 2.476696324376278E-08 + 8.282000000000000E+00 2.468986331339705E-08 + 8.282999999999999E+00 2.461300207286182E-08 + 8.284000000000001E+00 2.453637878770256E-08 + 8.285000000000000E+00 2.445999272570934E-08 + 8.286000000000000E+00 2.438384315691022E-08 + 8.287000000000001E+00 2.430792935356416E-08 + 8.288000000000000E+00 2.423225059015464E-08 + 8.289000000000000E+00 2.415680614338259E-08 + 8.289999999999999E+00 2.408159529215983E-08 + 8.291000000000000E+00 2.400661731760233E-08 + 8.292000000000000E+00 2.393187150302358E-08 + 8.292999999999999E+00 2.385735713392767E-08 + 8.294000000000000E+00 2.378307349800304E-08 + 8.295000000000000E+00 2.370901988511555E-08 + 8.295999999999999E+00 2.363519558730200E-08 + 8.297000000000001E+00 2.356159989876343E-08 + 8.298000000000000E+00 2.348823211585876E-08 + 8.298999999999999E+00 2.341509153709804E-08 + 8.300000000000001E+00 2.334217746313602E-08 + 8.301000000000000E+00 2.326948919676562E-08 + 8.302000000000000E+00 2.319702604291147E-08 + 8.303000000000001E+00 2.312478730862339E-08 + 8.304000000000000E+00 2.305277230306997E-08 + 8.305000000000000E+00 2.298098033753216E-08 + 8.305999999999999E+00 2.290941072539679E-08 + 8.307000000000000E+00 2.283806278215030E-08 + 8.308000000000000E+00 2.276693582537222E-08 + 8.308999999999999E+00 2.269602917472891E-08 + 8.310000000000000E+00 2.262534215196727E-08 + 8.311000000000000E+00 2.255487408090826E-08 + 8.311999999999999E+00 2.248462428744078E-08 + 8.313000000000001E+00 2.241459209951530E-08 + 8.314000000000000E+00 2.234477684713763E-08 + 8.315000000000000E+00 2.227517786236265E-08 + 8.316000000000001E+00 2.220579447928813E-08 + 8.317000000000000E+00 2.213662603404854E-08 + 8.318000000000000E+00 2.206767186480878E-08 + 8.319000000000001E+00 2.199893131175812E-08 + 8.320000000000000E+00 2.193040371710400E-08 + 8.321000000000000E+00 2.186208842506591E-08 + 8.321999999999999E+00 2.179398478186926E-08 + 8.323000000000000E+00 2.172609213573936E-08 + 8.324000000000000E+00 2.165840983689528E-08 + 8.324999999999999E+00 2.159093723754381E-08 + 8.326000000000001E+00 2.152367369187342E-08 + 8.327000000000000E+00 2.145661855604829E-08 + 8.327999999999999E+00 2.138977118820226E-08 + 8.329000000000001E+00 2.132313094843285E-08 + 8.330000000000000E+00 2.125669719879536E-08 + 8.331000000000000E+00 2.119046930329681E-08 + 8.332000000000001E+00 2.112444662789013E-08 + 8.333000000000000E+00 2.105862854046817E-08 + 8.334000000000000E+00 2.099301441085787E-08 + 8.335000000000001E+00 2.092760361081431E-08 + 8.336000000000000E+00 2.086239551401497E-08 + 8.337000000000000E+00 2.079738949605374E-08 + 8.337999999999999E+00 2.073258493443524E-08 + 8.339000000000000E+00 2.066798120856890E-08 + 8.340000000000000E+00 2.060357769976330E-08 + 8.340999999999999E+00 2.053937379122026E-08 + 8.342000000000001E+00 2.047536886802921E-08 + 8.343000000000000E+00 2.041156231716139E-08 + 8.343999999999999E+00 2.034795352746415E-08 + 8.345000000000001E+00 2.028454188965524E-08 + 8.346000000000000E+00 2.022132679631718E-08 + 8.347000000000000E+00 2.015830764189151E-08 + 8.348000000000001E+00 2.009548382267318E-08 + 8.349000000000000E+00 2.003285473680499E-08 + 8.350000000000000E+00 1.997041978427184E-08 + 8.351000000000001E+00 1.990817836689523E-08 + 8.352000000000000E+00 1.984612988832768E-08 + 8.353000000000000E+00 1.978427375404710E-08 + 8.353999999999999E+00 1.972260937135129E-08 + 8.355000000000000E+00 1.966113614935244E-08 + 8.356000000000000E+00 1.959985349897154E-08 + 8.356999999999999E+00 1.953876083293295E-08 + 8.358000000000001E+00 1.947785756575888E-08 + 8.359000000000000E+00 1.941714311376396E-08 + 8.359999999999999E+00 1.935661689504975E-08 + 8.361000000000001E+00 1.929627832949934E-08 + 8.362000000000000E+00 1.923612683877195E-08 + 8.363000000000000E+00 1.917616184629748E-08 + 8.364000000000001E+00 1.911638277727116E-08 + 8.365000000000000E+00 1.905678905864824E-08 + 8.366000000000000E+00 1.899738011913851E-08 + 8.367000000000001E+00 1.893815538920108E-08 + 8.368000000000000E+00 1.887911430103903E-08 + 8.369000000000000E+00 1.882025628859409E-08 + 8.369999999999999E+00 1.876158078754136E-08 + 8.371000000000000E+00 1.870308723528408E-08 + 8.372000000000000E+00 1.864477507094831E-08 + 8.372999999999999E+00 1.858664373537777E-08 + 8.374000000000001E+00 1.852869267112852E-08 + 8.375000000000000E+00 1.847092132246386E-08 + 8.375999999999999E+00 1.841332913534909E-08 + 8.377000000000001E+00 1.835591555744630E-08 + 8.378000000000000E+00 1.829868003810929E-08 + 8.379000000000000E+00 1.824162202837835E-08 + 8.380000000000001E+00 1.818474098097518E-08 + 8.381000000000000E+00 1.812803635029776E-08 + 8.382000000000000E+00 1.807150759241529E-08 + 8.382999999999999E+00 1.801515416506302E-08 + 8.384000000000000E+00 1.795897552763728E-08 + 8.385000000000000E+00 1.790297114119037E-08 + 8.385999999999999E+00 1.784714046842554E-08 + 8.387000000000000E+00 1.779148297369200E-08 + 8.388000000000000E+00 1.773599812297985E-08 + 8.388999999999999E+00 1.768068538391515E-08 + 8.390000000000001E+00 1.762554422575491E-08 + 8.391000000000000E+00 1.757057411938214E-08 + 8.391999999999999E+00 1.751577453730092E-08 + 8.393000000000001E+00 1.746114495363142E-08 + 8.394000000000000E+00 1.740668484410509E-08 + 8.395000000000000E+00 1.735239368605959E-08 + 8.396000000000001E+00 1.729827095843409E-08 + 8.397000000000000E+00 1.724431614176426E-08 + 8.398000000000000E+00 1.719052871817750E-08 + 8.398999999999999E+00 1.713690817138802E-08 + 8.400000000000000E+00 1.708345398669209E-08 + 8.401000000000000E+00 1.703016565096321E-08 + 8.401999999999999E+00 1.697704265264723E-08 + 8.403000000000000E+00 1.692408448175771E-08 + 8.404000000000000E+00 1.687129062987102E-08 + 8.404999999999999E+00 1.681866059012164E-08 + 8.406000000000001E+00 1.676619385719744E-08 + 8.407000000000000E+00 1.671388992733492E-08 + 8.407999999999999E+00 1.666174829831453E-08 + 8.409000000000001E+00 1.660976846945590E-08 + 8.410000000000000E+00 1.655794994161326E-08 + 8.411000000000000E+00 1.650629221717069E-08 + 8.412000000000001E+00 1.645479480003751E-08 + 8.413000000000000E+00 1.640345719564362E-08 + 8.414000000000000E+00 1.635227891093485E-08 + 8.414999999999999E+00 1.630125945436839E-08 + 8.416000000000000E+00 1.625039833590820E-08 + 8.417000000000000E+00 1.619969506702037E-08 + 8.417999999999999E+00 1.614914916066854E-08 + 8.419000000000000E+00 1.609876013130945E-08 + 8.420000000000000E+00 1.604852749488828E-08 + 8.420999999999999E+00 1.599845076883416E-08 + 8.422000000000001E+00 1.594852947205567E-08 + 8.423000000000000E+00 1.589876312493633E-08 + 8.423999999999999E+00 1.584915124933008E-08 + 8.425000000000001E+00 1.579969336855686E-08 + 8.426000000000000E+00 1.575038900739810E-08 + 8.427000000000000E+00 1.570123769209228E-08 + 8.428000000000001E+00 1.565223895033050E-08 + 8.429000000000000E+00 1.560339231125209E-08 + 8.430000000000000E+00 1.555469730544014E-08 + 8.430999999999999E+00 1.550615346491712E-08 + 8.432000000000000E+00 1.545776032314059E-08 + 8.433000000000000E+00 1.540951741499867E-08 + 8.433999999999999E+00 1.536142427680580E-08 + 8.435000000000000E+00 1.531348044629838E-08 + 8.436000000000000E+00 1.526568546263042E-08 + 8.436999999999999E+00 1.521803886636923E-08 + 8.438000000000001E+00 1.517054019949109E-08 + 8.439000000000000E+00 1.512318900537705E-08 + 8.440000000000000E+00 1.507598482880852E-08 + 8.441000000000001E+00 1.502892721596312E-08 + 8.442000000000000E+00 1.498201571441037E-08 + 8.443000000000000E+00 1.493524987310747E-08 + 8.444000000000001E+00 1.488862924239506E-08 + 8.445000000000000E+00 1.484215337399303E-08 + 8.446000000000000E+00 1.479582182099630E-08 + 8.446999999999999E+00 1.474963413787063E-08 + 8.448000000000000E+00 1.470358988044846E-08 + 8.449000000000000E+00 1.465768860592475E-08 + 8.449999999999999E+00 1.461192987285280E-08 + 8.451000000000001E+00 1.456631324114014E-08 + 8.452000000000000E+00 1.452083827204443E-08 + 8.452999999999999E+00 1.447550452816927E-08 + 8.454000000000001E+00 1.443031157346016E-08 + 8.455000000000000E+00 1.438525897320043E-08 + 8.456000000000000E+00 1.434034629400710E-08 + 8.457000000000001E+00 1.429557310382685E-08 + 8.458000000000000E+00 1.425093897193200E-08 + 8.459000000000000E+00 1.420644346891640E-08 + 8.460000000000001E+00 1.416208616669149E-08 + 8.461000000000000E+00 1.411786663848221E-08 + 8.462000000000000E+00 1.407378445882305E-08 + 8.462999999999999E+00 1.402983920355400E-08 + 8.464000000000000E+00 1.398603044981670E-08 + 8.465000000000000E+00 1.394235777605028E-08 + 8.465999999999999E+00 1.389882076198759E-08 + 8.467000000000001E+00 1.385541898865114E-08 + 8.468000000000000E+00 1.381215203834924E-08 + 8.468999999999999E+00 1.376901949467204E-08 + 8.470000000000001E+00 1.372602094248762E-08 + 8.471000000000000E+00 1.368315596793815E-08 + 8.472000000000000E+00 1.364042415843596E-08 + 8.473000000000001E+00 1.359782510265966E-08 + 8.474000000000000E+00 1.355535839055031E-08 + 8.475000000000000E+00 1.351302361330757E-08 + 8.476000000000001E+00 1.347082036338586E-08 + 8.477000000000000E+00 1.342874823449053E-08 + 8.478000000000000E+00 1.338680682157405E-08 + 8.478999999999999E+00 1.334499572083220E-08 + 8.480000000000000E+00 1.330331452970031E-08 + 8.481000000000000E+00 1.326176284684946E-08 + 8.481999999999999E+00 1.322034027218269E-08 + 8.483000000000001E+00 1.317904640683131E-08 + 8.484000000000000E+00 1.313788085315108E-08 + 8.484999999999999E+00 1.309684321471853E-08 + 8.486000000000001E+00 1.305593309632722E-08 + 8.487000000000000E+00 1.301515010398405E-08 + 8.488000000000000E+00 1.297449384490551E-08 + 8.489000000000001E+00 1.293396392751404E-08 + 8.490000000000000E+00 1.289355996143435E-08 + 8.491000000000000E+00 1.285328155748975E-08 + 8.492000000000001E+00 1.281312832769844E-08 + 8.493000000000000E+00 1.277309988526999E-08 + 8.494000000000000E+00 1.273319584460157E-08 + 8.494999999999999E+00 1.269341582127442E-08 + 8.496000000000000E+00 1.265375943205022E-08 + 8.497000000000000E+00 1.261422629486747E-08 + 8.497999999999999E+00 1.257481602883792E-08 + 8.499000000000001E+00 1.253552825424298E-08 + 8.500000000000000E+00 1.249636259253017E-08 + 8.500999999999999E+00 1.245731866630954E-08 + 8.502000000000001E+00 1.241839609935016E-08 + 8.503000000000000E+00 1.237959451657655E-08 + 8.504000000000000E+00 1.234091354406517E-08 + 8.505000000000001E+00 1.230235280904090E-08 + 8.506000000000000E+00 1.226391193987357E-08 + 8.507000000000000E+00 1.222559056607444E-08 + 8.507999999999999E+00 1.218738831829267E-08 + 8.509000000000000E+00 1.214930482831198E-08 + 8.510000000000000E+00 1.211133972904705E-08 + 8.510999999999999E+00 1.207349265454015E-08 + 8.512000000000000E+00 1.203576323995769E-08 + 8.513000000000000E+00 1.199815112158676E-08 + 8.513999999999999E+00 1.196065593683177E-08 + 8.515000000000001E+00 1.192327732421096E-08 + 8.516000000000000E+00 1.188601492335308E-08 + 8.516999999999999E+00 1.184886837499395E-08 + 8.518000000000001E+00 1.181183732097310E-08 + 8.519000000000000E+00 1.177492140423045E-08 + 8.520000000000000E+00 1.173812026880285E-08 + 8.521000000000001E+00 1.170143355982081E-08 + 8.522000000000000E+00 1.166486092350516E-08 + 8.523000000000000E+00 1.162840200716368E-08 + 8.523999999999999E+00 1.159205645918784E-08 + 8.525000000000000E+00 1.155582392904944E-08 + 8.526000000000000E+00 1.151970406729736E-08 + 8.526999999999999E+00 1.148369652555422E-08 + 8.528000000000000E+00 1.144780095651317E-08 + 8.529000000000000E+00 1.141201701393458E-08 + 8.529999999999999E+00 1.137634435264277E-08 + 8.531000000000001E+00 1.134078262852279E-08 + 8.532000000000000E+00 1.130533149851721E-08 + 8.532999999999999E+00 1.126999062062283E-08 + 8.534000000000001E+00 1.123475965388749E-08 + 8.535000000000000E+00 1.119963825840688E-08 + 8.536000000000000E+00 1.116462609532132E-08 + 8.537000000000001E+00 1.112972282681257E-08 + 8.538000000000000E+00 1.109492811610069E-08 + 8.539000000000000E+00 1.106024162744080E-08 + 8.539999999999999E+00 1.102566302612000E-08 + 8.541000000000000E+00 1.099119197845415E-08 + 8.542000000000000E+00 1.095682815178478E-08 + 8.542999999999999E+00 1.092257121447593E-08 + 8.544000000000000E+00 1.088842083591105E-08 + 8.545000000000000E+00 1.085437668648987E-08 + 8.545999999999999E+00 1.082043843762530E-08 + 8.547000000000001E+00 1.078660576174034E-08 + 8.548000000000000E+00 1.075287833226503E-08 + 8.548999999999999E+00 1.071925582363329E-08 + 8.550000000000001E+00 1.068573791127995E-08 + 8.551000000000000E+00 1.065232427163764E-08 + 8.552000000000000E+00 1.061901458213374E-08 + 8.553000000000001E+00 1.058580852118740E-08 + 8.554000000000000E+00 1.055270576820642E-08 + 8.555000000000000E+00 1.051970600358431E-08 + 8.555999999999999E+00 1.048680890869726E-08 + 8.557000000000000E+00 1.045401416590110E-08 + 8.558000000000000E+00 1.042132145852837E-08 + 8.558999999999999E+00 1.038873047088530E-08 + 8.560000000000000E+00 1.035624088824884E-08 + 8.561000000000000E+00 1.032385239686370E-08 + 8.561999999999999E+00 1.029156468393938E-08 + 8.563000000000001E+00 1.025937743764726E-08 + 8.564000000000000E+00 1.022729034711764E-08 + 8.565000000000000E+00 1.019530310243679E-08 + 8.566000000000001E+00 1.016341539464407E-08 + 8.567000000000000E+00 1.013162691572900E-08 + 8.568000000000000E+00 1.009993735862834E-08 + 8.569000000000001E+00 1.006834641722324E-08 + 8.570000000000000E+00 1.003685378633631E-08 + 8.571000000000000E+00 1.000545916172878E-08 + 8.571999999999999E+00 9.974162240097608E-09 + 8.573000000000000E+00 9.942962719072639E-09 + 8.574000000000000E+00 9.911860297213743E-09 + 8.574999999999999E+00 9.880854674007973E-09 + 8.576000000000001E+00 9.849945549866757E-09 + 8.577000000000000E+00 9.819132626123030E-09 + 8.577999999999999E+00 9.788415605028459E-09 + 8.579000000000001E+00 9.757794189750618E-09 + 8.580000000000000E+00 9.727268084370197E-09 + 8.581000000000000E+00 9.696836993878197E-09 + 8.582000000000001E+00 9.666500624173170E-09 + 8.583000000000000E+00 9.636258682058433E-09 + 8.584000000000000E+00 9.606110875239312E-09 + 8.585000000000001E+00 9.576056912320358E-09 + 8.586000000000000E+00 9.546096502802648E-09 + 8.587000000000000E+00 9.516229357081009E-09 + 8.587999999999999E+00 9.486455186441290E-09 + 8.589000000000000E+00 9.456773703057654E-09 + 8.590000000000000E+00 9.427184619989852E-09 + 8.590999999999999E+00 9.397687651180520E-09 + 8.592000000000001E+00 9.368282511452480E-09 + 8.593000000000000E+00 9.338968916506063E-09 + 8.593999999999999E+00 9.309746582916398E-09 + 8.595000000000001E+00 9.280615228130754E-09 + 8.596000000000000E+00 9.251574570465896E-09 + 8.597000000000000E+00 9.222624329105397E-09 + 8.598000000000001E+00 9.193764224096991E-09 + 8.599000000000000E+00 9.164993976349949E-09 + 8.600000000000000E+00 9.136313307632436E-09 + 8.601000000000001E+00 9.107721940568875E-09 + 8.602000000000000E+00 9.079219598637364E-09 + 8.603000000000000E+00 9.050806006167021E-09 + 8.603999999999999E+00 9.022480888335407E-09 + 8.605000000000000E+00 8.994243971165946E-09 + 8.606000000000000E+00 8.966094981525301E-09 + 8.606999999999999E+00 8.938033647120841E-09 + 8.608000000000001E+00 8.910059696498019E-09 + 8.609000000000000E+00 8.882172859037871E-09 + 8.609999999999999E+00 8.854372864954410E-09 + 8.611000000000001E+00 8.826659445292098E-09 + 8.612000000000000E+00 8.799032331923319E-09 + 8.613000000000000E+00 8.771491257545824E-09 + 8.614000000000001E+00 8.744035955680222E-09 + 8.615000000000000E+00 8.716666160667473E-09 + 8.616000000000000E+00 8.689381607666356E-09 + 8.617000000000001E+00 8.662182032650970E-09 + 8.618000000000000E+00 8.635067172408271E-09 + 8.619000000000000E+00 8.608036764535560E-09 + 8.619999999999999E+00 8.581090547438004E-09 + 8.621000000000000E+00 8.554228260326184E-09 + 8.622000000000000E+00 8.527449643213616E-09 + 8.622999999999999E+00 8.500754436914292E-09 + 8.624000000000001E+00 8.474142383040251E-09 + 8.625000000000000E+00 8.447613223999120E-09 + 8.625999999999999E+00 8.421166702991691E-09 + 8.627000000000001E+00 8.394802564009497E-09 + 8.628000000000000E+00 8.368520551832374E-09 + 8.629000000000000E+00 8.342320412026084E-09 + 8.630000000000001E+00 8.316201890939874E-09 + 8.631000000000000E+00 8.290164735704106E-09 + 8.632000000000000E+00 8.264208694227853E-09 + 8.632999999999999E+00 8.238333515196527E-09 + 8.634000000000000E+00 8.212538948069503E-09 + 8.635000000000000E+00 8.186824743077744E-09 + 8.635999999999999E+00 8.161190651221433E-09 + 8.637000000000000E+00 8.135636424267654E-09 + 8.638000000000000E+00 8.110161814748010E-09 + 8.638999999999999E+00 8.084766575956297E-09 + 8.640000000000001E+00 8.059450461946166E-09 + 8.641000000000000E+00 8.034213227528828E-09 + 8.641999999999999E+00 8.009054628270686E-09 + 8.643000000000001E+00 7.983974420491066E-09 + 8.644000000000000E+00 7.958972361259906E-09 + 8.645000000000000E+00 7.934048208395429E-09 + 8.646000000000001E+00 7.909201720461894E-09 + 8.647000000000000E+00 7.884432656767290E-09 + 8.648000000000000E+00 7.859740777361070E-09 + 8.648999999999999E+00 7.835125843031864E-09 + 8.650000000000000E+00 7.810587615305247E-09 + 8.651000000000000E+00 7.786125856441461E-09 + 8.651999999999999E+00 7.761740329433166E-09 + 8.653000000000000E+00 7.737430798003221E-09 + 8.654000000000000E+00 7.713197026602424E-09 + 8.654999999999999E+00 7.689038780407293E-09 + 8.656000000000001E+00 7.664955825317850E-09 + 8.657000000000000E+00 7.640947927955405E-09 + 8.657999999999999E+00 7.617014855660336E-09 + 8.659000000000001E+00 7.593156376489905E-09 + 8.660000000000000E+00 7.569372259216059E-09 + 8.661000000000000E+00 7.545662273323252E-09 + 8.662000000000001E+00 7.522026189006213E-09 + 8.663000000000000E+00 7.498463777167859E-09 + 8.664000000000000E+00 7.474974809417047E-09 + 8.664999999999999E+00 7.451559058066459E-09 + 8.666000000000000E+00 7.428216296130431E-09 + 8.667000000000000E+00 7.404946297322805E-09 + 8.667999999999999E+00 7.381748836054798E-09 + 8.669000000000000E+00 7.358623687432852E-09 + 8.670000000000000E+00 7.335570627256514E-09 + 8.670999999999999E+00 7.312589432016318E-09 + 8.672000000000001E+00 7.289679878891656E-09 + 8.673000000000000E+00 7.266841745748689E-09 + 8.673999999999999E+00 7.244074811138221E-09 + 8.675000000000001E+00 7.221378854293622E-09 + 8.676000000000000E+00 7.198753655128725E-09 + 8.677000000000000E+00 7.176198994235755E-09 + 8.678000000000001E+00 7.153714652883234E-09 + 8.679000000000000E+00 7.131300413013931E-09 + 8.680000000000000E+00 7.108956057242781E-09 + 8.680999999999999E+00 7.086681368854836E-09 + 8.682000000000000E+00 7.064476131803204E-09 + 8.683000000000000E+00 7.042340130707018E-09 + 8.683999999999999E+00 7.020273150849369E-09 + 8.685000000000000E+00 6.998274978175316E-09 + 8.686000000000000E+00 6.976345399289814E-09 + 8.686999999999999E+00 6.954484201455711E-09 + 8.688000000000001E+00 6.932691172591748E-09 + 8.689000000000000E+00 6.910966101270523E-09 + 8.690000000000000E+00 6.889308776716515E-09 + 8.691000000000001E+00 6.867718988804057E-09 + 8.692000000000000E+00 6.846196528055378E-09 + 8.693000000000000E+00 6.824741185638593E-09 + 8.694000000000001E+00 6.803352753365732E-09 + 8.695000000000000E+00 6.782031023690786E-09 + 8.696000000000000E+00 6.760775789707707E-09 + 8.696999999999999E+00 6.739586845148466E-09 + 8.698000000000000E+00 6.718463984381110E-09 + 8.699000000000000E+00 6.697407002407791E-09 + 8.699999999999999E+00 6.676415694862829E-09 + 8.701000000000001E+00 6.655489858010791E-09 + 8.702000000000000E+00 6.634629288744540E-09 + 8.702999999999999E+00 6.613833784583322E-09 + 8.704000000000001E+00 6.593103143670840E-09 + 8.705000000000000E+00 6.572437164773349E-09 + 8.706000000000000E+00 6.551835647277736E-09 + 8.707000000000001E+00 6.531298391189633E-09 + 8.708000000000000E+00 6.510825197131511E-09 + 8.709000000000000E+00 6.490415866340792E-09 + 8.710000000000001E+00 6.470070200667965E-09 + 8.711000000000000E+00 6.449788002574714E-09 + 8.712000000000000E+00 6.429569075132029E-09 + 8.712999999999999E+00 6.409413222018349E-09 + 8.714000000000000E+00 6.389320247517716E-09 + 8.715000000000000E+00 6.369289956517881E-09 + 8.715999999999999E+00 6.349322154508490E-09 + 8.717000000000001E+00 6.329416647579219E-09 + 8.718000000000000E+00 6.309573242417949E-09 + 8.718999999999999E+00 6.289791746308919E-09 + 8.720000000000001E+00 6.270071967130895E-09 + 8.721000000000000E+00 6.250413713355379E-09 + 8.722000000000000E+00 6.230816794044755E-09 + 8.723000000000001E+00 6.211281018850487E-09 + 8.724000000000000E+00 6.191806198011336E-09 + 8.725000000000000E+00 6.172392142351533E-09 + 8.726000000000001E+00 6.153038663278991E-09 + 8.727000000000000E+00 6.133745572783531E-09 + 8.728000000000000E+00 6.114512683435073E-09 + 8.728999999999999E+00 6.095339808381882E-09 + 8.730000000000000E+00 6.076226761348775E-09 + 8.731000000000000E+00 6.057173356635371E-09 + 8.731999999999999E+00 6.038179409114305E-09 + 8.733000000000001E+00 6.019244734229507E-09 + 8.734000000000000E+00 6.000369147994421E-09 + 8.734999999999999E+00 5.981552466990258E-09 + 8.736000000000001E+00 5.962794508364275E-09 + 8.737000000000000E+00 5.944095089828032E-09 + 8.738000000000000E+00 5.925454029655652E-09 + 8.739000000000001E+00 5.906871146682104E-09 + 8.740000000000000E+00 5.888346260301488E-09 + 8.741000000000000E+00 5.869879190465312E-09 + 8.742000000000001E+00 5.851469757680778E-09 + 8.743000000000000E+00 5.833117783009100E-09 + 8.744000000000000E+00 5.814823088063778E-09 + 8.744999999999999E+00 5.796585495008921E-09 + 8.746000000000000E+00 5.778404826557563E-09 + 8.747000000000000E+00 5.760280905969956E-09 + 8.747999999999999E+00 5.742213557051921E-09 + 8.749000000000001E+00 5.724202604153144E-09 + 8.750000000000000E+00 5.706247872165548E-09 + 8.750999999999999E+00 5.688349186521582E-09 + 8.752000000000001E+00 5.670506373192601E-09 + 8.753000000000000E+00 5.652719258687205E-09 + 8.754000000000000E+00 5.634987670049568E-09 + 8.755000000000001E+00 5.617311434857824E-09 + 8.756000000000000E+00 5.599690381222424E-09 + 8.757000000000000E+00 5.582124337784482E-09 + 8.757999999999999E+00 5.564613133714179E-09 + 8.759000000000000E+00 5.547156598709112E-09 + 8.760000000000000E+00 5.529754562992691E-09 + 8.760999999999999E+00 5.512406857312520E-09 + 8.762000000000000E+00 5.495113312938801E-09 + 8.763000000000000E+00 5.477873761662705E-09 + 8.763999999999999E+00 5.460688035794807E-09 + 8.765000000000001E+00 5.443555968163460E-09 + 8.766000000000000E+00 5.426477392113232E-09 + 8.766999999999999E+00 5.409452141503316E-09 + 8.768000000000001E+00 5.392480050705927E-09 + 8.769000000000000E+00 5.375560954604771E-09 + 8.770000000000000E+00 5.358694688593438E-09 + 8.771000000000001E+00 5.341881088573856E-09 + 8.772000000000000E+00 5.325119990954725E-09 + 8.773000000000000E+00 5.308411232649970E-09 + 8.773999999999999E+00 5.291754651077181E-09 + 8.775000000000000E+00 5.275150084156066E-09 + 8.776000000000000E+00 5.258597370306923E-09 + 8.776999999999999E+00 5.242096348449092E-09 + 8.778000000000000E+00 5.225646857999432E-09 + 8.779000000000000E+00 5.209248738870784E-09 + 8.779999999999999E+00 5.192901831470455E-09 + 8.781000000000001E+00 5.176605976698702E-09 + 8.782000000000000E+00 5.160361015947219E-09 + 8.782999999999999E+00 5.144166791097625E-09 + 8.784000000000001E+00 5.128023144519956E-09 + 8.785000000000000E+00 5.111929919071185E-09 + 8.786000000000000E+00 5.095886958093702E-09 + 8.787000000000001E+00 5.079894105413838E-09 + 8.788000000000000E+00 5.063951205340384E-09 + 8.789000000000000E+00 5.048058102663102E-09 + 8.789999999999999E+00 5.032214642651243E-09 + 8.791000000000000E+00 5.016420671052095E-09 + 8.792000000000000E+00 5.000676034089491E-09 + 8.792999999999999E+00 4.984980578462365E-09 + 8.794000000000000E+00 4.969334151343287E-09 + 8.795000000000000E+00 4.953736600377006E-09 + 8.795999999999999E+00 4.938187773678999E-09 + 8.797000000000001E+00 4.922687519834034E-09 + 8.798000000000000E+00 4.907235687894733E-09 + 8.798999999999999E+00 4.891832127380110E-09 + 8.800000000000001E+00 4.876476688274165E-09 + 8.801000000000000E+00 4.861169221024454E-09 + 8.802000000000000E+00 4.845909576540651E-09 + 8.803000000000001E+00 4.830697606193141E-09 + 8.804000000000000E+00 4.815533161811599E-09 + 8.805000000000000E+00 4.800416095683582E-09 + 8.805999999999999E+00 4.785346260553127E-09 + 8.807000000000000E+00 4.770323509619347E-09 + 8.808000000000000E+00 4.755347696535029E-09 + 8.808999999999999E+00 4.740418675405236E-09 + 8.810000000000000E+00 4.725536300785945E-09 + 8.811000000000000E+00 4.710700427682628E-09 + 8.811999999999999E+00 4.695910911548886E-09 + 8.813000000000001E+00 4.681167608285085E-09 + 8.814000000000000E+00 4.666470374236964E-09 + 8.815000000000000E+00 4.651819066194276E-09 + 8.816000000000001E+00 4.637213541389424E-09 + 8.817000000000000E+00 4.622653657496107E-09 + 8.818000000000000E+00 4.608139272627949E-09 + 8.819000000000001E+00 4.593670245337158E-09 + 8.820000000000000E+00 4.579246434613193E-09 + 8.821000000000000E+00 4.564867699881388E-09 + 8.821999999999999E+00 4.550533901001635E-09 + 8.823000000000000E+00 4.536244898267054E-09 + 8.824000000000000E+00 4.522000552402644E-09 + 8.824999999999999E+00 4.507800724563972E-09 + 8.826000000000001E+00 4.493645276335843E-09 + 8.827000000000000E+00 4.479534069730976E-09 + 8.827999999999999E+00 4.465466967188703E-09 + 8.829000000000001E+00 4.451443831573644E-09 + 8.830000000000000E+00 4.437464526174418E-09 + 8.831000000000000E+00 4.423528914702317E-09 + 8.832000000000001E+00 4.409636861290027E-09 + 8.833000000000000E+00 4.395788230490329E-09 + 8.834000000000000E+00 4.381982887274798E-09 + 8.835000000000001E+00 4.368220697032526E-09 + 8.836000000000000E+00 4.354501525568838E-09 + 8.837000000000000E+00 4.340825239104014E-09 + 8.837999999999999E+00 4.327191704272005E-09 + 8.839000000000000E+00 4.313600788119179E-09 + 8.840000000000000E+00 4.300052358103033E-09 + 8.840999999999999E+00 4.286546282090939E-09 + 8.842000000000001E+00 4.273082428358893E-09 + 8.843000000000000E+00 4.259660665590248E-09 + 8.843999999999999E+00 4.246280862874469E-09 + 8.845000000000001E+00 4.232942889705865E-09 + 8.846000000000000E+00 4.219646615982385E-09 + 8.847000000000000E+00 4.206391912004339E-09 + 8.848000000000001E+00 4.193178648473171E-09 + 8.849000000000000E+00 4.180006696490247E-09 + 8.850000000000000E+00 4.166875927555596E-09 + 8.851000000000001E+00 4.153786213566708E-09 + 8.852000000000000E+00 4.140737426817292E-09 + 8.853000000000000E+00 4.127729439996078E-09 + 8.853999999999999E+00 4.114762126185586E-09 + 8.855000000000000E+00 4.101835358860931E-09 + 8.856000000000000E+00 4.088949011888603E-09 + 8.856999999999999E+00 4.076102959525267E-09 + 8.858000000000001E+00 4.063297076416569E-09 + 8.859000000000000E+00 4.050531237595936E-09 + 8.859999999999999E+00 4.037805318483385E-09 + 8.861000000000001E+00 4.025119194884330E-09 + 8.862000000000000E+00 4.012472742988409E-09 + 8.863000000000000E+00 3.999865839368287E-09 + 8.864000000000001E+00 3.987298360978486E-09 + 8.865000000000000E+00 3.974770185154220E-09 + 8.866000000000000E+00 3.962281189610209E-09 + 8.867000000000001E+00 3.949831252439518E-09 + 8.868000000000000E+00 3.937420252112393E-09 + 8.869000000000000E+00 3.925048067475108E-09 + 8.869999999999999E+00 3.912714577748800E-09 + 8.871000000000000E+00 3.900419662528320E-09 + 8.872000000000000E+00 3.888163201781086E-09 + 8.872999999999999E+00 3.875945075845928E-09 + 8.874000000000001E+00 3.863765165431957E-09 + 8.875000000000000E+00 3.851623351617426E-09 + 8.875999999999999E+00 3.839519515848581E-09 + 8.877000000000001E+00 3.827453539938544E-09 + 8.878000000000000E+00 3.815425306066184E-09 + 8.879000000000000E+00 3.803434696774978E-09 + 8.880000000000001E+00 3.791481594971904E-09 + 8.881000000000000E+00 3.779565883926322E-09 + 8.882000000000000E+00 3.767687447268851E-09 + 8.882999999999999E+00 3.755846168990260E-09 + 8.884000000000000E+00 3.744041933440369E-09 + 8.885000000000000E+00 3.732274625326933E-09 + 8.885999999999999E+00 3.720544129714551E-09 + 8.887000000000000E+00 3.708850332023563E-09 + 8.888000000000000E+00 3.697193118028948E-09 + 8.888999999999999E+00 3.685572373859254E-09 + 8.890000000000001E+00 3.673987985995489E-09 + 8.891000000000000E+00 3.662439841270048E-09 + 8.891999999999999E+00 3.650927826865629E-09 + 8.893000000000001E+00 3.639451830314159E-09 + 8.894000000000000E+00 3.628011739495713E-09 + 8.895000000000000E+00 3.616607442637444E-09 + 8.896000000000001E+00 3.605238828312519E-09 + 8.897000000000000E+00 3.593905785439057E-09 + 8.898000000000000E+00 3.582608203279060E-09 + 8.898999999999999E+00 3.571345971437359E-09 + 8.900000000000000E+00 3.560118979860556E-09 + 8.901000000000000E+00 3.548927118835980E-09 + 8.901999999999999E+00 3.537770278990629E-09 + 8.903000000000000E+00 3.526648351290132E-09 + 8.904000000000000E+00 3.515561227037705E-09 + 8.904999999999999E+00 3.504508797873104E-09 + 8.906000000000001E+00 3.493490955771606E-09 + 8.907000000000000E+00 3.482507593042964E-09 + 8.907999999999999E+00 3.471558602330382E-09 + 8.909000000000001E+00 3.460643876609484E-09 + 8.910000000000000E+00 3.449763309187302E-09 + 8.911000000000000E+00 3.438916793701236E-09 + 8.912000000000001E+00 3.428104224118067E-09 + 8.913000000000000E+00 3.417325494732914E-09 + 8.914000000000000E+00 3.406580500168237E-09 + 8.914999999999999E+00 3.395869135372834E-09 + 8.916000000000000E+00 3.385191295620827E-09 + 8.917000000000000E+00 3.374546876510661E-09 + 8.917999999999999E+00 3.363935773964116E-09 + 8.919000000000000E+00 3.353357884225305E-09 + 8.920000000000000E+00 3.342813103859672E-09 + 8.920999999999999E+00 3.332301329753024E-09 + 8.922000000000001E+00 3.321822459110523E-09 + 8.923000000000000E+00 3.311376389455726E-09 + 8.923999999999999E+00 3.300963018629578E-09 + 8.925000000000001E+00 3.290582244789459E-09 + 8.926000000000000E+00 3.280233966408198E-09 + 8.927000000000000E+00 3.269918082273102E-09 + 8.928000000000001E+00 3.259634491484988E-09 + 8.929000000000000E+00 3.249383093457221E-09 + 8.930000000000000E+00 3.239163787914752E-09 + 8.930999999999999E+00 3.228976474893156E-09 + 8.932000000000000E+00 3.218821054737672E-09 + 8.933000000000000E+00 3.208697428102257E-09 + 8.933999999999999E+00 3.198605495948637E-09 + 8.935000000000000E+00 3.188545159545344E-09 + 8.936000000000000E+00 3.178516320466794E-09 + 8.936999999999999E+00 3.168518880592321E-09 + 8.938000000000001E+00 3.158552742105258E-09 + 8.939000000000000E+00 3.148617807491994E-09 + 8.940000000000000E+00 3.138713979541032E-09 + 8.941000000000001E+00 3.128841161342069E-09 + 8.942000000000000E+00 3.118999256285074E-09 + 8.943000000000000E+00 3.109188168059342E-09 + 8.944000000000001E+00 3.099407800652592E-09 + 8.945000000000000E+00 3.089658058350044E-09 + 8.946000000000000E+00 3.079938845733493E-09 + 8.946999999999999E+00 3.070250067680408E-09 + 8.948000000000000E+00 3.060591629363011E-09 + 8.949000000000000E+00 3.050963436247379E-09 + 8.949999999999999E+00 3.041365394092528E-09 + 8.951000000000001E+00 3.031797408949519E-09 + 8.952000000000000E+00 3.022259387160559E-09 + 8.952999999999999E+00 3.012751235358097E-09 + 8.954000000000001E+00 3.003272860463934E-09 + 8.955000000000000E+00 2.993824169688334E-09 + 8.956000000000000E+00 2.984405070529133E-09 + 8.957000000000001E+00 2.975015470770849E-09 + 8.958000000000000E+00 2.965655278483811E-09 + 8.959000000000000E+00 2.956324402023261E-09 + 8.960000000000001E+00 2.947022750028493E-09 + 8.961000000000000E+00 2.937750231421968E-09 + 8.962000000000000E+00 2.928506755408446E-09 + 8.962999999999999E+00 2.919292231474111E-09 + 8.964000000000000E+00 2.910106569385709E-09 + 8.965000000000000E+00 2.900949679189685E-09 + 8.965999999999999E+00 2.891821471211316E-09 + 8.967000000000001E+00 2.882721856053852E-09 + 8.968000000000000E+00 2.873650744597662E-09 + 8.968999999999999E+00 2.864608047999388E-09 + 8.970000000000001E+00 2.855593677691073E-09 + 8.971000000000000E+00 2.846607545379334E-09 + 8.972000000000000E+00 2.837649563044502E-09 + 8.973000000000001E+00 2.828719642939784E-09 + 8.974000000000000E+00 2.819817697590423E-09 + 8.975000000000000E+00 2.810943639792861E-09 + 8.976000000000001E+00 2.802097382613887E-09 + 8.977000000000000E+00 2.793278839389833E-09 + 8.978000000000000E+00 2.784487923725720E-09 + 8.978999999999999E+00 2.775724549494438E-09 + 8.980000000000000E+00 2.766988630835918E-09 + 8.981000000000000E+00 2.758280082156315E-09 + 8.981999999999999E+00 2.749598818127181E-09 + 8.983000000000001E+00 2.740944753684645E-09 + 8.984000000000000E+00 2.732317804028609E-09 + 8.984999999999999E+00 2.723717884621925E-09 + 8.986000000000001E+00 2.715144911189579E-09 + 8.987000000000000E+00 2.706598799717909E-09 + 8.988000000000000E+00 2.698079466453764E-09 + 8.989000000000001E+00 2.689586827903726E-09 + 8.990000000000000E+00 2.681120800833301E-09 + 8.991000000000000E+00 2.672681302266123E-09 + 8.992000000000001E+00 2.664268249483154E-09 + 8.993000000000000E+00 2.655881560021896E-09 + 8.994000000000000E+00 2.647521151675594E-09 + 8.994999999999999E+00 2.639186942492457E-09 + 8.996000000000000E+00 2.630878850774862E-09 + 8.997000000000000E+00 2.622596795078576E-09 + 8.997999999999999E+00 2.614340694211971E-09 + 8.999000000000001E+00 2.606110467235250E-09 + 9.000000000000000E+00 2.597906033459671E-09 + 9.000999999999999E+00 2.589727312446759E-09 + 9.002000000000001E+00 2.581574224007559E-09 + 9.003000000000000E+00 2.573446688201842E-09 + 9.004000000000000E+00 2.565344625337355E-09 + 9.005000000000001E+00 2.557267955969049E-09 + 9.006000000000000E+00 2.549216600898321E-09 + 9.007000000000000E+00 2.541190481172240E-09 + 9.007999999999999E+00 2.533189518082812E-09 + 9.009000000000000E+00 2.525213633166210E-09 + 9.010000000000000E+00 2.517262748202021E-09 + 9.010999999999999E+00 2.509336785212500E-09 + 9.012000000000000E+00 2.501435666461822E-09 + 9.013000000000000E+00 2.493559314455335E-09 + 9.013999999999999E+00 2.485707651938809E-09 + 9.015000000000001E+00 2.477880601897704E-09 + 9.016000000000000E+00 2.470078087556429E-09 + 9.016999999999999E+00 2.462300032377604E-09 + 9.018000000000001E+00 2.454546360061317E-09 + 9.019000000000000E+00 2.446816994544409E-09 + 9.020000000000000E+00 2.439111859999727E-09 + 9.021000000000001E+00 2.431430880835409E-09 + 9.022000000000000E+00 2.423773981694145E-09 + 9.023000000000000E+00 2.416141087452466E-09 + 9.023999999999999E+00 2.408532123220014E-09 + 9.025000000000000E+00 2.400947014338830E-09 + 9.026000000000000E+00 2.393385686382627E-09 + 9.026999999999999E+00 2.385848065156089E-09 + 9.028000000000000E+00 2.378334076694143E-09 + 9.029000000000000E+00 2.370843647261264E-09 + 9.029999999999999E+00 2.363376703350757E-09 + 9.031000000000001E+00 2.355933171684050E-09 + 9.032000000000000E+00 2.348512979209998E-09 + 9.032999999999999E+00 2.341116053104175E-09 + 9.034000000000001E+00 2.333742320768177E-09 + 9.035000000000000E+00 2.326391709828925E-09 + 9.036000000000000E+00 2.319064148137966E-09 + 9.037000000000001E+00 2.311759563770784E-09 + 9.038000000000000E+00 2.304477885026115E-09 + 9.039000000000000E+00 2.297219040425237E-09 + 9.039999999999999E+00 2.289982958711303E-09 + 9.041000000000000E+00 2.282769568848658E-09 + 9.042000000000000E+00 2.275578800022140E-09 + 9.042999999999999E+00 2.268410581636411E-09 + 9.044000000000000E+00 2.261264843315275E-09 + 9.045000000000000E+00 2.254141514901007E-09 + 9.045999999999999E+00 2.247040526453670E-09 + 9.047000000000001E+00 2.239961808250450E-09 + 9.048000000000000E+00 2.232905290784980E-09 + 9.048999999999999E+00 2.225870904766680E-09 + 9.050000000000001E+00 2.218858581120085E-09 + 9.051000000000000E+00 2.211868250984183E-09 + 9.052000000000000E+00 2.204899845711747E-09 + 9.053000000000001E+00 2.197953296868686E-09 + 9.054000000000000E+00 2.191028536233383E-09 + 9.055000000000000E+00 2.184125495796033E-09 + 9.055999999999999E+00 2.177244107757998E-09 + 9.057000000000000E+00 2.170384304531148E-09 + 9.058000000000000E+00 2.163546018737220E-09 + 9.058999999999999E+00 2.156729183207155E-09 + 9.060000000000000E+00 2.149933730980473E-09 + 9.061000000000000E+00 2.143159595304612E-09 + 9.061999999999999E+00 2.136406709634289E-09 + 9.063000000000001E+00 2.129675007630870E-09 + 9.064000000000000E+00 2.122964423161723E-09 + 9.065000000000000E+00 2.116274890299581E-09 + 9.066000000000001E+00 2.109606343321912E-09 + 9.067000000000000E+00 2.102958716710292E-09 + 9.068000000000000E+00 2.096331945149760E-09 + 9.069000000000001E+00 2.089725963528205E-09 + 9.070000000000000E+00 2.083140706935732E-09 + 9.071000000000000E+00 2.076576110664036E-09 + 9.071999999999999E+00 2.070032110205786E-09 + 9.073000000000000E+00 2.063508641253998E-09 + 9.074000000000000E+00 2.057005639701424E-09 + 9.074999999999999E+00 2.050523041639924E-09 + 9.076000000000001E+00 2.044060783359863E-09 + 9.077000000000000E+00 2.037618801349492E-09 + 9.077999999999999E+00 2.031197032294335E-09 + 9.079000000000001E+00 2.024795413076583E-09 + 9.080000000000000E+00 2.018413880774488E-09 + 9.081000000000000E+00 2.012052372661755E-09 + 9.082000000000001E+00 2.005710826206936E-09 + 9.083000000000000E+00 1.999389179072837E-09 + 9.084000000000000E+00 1.993087369115906E-09 + 9.085000000000001E+00 1.986805334385645E-09 + 9.086000000000000E+00 1.980543013124007E-09 + 9.087000000000000E+00 1.974300343764811E-09 + 9.087999999999999E+00 1.968077264933132E-09 + 9.089000000000000E+00 1.961873715444732E-09 + 9.090000000000000E+00 1.955689634305453E-09 + 9.090999999999999E+00 1.949524960710640E-09 + 9.092000000000001E+00 1.943379634044550E-09 + 9.093000000000000E+00 1.937253593879775E-09 + 9.093999999999999E+00 1.931146779976655E-09 + 9.095000000000001E+00 1.925059132282695E-09 + 9.096000000000000E+00 1.918990590931996E-09 + 9.097000000000000E+00 1.912941096244675E-09 + 9.098000000000001E+00 1.906910588726282E-09 + 9.099000000000000E+00 1.900899009067241E-09 + 9.100000000000000E+00 1.894906298142267E-09 + 9.101000000000001E+00 1.888932397009806E-09 + 9.102000000000000E+00 1.882977246911461E-09 + 9.103000000000000E+00 1.877040789271427E-09 + 9.103999999999999E+00 1.871122965695927E-09 + 9.105000000000000E+00 1.865223717972656E-09 + 9.106000000000000E+00 1.859342988070207E-09 + 9.106999999999999E+00 1.853480718137527E-09 + 9.108000000000001E+00 1.847636850503347E-09 + 9.109000000000000E+00 1.841811327675634E-09 + 9.109999999999999E+00 1.836004092341039E-09 + 9.111000000000001E+00 1.830215087364335E-09 + 9.112000000000000E+00 1.824444255787876E-09 + 9.113000000000000E+00 1.818691540831043E-09 + 9.114000000000001E+00 1.812956885889699E-09 + 9.115000000000000E+00 1.807240234535644E-09 + 9.116000000000000E+00 1.801541530516073E-09 + 9.117000000000001E+00 1.795860717753027E-09 + 9.118000000000000E+00 1.790197740342862E-09 + 9.119000000000000E+00 1.784552542555701E-09 + 9.119999999999999E+00 1.778925068834902E-09 + 9.121000000000000E+00 1.773315263796526E-09 + 9.122000000000000E+00 1.767723072228795E-09 + 9.122999999999999E+00 1.762148439091565E-09 + 9.124000000000001E+00 1.756591309515797E-09 + 9.125000000000000E+00 1.751051628803024E-09 + 9.125999999999999E+00 1.745529342424825E-09 + 9.127000000000001E+00 1.740024396022297E-09 + 9.128000000000000E+00 1.734536735405541E-09 + 9.129000000000000E+00 1.729066306553129E-09 + 9.130000000000001E+00 1.723613055611582E-09 + 9.131000000000000E+00 1.718176928894862E-09 + 9.132000000000000E+00 1.712757872883848E-09 + 9.132999999999999E+00 1.707355834225811E-09 + 9.134000000000000E+00 1.701970759733920E-09 + 9.135000000000000E+00 1.696602596386712E-09 + 9.135999999999999E+00 1.691251291327582E-09 + 9.137000000000000E+00 1.685916791864285E-09 + 9.138000000000000E+00 1.680599045468418E-09 + 9.138999999999999E+00 1.675297999774912E-09 + 9.140000000000001E+00 1.670013602581537E-09 + 9.141000000000000E+00 1.664745801848388E-09 + 9.141999999999999E+00 1.659494545697389E-09 + 9.143000000000001E+00 1.654259782411792E-09 + 9.144000000000000E+00 1.649041460435676E-09 + 9.145000000000000E+00 1.643839528373449E-09 + 9.146000000000001E+00 1.638653934989356E-09 + 9.147000000000000E+00 1.633484629206986E-09 + 9.148000000000000E+00 1.628331560108772E-09 + 9.148999999999999E+00 1.623194676935504E-09 + 9.150000000000000E+00 1.618073929085842E-09 + 9.151000000000000E+00 1.612969266115822E-09 + 9.151999999999999E+00 1.607880637738373E-09 + 9.153000000000000E+00 1.602807993822834E-09 + 9.154000000000000E+00 1.597751284394463E-09 + 9.154999999999999E+00 1.592710459633963E-09 + 9.156000000000001E+00 1.587685469876993E-09 + 9.157000000000000E+00 1.582676265613699E-09 + 9.157999999999999E+00 1.577682797488224E-09 + 9.159000000000001E+00 1.572705016298243E-09 + 9.160000000000000E+00 1.567742872994479E-09 + 9.161000000000000E+00 1.562796318680237E-09 + 9.162000000000001E+00 1.557865304610927E-09 + 9.163000000000000E+00 1.552949782193596E-09 + 9.164000000000000E+00 1.548049702986458E-09 + 9.164999999999999E+00 1.543165018698424E-09 + 9.166000000000000E+00 1.538295681188645E-09 + 9.167000000000000E+00 1.533441642466033E-09 + 9.167999999999999E+00 1.528602854688810E-09 + 9.169000000000000E+00 1.523779270164039E-09 + 9.170000000000000E+00 1.518970841347168E-09 + 9.170999999999999E+00 1.514177520841569E-09 + 9.172000000000001E+00 1.509399261398078E-09 + 9.173000000000000E+00 1.504636015914542E-09 + 9.173999999999999E+00 1.499887737435364E-09 + 9.175000000000001E+00 1.495154379151048E-09 + 9.176000000000000E+00 1.490435894397747E-09 + 9.177000000000000E+00 1.485732236656816E-09 + 9.178000000000001E+00 1.481043359554356E-09 + 9.179000000000000E+00 1.476369216860773E-09 + 9.180000000000000E+00 1.471709762490326E-09 + 9.180999999999999E+00 1.467064950500684E-09 + 9.182000000000000E+00 1.462434735092486E-09 + 9.183000000000000E+00 1.457819070608893E-09 + 9.183999999999999E+00 1.453217911535147E-09 + 9.185000000000000E+00 1.448631212498137E-09 + 9.186000000000000E+00 1.444058928265954E-09 + 9.186999999999999E+00 1.439501013747460E-09 + 9.188000000000001E+00 1.434957423991846E-09 + 9.189000000000000E+00 1.430428114188204E-09 + 9.190000000000000E+00 1.425913039665089E-09 + 9.191000000000001E+00 1.421412155890091E-09 + 9.192000000000000E+00 1.416925418469404E-09 + 9.193000000000000E+00 1.412452783147395E-09 + 9.194000000000001E+00 1.407994205806176E-09 + 9.195000000000000E+00 1.403549642465181E-09 + 9.196000000000000E+00 1.399119049280741E-09 + 9.196999999999999E+00 1.394702382545654E-09 + 9.198000000000000E+00 1.390299598688771E-09 + 9.199000000000000E+00 1.385910654274568E-09 + 9.199999999999999E+00 1.381535506002733E-09 + 9.201000000000001E+00 1.377174110707738E-09 + 9.202000000000000E+00 1.372826425358432E-09 + 9.202999999999999E+00 1.368492407057621E-09 + 9.204000000000001E+00 1.364172013041645E-09 + 9.205000000000000E+00 1.359865200679981E-09 + 9.206000000000000E+00 1.355571927474819E-09 + 9.207000000000001E+00 1.351292151060652E-09 + 9.208000000000000E+00 1.347025829203872E-09 + 9.209000000000000E+00 1.342772919802357E-09 + 9.210000000000001E+00 1.338533380885063E-09 + 9.211000000000000E+00 1.334307170611624E-09 + 9.212000000000000E+00 1.330094247271942E-09 + 9.212999999999999E+00 1.325894569285784E-09 + 9.214000000000000E+00 1.321708095202385E-09 + 9.215000000000000E+00 1.317534783700040E-09 + 9.215999999999999E+00 1.313374593585709E-09 + 9.217000000000001E+00 1.309227483794617E-09 + 9.218000000000000E+00 1.305093413389860E-09 + 9.218999999999999E+00 1.300972341562002E-09 + 9.220000000000001E+00 1.296864227628686E-09 + 9.221000000000000E+00 1.292769031034242E-09 + 9.222000000000000E+00 1.288686711349289E-09 + 9.223000000000001E+00 1.284617228270344E-09 + 9.224000000000000E+00 1.280560541619440E-09 + 9.225000000000000E+00 1.276516611343730E-09 + 9.226000000000001E+00 1.272485397515101E-09 + 9.227000000000000E+00 1.268466860329788E-09 + 9.228000000000000E+00 1.264460960107990E-09 + 9.228999999999999E+00 1.260467657293485E-09 + 9.230000000000000E+00 1.256486912453247E-09 + 9.231000000000000E+00 1.252518686277065E-09 + 9.231999999999999E+00 1.248562939577163E-09 + 9.233000000000001E+00 1.244619633287819E-09 + 9.234000000000000E+00 1.240688728464989E-09 + 9.234999999999999E+00 1.236770186285930E-09 + 9.236000000000001E+00 1.232863968048821E-09 + 9.237000000000000E+00 1.228970035172396E-09 + 9.238000000000000E+00 1.225088349195559E-09 + 9.239000000000001E+00 1.221218871777024E-09 + 9.240000000000000E+00 1.217361564694934E-09 + 9.241000000000000E+00 1.213516389846497E-09 + 9.242000000000001E+00 1.209683309247614E-09 + 9.243000000000000E+00 1.205862285032516E-09 + 9.244000000000000E+00 1.202053279453390E-09 + 9.244999999999999E+00 1.198256254880020E-09 + 9.246000000000000E+00 1.194471173799419E-09 + 9.247000000000000E+00 1.190697998815468E-09 + 9.247999999999999E+00 1.186936692648552E-09 + 9.249000000000001E+00 1.183187218135198E-09 + 9.250000000000000E+00 1.179449538227725E-09 + 9.250999999999999E+00 1.175723615993866E-09 + 9.252000000000001E+00 1.172009414616432E-09 + 9.253000000000000E+00 1.168306897392937E-09 + 9.254000000000000E+00 1.164616027735257E-09 + 9.255000000000001E+00 1.160936769169265E-09 + 9.256000000000000E+00 1.157269085334486E-09 + 9.257000000000000E+00 1.153612939983737E-09 + 9.257999999999999E+00 1.149968296982782E-09 + 9.259000000000000E+00 1.146335120309980E-09 + 9.260000000000000E+00 1.142713374055935E-09 + 9.260999999999999E+00 1.139103022423149E-09 + 9.262000000000000E+00 1.135504029725678E-09 + 9.263000000000000E+00 1.131916360388780E-09 + 9.263999999999999E+00 1.128339978948575E-09 + 9.265000000000001E+00 1.124774850051699E-09 + 9.266000000000000E+00 1.121220938454968E-09 + 9.266999999999999E+00 1.117678209025026E-09 + 9.268000000000001E+00 1.114146626738011E-09 + 9.269000000000000E+00 1.110626156679215E-09 + 9.270000000000000E+00 1.107116764042749E-09 + 9.271000000000001E+00 1.103618414131194E-09 + 9.272000000000000E+00 1.100131072355278E-09 + 9.273000000000000E+00 1.096654704233536E-09 + 9.273999999999999E+00 1.093189275391974E-09 + 9.275000000000000E+00 1.089734751563735E-09 + 9.276000000000000E+00 1.086291098588773E-09 + 9.276999999999999E+00 1.082858282413515E-09 + 9.278000000000000E+00 1.079436269090534E-09 + 9.279000000000000E+00 1.076025024778223E-09 + 9.279999999999999E+00 1.072624515740460E-09 + 9.281000000000001E+00 1.069234708346285E-09 + 9.282000000000000E+00 1.065855569069576E-09 + 9.282999999999999E+00 1.062487064488721E-09 + 9.284000000000001E+00 1.059129161286293E-09 + 9.285000000000000E+00 1.055781826248731E-09 + 9.286000000000000E+00 1.052445026266013E-09 + 9.287000000000001E+00 1.049118728331339E-09 + 9.288000000000000E+00 1.045802899540812E-09 + 9.289000000000000E+00 1.042497507093110E-09 + 9.289999999999999E+00 1.039202518289182E-09 + 9.291000000000000E+00 1.035917900531917E-09 + 9.292000000000000E+00 1.032643621325838E-09 + 9.292999999999999E+00 1.029379648276781E-09 + 9.294000000000000E+00 1.026125949091585E-09 + 9.295000000000000E+00 1.022882491577775E-09 + 9.295999999999999E+00 1.019649243643251E-09 + 9.297000000000001E+00 1.016426173295978E-09 + 9.298000000000000E+00 1.013213248643676E-09 + 9.298999999999999E+00 1.010010437893508E-09 + 9.300000000000001E+00 1.006817709351771E-09 + 9.301000000000000E+00 1.003635031423597E-09 + 9.302000000000000E+00 1.000462372612633E-09 + 9.303000000000001E+00 9.972997015207465E-10 + 9.304000000000000E+00 9.941469868477162E-10 + 9.305000000000000E+00 9.910041973909285E-10 + 9.305999999999999E+00 9.878713020450759E-10 + 9.307000000000000E+00 9.847482698018552E-10 + 9.308000000000000E+00 9.816350697496651E-10 + 9.308999999999999E+00 9.785316710733054E-10 + 9.310000000000000E+00 9.754380430536839E-10 + 9.311000000000000E+00 9.723541550675106E-10 + 9.311999999999999E+00 9.692799765870062E-10 + 9.313000000000001E+00 9.662154771796017E-10 + 9.314000000000000E+00 9.631606265076463E-10 + 9.315000000000000E+00 9.601153943281127E-10 + 9.316000000000001E+00 9.570797504922993E-10 + 9.317000000000000E+00 9.540536649455445E-10 + 9.318000000000000E+00 9.510371077269292E-10 + 9.319000000000001E+00 9.480300489689875E-10 + 9.320000000000000E+00 9.450324588974189E-10 + 9.321000000000000E+00 9.420443078307966E-10 + 9.321999999999999E+00 9.390655661802810E-10 + 9.323000000000000E+00 9.360962044493327E-10 + 9.324000000000000E+00 9.331361932334231E-10 + 9.324999999999999E+00 9.301855032197518E-10 + 9.326000000000001E+00 9.272441051869632E-10 + 9.327000000000000E+00 9.243119700048586E-10 + 9.327999999999999E+00 9.213890686341151E-10 + 9.329000000000001E+00 9.184753721260078E-10 + 9.330000000000000E+00 9.155708516221217E-10 + 9.331000000000000E+00 9.126754783540744E-10 + 9.332000000000001E+00 9.097892236432397E-10 + 9.333000000000000E+00 9.069120589004648E-10 + 9.334000000000000E+00 9.040439556257947E-10 + 9.335000000000001E+00 9.011848854081948E-10 + 9.336000000000000E+00 8.983348199252744E-10 + 9.337000000000000E+00 8.954937309430144E-10 + 9.337999999999999E+00 8.926615903154895E-10 + 9.339000000000000E+00 8.898383699845956E-10 + 9.340000000000000E+00 8.870240419797799E-10 + 9.340999999999999E+00 8.842185784177652E-10 + 9.342000000000001E+00 8.814219515022827E-10 + 9.343000000000000E+00 8.786341335237986E-10 + 9.343999999999999E+00 8.758550968592484E-10 + 9.345000000000001E+00 8.730848139717653E-10 + 9.346000000000000E+00 8.703232574104149E-10 + 9.347000000000000E+00 8.675703998099275E-10 + 9.348000000000001E+00 8.648262138904297E-10 + 9.349000000000000E+00 8.620906724571866E-10 + 9.350000000000000E+00 8.593637484003304E-10 + 9.351000000000001E+00 8.566454146945968E-10 + 9.352000000000000E+00 8.539356443990706E-10 + 9.353000000000000E+00 8.512344106569133E-10 + 9.353999999999999E+00 8.485416866951085E-10 + 9.355000000000000E+00 8.458574458242027E-10 + 9.356000000000000E+00 8.431816614380393E-10 + 9.356999999999999E+00 8.405143070135072E-10 + 9.358000000000001E+00 8.378553561102765E-10 + 9.359000000000000E+00 8.352047823705499E-10 + 9.359999999999999E+00 8.325625595187956E-10 + 9.361000000000001E+00 8.299286613615026E-10 + 9.362000000000000E+00 8.273030617869182E-10 + 9.363000000000000E+00 8.246857347647975E-10 + 9.364000000000001E+00 8.220766543461515E-10 + 9.365000000000000E+00 8.194757946629918E-10 + 9.366000000000000E+00 8.168831299280797E-10 + 9.367000000000001E+00 8.142986344346783E-10 + 9.368000000000000E+00 8.117222825562983E-10 + 9.369000000000000E+00 8.091540487464544E-10 + 9.369999999999999E+00 8.065939075384090E-10 + 9.371000000000000E+00 8.040418335449331E-10 + 9.372000000000000E+00 8.014978014580517E-10 + 9.372999999999999E+00 7.989617860488053E-10 + 9.374000000000001E+00 7.964337621669951E-10 + 9.375000000000000E+00 7.939137047409502E-10 + 9.375999999999999E+00 7.914015887772727E-10 + 9.377000000000001E+00 7.888973893606011E-10 + 9.378000000000000E+00 7.864010816533656E-10 + 9.379000000000000E+00 7.839126408955474E-10 + 9.380000000000001E+00 7.814320424044362E-10 + 9.381000000000000E+00 7.789592615743935E-10 + 9.382000000000000E+00 7.764942738766093E-10 + 9.382999999999999E+00 7.740370548588659E-10 + 9.384000000000000E+00 7.715875801452996E-10 + 9.385000000000000E+00 7.691458254361630E-10 + 9.385999999999999E+00 7.667117665075864E-10 + 9.387000000000000E+00 7.642853792113502E-10 + 9.388000000000000E+00 7.618666394746383E-10 + 9.388999999999999E+00 7.594555232998129E-10 + 9.390000000000001E+00 7.570520067641771E-10 + 9.391000000000000E+00 7.546560660197446E-10 + 9.391999999999999E+00 7.522676772930028E-10 + 9.393000000000001E+00 7.498868168846864E-10 + 9.394000000000000E+00 7.475134611695444E-10 + 9.395000000000000E+00 7.451475865961112E-10 + 9.396000000000001E+00 7.427891696864765E-10 + 9.397000000000000E+00 7.404381870360571E-10 + 9.398000000000000E+00 7.380946153133687E-10 + 9.398999999999999E+00 7.357584312597984E-10 + 9.400000000000000E+00 7.334296116893816E-10 + 9.401000000000000E+00 7.311081334885711E-10 + 9.401999999999999E+00 7.287939736160164E-10 + 9.403000000000000E+00 7.264871091023371E-10 + 9.404000000000000E+00 7.241875170498997E-10 + 9.404999999999999E+00 7.218951746325946E-10 + 9.406000000000001E+00 7.196100590956149E-10 + 9.407000000000000E+00 7.173321477552345E-10 + 9.407999999999999E+00 7.150614179985843E-10 + 9.409000000000001E+00 7.127978472834373E-10 + 9.410000000000000E+00 7.105414131379838E-10 + 9.411000000000000E+00 7.082920931606176E-10 + 9.412000000000001E+00 7.060498650197137E-10 + 9.413000000000000E+00 7.038147064534111E-10 + 9.414000000000000E+00 7.015865952694010E-10 + 9.414999999999999E+00 6.993655093447024E-10 + 9.416000000000000E+00 6.971514266254545E-10 + 9.417000000000000E+00 6.949443251266979E-10 + 9.417999999999999E+00 6.927441829321603E-10 + 9.419000000000000E+00 6.905509781940436E-10 + 9.420000000000000E+00 6.883646891328129E-10 + 9.420999999999999E+00 6.861852940369816E-10 + 9.422000000000001E+00 6.840127712629001E-10 + 9.423000000000000E+00 6.818470992345481E-10 + 9.423999999999999E+00 6.796882564433200E-10 + 9.425000000000001E+00 6.775362214478178E-10 + 9.426000000000000E+00 6.753909728736440E-10 + 9.427000000000000E+00 6.732524894131897E-10 + 9.428000000000001E+00 6.711207498254279E-10 + 9.429000000000000E+00 6.689957329357073E-10 + 9.430000000000000E+00 6.668774176355471E-10 + 9.430999999999999E+00 6.647657828824290E-10 + 9.432000000000000E+00 6.626608076995943E-10 + 9.433000000000000E+00 6.605624711758354E-10 + 9.433999999999999E+00 6.584707524652987E-10 + 9.435000000000000E+00 6.563856307872746E-10 + 9.436000000000000E+00 6.543070854259998E-10 + 9.436999999999999E+00 6.522350957304524E-10 + 9.438000000000001E+00 6.501696411141527E-10 + 9.439000000000000E+00 6.481107010549622E-10 + 9.440000000000000E+00 6.460582550948818E-10 + 9.441000000000001E+00 6.440122828398524E-10 + 9.442000000000000E+00 6.419727639595608E-10 + 9.443000000000000E+00 6.399396781872343E-10 + 9.444000000000001E+00 6.379130053194490E-10 + 9.445000000000000E+00 6.358927252159308E-10 + 9.446000000000000E+00 6.338788177993565E-10 + 9.446999999999999E+00 6.318712630551625E-10 + 9.448000000000000E+00 6.298700410313482E-10 + 9.449000000000000E+00 6.278751318382772E-10 + 9.449999999999999E+00 6.258865156484905E-10 + 9.451000000000001E+00 6.239041726965082E-10 + 9.452000000000000E+00 6.219280832786378E-10 + 9.452999999999999E+00 6.199582277527829E-10 + 9.454000000000001E+00 6.179945865382509E-10 + 9.455000000000000E+00 6.160371401155631E-10 + 9.456000000000000E+00 6.140858690262618E-10 + 9.457000000000001E+00 6.121407538727235E-10 + 9.458000000000000E+00 6.102017753179683E-10 + 9.459000000000000E+00 6.082689140854713E-10 + 9.460000000000001E+00 6.063421509589727E-10 + 9.461000000000000E+00 6.044214667822964E-10 + 9.462000000000000E+00 6.025068424591544E-10 + 9.462999999999999E+00 6.005982589529681E-10 + 9.464000000000000E+00 5.986956972866803E-10 + 9.465000000000000E+00 5.967991385425657E-10 + 9.465999999999999E+00 5.949085638620533E-10 + 9.467000000000001E+00 5.930239544455383E-10 + 9.468000000000000E+00 5.911452915521984E-10 + 9.468999999999999E+00 5.892725564998136E-10 + 9.470000000000001E+00 5.874057306645802E-10 + 9.471000000000000E+00 5.855447954809339E-10 + 9.472000000000000E+00 5.836897324413631E-10 + 9.473000000000001E+00 5.818405230962335E-10 + 9.474000000000000E+00 5.799971490536042E-10 + 9.475000000000000E+00 5.781595919790497E-10 + 9.476000000000001E+00 5.763278335954817E-10 + 9.477000000000000E+00 5.745018556829693E-10 + 9.478000000000000E+00 5.726816400785621E-10 + 9.478999999999999E+00 5.708671686761123E-10 + 9.480000000000000E+00 5.690584234260981E-10 + 9.481000000000000E+00 5.672553863354478E-10 + 9.481999999999999E+00 5.654580394673652E-10 + 9.483000000000001E+00 5.636663649411513E-10 + 9.484000000000000E+00 5.618803449320337E-10 + 9.484999999999999E+00 5.600999616709896E-10 + 9.486000000000001E+00 5.583251974445734E-10 + 9.487000000000000E+00 5.565560345947434E-10 + 9.488000000000000E+00 5.547924555186910E-10 + 9.489000000000001E+00 5.530344426686665E-10 + 9.490000000000000E+00 5.512819785518088E-10 + 9.491000000000000E+00 5.495350457299757E-10 + 9.492000000000001E+00 5.477936268195710E-10 + 9.493000000000000E+00 5.460577044913769E-10 + 9.494000000000000E+00 5.443272614703849E-10 + 9.494999999999999E+00 5.426022805356239E-10 + 9.496000000000000E+00 5.408827445199984E-10 + 9.497000000000000E+00 5.391686363101133E-10 + 9.497999999999999E+00 5.374599388461130E-10 + 9.499000000000001E+00 5.357566351215087E-10 + 9.500000000000000E+00 5.340587081830183E-10 + 9.500999999999999E+00 5.323661411303987E-10 + 9.502000000000001E+00 5.306789171162780E-10 + 9.503000000000000E+00 5.289970193459944E-10 + 9.504000000000000E+00 5.273204310774307E-10 + 9.505000000000001E+00 5.256491356208515E-10 + 9.506000000000000E+00 5.239831163387383E-10 + 9.507000000000000E+00 5.223223566456285E-10 + 9.507999999999999E+00 5.206668400079539E-10 + 9.509000000000000E+00 5.190165499438773E-10 + 9.510000000000000E+00 5.173714700231336E-10 + 9.510999999999999E+00 5.157315838668670E-10 + 9.512000000000000E+00 5.140968751474726E-10 + 9.513000000000000E+00 5.124673275884359E-10 + 9.513999999999999E+00 5.108429249641751E-10 + 9.515000000000001E+00 5.092236510998809E-10 + 9.516000000000000E+00 5.076094898713588E-10 + 9.516999999999999E+00 5.060004252048725E-10 + 9.518000000000001E+00 5.043964410769861E-10 + 9.519000000000000E+00 5.027975215144068E-10 + 9.520000000000000E+00 5.012036505938305E-10 + 9.521000000000001E+00 4.996148124417851E-10 + 9.522000000000000E+00 4.980309912344750E-10 + 9.523000000000000E+00 4.964521711976268E-10 + 9.523999999999999E+00 4.948783366063345E-10 + 9.525000000000000E+00 4.933094717849076E-10 + 9.526000000000000E+00 4.917455611067162E-10 + 9.526999999999999E+00 4.901865889940385E-10 + 9.528000000000000E+00 4.886325399179092E-10 + 9.529000000000000E+00 4.870833983979662E-10 + 9.529999999999999E+00 4.855391490023015E-10 + 9.531000000000001E+00 4.839997763473074E-10 + 9.532000000000000E+00 4.824652650975292E-10 + 9.532999999999999E+00 4.809355999655135E-10 + 9.534000000000001E+00 4.794107657116574E-10 + 9.535000000000000E+00 4.778907471440625E-10 + 9.536000000000000E+00 4.763755291183848E-10 + 9.537000000000001E+00 4.748650965376867E-10 + 9.538000000000000E+00 4.733594343522877E-10 + 9.539000000000000E+00 4.718585275596215E-10 + 9.539999999999999E+00 4.703623612040838E-10 + 9.541000000000000E+00 4.688709203768906E-10 + 9.542000000000000E+00 4.673841902159303E-10 + 9.542999999999999E+00 4.659021559056171E-10 + 9.544000000000000E+00 4.644248026767501E-10 + 9.545000000000000E+00 4.629521158063641E-10 + 9.545999999999999E+00 4.614840806175889E-10 + 9.547000000000001E+00 4.600206824795033E-10 + 9.548000000000000E+00 4.585619068069957E-10 + 9.548999999999999E+00 4.571077390606163E-10 + 9.550000000000001E+00 4.556581647464379E-10 + 9.551000000000000E+00 4.542131694159160E-10 + 9.552000000000000E+00 4.527727386657421E-10 + 9.553000000000001E+00 4.513368581377076E-10 + 9.554000000000000E+00 4.499055135185605E-10 + 9.555000000000000E+00 4.484786905398675E-10 + 9.555999999999999E+00 4.470563749778707E-10 + 9.557000000000000E+00 4.456385526533541E-10 + 9.558000000000000E+00 4.442252094314997E-10 + 9.558999999999999E+00 4.428163312217512E-10 + 9.560000000000000E+00 4.414119039776757E-10 + 9.561000000000000E+00 4.400119136968280E-10 + 9.561999999999999E+00 4.386163464206105E-10 + 9.563000000000001E+00 4.372251882341383E-10 + 9.564000000000000E+00 4.358384252661036E-10 + 9.565000000000000E+00 4.344560436886381E-10 + 9.566000000000001E+00 4.330780297171798E-10 + 9.567000000000000E+00 4.317043696103359E-10 + 9.568000000000000E+00 4.303350496697501E-10 + 9.569000000000001E+00 4.289700562399666E-10 + 9.570000000000000E+00 4.276093757082985E-10 + 9.571000000000000E+00 4.262529945046935E-10 + 9.571999999999999E+00 4.249008991016000E-10 + 9.573000000000000E+00 4.235530760138369E-10 + 9.574000000000000E+00 4.222095117984594E-10 + 9.574999999999999E+00 4.208701930546300E-10 + 9.576000000000001E+00 4.195351064234833E-10 + 9.577000000000000E+00 4.182042385879984E-10 + 9.577999999999999E+00 4.168775762728684E-10 + 9.579000000000001E+00 4.155551062443685E-10 + 9.580000000000000E+00 4.142368153102285E-10 + 9.581000000000000E+00 4.129226903195006E-10 + 9.582000000000001E+00 4.116127181624348E-10 + 9.583000000000000E+00 4.103068857703475E-10 + 9.584000000000000E+00 4.090051801154929E-10 + 9.585000000000001E+00 4.077075882109389E-10 + 9.586000000000000E+00 4.064140971104361E-10 + 9.587000000000000E+00 4.051246939082935E-10 + 9.587999999999999E+00 4.038393657392506E-10 + 9.589000000000000E+00 4.025580997783523E-10 + 9.590000000000000E+00 4.012808832408221E-10 + 9.590999999999999E+00 4.000077033819388E-10 + 9.592000000000001E+00 3.987385474969098E-10 + 9.593000000000000E+00 3.974734029207477E-10 + 9.593999999999999E+00 3.962122570281450E-10 + 9.595000000000001E+00 3.949550972333524E-10 + 9.596000000000000E+00 3.937019109900530E-10 + 9.597000000000000E+00 3.924526857912415E-10 + 9.598000000000001E+00 3.912074091691006E-10 + 9.599000000000000E+00 3.899660686948790E-10 + 9.600000000000000E+00 3.887286519787687E-10 + 9.601000000000001E+00 3.874951466697855E-10 + 9.602000000000000E+00 3.862655404556475E-10 + 9.603000000000000E+00 3.850398210626518E-10 + 9.603999999999999E+00 3.838179762555580E-10 + 9.605000000000000E+00 3.825999938374658E-10 + 9.606000000000000E+00 3.813858616496965E-10 + 9.606999999999999E+00 3.801755675716733E-10 + 9.608000000000001E+00 3.789690995208019E-10 + 9.609000000000000E+00 3.777664454523546E-10 + 9.609999999999999E+00 3.765675933593494E-10 + 9.611000000000001E+00 3.753725312724323E-10 + 9.612000000000000E+00 3.741812472597635E-10 + 9.613000000000000E+00 3.729937294268955E-10 + 9.614000000000001E+00 3.718099659166602E-10 + 9.615000000000000E+00 3.706299449090513E-10 + 9.616000000000000E+00 3.694536546211080E-10 + 9.617000000000001E+00 3.682810833067997E-10 + 9.618000000000000E+00 3.671122192569119E-10 + 9.619000000000000E+00 3.659470507989300E-10 + 9.619999999999999E+00 3.647855662969257E-10 + 9.621000000000000E+00 3.636277541514411E-10 + 9.622000000000000E+00 3.624736027993790E-10 + 9.622999999999999E+00 3.613231007138838E-10 + 9.624000000000001E+00 3.601762364042342E-10 + 9.625000000000000E+00 3.590329984157260E-10 + 9.625999999999999E+00 3.578933753295632E-10 + 9.627000000000001E+00 3.567573557627424E-10 + 9.628000000000000E+00 3.556249283679451E-10 + 9.629000000000000E+00 3.544960818334234E-10 + 9.630000000000001E+00 3.533708048828888E-10 + 9.631000000000000E+00 3.522490862754061E-10 + 9.632000000000000E+00 3.511309148052768E-10 + 9.632999999999999E+00 3.500162793019335E-10 + 9.634000000000000E+00 3.489051686298289E-10 + 9.635000000000000E+00 3.477975716883267E-10 + 9.635999999999999E+00 3.466934774115919E-10 + 9.637000000000000E+00 3.455928747684853E-10 + 9.638000000000000E+00 3.444957527624497E-10 + 9.638999999999999E+00 3.434021004314082E-10 + 9.640000000000001E+00 3.423119068476512E-10 + 9.641000000000000E+00 3.412251611177328E-10 + 9.641999999999999E+00 3.401418523823644E-10 + 9.643000000000001E+00 3.390619698163027E-10 + 9.644000000000000E+00 3.379855026282506E-10 + 9.645000000000000E+00 3.369124400607470E-10 + 9.646000000000001E+00 3.358427713900609E-10 + 9.647000000000000E+00 3.347764859260886E-10 + 9.648000000000000E+00 3.337135730122475E-10 + 9.648999999999999E+00 3.326540220253712E-10 + 9.650000000000000E+00 3.315978223756057E-10 + 9.651000000000000E+00 3.305449635063058E-10 + 9.651999999999999E+00 3.294954348939302E-10 + 9.653000000000000E+00 3.284492260479397E-10 + 9.654000000000000E+00 3.274063265106929E-10 + 9.654999999999999E+00 3.263667258573449E-10 + 9.656000000000001E+00 3.253304136957438E-10 + 9.657000000000000E+00 3.242973796663283E-10 + 9.657999999999999E+00 3.232676134420286E-10 + 9.659000000000001E+00 3.222411047281617E-10 + 9.660000000000000E+00 3.212178432623320E-10 + 9.661000000000000E+00 3.201978188143306E-10 + 9.662000000000001E+00 3.191810211860343E-10 + 9.663000000000000E+00 3.181674402113056E-10 + 9.664000000000000E+00 3.171570657558940E-10 + 9.664999999999999E+00 3.161498877173343E-10 + 9.666000000000000E+00 3.151458960248484E-10 + 9.667000000000000E+00 3.141450806392475E-10 + 9.667999999999999E+00 3.131474315528317E-10 + 9.669000000000000E+00 3.121529387892935E-10 + 9.670000000000000E+00 3.111615924036171E-10 + 9.670999999999999E+00 3.101733824819848E-10 + 9.672000000000001E+00 3.091882991416752E-10 + 9.673000000000000E+00 3.082063325309696E-10 + 9.673999999999999E+00 3.072274728290533E-10 + 9.675000000000001E+00 3.062517102459183E-10 + 9.676000000000000E+00 3.052790350222717E-10 + 9.677000000000000E+00 3.043094374294330E-10 + 9.678000000000001E+00 3.033429077692449E-10 + 9.679000000000000E+00 3.023794363739733E-10 + 9.680000000000000E+00 3.014190136062154E-10 + 9.680999999999999E+00 3.004616298588034E-10 + 9.682000000000000E+00 2.995072755547105E-10 + 9.683000000000000E+00 2.985559411469571E-10 + 9.683999999999999E+00 2.976076171185165E-10 + 9.685000000000000E+00 2.966622939822214E-10 + 9.686000000000000E+00 2.957199622806716E-10 + 9.686999999999999E+00 2.947806125861394E-10 + 9.688000000000001E+00 2.938442355004786E-10 + 9.689000000000000E+00 2.929108216550312E-10 + 9.690000000000000E+00 2.919803617105353E-10 + 9.691000000000001E+00 2.910528463570335E-10 + 9.692000000000000E+00 2.901282663137819E-10 + 9.693000000000000E+00 2.892066123291577E-10 + 9.694000000000001E+00 2.882878751805701E-10 + 9.695000000000000E+00 2.873720456743672E-10 + 9.696000000000000E+00 2.864591146457474E-10 + 9.696999999999999E+00 2.855490729586693E-10 + 9.698000000000000E+00 2.846419115057612E-10 + 9.699000000000000E+00 2.837376212082310E-10 + 9.699999999999999E+00 2.828361930157790E-10 + 9.701000000000001E+00 2.819376179065068E-10 + 9.702000000000000E+00 2.810418868868297E-10 + 9.702999999999999E+00 2.801489909913874E-10 + 9.704000000000001E+00 2.792589212829575E-10 + 9.705000000000000E+00 2.783716688523663E-10 + 9.706000000000000E+00 2.774872248184007E-10 + 9.707000000000001E+00 2.766055803277222E-10 + 9.708000000000000E+00 2.757267265547800E-10 + 9.709000000000000E+00 2.748506547017215E-10 + 9.710000000000001E+00 2.739773559983095E-10 + 9.711000000000000E+00 2.731068217018338E-10 + 9.712000000000000E+00 2.722390430970255E-10 + 9.712999999999999E+00 2.713740114959710E-10 + 9.714000000000000E+00 2.705117182380276E-10 + 9.715000000000000E+00 2.696521546897369E-10 + 9.715999999999999E+00 2.687953122447413E-10 + 9.717000000000001E+00 2.679411823236987E-10 + 9.718000000000000E+00 2.670897563741971E-10 + 9.718999999999999E+00 2.662410258706725E-10 + 9.720000000000001E+00 2.653949823143235E-10 + 9.721000000000000E+00 2.645516172330281E-10 + 9.722000000000000E+00 2.637109221812606E-10 + 9.723000000000001E+00 2.628728887400082E-10 + 9.724000000000000E+00 2.620375085166880E-10 + 9.725000000000000E+00 2.612047731450656E-10 + 9.726000000000001E+00 2.603746742851711E-10 + 9.727000000000000E+00 2.595472036232176E-10 + 9.728000000000000E+00 2.587223528715200E-10 + 9.728999999999999E+00 2.579001137684130E-10 + 9.730000000000000E+00 2.570804780781699E-10 + 9.731000000000000E+00 2.562634375909220E-10 + 9.731999999999999E+00 2.554489841225759E-10 + 9.733000000000001E+00 2.546371095147353E-10 + 9.734000000000000E+00 2.538278056346199E-10 + 9.734999999999999E+00 2.530210643749850E-10 + 9.736000000000001E+00 2.522168776540414E-10 + 9.737000000000000E+00 2.514152374153771E-10 + 9.738000000000000E+00 2.506161356278772E-10 + 9.739000000000001E+00 2.498195642856443E-10 + 9.740000000000000E+00 2.490255154079206E-10 + 9.741000000000000E+00 2.482339810390098E-10 + 9.742000000000001E+00 2.474449532481960E-10 + 9.743000000000000E+00 2.466584241296704E-10 + 9.744000000000000E+00 2.458743858024482E-10 + 9.744999999999999E+00 2.450928304102950E-10 + 9.746000000000000E+00 2.443137501216473E-10 + 9.747000000000000E+00 2.435371371295362E-10 + 9.747999999999999E+00 2.427629836515110E-10 + 9.749000000000001E+00 2.419912819295601E-10 + 9.750000000000000E+00 2.412220242300392E-10 + 9.750999999999999E+00 2.404552028435897E-10 + 9.752000000000001E+00 2.396908100850676E-10 + 9.753000000000000E+00 2.389288382934640E-10 + 9.754000000000000E+00 2.381692798318325E-10 + 9.755000000000001E+00 2.374121270872129E-10 + 9.756000000000000E+00 2.366573724705547E-10 + 9.757000000000000E+00 2.359050084166457E-10 + 9.757999999999999E+00 2.351550273840340E-10 + 9.759000000000000E+00 2.344074218549565E-10 + 9.760000000000000E+00 2.336621843352629E-10 + 9.760999999999999E+00 2.329193073543430E-10 + 9.762000000000000E+00 2.321787834650529E-10 + 9.763000000000000E+00 2.314406052436410E-10 + 9.763999999999999E+00 2.307047652896757E-10 + 9.765000000000001E+00 2.299712562259718E-10 + 9.766000000000000E+00 2.292400706985188E-10 + 9.766999999999999E+00 2.285112013764072E-10 + 9.768000000000001E+00 2.277846409517572E-10 + 9.769000000000000E+00 2.270603821396464E-10 + 9.770000000000000E+00 2.263384176780378E-10 + 9.771000000000001E+00 2.256187403277085E-10 + 9.772000000000000E+00 2.249013428721785E-10 + 9.773000000000000E+00 2.241862181176392E-10 + 9.773999999999999E+00 2.234733588928828E-10 + 9.775000000000000E+00 2.227627580492316E-10 + 9.776000000000000E+00 2.220544084604673E-10 + 9.776999999999999E+00 2.213483030227611E-10 + 9.778000000000000E+00 2.206444346546037E-10 + 9.779000000000000E+00 2.199427962967350E-10 + 9.779999999999999E+00 2.192433809120751E-10 + 9.781000000000001E+00 2.185461814856546E-10 + 9.782000000000000E+00 2.178511910245457E-10 + 9.782999999999999E+00 2.171584025577932E-10 + 9.784000000000001E+00 2.164678091363452E-10 + 9.785000000000000E+00 2.157794038329860E-10 + 9.786000000000000E+00 2.150931797422663E-10 + 9.787000000000001E+00 2.144091299804357E-10 + 9.788000000000000E+00 2.137272476853753E-10 + 9.789000000000000E+00 2.130475260165294E-10 + 9.789999999999999E+00 2.123699581548381E-10 + 9.791000000000000E+00 2.116945373026708E-10 + 9.792000000000000E+00 2.110212566837582E-10 + 9.792999999999999E+00 2.103501095431259E-10 + 9.794000000000000E+00 2.096810891470281E-10 + 9.795000000000000E+00 2.090141887828809E-10 + 9.795999999999999E+00 2.083494017591957E-10 + 9.797000000000001E+00 2.076867214055140E-10 + 9.798000000000000E+00 2.070261410723414E-10 + 9.798999999999999E+00 2.063676541310814E-10 + 9.800000000000001E+00 2.057112539739708E-10 + 9.801000000000000E+00 2.050569340140143E-10 + 9.802000000000000E+00 2.044046876849192E-10 + 9.803000000000001E+00 2.037545084410311E-10 + 9.804000000000000E+00 2.031063897572691E-10 + 9.805000000000000E+00 2.024603251290614E-10 + 9.805999999999999E+00 2.018163080722812E-10 + 9.807000000000000E+00 2.011743321231830E-10 + 9.808000000000000E+00 2.005343908383382E-10 + 9.808999999999999E+00 1.998964777945721E-10 + 9.810000000000000E+00 1.992605865889005E-10 + 9.811000000000000E+00 1.986267108384661E-10 + 9.811999999999999E+00 1.979948441804761E-10 + 9.813000000000001E+00 1.973649802721389E-10 + 9.814000000000000E+00 1.967371127906019E-10 + 9.815000000000000E+00 1.961112354328887E-10 + 9.816000000000001E+00 1.954873419158376E-10 + 9.817000000000000E+00 1.948654259760389E-10 + 9.818000000000000E+00 1.942454813697735E-10 + 9.819000000000001E+00 1.936275018729508E-10 + 9.820000000000000E+00 1.930114812810482E-10 + 9.821000000000000E+00 1.923974134090489E-10 + 9.821999999999999E+00 1.917852920913812E-10 + 9.823000000000000E+00 1.911751111818581E-10 + 9.824000000000000E+00 1.905668645536160E-10 + 9.824999999999999E+00 1.899605460990543E-10 + 9.826000000000001E+00 1.893561497297757E-10 + 9.827000000000000E+00 1.887536693765254E-10 + 9.827999999999999E+00 1.881530989891317E-10 + 9.829000000000001E+00 1.875544325364458E-10 + 9.830000000000000E+00 1.869576640062829E-10 + 9.831000000000000E+00 1.863627874053622E-10 + 9.832000000000001E+00 1.857697967592479E-10 + 9.833000000000000E+00 1.851786861122909E-10 + 9.834000000000000E+00 1.845894495275688E-10 + 9.835000000000001E+00 1.840020810868283E-10 + 9.836000000000000E+00 1.834165748904262E-10 + 9.837000000000000E+00 1.828329250572715E-10 + 9.837999999999999E+00 1.822511257247671E-10 + 9.839000000000000E+00 1.816711710487518E-10 + 9.840000000000000E+00 1.810930552034434E-10 + 9.840999999999999E+00 1.805167723813796E-10 + 9.842000000000001E+00 1.799423167933623E-10 + 9.843000000000000E+00 1.793696826683997E-10 + 9.843999999999999E+00 1.787988642536491E-10 + 9.845000000000001E+00 1.782298558143601E-10 + 9.846000000000000E+00 1.776626516338189E-10 + 9.847000000000000E+00 1.770972460132904E-10 + 9.848000000000001E+00 1.765336332719630E-10 + 9.849000000000000E+00 1.759718077468922E-10 + 9.850000000000000E+00 1.754117637929442E-10 + 9.851000000000001E+00 1.748534957827409E-10 + 9.852000000000000E+00 1.742969981066039E-10 + 9.853000000000000E+00 1.737422651724990E-10 + 9.853999999999999E+00 1.731892914059811E-10 + 9.855000000000000E+00 1.726380712501392E-10 + 9.856000000000000E+00 1.720885991655414E-10 + 9.856999999999999E+00 1.715408696301801E-10 + 9.858000000000001E+00 1.709948771394177E-10 + 9.859000000000000E+00 1.704506162059318E-10 + 9.859999999999999E+00 1.699080813596616E-10 + 9.861000000000001E+00 1.693672671477529E-10 + 9.862000000000000E+00 1.688281681345055E-10 + 9.863000000000000E+00 1.682907789013184E-10 + 9.864000000000001E+00 1.677550940466367E-10 + 9.865000000000000E+00 1.672211081858981E-10 + 9.866000000000000E+00 1.666888159514799E-10 + 9.867000000000001E+00 1.661582119926457E-10 + 9.868000000000000E+00 1.656292909754927E-10 + 9.869000000000000E+00 1.651020475828989E-10 + 9.869999999999999E+00 1.645764765144704E-10 + 9.871000000000000E+00 1.640525724864896E-10 + 9.872000000000000E+00 1.635303302318620E-10 + 9.872999999999999E+00 1.630097445000652E-10 + 9.874000000000001E+00 1.624908100570961E-10 + 9.875000000000000E+00 1.619735216854198E-10 + 9.875999999999999E+00 1.614578741839177E-10 + 9.877000000000001E+00 1.609438623678360E-10 + 9.878000000000000E+00 1.604314810687349E-10 + 9.879000000000000E+00 1.599207251344371E-10 + 9.880000000000001E+00 1.594115894289767E-10 + 9.881000000000000E+00 1.589040688325492E-10 + 9.882000000000000E+00 1.583981582414599E-10 + 9.882999999999999E+00 1.578938525680742E-10 + 9.884000000000000E+00 1.573911467407669E-10 + 9.885000000000000E+00 1.568900357038721E-10 + 9.885999999999999E+00 1.563905144176334E-10 + 9.887000000000000E+00 1.558925778581540E-10 + 9.888000000000000E+00 1.553962210173467E-10 + 9.888999999999999E+00 1.549014389028848E-10 + 9.890000000000001E+00 1.544082265381524E-10 + 9.891000000000000E+00 1.539165789621956E-10 + 9.891999999999999E+00 1.534264912296730E-10 + 9.893000000000001E+00 1.529379584108069E-10 + 9.894000000000000E+00 1.524509755913347E-10 + 9.895000000000000E+00 1.519655378724603E-10 + 9.896000000000001E+00 1.514816403708054E-10 + 9.897000000000000E+00 1.509992782183614E-10 + 9.898000000000000E+00 1.505184465624412E-10 + 9.898999999999999E+00 1.500391405656309E-10 + 9.900000000000000E+00 1.495613554057427E-10 + 9.901000000000000E+00 1.490850862757663E-10 + 9.901999999999999E+00 1.486103283838222E-10 + 9.903000000000000E+00 1.481370769531135E-10 + 9.904000000000000E+00 1.476653272218792E-10 + 9.904999999999999E+00 1.471950744433468E-10 + 9.906000000000001E+00 1.467263138856853E-10 + 9.907000000000000E+00 1.462590408319589E-10 + 9.907999999999999E+00 1.457932505800795E-10 + 9.909000000000001E+00 1.453289384427609E-10 + 9.910000000000000E+00 1.448660997474720E-10 + 9.911000000000000E+00 1.444047298363906E-10 + 9.912000000000001E+00 1.439448240663576E-10 + 9.913000000000000E+00 1.434863778088307E-10 + 9.914000000000000E+00 1.430293864498388E-10 + 9.914999999999999E+00 1.425738453899361E-10 + 9.916000000000000E+00 1.421197500441572E-10 + 9.917000000000000E+00 1.416670958419706E-10 + 9.917999999999999E+00 1.412158782272347E-10 + 9.919000000000000E+00 1.407660926581520E-10 + 9.920000000000000E+00 1.403177346072240E-10 + 9.920999999999999E+00 1.398707995612071E-10 + 9.922000000000001E+00 1.394252830210670E-10 + 9.923000000000000E+00 1.389811805019351E-10 + 9.923999999999999E+00 1.385384875330635E-10 + 9.925000000000001E+00 1.380971996577807E-10 + 9.926000000000000E+00 1.376573124334481E-10 + 9.927000000000000E+00 1.372188214314151E-10 + 9.928000000000001E+00 1.367817222369761E-10 + 9.929000000000000E+00 1.363460104493262E-10 + 9.930000000000000E+00 1.359116816815180E-10 + 9.930999999999999E+00 1.354787315604180E-10 + 9.932000000000000E+00 1.350471557266632E-10 + 9.933000000000000E+00 1.346169498346183E-10 + 9.933999999999999E+00 1.341881095523322E-10 + 9.935000000000000E+00 1.337606305614954E-10 + 9.936000000000000E+00 1.333345085573972E-10 + 9.936999999999999E+00 1.329097392488829E-10 + 9.938000000000001E+00 1.324863183583115E-10 + 9.939000000000000E+00 1.320642416215133E-10 + 9.940000000000000E+00 1.316435047877477E-10 + 9.941000000000001E+00 1.312241036196607E-10 + 9.942000000000000E+00 1.308060338932436E-10 + 9.943000000000000E+00 1.303892913977909E-10 + 9.944000000000001E+00 1.299738719358579E-10 + 9.945000000000000E+00 1.295597713232204E-10 + 9.946000000000000E+00 1.291469853888324E-10 + 9.946999999999999E+00 1.287355099747847E-10 + 9.948000000000000E+00 1.283253409362643E-10 + 9.949000000000000E+00 1.279164741415128E-10 + 9.949999999999999E+00 1.275089054717857E-10 + 9.951000000000001E+00 1.271026308213118E-10 + 9.952000000000000E+00 1.266976460972519E-10 + 9.952999999999999E+00 1.262939472196589E-10 + 9.954000000000001E+00 1.258915301214371E-10 + 9.955000000000000E+00 1.254903907483019E-10 + 9.956000000000000E+00 1.250905250587396E-10 + 9.957000000000001E+00 1.246919290239675E-10 + 9.958000000000000E+00 1.242945986278936E-10 + 9.959000000000000E+00 1.238985298670774E-10 + 9.960000000000001E+00 1.235037187506896E-10 + 9.961000000000000E+00 1.231101613004732E-10 + 9.962000000000000E+00 1.227178535507034E-10 + 9.962999999999999E+00 1.223267915481486E-10 + 9.964000000000000E+00 1.219369713520316E-10 + 9.965000000000000E+00 1.215483890339899E-10 + 9.965999999999999E+00 1.211610406780369E-10 + 9.967000000000001E+00 1.207749223805236E-10 + 9.968000000000000E+00 1.203900302500992E-10 + 9.968999999999999E+00 1.200063604076730E-10 + 9.970000000000001E+00 1.196239089863757E-10 + 9.971000000000000E+00 1.192426721315214E-10 + 9.972000000000000E+00 1.188626460005688E-10 + 9.973000000000001E+00 1.184838267630839E-10 + 9.974000000000000E+00 1.181062106007011E-10 + 9.975000000000000E+00 1.177297937070862E-10 + 9.976000000000001E+00 1.173545722878980E-10 + 9.977000000000000E+00 1.169805425607512E-10 + 9.978000000000000E+00 1.166077007551785E-10 + 9.978999999999999E+00 1.162360431125935E-10 + 9.980000000000000E+00 1.158655658862533E-10 + 9.981000000000000E+00 1.154962653412212E-10 + 9.981999999999999E+00 1.151281377543300E-10 + 9.983000000000001E+00 1.147611794141447E-10 + 9.984000000000000E+00 1.143953866209261E-10 + 9.984999999999999E+00 1.140307556865937E-10 + 9.986000000000001E+00 1.136672829346894E-10 + 9.987000000000000E+00 1.133049647003410E-10 + 9.988000000000000E+00 1.129437973302256E-10 + 9.989000000000001E+00 1.125837771825339E-10 + 9.990000000000000E+00 1.122249006269336E-10 + 9.991000000000000E+00 1.118671640445334E-10 + 9.992000000000001E+00 1.115105638278473E-10 + 9.993000000000000E+00 1.111550963807589E-10 + 9.994000000000000E+00 1.108007581184854E-10 + 9.994999999999999E+00 1.104475454675423E-10 + 9.996000000000000E+00 1.100954548657081E-10 + 9.997000000000000E+00 1.097444827619882E-10 + 9.997999999999999E+00 1.093946256165806E-10 + 9.999000000000001E+00 1.090458799008402E-10 + 1.000000000000000E+01 1.086982420972441E-10 diff --git a/example/test_problem/ELBDM/Soliton/clean.sh b/example/test_problem/ELBDM/Soliton/clean.sh new file mode 100644 index 0000000000..72cc1fb33f --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/clean.sh @@ -0,0 +1,5 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid diff --git a/example/test_problem/ELBDM/Soliton/generate_make.sh b/example/test_problem/ELBDM/Soliton/generate_make.sh new file mode 100644 index 0000000000..fab2dfe0c6 --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/generate_make.sh @@ -0,0 +1,6 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=ELBDM --gravity=true "$@" diff --git a/example/test_problem/ELBDM/Soliton/plot_proj_dens.py b/example/test_problem/ELBDM/Soliton/plot_proj_dens.py new file mode 100644 index 0000000000..19d873ed7f --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/plot_proj_dens.py @@ -0,0 +1,51 @@ +import argparse +import sys +import yt + + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot the gas slices and projections' ) + +parser.add_argument( '-p', action='store', required=False, type=str, dest='prefix', + help='prefix [%(default)s]', default='./' ) +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +field = 'density' +colormap = 'algae' +center_mode = 'c' +dpi = 150 + + +yt.enable_parallelism() + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + pz = yt.ProjectionPlot( ds, 'z', field, center=center_mode, weight_field='density' ) + pz.set_zlim( field, 1.0e-12, 1.0e-4 ) + pz.set_cmap( field, colormap ) + pz.set_unit( field, 'code_mass/code_length**3' ) + pz.set_axes_unit( 'code_length' ) + pz.annotate_timestamp( time_unit='code_time', corner='upper_right', time_format='t = {time:5.1f} {units}' ) + pz.save( mpl_kwargs={"dpi":dpi} ) + diff --git a/example/test_problem/ELBDM/Soliton/plot_single_soliton_profile.gpt b/example/test_problem/ELBDM/Soliton/plot_single_soliton_profile.gpt new file mode 100644 index 0000000000..aa243543ef --- /dev/null +++ b/example/test_problem/ELBDM/Soliton/plot_single_soliton_profile.gpt @@ -0,0 +1,91 @@ +reset + + +# target files +# ----------------------------------------------------------- +FILE_IN_PREFIX = 'Diag' +FILE_IN_SUFFIX = '' +FILE_OUT_PREFIX = 'Fig__SingleSoliton' +FILE_REF = 'SolitonDensityProfile_Lambda0.0' +SCALE_L = 9.519277e+00 # soliton length scale factor (Soliton_ScaleL) +SCALE_D = 1.217823e-04 # soliton density scale factor (Soliton_ScaleD) +BOX_SIZE = 384.0 # simulation box size (BOX_SIZE) +START_ID = 0 +END_ID = 50 +DELTA_ID = 1 +PAUSE = -1.0 # <= 0.0 --> mouse + + +# terminal +# ----------------------------------------------------------- + set term x11 enhanced +#set term png enhanced crop size 1280,800 +#set term postscript eps enhanced color 'Helvetica' 16 + + +# plot style +# ----------------------------------------------------------- +#set log xy + set key reverse Left spacing 2 right +#set key reverse Left spacing 1 at first 1.5e2, 1e8 +#set xlabel "r (kpc)" +#set ylabel "Density" +#set format x "10^{%T}" +#set format y "10^{%T}" + set pointsize 1.0 + set size square + set yrange [-0.02:0.02] + set xrange [0.0:0.25*BOX_SIZE] + + +# set the output file extension automatically +# ----------------------------------------------------------- +if ( GPVAL_TERM eq 'pngcairo' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'png' ) FILE_OUT_EXT='png'; \ +else if ( GPVAL_TERM eq 'postscript' ) FILE_OUT_EXT='eps'; \ +else if ( GPVAL_TERM ne 'x11' ) print 'Unkown terminal for settting the output file extension !!'; quit + + + +# loop over all files +# ----------------------------------------------------------- +print "Start plotting ..." + +do for [ID=START_ID:END_ID:DELTA_ID] { + +# set the input and output filenames + FILE_IN = sprintf( '%s_%06d', FILE_IN_PREFIX, ID, FILE_IN_SUFFIX ) + + if ( GPVAL_TERM ne 'x11' ) { set output sprintf( '%s_%06d.%s', FILE_OUT_PREFIX, ID, FILE_OUT_EXT ) } + + +# load the physical time + DUMP_TABLE = './Record__Dump' + NHEADER = 1 + LOAD_TIME = sprintf( "awk '{if(NR==%d+%d) {print $2}}' %s", NHEADER, ID+1, DUMP_TABLE ) + TIME = system( LOAD_TIME )*1.0 # *1.0 --> convert string to number + + +# set title + set title sprintf( 'DataID %06d (t = %9.3e)', ID, TIME ) + print sprintf( ' Plotting DataID %06d (t = %9.3e) ...', ID, TIME ) + + +# plot + center = 0.5*BOX_SIZE + + plot FILE_IN u (abs($4-center)*3**0.5):($7**0.5) w p pt 6 lc 4 title 'Dens^{1/2}' \ + ,FILE_IN u (abs($4-center)*3**0.5):($8 ) w p pt 7 lc 6 title 'Real' \ + ,FILE_IN u (abs($4-center)*3**0.5):($9 ) w p pt 8 lc 7 title 'Imag' \ + ,FILE_REF u ($1*SCALE_L):(($2*SCALE_D)**0.5) w l lc 8 title 'Analytical' + + + if ( GPVAL_TERM eq 'x11' ) { if ( PAUSE <= 0.0 ) { pause mouse } else { pause PAUSE } }; + +} #do for [ID=START_ID:END_ID:DELTA_ID] + + +print "Done"; +if ( GPVAL_TERM eq 'x11' ) { pause -1 }; + + diff --git a/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter b/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter new file mode 100644 index 0000000000..1b84f3baff --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear/Input__Parameter @@ -0,0 +1,171 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1006 # 1006: ELBDM vortex pair in linear motion + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L -1.0 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 8.0e-3 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/VortexPairLinear/Input__TestProb b/example/test_problem/ELBDM/VortexPairLinear/Input__TestProb new file mode 100644 index 0000000000..b14fe35240 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear/Input__TestProb @@ -0,0 +1,8 @@ +# problem-specific runtime parameters +VorPairLin_BgAmp 1.0 # psi_vortex_pair(x,y,z) = BgAmp + WaveAmp*cos(ky*y)*exp( i*(kx*x-Omega*t+Phase0) ) + ZWaveAmp * exp( i*(kz*z-ZWaveOmega*t) ) +VorPairLin_WaveAmp 2.0 # +VorPairLin_ZWaveAmp 0.0 # [0.0] +VorPairLin_Phase0 0.0 # [0.0] +VorPairLin_kx 1.0 # [1.0] where kx = 2 PI / Lx * VorPairLin_kx +VorPairLin_ky 1.0 # [1.0] where ky = 2 PI / Ly * VorPairLin_ky +VorPairLin_kz 1.0 # [1.0] where kz = 2 PI / Lz * VorPairLin_kz \ No newline at end of file diff --git a/example/test_problem/ELBDM/VortexPairLinear/README b/example/test_problem/ELBDM/VortexPairLinear/README new file mode 100644 index 0000000000..9df1157b27 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear/README @@ -0,0 +1,24 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM +Disable: GRAVITY, PARTICLE + + +Default setup: +======================================== +1. Evolve vortex pair for one period +2. Use the periodic boundary conditions +3. Wavelengths along x and y can be adjusted to multiples of the box size +4. Wave in z-direction is turned off by default + + +Note: +======================================== +1. Evolve vortex pair with linear motion along x in a 2D simulation + --> Wave function psi_vorpair(x,y) = background + A*cos(ky*y)*exp( i*(kx*x-Omega*t+Phase0) ) + where A is a constant on the order of background, kx and ky are wavenumbers, + Omega=0.5/ELBDM_ETA*(kx^2+ky^2), and Phase0 is a phase constant +2. Optionally: Add wave in z direction + --> psi(x, y, z) = psi_vorpair(x,y) + background_z * exp( i*(kz*z-ZWaveOmega*t) ) + where background_z is a constant on the order of background, kz is a wavenumber and + Omega=0.5/ELBDM_ETA*(kz^2) \ No newline at end of file diff --git a/example/test_problem/ELBDM/VortexPairLinear/clean.sh b/example/test_problem/ELBDM/VortexPairLinear/clean.sh new file mode 100644 index 0000000000..72598c6d81 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f VortexPairLinear* diff --git a/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh b/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh new file mode 100644 index 0000000000..2247fa2c3c --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM --hdf5=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairLinear/plot_slice.py b/example/test_problem/ELBDM/VortexPairLinear/plot_slice.py new file mode 100644 index 0000000000..ad8f157370 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear/plot_slice.py @@ -0,0 +1,50 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot slices of wave function for the ELBDM test' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./' ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap = 'arbre' +field = 'Dens' +center_mode = 'c' +dpi = 150 + + +yt.enable_parallelism() + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + sz = yt.SlicePlot( ds, 'z', field, center=center_mode ) +# sz.set_zlim( field, 0.0, 9.0 ) + sz.set_log( field, False ) + sz.set_cmap( field, colormap ) + sz.annotate_timestamp( corner='upper_right', time_format='t = {time:.4f} {units}' ) +# sz.annotate_grids( periodic=False ) + sz.save( mpl_kwargs={"dpi":dpi} ) + diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Flag_Interference b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Flag_Interference new file mode 100644 index 0000000000..aa30381732 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Flag_Interference @@ -0,0 +1,12 @@ +# Level QP Density PhaseLap OnlyAtExtrema + 0 1.0 0 1.0 0 + 1 1.0 0 1.0 0 + 2 1.0 0 1.0 0 + 3 1.0 0 1.0 0 + 4 1.0 0 1.0 0 + 5 1.0 0 1.0 0 + 6 1.0 0 1.0 0 + 7 1.0 0 1.0 0 + 8 1.0 0 1.0 0 + 9 1.0 0 1.0 0 + 10 1.0 0 1.0 0 diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter new file mode 100644 index 0000000000..858464569c --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__Parameter @@ -0,0 +1,178 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1006 # 1006: ELBDM vortex pair in linear motion + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L -1.0 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 1 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 1 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 1 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 1 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 0.8 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [0.8] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE 8 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV 8 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV 8 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 1 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 1 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 0 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL 1 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 8.0e-3 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__TestProb b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__TestProb new file mode 100644 index 0000000000..b14fe35240 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/Input__TestProb @@ -0,0 +1,8 @@ +# problem-specific runtime parameters +VorPairLin_BgAmp 1.0 # psi_vortex_pair(x,y,z) = BgAmp + WaveAmp*cos(ky*y)*exp( i*(kx*x-Omega*t+Phase0) ) + ZWaveAmp * exp( i*(kz*z-ZWaveOmega*t) ) +VorPairLin_WaveAmp 2.0 # +VorPairLin_ZWaveAmp 0.0 # [0.0] +VorPairLin_Phase0 0.0 # [0.0] +VorPairLin_kx 1.0 # [1.0] where kx = 2 PI / Lx * VorPairLin_kx +VorPairLin_ky 1.0 # [1.0] where ky = 2 PI / Ly * VorPairLin_ky +VorPairLin_kz 1.0 # [1.0] where kz = 2 PI / Lz * VorPairLin_kz \ No newline at end of file diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/README b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/README new file mode 100644 index 0000000000..b46ee019db --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/README @@ -0,0 +1,25 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, ELBDM_SCHEME=ELBDM_HYBRID +Disable: GRAVITY, PARTICLE + + +Default setup: +======================================== +1. Evolve vortex pair for one period +2. Use the periodic boundary conditions +3. Wavelengths along x and y can be adjusted to multiples of the box size +4. Wave in z-direction is turned off by default + + +Note: +======================================== +1. Evolve vortex pair with linear motion along x in a 2D simulation + --> Wave function psi_vorpair(x,y) = background + A*cos(ky*y)*exp( i*(kx*x-Omega*t+Phase0) ) + where A is a constant on the order of background, kx and ky are wavenumbers, + Omega=0.5/ELBDM_ETA*(kx^2+ky^2), and Phase0 is a phase constant +2. Optionally: Add wave in z direction + --> psi(x, y, z) = psi_vorpair(x,y) + background_z * exp( i*(kz*z-ZWaveOmega*t) ) + where background_z is a constant on the order of background, kz is a wavenumber and + Omega=0.5/ELBDM_ETA*(kz^2) +3. If CONSERVE_MASS is enabled, mass ought to be conserved in this test because of periodic boundary conditions \ No newline at end of file diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh new file mode 100644 index 0000000000..72598c6d81 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f VortexPairLinear* diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh new file mode 100644 index 0000000000..c4f3150c8f --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --hdf5=true --mpi=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairLinear_Hybrid/plot_slice.py b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/plot_slice.py new file mode 100644 index 0000000000..6d12eb086b --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairLinear_Hybrid/plot_slice.py @@ -0,0 +1,116 @@ +from __future__ import print_function, division, absolute_import + +import argparse +import sys +import yt +import matplotlib +matplotlib.use('Agg') # Use Agg backend for non-interactive plotting + +import matplotlib.pyplot as plt +import numpy as np + +from mpl_toolkits.axes_grid1 import AxesGrid + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Plot slices of wave function for the ELBDM test') + +# Define command-line arguments +parser.add_argument('-s', action='store', required=True, type=int, dest='idx_start', + help='first data index') +parser.add_argument('-e', action='store', required=True, type=int, dest='idx_end', + help='last data index') +parser.add_argument('-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1) +parser.add_argument('-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./') + +args = parser.parse_args() # Parse the command-line arguments + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t]), end=' ') +print('') +print('-------------------------------------------------------------------\n') + +# Extract arguments from the parsed command-line arguments +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap = 'viridis' # Define the colormap for the plots +dpi = 150 # Define the DPI (dots per inch) for the saved plots + +# Create a series of datasets based on data files with indices in the specified range +dataset_series = yt.DatasetSeries([prefix + '/Data_%06d' % idx for idx in range(idx_start, idx_end + 1, didx)]) + +# Loop through each dataset in the series +for dataset in dataset_series.piter(): + axes = ["z"] # Specify the axes for slicing (e.g., "z" for z-axis slices) + + for current_axis in axes: + # Create a new figure for the current slice + fig = plt.figure(dpi=dpi, figsize=(24, 12)) + + # Create a grid of axes for multiple plots + grid = AxesGrid( + fig, + (0.075, 0.075, 0.85, 0.85), + nrows_ncols=(2, 2), + axes_pad=(0.2, 0.0), + label_mode="L", + share_all=True, + cbar_location="right", + cbar_mode="edge", + direction="row", + cbar_size="3%", + cbar_pad="0%", + ) + + # Define the fields to plot + fields_to_plot = [ + ("gas", "density"), + ("gamer", "Phase"), + ] + + # Create a slice plot for the current dataset and field + slice_plot = yt.SlicePlot(dataset, current_axis, fields_to_plot) + slice_plot.set_log(("gamer", "Phase"), False) + + slice_plot.annotate_grids(periodic=False) + + for field in fields_to_plot: + slice_plot.set_cmap(field, colormap) + + # For each plotted field, associate it with the corresponding AxesGrid axes + for i, field in enumerate(fields_to_plot): + plot = slice_plot.plots[field] + plot.figure = fig + plot.axes = grid[2 * i].axes + plot.cax = grid.cbar_axes[i] + + # Create a second slice plot for comparison + slice_plot_2 = yt.SlicePlot(dataset, current_axis, fields_to_plot) + slice_plot_2.set_log(("gamer", "Phase"), False) + + for field in fields_to_plot: + slice_plot_2.set_cmap(field, colormap) + + # Associate the second slice plot with the AxesGrid axes + for i, field in enumerate(fields_to_plot): + plot = slice_plot_2.plots[field] + plot.figure = fig + plot.axes = grid[2 * i + 1].axes + + # Redraw the plot on the AxesGrid axes + slice_plot._setup_plots() + slice_plot_2._setup_plots() + + # Get the DumpID from dataset parameters and save the plot + dump_id = dataset.parameters["DumpID"] + plt.savefig("Data_%06d_%s_axis.png" % (dump_id, current_axis)) + + # Close the current figure to release resources + plt.close() diff --git a/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter b/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter new file mode 100644 index 0000000000..0ec78cb919 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating/Input__Parameter @@ -0,0 +1,171 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1005 # 1005: ELBDM rotating vortex pair + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L -1.0 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 4 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 4 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 4 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 4 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 4 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 4 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 0 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 3.5e-3 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/VortexPairRotating/Input__TestProb b/example/test_problem/ELBDM/VortexPairRotating/Input__TestProb new file mode 100644 index 0000000000..d21b7f0ee6 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating/Input__TestProb @@ -0,0 +1,5 @@ +# problem-specific runtime parameters +VorPairRot_BgAmp 2.0 # psi(R,phi) = BgAmp - J1Amp*J1( sqrt(2*Eta*Omega)*R )*exp( i*(phi-Omega*t+Phase0) ) +VorPairRot_J1Amp 5.0 # +VorPairRot_Omega 9.0e1 # +VorPairRot_Phase0 0.0 # [0.0] diff --git a/example/test_problem/ELBDM/VortexPairRotating/README b/example/test_problem/ELBDM/VortexPairRotating/README new file mode 100644 index 0000000000..f7be93ba0e --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating/README @@ -0,0 +1,20 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM +Disable: GRAVITY, PARTICLE + + +Default setup: +======================================== +1. Evolve vortex pair for one period +2. Use the analytical solution as the boundary conditions + + +Note: +======================================== +1. Evolve a rotating vortex pair in 2D + --> Wave function psi(R,phi) = background - A*J1( sqrt(2*Eta*Omega)*R )*exp( i*(phi-Omega*t+Phase0) ), + where A is a constant on the order of background, Eta=ELBDM_MASS/PLANCK_CONSTANT, + phi is azimuthal angle, R is radius, Omega is angular frequency, and Phase0 is a phase constant +2. Ref: Tzihong Chiueh et al 2011 J. Phys. B: At. Mol. Opt. Phys. 44 115101, + Vortex turbulence in linear Schrödinger wave mechanics diff --git a/example/test_problem/ELBDM/VortexPairRotating/clean.sh b/example/test_problem/ELBDM/VortexPairRotating/clean.sh new file mode 100644 index 0000000000..2670872215 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f VortexPairRotating* diff --git a/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh b/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh new file mode 100644 index 0000000000..2247fa2c3c --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM --hdf5=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairRotating/plot_slice.py b/example/test_problem/ELBDM/VortexPairRotating/plot_slice.py new file mode 100644 index 0000000000..9fcc36a147 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating/plot_slice.py @@ -0,0 +1,50 @@ +import argparse +import sys +import yt + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Plot slices of wave function for the ELBDM test' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./' ) + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +print( ' '.join(map(str, sys.argv)) ) +print( '-------------------------------------------------------------------\n' ) + + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap = 'arbre' +field = 'Dens' +center_mode = 'c' +dpi = 150 + + +yt.enable_parallelism() + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + + sz = yt.SlicePlot( ds, 'z', field, center=center_mode ) +# sz.set_zlim( field, 0.0, 25.0 ) + sz.set_log( field, False ) + sz.set_cmap( field, colormap ) + sz.annotate_timestamp( corner='upper_right', time_format='t = {time:.4f} {units}' ) +# sz.annotate_grids( periodic=False ) + sz.save( mpl_kwargs={"dpi":dpi} ) + diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Flag_Interference b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Flag_Interference new file mode 100644 index 0000000000..aa30381732 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Flag_Interference @@ -0,0 +1,12 @@ +# Level QP Density PhaseLap OnlyAtExtrema + 0 1.0 0 1.0 0 + 1 1.0 0 1.0 0 + 2 1.0 0 1.0 0 + 3 1.0 0 1.0 0 + 4 1.0 0 1.0 0 + 5 1.0 0 1.0 0 + 6 1.0 0 1.0 0 + 7 1.0 0 1.0 0 + 8 1.0 0 1.0 0 + 9 1.0 0 1.0 0 + 10 1.0 0 1.0 0 diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter new file mode 100644 index 0000000000..e9b5dbeea3 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__Parameter @@ -0,0 +1,178 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) unless +# otherwise specified (e.g., SF_CREATE_STAR_MIN_GAS_DENS & SF_CREATE_STAR_MIN_STAR_MASS) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.0 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 64 # number of base-level cells along x +NX0_TOT_Y 64 # number of base-level cells along y +NX0_TOT_Z 16 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 1005 # 1005: ELBDM rotating vortex pair + + +# code units (in cgs) +OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L -1.0 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M -1.0 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T -1.0 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 4 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_XP 4 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YM 4 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_YP 4 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZM 1 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## +OPT__BC_FLU_ZP 1 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) ##2/3/5 for HYDRO ONLY## + + +# time-step +DT__FLUID -1.0 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__SYNC_PARENT_LV 0.1 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 0.8 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [0.8] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE 8 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV 8 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV 8 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 1 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 0 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 1 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# fluid solver in ELBDM (MODEL==ELBDM only) +ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit is fixed even when OPT__UNIT or COMOVING is on) +ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) +ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## +ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 0 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL 1 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +OPT__OVERLAP_MPI 0 # overlap MPI communication with CPU/GPU computations [0] ##NOT SUPPORTED YET## +OPT__RESET_FLUID 0 # reset fluid variables after each update -> edit "Flu_ResetByUser.cpp" [0] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 1 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__RESTART_RESET 0 # reset some simulation status parameters (e.g., current step and time) during restart [0] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__INIT_GRID_WITH_OMP 1 # enable OpenMP when assigning the initial condition of each grid patch [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) + +OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] +OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 5 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 8.0e-3 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__TestProb b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__TestProb new file mode 100644 index 0000000000..d21b7f0ee6 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/Input__TestProb @@ -0,0 +1,5 @@ +# problem-specific runtime parameters +VorPairRot_BgAmp 2.0 # psi(R,phi) = BgAmp - J1Amp*J1( sqrt(2*Eta*Omega)*R )*exp( i*(phi-Omega*t+Phase0) ) +VorPairRot_J1Amp 5.0 # +VorPairRot_Omega 9.0e1 # +VorPairRot_Phase0 0.0 # [0.0] diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/README b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/README new file mode 100644 index 0000000000..ec14cd4f27 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/README @@ -0,0 +1,20 @@ +Compilation flags: +======================================== +Enable : MODEL=ELBDM, ELBDM_SCHEME=HYBRID +Disable: GRAVITY, PARTICLE + + +Default setup: +======================================== +1. Evolve vortex pair for one period +2. Use the analytical solution as the boundary conditions + + +Note: +======================================== +1. Evolve a rotating vortex pair in 2D + --> Wave function psi(R,phi) = background - A*J1( sqrt(2*Eta*Omega)*R )*exp( i*(phi-Omega*t+Phase0) ), + where A is a constant on the order of background, Eta=ELBDM_MASS/PLANCK_CONSTANT, + phi is azimuthal angle, R is radius, Omega is angular frequency, and Phase0 is a phase constant +2. Ref: Tzihong Chiueh et al 2011 J. Phys. B: At. Mol. Opt. Phys. 44 115101, + Vortex turbulence in linear Schrödinger wave mechanics diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh new file mode 100644 index 0000000000..2670872215 --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/clean.sh @@ -0,0 +1,7 @@ +rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ + Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ + Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Hybrid + +rm -f VortexPairRotating* diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh new file mode 100644 index 0000000000..c4f3150c8f --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/generate_make.sh @@ -0,0 +1,5 @@ +# This script should run in the same directory as configure.py + +PYTHON=python3 + +${PYTHON} configure.py --model=ELBDM --elbdm_scheme=ELBDM_HYBRID --hdf5=true --mpi=true "$@" diff --git a/example/test_problem/ELBDM/VortexPairRotating_Hybrid/plot_slice.py b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/plot_slice.py new file mode 100644 index 0000000000..6d12eb086b --- /dev/null +++ b/example/test_problem/ELBDM/VortexPairRotating_Hybrid/plot_slice.py @@ -0,0 +1,116 @@ +from __future__ import print_function, division, absolute_import + +import argparse +import sys +import yt +import matplotlib +matplotlib.use('Agg') # Use Agg backend for non-interactive plotting + +import matplotlib.pyplot as plt +import numpy as np + +from mpl_toolkits.axes_grid1 import AxesGrid + +# Load the command-line parameters +parser = argparse.ArgumentParser(description='Plot slices of wave function for the ELBDM test') + +# Define command-line arguments +parser.add_argument('-s', action='store', required=True, type=int, dest='idx_start', + help='first data index') +parser.add_argument('-e', action='store', required=True, type=int, dest='idx_end', + help='last data index') +parser.add_argument('-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1) +parser.add_argument('-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./') + +args = parser.parse_args() # Parse the command-line arguments + +# Print the command-line arguments for reference +print('\nCommand-line arguments:') +print('-------------------------------------------------------------------') +for t in range(len(sys.argv)): + print(str(sys.argv[t]), end=' ') +print('') +print('-------------------------------------------------------------------\n') + +# Extract arguments from the parsed command-line arguments +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix + +colormap = 'viridis' # Define the colormap for the plots +dpi = 150 # Define the DPI (dots per inch) for the saved plots + +# Create a series of datasets based on data files with indices in the specified range +dataset_series = yt.DatasetSeries([prefix + '/Data_%06d' % idx for idx in range(idx_start, idx_end + 1, didx)]) + +# Loop through each dataset in the series +for dataset in dataset_series.piter(): + axes = ["z"] # Specify the axes for slicing (e.g., "z" for z-axis slices) + + for current_axis in axes: + # Create a new figure for the current slice + fig = plt.figure(dpi=dpi, figsize=(24, 12)) + + # Create a grid of axes for multiple plots + grid = AxesGrid( + fig, + (0.075, 0.075, 0.85, 0.85), + nrows_ncols=(2, 2), + axes_pad=(0.2, 0.0), + label_mode="L", + share_all=True, + cbar_location="right", + cbar_mode="edge", + direction="row", + cbar_size="3%", + cbar_pad="0%", + ) + + # Define the fields to plot + fields_to_plot = [ + ("gas", "density"), + ("gamer", "Phase"), + ] + + # Create a slice plot for the current dataset and field + slice_plot = yt.SlicePlot(dataset, current_axis, fields_to_plot) + slice_plot.set_log(("gamer", "Phase"), False) + + slice_plot.annotate_grids(periodic=False) + + for field in fields_to_plot: + slice_plot.set_cmap(field, colormap) + + # For each plotted field, associate it with the corresponding AxesGrid axes + for i, field in enumerate(fields_to_plot): + plot = slice_plot.plots[field] + plot.figure = fig + plot.axes = grid[2 * i].axes + plot.cax = grid.cbar_axes[i] + + # Create a second slice plot for comparison + slice_plot_2 = yt.SlicePlot(dataset, current_axis, fields_to_plot) + slice_plot_2.set_log(("gamer", "Phase"), False) + + for field in fields_to_plot: + slice_plot_2.set_cmap(field, colormap) + + # Associate the second slice plot with the AxesGrid axes + for i, field in enumerate(fields_to_plot): + plot = slice_plot_2.plots[field] + plot.figure = fig + plot.axes = grid[2 * i + 1].axes + + # Redraw the plot on the AxesGrid axes + slice_plot._setup_plots() + slice_plot_2._setup_plots() + + # Get the DumpID from dataset parameters and save the plot + dump_id = dataset.parameters["DumpID"] + plt.savefig("Data_%06d_%s_axis.png" % (dump_id, current_axis)) + + # Close the current figure to release resources + plt.close() diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.high-res new file mode 100644 index 0000000000..1e38f0cd61 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.high-res @@ -0,0 +1,13 @@ +# Level Jeans_length/cell_size + 0 64.0 + 1 64.0 + 2 64.0 + 3 64.0 + 4 64.0 + 5 64.0 + 6 64.0 + 7 64.0 + 8 64.0 + 9 64.0 + 10 64.0 + 11 64.0 diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Jeans b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.low-res similarity index 100% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Jeans rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Jeans.low-res diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.high-res new file mode 100644 index 0000000000..705a5d3102 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.high-res @@ -0,0 +1,13 @@ +# Level Total_particle_mass_per_cell + 0 1.0035496e-3 + 1 1.0035496e-3 + 2 1.0035496e-3 + 3 1.0035496e-3 + 4 1.0035496e-3 + 5 1.0035496e-3 + 6 1.0035496e-3 + 7 1.0035496e-3 + 8 1.0035496e-3 + 9 1.0035496e-3 + 10 1.0035496e-3 + 11 1.0035496e-3 diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_ParMassCell b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.low-res similarity index 100% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_ParMassCell rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_ParMassCell.low-res diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.high-res new file mode 100644 index 0000000000..2e89dbee6c --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.high-res @@ -0,0 +1,12 @@ +# Level Density + 0 3.125751391053200e-10 + 1 2.500601112842560e-09 + 2 2.000480890274048e-08 + 3 1.600384712219238e-07 + 4 1.280307769775391e-06 + 5 1.024246215820313e-05 + 6 8.193969726562500e-05 + 7 6.555175781250000e-04 + 8 5.244140625000000e-03 + 9 4.195312500000000e-02 + 10 3.356250000000000e-01 diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Rho b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.low-res similarity index 100% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Flag_Rho rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Flag_Rho.low-res diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.high-res b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.high-res new file mode 100644 index 0000000000..40ea1be1a9 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.high-res @@ -0,0 +1,263 @@ + + +# ================================================================================================================= +# NOTE: +# 1. Comment symbol: # +# 2. [*]: defaults +# 3. Parameters set to "auto" (usually by setting to a negative value) do not have deterministic default values +# and will be set according to the adopted compilation options and/or other runtime parameters +# 4. To add new parameters, please edit "Init/Init_Load_Parameter.cpp" +# 5. All dimensional variables should be set consistently with the code units (set by UNIT_L/M/T/V/D) +# 6. For boolean options: 0/1 -> off/on +# ================================================================================================================= + + +# simulation scale +BOX_SIZE 1.31072e3 # box size along the longest side (in Mpc/h if COMOVING is adopted) +NX0_TOT_X 128 # number of base-level cells along x +NX0_TOT_Y 128 # number of base-level cells along y +NX0_TOT_Z 128 # number of base-level cells along z +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## +END_T -1.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] +END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] + + +# test problems +TESTPROB_ID 5 # test problem ID [0] + # 0: none + # 1: HYDRO blast wave + # 2: HYDRO acoustic wave + # 3: HYDRO Bondi accretion (+GRAVITY) + # 4: HYDRO cluster merger vs. Flash (+GRAVITY) + # 5: HYDRO AGORA isolated galaxy (+GRAVITY) + # 1000: ELBDM external potential (+GRAVITY) + + +# code units (in cgs) +OPT__UNIT 1 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## +UNIT_L 3.08567758149e21 # length unit (<=0 -> set to UNIT_V*UNIT_T or (UNIT_M/UNIT_D)^(1/3)) [-1.0] +UNIT_M 1.9885e42 # mass unit (<=0 -> set to UNIT_D*UNIT_L^3) [-1.0] +UNIT_T 3.15569252e13 # time unit (<=0 -> set to UNIT_L/UNIT_V) [-1.0] +UNIT_V -1.0 # velocity unit (<=0 -> set to UNIT_L/UNIT_T) [-1.0] +UNIT_D -1.0 # mass density unit (<=0 -> set to UNIT_M/UNIT_L^3) [-1.0] + + +# boundary conditions +OPT__BC_FLU_XM 2 # fluid boundary condition at the -x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_XP 2 # fluid boundary condition at the +x face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_YM 2 # fluid boundary condition at the -y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_YP 2 # fluid boundary condition at the +y face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_ZM 2 # fluid boundary condition at the -z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_FLU_ZP 2 # fluid boundary condition at the +z face: (1=periodic, 2=outflow, 3=reflecting, 4=user, 5=diode) +OPT__BC_POT 2 # gravity boundary condition: (1=periodic, 2=isolated) + + +# particle (PARTICLE only) +PAR_NPAR 21250000 # total number of particles (must be set for PAR_INIT == 1/3) +PAR_INIT 1 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") +PAR_INTERP 2 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] +PAR_INTEG 2 # particle integration scheme: (1=Euler, 2=KDK) [2] +PAR_IMPROVE_ACC 1 # improve force accuracy at patch boundaries [1] ##STORE_POT_GHOST and PAR_INTERP=2/3 ONLY## +PAR_PREDICT_POS 1 # predict particle position during mass assignment [1] +PAR_REMOVE_CELL -1.0 # remove particles X-root-cells from the boundaries (non-periodic BC only; <0=auto) [-1.0] + + +# time-step +DT__FLUID 0.5 # dt criterion: fluid solver CFL factor (<0=auto) [-1.0] +DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first step (<0=auto) [-1.0] +DT__GRAVITY 0.35355 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] +DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] +DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] +DT__PARACC 0.0 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## +DT__SYNC_PARENT_LV 0.05 # dt criterion: allow dt to adjust by (1.0+DT__SYNC_PARENT) in order to synchronize + # with the parent level (for OPT__DT_LEVEL==3 only) [0.1] +DT__SYNC_CHILDREN_LV 0.1 # dt criterion: allow dt to adjust by (1.0-DT__SYNC_CHILDREN) in order to synchronize + # with the children level (for OPT__DT_LEVEL==3 only; 0=off) [0.1] +OPT__DT_USER 0 # dt criterion: user-defined -> edit "Mis_GetTimeStep_UserCriteria.cpp" [0] +OPT__DT_LEVEL 3 # dt at different AMR levels (1=shared, 2=differ by two, 3=flexible) [3] +OPT__RECORD_DT 1 # record info of the dt determination [1] +AUTO_REDUCE_DT 1 # reduce dt automatically when the program fails (for OPT__DT_LEVEL==3 only) [1] +AUTO_REDUCE_DT_FACTOR 1.0 # reduce dt by a factor of AUTO_REDUCE_DT_FACTOR when the program fails [1.0] +AUTO_REDUCE_DT_FACTOR_MIN 0.1 # minimum allowed AUTO_REDUCE_DT_FACTOR after consecutive failures [0.1] +AUTO_REDUCE_MINMOD_FACTOR 0.8 # reduce MINMOD_COEFF by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] ##HYDRO ONLY## +AUTO_REDUCE_MINMOD_MIN 1.0e-2 # minimum allowed MINMOD_COEFF after consecutive failures [1.0e-2] ##HYDRO ONLY## +AUTO_REDUCE_INT_MONO_FACTOR 0.8 # reduce INT_MONO_COEFF(_B) by this factor together with AUTO_REDUCE_DT (1.0=off) [0.8] +AUTO_REDUCE_INT_MONO_MIN 1.0e-2 # minimum allowed INT_MONO_COEFF(_B) after consecutive failures [1.0e-2] + + +# grid refinement (examples of Input__Flag_XXX tables are put at "example/input/") +REGRID_COUNT 4 # refine every REGRID_COUNT sub-step [4] +FLAG_BUFFER_SIZE -1 # number of buffer cells for the flag operation (0~PATCH_SIZE; <0=auto -> PATCH_SIZE) [-1] +FLAG_BUFFER_SIZE_MAXM1_LV 2 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-1 (<0=auto -> REGRID_COUNT) [-1] +FLAG_BUFFER_SIZE_MAXM2_LV -1 # FLAG_BUFFER_SIZE at the level MAX_LEVEL-2 (<0=auto) [-1] +MAX_LEVEL 9 # maximum refinement level (0~NLEVEL-1) [NLEVEL-1] +OPT__FLAG_RHO 1 # flag: density (Input__Flag_Rho) [0] +OPT__FLAG_RHO_GRADIENT 0 # flag: density gradient (Input__Flag_RhoGradient) [0] +OPT__FLAG_PRES_GRADIENT 0 # flag: pressure gradient (Input__Flag_PresGradient) [0] ##HYDRO ONLY## +OPT__FLAG_VORTICITY 0 # flag: vorticity (Input__Flag_Vorticity) [0] ##HYDRO ONLY## +OPT__FLAG_JEANS 1 # flag: Jeans length (Input__Flag_Jeans) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## +OPT__FLAG_LOHNER_ENGY 0 # flag: Lohner for energy density (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_PRES 0 # flag: Lohner for pressure (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_TEMP 0 # flag: Lohner for temperature (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_ENTR 0 # flag: Lohner for entropy (Input__Flag_Lohner) [0] ##HYDRO ONLY## +OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH-2, 3=form-invariant-1, 4=form-invariant-2) [2] +OPT__FLAG_USER 1 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] +OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] +OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] +OPT__FLAG_PAR_MASS_CELL 1 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] +OPT__NO_FLAG_NEAR_BOUNDARY 0 # flag: disallow refinement near the boundaries [0] +OPT__PATCH_COUNT 1 # record the # of patches at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__PARTICLE_COUNT 1 # record the # of particles at each level: (0=off, 1=every step, 2=every sub-step) [1] +OPT__REUSE_MEMORY 2 # reuse patch memory to reduce memory fragmentation: (0=off, 1=on, 2=aggressive) [2] +OPT__MEMORY_POOL 0 # preallocate patches for OPT__REUSE_MEMORY=1/2 (Input__MemoryPool) [0] + + +# load balance (LOAD_BALANCE only) +LB_INPUT__WLI_MAX 0.1 # weighted-load-imbalance (WLI) threshold for redistributing all patches [0.1] +LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one particle over one cell [0.0] +OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] +OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] + # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) + + +# Grackle library for chemistry and radiative cooling (SUPPORT_GRACKLE only) +GRACKLE_ACTIVATE 1 # enable Grackle [1] +GRACKLE_VERBOSE 1 # map to "grackle_verbose" [1] +GRACKLE_COOLING 1 # ... "with_radiative_cooling" [1] +GRACKLE_PRIMORDIAL 0 # ... "primordial_chemistry" (0=Cloudy, 1/2/3=6-/9-/12-species) [0] +GRACKLE_METAL 1 # ... "metal_cooling" (must increase NCOMP_PASSIVE_USER by 1) [0] +GRACKLE_UV 1 # ... "UVbackground" [0] +GRACKLE_CMB_FLOOR 1 # ... "cmb_temperature_floor" [1] +GRACKLE_PE_HEATING 1 # ... "photoelectric_heating" [0] +GRACKLE_PE_HEATING_RATE 8.5e-26 # ... "photoelectric_heating_rate (in erg/cm^3/s)" [8.5e-26] +GRACKLE_CLOUDY_TABLE CloudyData_UVB=HM2012.h5 # "grackle_data_file" +CHE_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU Grackle solver (<=0=auto) [-1] + + +# star formation (STAR_FORMATION only) +SF_CREATE_STAR_SCHEME 1 # star formation schemes (0=off, 1=AGORA) [0] +SF_CREATE_STAR_RSEED 123 # random seed [123] +SF_CREATE_STAR_DET_RANDOM -1 # make random numbers deterministic (i.e., independent of OpenMP and MPI, <0=auto) [-1] +SF_CREATE_STAR_MIN_LEVEL -1 # minimum AMR level allowed to form stars (<0=auto -> MAX_LEVEL) [0] +SF_CREATE_STAR_MIN_GAS_DENS 2.0e1 # minimum gas density allowed to form stars (in HI count/cm^3) [1.0e1] +SF_CREATE_STAR_MASS_EFF 1.0e-2 # Gas-to-star mass conversion efficiency [1.0e-2] +SF_CREATE_STAR_MIN_STAR_MASS 2.0e3 # minimum star particle mass for the stochastical star formation (in Msun) [0.0] +SF_CREATE_STAR_MAX_STAR_MFRAC 0.5 # maximum gas mass fraction allowed to convert to stars per substep [0.5] + + +# fluid solver in HYDRO (MODEL==HYDRO only) +GAMMA 1.666667 # ratio of specific heats (i.e., adiabatic index) [5.0/3.0] +MOLECULAR_WEIGHT 0.6 # mean molecular weight -> currently only for post-processing [0.6] +MINMOD_COEFF 1.0 # coefficient of the generalized MinMod limiter (1.0~2.0) [1.5] +MINMOD_MAX_ITER 0 # maximum number of iterations to reduce MINMOD_COEFF when data reconstruction fails (0=off) [0] +OPT__LR_LIMITER -1 # slope limiter of data reconstruction in the MHM/MHM_RP/CTU schemes: + # (-1=auto, 0=none, 1=vanLeer, 2=generalized MinMod, 3=vanAlbada, 4=vanLeer+generalized MinMod, 6=central, 7=Athena) [-1] +OPT__1ST_FLUX_CORR -1 # correct unphysical results (defined by MIN_DENS/PRES) by the 1st-order fluxes: + # (<0=auto, 0=off, 1=3D, 2=3D+1D) [-1] ##MHM/MHM_RP/CTU ONLY## +OPT__1ST_FLUX_CORR_SCHEME -1 # Riemann solver for OPT__1ST_FLUX_CORR (<0=auto, 0=none, 1=Roe, 2=HLLC, 3=HLLE, 4=HLLD) [-1] +DUAL_ENERGY_SWITCH 2.0e-1 # apply dual-energy if E_int/E_kin < DUAL_ENERGY_SWITCH [2.0e-2] ##DUAL_ENERGY ONLY## + + +# fluid solvers in all models +FLU_GPU_NPGROUP -1 # number of patch groups sent into the GPU fluid solver (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## +OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] +OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): + # (-1=auto, 0=off, 1=every step, 2=before dump) [-1] +OPT__NORMALIZE_PASSIVE 0 # ensure "sum(passive_scalar_density) == gas_density" [1] +MIN_DENS 0.0 # minimum mass density (must >= 0.0) [0.0] ##HYDRO, MHD, and ELBDM ONLY## +MIN_PRES 1.0e-15 # minimum pressure (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_EINT 1.0e-15 # minimum internal energy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +MIN_ENTR 0.0 # minimum entropy (must >= 0.0) [0.0] ##HYDRO and MHD ONLY## +JEANS_MIN_PRES 1 # minimum pressure estimated from the Jeans length [0] ##HYDRO/MHD and GRAVITY ONLY## +JEANS_MIN_PRES_LEVEL -1 # for JEANS_MIN_PRES; ensure Jeans length is resolved by JEANS_MIN_PRES_NCELL*dh[JEANS_MIN_PRES_LEVEL] + # (<0=auto -> MAX_LEVEL) [-1] +JEANS_MIN_PRES_NCELL 4 # for JEANS_MIN_PRES; see JEANS_MIN_PRES_LEVEL [4] + + +# gravity solvers in all models +NEWTON_G 1.0 # gravitational constant (will be overwritten if OPT__UNIT or COMOVING is on) +SOR_OMEGA -1.0 # over-relaxation parameter in SOR: (<0=auto) [-1.0] +SOR_MAX_ITER -1 # maximum number of iterations in SOR: (<0=auto) [-1] +SOR_MIN_ITER -1 # minimum number of iterations in SOR: (<0=auto) [-1] +POT_GPU_NPGROUP -1 # number of patch groups sent into the GPU Poisson solver (<=0=auto) [-1] +OPT__GRA_P5_GRADIENT 0 # 5-points gradient in the Gravity solver (must have GRA/USG_GHOST_SIZE_G>=2) [0] +OPT__SELF_GRAVITY 1 # add self-gravity [1] +OPT__EXT_ACC 0 # add external acceleration (0=off, 1=function, 2=table) [0] ##HYDRO ONLY## +OPT__EXT_POT 0 # add external potential (0=off, 1=function, 2=table) [0] + + +# initialization +OPT__INIT 1 # initialization option: (1=FUNCTION, 2=RESTART, 3=FILE->"UM_IC") +RESTART_LOAD_NRANK 256 # number of parallel I/O (i.e., number of MPI ranks) for restart [1] +OPT__INIT_RESTRICT 1 # restrict all data during the initialization [1] +OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2=CUDA, -1=MPI rank, >=0=input) [-1] +INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] + + +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar) +OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] +OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] +OPT__POT_INT_SCHEME 4 # ghost-zone potential for the Poisson solver (only supports 4 & 5) [4] +OPT__RHO_INT_SCHEME 4 # ghost-zone mass density for the Poisson solver [4] +OPT__GRA_INT_SCHEME 4 # ghost-zone potential for the gravity solver (for UNSPLIT_GRAVITY as well) [4] +OPT__REF_POT_INT_SCHEME 4 # newly allocated potential during grid refinement [4] +INT_MONO_COEFF 2.0 # coefficient for ensuring the interpolation monotonicity (1.0~4.0) [2.0] +MONO_MAX_ITER 10 # maximum number of iterations to reduce INT_MONO_COEFF when interpolation fails (0=off) [10] + + +# data dump +OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] +OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PAR_DENS 1 # output the particle or total mass density on grids: + # (0=off, 1=particle mass density, 2=total mass density) [1] ##OPT__OUTPUT_TOTAL ONLY## +OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## +OPT__OUTPUT_TEMP 0 # output gas temperature [0] ##HYDRO ONLY## +OPT__OUTPUT_ENTR 0 # output gas entropy [0] ##HYDRO ONLY## +OPT__OUTPUT_CS 0 # output sound speed [0] ##HYDRO ONLY## +OPT__OUTPUT_DIVVEL 0 # output divergence(velocity) [0] ##HYDRO ONLY## +OPT__OUTPUT_MACH 0 # output mach number [0] ##HYDRO ONLY## +OPT__OUTPUT_DIVMAG 0 # output |divergence(B)*dh/|B|| [0] ##MHD ONLY## +OPT__OUTPUT_LORENTZ 0 # output Lorentz factor [0] ##SRHD ONLY## +OPT__OUTPUT_3VELOCITY 0 # output 3-velocities [0] ##SRHD ONLY## +OPT__OUTPUT_USER_FIELD 0 # output user-defined derived fields [0] -> edit "Flu_DerivedField_User.cpp" +OPT__OUTPUT_MODE 2 # (1=const step, 2=const dt, 3=dump table) -> edit "Input__DumpTable" for 3 +OUTPUT_STEP 5 # output data every OUTPUT_STEP step ##OPT__OUTPUT_MODE==1 ONLY## +OUTPUT_DT 1.0e1 # output data every OUTPUT_DT time interval ##OPT__OUTPUT_MODE==2 ONLY## +OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] +OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] +INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] + + +# miscellaneous +OPT__VERBOSE 0 # output the simulation progress in detail [0] +OPT__TIMING_BARRIER -1 # synchronize before timing -> more accurate, but may slow down the run (<0=auto) [-1] +OPT__TIMING_BALANCE 0 # record the max/min elapsed time in various code sections for checking load balance [0] +OPT__TIMING_MPI 0 # record the MPI bandwidth achieved in various code sections [0] ##LOAD_BALANCE ONLY## +OPT__RECORD_MEMORY 1 # record the memory consumption [1] +OPT__RECORD_PERFORMANCE 1 # record the code performance [1] +OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime + # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] +OPT__OPTIMIZE_AGGRESSIVE 1 # apply aggressive optimizations (experimental) [0] + + +# checks +OPT__CK_REFINE 0 # check the grid refinement [0] +OPT__CK_PROPER_NESTING 0 # check the proper-nesting condition [0] +OPT__CK_CONSERVATION 1 # check the conservation law [0] +OPT__CK_NORMALIZE_PASSIVE 0 # check the normalization of passive scalars [0] ##OPT__NORMALIZE_PASSIVE ONLY## +OPT__CK_RESTRICT 0 # check the data restriction [0] +OPT__CK_FINITE 0 # check if all variables are finite [0] +OPT__CK_PATCH_ALLOCATE 0 # check if all patches are properly allocated [0] +OPT__CK_FLUX_ALLOCATE 0 # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## [0] +OPT__CK_NEGATIVE 0 # check the negative values: (0=off, 1=density, 2=pressure and entropy, 3=both) [0] ##HYDRO ONLY## +OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, >0=threshold) [1.0] +OPT__CK_PARTICLE 0 # check the particle allocation [0] diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Parameter b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.low-res similarity index 99% rename from example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Parameter rename to example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.low-res index 6117695cb8..41980091c2 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__Parameter +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input_Options/Input__Parameter.low-res @@ -211,7 +211,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -234,6 +234,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__TestProb b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__TestProb index fb22d10fe9..29a280348f 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__TestProb +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/Input__TestProb @@ -15,7 +15,7 @@ AGORA_HaloGasTemp 1.0e6 # halo gas temperature [K] AGORA_UseMetal 1 # add and advect a metal density field # --> to enable this option, one must # (1) set AGORA_(Disk/Halo)MetalMassFrac properly - # (2) increase both NCOMP_PASSIVE_USER and PAR_NATT_USER by 1 in the Makefile + # (2) increase both NCOMP_PASSIVE_USER and PAR_NATT_FLT_USER by 1 in the Makefile # --> necessary if one wants to enable metal_cooling in Grackle AGORA_DiskMetalMassFrac 1.295e-2 # disk metal mass fraction (disk_metal_mass / disk_gas_mass) AGORA_HaloMetalMassFrac 1.295e-8 # halo metal mass fraction (halo_metal_mass / halo_gas_mass) diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README index f4064a1d18..99589750c1 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/README @@ -4,7 +4,7 @@ Enable : MODEL=HYDRO, PARTICLE, GRAVITY, DUAL_ENERGY Disable: COMOVING -Default setup: +Simulation setup: ======================================== 1. Units: (1) External (for Input__TestProb only): @@ -12,12 +12,19 @@ Default setup: (2) Internal (for all other input files and internal usage): [L] = kpc - [M] = 1.0e8 Msun + [M] = 1.0e9 Msun [T] = Myr -->[V] = [L]/[T] ~ 9.8e2 km/s -->[D] = [M]/[D]^3 ~ 6.8e-23 g/cm^3 -2. Default resolution ~ 80 pc (MAX_LEVEL = 7) +2. Low-resolution default setup + (1) Download the low-resolution initial conditions and Input_* by executing "sh download_ic_low_res.sh" + (2) Default resolution ~ 80 pc (root grid 128^3; MAX_LEVEL = 7) + +3. High-resolution setup + (1) Download the high-resolution initial conditions and Input_* by executing "sh download_ic_high_res.sh" + (2) Highest resolution ~ 20 pc (root grid 128^3; MAX_LEVEL = 9) + (3) This setup reproduces the AGORA high-resolution run presented in the GAMER-2 paper (Schive et al. 2018) Note: @@ -27,10 +34,16 @@ Note: Ji-hoon Kim, et al., 2016, ApJ, 833, 202 (arXiv: 1610.03066) 2. Other references: AGORA website : https://sites.google.com/site/santacruzcomparisonproject/ - AGORA initial condition : http://goo.gl/8JzbIJ + AGORA initial conditions: https://goo.gl/8JzbIJ Enzo setup : https://bitbucket.org/enzo/enzo-dev/src/19f4a44e06f1c386573dc77b3608ba66b64d93bc/run/Hydro/Hydro-3D/AgoraGalaxy/?at=week-of-code Goldbaum et al. 2016 : https://arxiv.org/abs/1605.00646 yt hub : https://girder.hub.yt/#collection/5736481ddd9119000164acf1 -3. Run the script "download_ic.sh" to download the low-resolution initial condition files for this test - --> It's the same script used in the "AgoraGalaxy" test problem of Enzo + CloudyData_UVB table : https://github.com/grackle-project/grackle_data_files/tree/main/input +3. The low-resolution initial condition files from "sh download_ic_low_res.sh" are the same initial conditions used + in the "AgoraGalaxy" test problem of Enzo 4. Some handy yt analysis scripts are put at "yt_script" + + +First-time GRACKLE installation guide (on NTU clusters as an example): +======================================== +Please refer to the README file at "./example/grackle/" diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh index 6a330bb25b..c4592d22ca 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic.sh deleted file mode 100644 index a2bc16e972..0000000000 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic.sh +++ /dev/null @@ -1,6 +0,0 @@ -wget --no-check-certificate -O ./LOW.tar.gz https://www.dropbox.com/sh/1xzt1rysy9v3a9l/AAAMlJBQG1OQFW4cjhp11Ex6a/LOW.tar.gz?dl=1 -wget https://bitbucket.org/grackle/grackle/raw/default/input/CloudyData_UVB=HM2012.h5 -tar xzvf LOW.tar.gz -mv LOW/*.dat ./ -rmdir LOW -rm LOW.tar.gz diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_high_res.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_high_res.sh new file mode 100644 index 0000000000..ef34aa20d1 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_high_res.sh @@ -0,0 +1,28 @@ +#!/bin/bash +LOCAL_FILENAME1="HI" +LOCAL_FILENAME2="CloudyData_UVB=HM2012.h5" +FILE_ID1="677e4757999605c485c8de92" +FILE_ID2="677ca211999605c485c8de6c" +FILE_SHA256_1="8ab54870656585b280b3085c6aa8d9e62f6969ba05123fc25c9a7549bcdd32a2" +FILE_SHA256_2="8715f1b39e90a7296ec2adcd442fa13a3d45d2ad021c6fa2fae9e4ab7a4700b2" + + +# file download +curl https://hub.yt/api/v1/item/${FILE_ID1}/download -o "${LOCAL_FILENAME1}.tar.gz" +curl https://hub.yt/api/v1/item/${FILE_ID2}/download -o "${LOCAL_FILENAME2}" + +# compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME1}.tar.gz | awk '{print $1}'` = "${FILE_SHA256_1}" ] && echo "File broken: ${LOCAL_FILENAME1}.tar.gz" +! [ `sha256sum ${LOCAL_FILENAME2} | awk '{print $1}'` = "${FILE_SHA256_2}" ] && echo "File broken: ${LOCAL_FILENAME2}" + +# file unzip +tar xzvf ${LOCAL_FILENAME1}.tar.gz +mv ${LOCAL_FILENAME1}/* ./ +rm -rf ${LOCAL_FILENAME1} +rm ${LOCAL_FILENAME1}.tar.gz + +# Input_* soft links +ln -fs ./Input_Options/Input__Flag_Jeans.high-res Input__Flag_Jeans +ln -fs ./Input_Options/Input__Flag_ParMassCell.high-res Input__Flag_ParMassCell +ln -fs ./Input_Options/Input__Flag_Rho.high-res Input__Flag_Rho +ln -fs ./Input_Options/Input__Parameter.high-res Input__Parameter diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_low_res.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_low_res.sh new file mode 100644 index 0000000000..44d3cc0bd7 --- /dev/null +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/download_ic_low_res.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +LOCAL_FILENAME1="LOW" +LOCAL_FILENAME2="CloudyData_UVB=HM2012.h5" +FILE_ID1="677ca225999605c485c8de6f" +FILE_ID2="677ca211999605c485c8de6c" +FILE_SHA256_1="8fd18d016f5af665d31d853a394c9089503df225f4c256eb1163c9a7b4e94644" +FILE_SHA256_2="8715f1b39e90a7296ec2adcd442fa13a3d45d2ad021c6fa2fae9e4ab7a4700b2" + +# file download +curl https://hub.yt/api/v1/item/${FILE_ID1}/download -o "${LOCAL_FILENAME1}.tar.gz" +curl https://hub.yt/api/v1/item/${FILE_ID2}/download -o "${LOCAL_FILENAME2}" + +# compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME1}.tar.gz | awk '{print $1}'` = "${FILE_SHA256_1}" ] && echo "File broken: ${LOCAL_FILENAME1}.tar.gz" +! [ `sha256sum ${LOCAL_FILENAME2} | awk '{print $1}'` = "${FILE_SHA256_2}" ] && echo "File broken: ${LOCAL_FILENAME2}" + +# file unzip +tar xzvf ${LOCAL_FILENAME1}.tar.gz +mv ${LOCAL_FILENAME1}/*.dat ./ +rmdir ${LOCAL_FILENAME1} +rm ${LOCAL_FILENAME1}.tar.gz + +# Input_* soft links +ln -fs ./Input_Options/Input__Flag_Jeans.low-res Input__Flag_Jeans +ln -fs ./Input_Options/Input__Flag_ParMassCell.low-res Input__Flag_ParMassCell +ln -fs ./Input_Options/Input__Flag_Rho.low-res Input__Flag_Rho +ln -fs ./Input_Options/Input__Parameter.low-res Input__Parameter diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh index 1effa99496..22c9e42bda 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --model=HYDRO --particle=true --gravity=true --flu_scheme=MHM --flux=HLLC \ - --passive=1 --par_attribute=1 --dual=DE_ENPY --star_formation=true --grackle=true +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --model=HYDRO \ + --particle=true --gravity=true --flu_scheme=MHM --flux=HLLC --passive=1 \ + --par_attribute_flt=1 --dual=DE_ENPY --star_formation=true --grackle=true "$@" diff --git a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/yt_script/plot_star_formation_rate.py b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/yt_script/plot_star_formation_rate.py index d99f60fc1f..e0a6282274 100644 --- a/example/test_problem/Hydro/AGORA_IsolatedGalaxy/yt_script/plot_star_formation_rate.py +++ b/example/test_problem/Hydro/AGORA_IsolatedGalaxy/yt_script/plot_star_formation_rate.py @@ -1,4 +1,4 @@ -# ref: http://yt-project.org/docs/dev/cookbook/calculating_information.html#using-particle-filters-to-calculate-star-formation-rates +# ref: https://yt-project.org/docs/dev/cookbook/calculating_information.html#using-particle-filters-to-calculate-star-formation-rates import yt import numpy as np diff --git a/example/test_problem/Hydro/AcousticWave/Input__Parameter b/example/test_problem/Hydro/AcousticWave/Input__Parameter index 29ad3cff03..505e7f5bcd 100644 --- a/example/test_problem/Hydro/AcousticWave/Input__Parameter +++ b/example/test_problem/Hydro/AcousticWave/Input__Parameter @@ -118,7 +118,7 @@ INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initiali # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## OPT__OUTPUT_TEMP 0 # output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## @@ -138,6 +138,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/AcousticWave/clean.sh b/example/test_problem/Hydro/AcousticWave/clean.sh index 58fa7c7783..3db7e429e0 100644 --- a/example/test_problem/Hydro/AcousticWave/clean.sh +++ b/example/test_problem/Hydro/AcousticWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/AcousticWave/generate_make.sh b/example/test_problem/Hydro/AcousticWave/generate_make.sh index c263f15fc3..b8fa682b4c 100644 --- a/example/test_problem/Hydro/AcousticWave/generate_make.sh +++ b/example/test_problem/Hydro/AcousticWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --double=True +${PYTHON} configure.py --model=HYDRO --double=True "$@" diff --git a/example/test_problem/Hydro/BlastWave/Input__Parameter b/example/test_problem/Hydro/BlastWave/Input__Parameter index 2e1d2daca9..e134a1e669 100644 --- a/example/test_problem/Hydro/BlastWave/Input__Parameter +++ b/example/test_problem/Hydro/BlastWave/Input__Parameter @@ -149,7 +149,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -172,6 +172,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/BlastWave/clean.sh b/example/test_problem/Hydro/BlastWave/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/BlastWave/clean.sh +++ b/example/test_problem/Hydro/BlastWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/BlastWave/generate_make.sh b/example/test_problem/Hydro/BlastWave/generate_make.sh index 0c8b8b746a..e6bab92044 100644 --- a/example/test_problem/Hydro/BlastWave/generate_make.sh +++ b/example/test_problem/Hydro/BlastWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --hdf5=true +${PYTHON} configure.py --model=HYDRO --hdf5=true "$@" diff --git a/example/test_problem/Hydro/Bondi/Input__Parameter b/example/test_problem/Hydro/Bondi/Input__Parameter index 623e3cf690..eee8876f98 100644 --- a/example/test_problem/Hydro/Bondi/Input__Parameter +++ b/example/test_problem/Hydro/Bondi/Input__Parameter @@ -190,7 +190,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## @@ -211,12 +211,14 @@ OUTPUT_PART_X 3.75 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 3.75 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 3.75 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) YT_SCRIPT yt_inline # yt inline analysis script (do not include the ".py" file extension) -YT_VERBOSE 1 # verbose level of yt: (0=off, 1=info, 2=warning, 3=debug) [1] -YT_FIG_BASENAME Fig # figure basename, use libyt default if not set: (default=Fig%9d) +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] # miscellaneous diff --git a/example/test_problem/Hydro/Bondi/Input__TestProb b/example/test_problem/Hydro/Bondi/Input__TestProb index 60fce18c23..df4e5c2059 100644 --- a/example/test_problem/Hydro/Bondi/Input__TestProb +++ b/example/test_problem/Hydro/Bondi/Input__TestProb @@ -8,6 +8,8 @@ Bondi_InBC_Rho 1.0e-32 # density inside the void region (in Bondi_InBC_T 1.0e-7 # temperature inside the void region (in keV) Bondi_InBC_NCell 2.0 # number of finest cells (can be a fractional number) for the inner BC Bondi_Soften_NCell 0.0 # number of finest cells (can be a fractional number) for the soften length (<=0.0 -> disable) +Bondi_void 1 # enable the void region [1] +Bondi_dynBH 0 # dynamically increase BH mass [0] Bondi_HSE 0 # enable HSE [0] Bondi_HSE_Mode 1 # initial configuration (1:T=Bondi_T0, 2:rho~1/r, 3:beta model) [1] @@ -22,3 +24,13 @@ Bondi_HSE_TrunD 1.6735328e-24 # see Bondi_HSE_Truncate (in g/cm^3) Bondi_HSE_TrunSmoothR 5.0e-2 # smooth out density within TrunR-SmoothRoff) [-1.0] Bondi_HSE_Pres_NormT 0 # normalize pressure profile such that T(r=Dens_NormR)=Bondi_T0 [0] Bondi_HSE_Beta_Rcore 1.0e-1 # core radius in the beta model (in kpc) + +Bondi_Soliton 0 # add soliton external potential [0] +Bondi_Soliton_m22 1.0 # FDM particle mass in 1e-22 eV/c^2 for Bondi_Soliton [-1.0] +Bondi_Soliton_type 5 # functional form for gradually introducing the soliton potential + # (0:unity, 1:arctan, 2:linear, 3:smooth step function, 4:sigmoid, 5:tanh) [5] +Bondi_Soliton_t 4.0e3 # characteristic time normalized to Bondi_TimeB for adding the soliton potential [-1.0] +Bondi_Soliton_rc -1.0 # soliton radius for Bondi_Soliton (in kpc) + # (<0.0 --> compute from Bondi_Soliton_MassHalo/Redshift using the core-halo relation) [-1.0] +Bondi_Soliton_MassHalo 1.0e11 # halo mass for determining Bondi_Soliton_rc (in Msun) [-1.0] +Bondi_Soliton_Redshift 7.0 # redshift for determining Bondi_Soliton_rc [-1.0] diff --git a/example/test_problem/Hydro/Bondi/clean.sh b/example/test_problem/Hydro/Bondi/clean.sh index 61ec00938b..fc6199b090 100644 --- a/example/test_problem/Hydro/Bondi/clean.sh +++ b/example/test_problem/Hydro/Bondi/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/Bondi/generate_make.sh b/example/test_problem/Hydro/Bondi/generate_make.sh index 4e67c44299..70de7de3a3 100644 --- a/example/test_problem/Hydro/Bondi/generate_make.sh +++ b/example/test_problem/Hydro/Bondi/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --fftw=FFTW3 \ - --model=HYDRO --gravity=true --dual=DE_ENPY +${PYTHON} configure.py --hdf5=true --gpu=true --fftw=FFTW3 \ + --model=HYDRO --gravity=true --dual=DE_ENPY "$@" diff --git a/example/test_problem/Hydro/Bondi/plot_diagonal.gpt b/example/test_problem/Hydro/Bondi/plot_diagonal.gpt index 54e94c8526..a4872a825f 100644 --- a/example/test_problem/Hydro/Bondi/plot_diagonal.gpt +++ b/example/test_problem/Hydro/Bondi/plot_diagonal.gpt @@ -69,7 +69,7 @@ do for [ID=ID_START:ID_END:ID_DELTA] { set yrange [1.0e-3:2.0e1] plot sprintf( '%s/Diag_%06d', FILE_SIMU, ID ) \ - u (abs($4-CENTER)*3**0.5):16 w p pt 6 lc 6 tit 'Simulation' \ + u (abs($4-CENTER)*3**0.5):17 w p pt 6 lc 6 tit 'Simulation' \ ,FILE_BONDI u 2:7 w l lc -1 tit 'Analytical' @@ -79,7 +79,7 @@ do for [ID=ID_START:ID_END:ID_DELTA] { set yrange [1.0e-2:1.0e3] plot sprintf( '%s/Diag_%06d', FILE_SIMU, ID ) \ - u (abs($4-CENTER)*3**0.5):13 w p pt 6 lc 6 tit 'Simulation' \ + u (abs($4-CENTER)*3**0.5):14 w p pt 6 lc 6 tit 'Simulation' \ ,FILE_BONDI u 2:( ($6/$7)**2.0*$4/GAMMA ) w l lc -1 tit 'Analytical' diff --git a/example/test_problem/Hydro/CDM_LSS/Input__Parameter b/example/test_problem/Hydro/CDM_LSS/Input__Parameter index 6733ad0e7d..5b0398ee72 100644 --- a/example/test_problem/Hydro/CDM_LSS/Input__Parameter +++ b/example/test_problem/Hydro/CDM_LSS/Input__Parameter @@ -47,6 +47,7 @@ PAR_NPAR 2097152 # total number of particles (must be s PAR_INIT 3 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") PAR_IC_FORMAT 1 # data format of PAR_IC: (1=[attribute][id], 2=[id][attribute]; row-major) [1] PAR_IC_FLOAT8 -1 # floating-point precision for PAR_IC (<0: default, 0: single, 1: double) [default: same as FLOAT8_PAR] +PAR_IC_INT8 -1 # integer width for PAR_IC (<0: default, 0: 32-bit, 1: 64-bit) [default: same as INT8_PAR] PAR_IC_MASS -1.0 # mass of all particles for PAR_INIT==3 (<0=off) [-1.0] PAR_IC_TYPE -1 # type of all particles for PAR_INIT==3 (<0=off) [-1] PAR_INTERP 3 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] @@ -200,7 +201,7 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 1 # output the base-level power spectrum [0] @@ -215,6 +216,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/CDM_LSS/clean.sh b/example/test_problem/Hydro/CDM_LSS/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/CDM_LSS/clean.sh +++ b/example/test_problem/Hydro/CDM_LSS/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/CDM_LSS/download_ic.sh b/example/test_problem/Hydro/CDM_LSS/download_ic.sh index 0cb1f9344a..549b3eb456 100644 --- a/example/test_problem/Hydro/CDM_LSS/download_ic.sh +++ b/example/test_problem/Hydro/CDM_LSS/download_ic.sh @@ -1 +1,11 @@ -curl -LJO https://use.yt/upload/c2b0f76b +#!/bin/bash + +LOCAL_FILENAME="PAR_IC" +FILE_ID="677c92db999605c485c8de69" +FILE_SHA256="46e27324953bcd7b4eecaecd395b6cf6ccbf662e65a12c935b3823abd8119be3" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o ${LOCAL_FILENAME} + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" diff --git a/example/test_problem/Hydro/CDM_LSS/generate_make.sh b/example/test_problem/Hydro/CDM_LSS/generate_make.sh index dae12c0db8..3625c38069 100644 --- a/example/test_problem/Hydro/CDM_LSS/generate_make.sh +++ b/example/test_problem/Hydro/CDM_LSS/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --model=HYDRO --particle=true --gravity=true --comoving=true +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=HYDRO --particle=true --gravity=true --comoving=true "$@" diff --git a/example/test_problem/Hydro/CMZ/Input__Parameter b/example/test_problem/Hydro/CMZ/Input__Parameter index e6f554f78e..d6ff47aa8e 100644 --- a/example/test_problem/Hydro/CMZ/Input__Parameter +++ b/example/test_problem/Hydro/CMZ/Input__Parameter @@ -244,7 +244,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -268,6 +268,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/CMZ/clean.sh b/example/test_problem/Hydro/CMZ/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/CMZ/clean.sh +++ b/example/test_problem/Hydro/CMZ/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/CMZ/generate_make.sh b/example/test_problem/Hydro/CMZ/generate_make.sh index f18f6b9525..3da93a0a6b 100644 --- a/example/test_problem/Hydro/CMZ/generate_make.sh +++ b/example/test_problem/Hydro/CMZ/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --fftw=FFTW3 \ +${PYTHON} configure.py --hdf5=true --gpu=true --fftw=FFTW3 \ --model=HYDRO --gravity=true --eos=ISOTHERMAL --barotropic=true \ - --flu_scheme=MHM --flux=HLLC --passive=1 --par_attribute=1 + --flu_scheme=MHM --flux=HLLC --passive=1 --par_attribute_flt=1 "$@" diff --git a/example/test_problem/Hydro/CR_Diffusion/Input__Parameter b/example/test_problem/Hydro/CR_Diffusion/Input__Parameter index 30382f50ab..1d4e672346 100644 --- a/example/test_problem/Hydro/CR_Diffusion/Input__Parameter +++ b/example/test_problem/Hydro/CR_Diffusion/Input__Parameter @@ -209,7 +209,7 @@ ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automat # fluid solvers in all models FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] -GPU_NSTREAM 4 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## OPT__FIXUP_ELECTRIC 1 # correct coarse grids by the fine-grid boundary electric field [1] ##MHD ONLY## OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] @@ -279,7 +279,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -295,11 +295,14 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) YT_SCRIPT yt_inline # yt inline analysis script (do not include the ".py" file extension) -YT_VERBOSE 1 # verbose level of yt: (0=off, 1=info, 2=warning, 3=debug) [1] +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] # miscellaneous diff --git a/example/test_problem/Hydro/CR_Diffusion/clean.sh b/example/test_problem/Hydro/CR_Diffusion/clean.sh index 2c2877c664..cc927c5846 100644 --- a/example/test_problem/Hydro/CR_Diffusion/clean.sh +++ b/example/test_problem/Hydro/CR_Diffusion/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB CR_Diffusion* diff --git a/example/test_problem/Hydro/CR_Diffusion/generate_make.sh b/example/test_problem/Hydro/CR_Diffusion/generate_make.sh index e2ed13860d..da6ed33ade 100644 --- a/example/test_problem/Hydro/CR_Diffusion/generate_make.sh +++ b/example/test_problem/Hydro/CR_Diffusion/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --flux=HLLD --mhd=true \ - --cosmic_ray=true --eos=COSMIC_RAY --cr_diffusion=true --hdf5=true +${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --flux=HLLD --mhd=true \ + --cosmic_ray=true --eos=COSMIC_RAY --cr_diffusion=true --hdf5=true "$@" diff --git a/example/test_problem/Hydro/CR_ShockTube/Input__Parameter b/example/test_problem/Hydro/CR_ShockTube/Input__Parameter index 75868e9934..0360331616 100644 --- a/example/test_problem/Hydro/CR_ShockTube/Input__Parameter +++ b/example/test_problem/Hydro/CR_ShockTube/Input__Parameter @@ -278,7 +278,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -294,11 +294,14 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) YT_SCRIPT yt_inline # yt inline analysis script (do not include the ".py" file extension) -YT_VERBOSE 1 # verbose level of yt: (0=off, 1=info, 2=warning, 3=debug) [1] +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] # miscellaneous diff --git a/example/test_problem/Hydro/CR_ShockTube/clean.sh b/example/test_problem/Hydro/CR_ShockTube/clean.sh index dcb84a1d4c..14a9350e26 100644 --- a/example/test_problem/Hydro/CR_ShockTube/clean.sh +++ b/example/test_problem/Hydro/CR_ShockTube/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/CR_ShockTube/generate_make.sh b/example/test_problem/Hydro/CR_ShockTube/generate_make.sh index a24388e4d5..487fba62d0 100644 --- a/example/test_problem/Hydro/CR_ShockTube/generate_make.sh +++ b/example/test_problem/Hydro/CR_ShockTube/generate_make.sh @@ -2,7 +2,7 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ - --cosmic_ray=true --eos=COSMIC_RAY -#${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ -# --cosmic_ray=true --eos=COSMIC_RAY +${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ + --cosmic_ray=true --eos=COSMIC_RAY "$@" +#${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ +# --cosmic_ray=true --eos=COSMIC_RAY "$@" diff --git a/example/test_problem/Hydro/CR_SoundWave/Input__Parameter b/example/test_problem/Hydro/CR_SoundWave/Input__Parameter index 4ab3f41ec4..acc884ac52 100644 --- a/example/test_problem/Hydro/CR_SoundWave/Input__Parameter +++ b/example/test_problem/Hydro/CR_SoundWave/Input__Parameter @@ -277,7 +277,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_TEXT 0 # output the particle text file [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -293,11 +293,14 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) YT_SCRIPT yt_inline # yt inline analysis script (do not include the ".py" file extension) -YT_VERBOSE 1 # verbose level of yt: (0=off, 1=info, 2=warning, 3=debug) [1] +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] # miscellaneous diff --git a/example/test_problem/Hydro/CR_SoundWave/clean.sh b/example/test_problem/Hydro/CR_SoundWave/clean.sh index 679e0a0fcb..8b9d2d3e39 100644 --- a/example/test_problem/Hydro/CR_SoundWave/clean.sh +++ b/example/test_problem/Hydro/CR_SoundWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB CR_SoundWave* diff --git a/example/test_problem/Hydro/CR_SoundWave/generate_make.sh b/example/test_problem/Hydro/CR_SoundWave/generate_make.sh index 627bea40ad..36a09353b4 100644 --- a/example/test_problem/Hydro/CR_SoundWave/generate_make.sh +++ b/example/test_problem/Hydro/CR_SoundWave/generate_make.sh @@ -2,7 +2,7 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ - --double=true --cosmic_ray=true --eos=COSMIC_RAY -#${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ -# --double=true --cosmic_ray=true --eos=COSMIC_RAY +${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=false --flux=HLLE \ + --double=true --cosmic_ray=true --eos=COSMIC_RAY "$@" +#${PYTHON} configure.py --model=HYDRO --flu_scheme=MHM_RP --mhd=true --flux=HLLD \ +# --double=true --cosmic_ray=true --eos=COSMIC_RAY "$@" diff --git a/example/test_problem/Hydro/Caustic/Input__Parameter b/example/test_problem/Hydro/Caustic/Input__Parameter index 02bf3b1d82..01b609f8b7 100644 --- a/example/test_problem/Hydro/Caustic/Input__Parameter +++ b/example/test_problem/Hydro/Caustic/Input__Parameter @@ -148,7 +148,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -169,6 +169,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Caustic/clean.sh b/example/test_problem/Hydro/Caustic/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/Caustic/clean.sh +++ b/example/test_problem/Hydro/Caustic/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/Caustic/generate_make.sh b/example/test_problem/Hydro/Caustic/generate_make.sh index c263f15fc3..b8fa682b4c 100644 --- a/example/test_problem/Hydro/Caustic/generate_make.sh +++ b/example/test_problem/Hydro/Caustic/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --double=True +${PYTHON} configure.py --model=HYDRO --double=True "$@" diff --git a/example/test_problem/Hydro/ClusterMerger/Input__Parameter b/example/test_problem/Hydro/ClusterMerger/Input__Parameter index 0b59e4cecc..b035e42052 100644 --- a/example/test_problem/Hydro/ClusterMerger/Input__Parameter +++ b/example/test_problem/Hydro/ClusterMerger/Input__Parameter @@ -191,7 +191,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -217,6 +217,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/ClusterMerger/clean.sh b/example/test_problem/Hydro/ClusterMerger/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/ClusterMerger/clean.sh +++ b/example/test_problem/Hydro/ClusterMerger/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/ClusterMerger/download_ic.sh b/example/test_problem/Hydro/ClusterMerger/download_ic.sh index a77f72155e..61bc0635d3 100644 --- a/example/test_problem/Hydro/ClusterMerger/download_ic.sh +++ b/example/test_problem/Hydro/ClusterMerger/download_ic.sh @@ -1,4 +1,15 @@ -filename=gamer_ic_merging_cluster.tgz -curl -L https://use.yt/upload/cceea6c4 -o $filename -tar -zxvf $filename -rm $filename +#!/bin/bash + +LOCAL_FILENAME="gamer_ic_merging_cluster.tgz" +FILE_ID="677caaec999605c485c8de74" +FILE_SHA256="a233a892818504cf15e188bca862e22250bb1f3e09155740e45d272e4ab5f1c1" + +# 1. download +curl https://hub.yt/api/v1/item/${FILE_ID}/download -o "${LOCAL_FILENAME}" + +# 2. compare sha256sum +! [ `sha256sum ${LOCAL_FILENAME} | awk '{print $1}'` = "${FILE_SHA256}" ] && echo "File broken: ${LOCAL_FILENAME}" + +# 3. unzip +tar -zxvf ${LOCAL_FILENAME} +rm ${LOCAL_FILENAME} diff --git a/example/test_problem/Hydro/ClusterMerger/generate_make.sh b/example/test_problem/Hydro/ClusterMerger/generate_make.sh index e6dab547bf..8b00177e62 100644 --- a/example/test_problem/Hydro/ClusterMerger/generate_make.sh +++ b/example/test_problem/Hydro/ClusterMerger/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --model=HYDRO --particle=true --gravity=true --passive=2 +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=HYDRO --particle=true --gravity=true --passive=2 --par_attribute_int=1 "$@" diff --git a/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter b/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter index 7668f00e2c..b305abf9e0 100644 --- a/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter +++ b/example/test_problem/Hydro/EnergyPowerSpectrum/Input__Parameter @@ -116,7 +116,7 @@ INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initiali # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## @@ -136,6 +136,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh b/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh index b1ebd6f160..8ef0285816 100644 --- a/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh +++ b/example/test_problem/Hydro/EnergyPowerSpectrum/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh b/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh index 4de48ba42c..395fef457a 100644 --- a/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh +++ b/example/test_problem/Hydro/EnergyPowerSpectrum/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --fftw=FFTW3 --model=HYDRO --eos=GAMMA --mpi=true +${PYTHON} configure.py --fftw=FFTW3 --model=HYDRO --eos=GAMMA --mpi=true "$@" diff --git a/example/test_problem/Hydro/Gravity/Input__Parameter b/example/test_problem/Hydro/Gravity/Input__Parameter index 964bb7f0a0..3dfedacb02 100644 --- a/example/test_problem/Hydro/Gravity/Input__Parameter +++ b/example/test_problem/Hydro/Gravity/Input__Parameter @@ -167,7 +167,7 @@ MONO_MAX_ITER 0 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -189,6 +189,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Gravity/clean.sh b/example/test_problem/Hydro/Gravity/clean.sh index 6fd80fa4d2..386037f7a8 100644 --- a/example/test_problem/Hydro/Gravity/clean.sh +++ b/example/test_problem/Hydro/Gravity/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/Gravity/generate_make.sh b/example/test_problem/Hydro/Gravity/generate_make.sh index 8c25d7280e..7d876d0706 100644 --- a/example/test_problem/Hydro/Gravity/generate_make.sh +++ b/example/test_problem/Hydro/Gravity/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --gpu=true --hdf5=true --fftw=FFTW3 --model=HYDRO --gravity=true +${PYTHON} configure.py --gpu=true --hdf5=true --fftw=FFTW3 --model=HYDRO --gravity=true "$@" diff --git a/example/test_problem/Hydro/JeansInstability/Input__Parameter b/example/test_problem/Hydro/JeansInstability/Input__Parameter index bfd7ae17b3..b370bc1fc7 100644 --- a/example/test_problem/Hydro/JeansInstability/Input__Parameter +++ b/example/test_problem/Hydro/JeansInstability/Input__Parameter @@ -168,7 +168,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -191,6 +191,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/JeansInstability/clean.sh b/example/test_problem/Hydro/JeansInstability/clean.sh index a05519f4a6..9053a4f127 100644 --- a/example/test_problem/Hydro/JeansInstability/clean.sh +++ b/example/test_problem/Hydro/JeansInstability/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/JeansInstability/generate_make.sh b/example/test_problem/Hydro/JeansInstability/generate_make.sh index 01ebd25715..fa4ab9ee94 100644 --- a/example/test_problem/Hydro/JeansInstability/generate_make.sh +++ b/example/test_problem/Hydro/JeansInstability/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --gpu=true --fftw=FFTW3 --double=true \ - --model=HYDRO --gravity=true --eos=GAMMA +${PYTHON} configure.py --gpu=true --fftw=FFTW3 --double=true \ + --model=HYDRO --gravity=true --eos=GAMMA "$@" diff --git a/example/test_problem/Hydro/Jet/Input__Parameter b/example/test_problem/Hydro/Jet/Input__Parameter index c2fdb33475..0069445cc1 100644 --- a/example/test_problem/Hydro/Jet/Input__Parameter +++ b/example/test_problem/Hydro/Jet/Input__Parameter @@ -171,7 +171,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -193,6 +193,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Jet/clean.sh b/example/test_problem/Hydro/Jet/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/Jet/clean.sh +++ b/example/test_problem/Hydro/Jet/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/Jet/generate_make.sh b/example/test_problem/Hydro/Jet/generate_make.sh index f31a9c6bf1..3052779d2a 100644 --- a/example/test_problem/Hydro/Jet/generate_make.sh +++ b/example/test_problem/Hydro/Jet/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 \ - --model=HYDRO --gravity=true +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 \ + --model=HYDRO --gravity=true "$@" diff --git a/example/test_problem/Hydro/JetICMWall/Input__Parameter b/example/test_problem/Hydro/JetICMWall/Input__Parameter index 6f9d0f3b32..edb95363ed 100644 --- a/example/test_problem/Hydro/JetICMWall/Input__Parameter +++ b/example/test_problem/Hydro/JetICMWall/Input__Parameter @@ -16,7 +16,7 @@ BOX_SIZE 4.0 # box size along the longest side NX0_TOT_X 64 # number of base-level cells along x NX0_TOT_Y 64 # number of base-level cells along y NX0_TOT_Z 64 # number of base-level cells along z -OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto -> omp_get_max_threads) [-1] ##OPENMP ONLY## +OMP_NTHREAD -1 # number of OpenMP threads (<=0=auto) [-1] ##OPENMP ONLY## END_T 40.0 # end physical time (<0=auto -> must be set by test problems or restart) [-1.0] END_STEP -1 # end step (<0=auto -> must be set by test problems or restart) [-1] @@ -135,7 +135,7 @@ MONO_MAX_ITER 4 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -157,6 +157,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous @@ -170,7 +171,7 @@ OPT__RECORD_MEMORY 1 # record the memory consumption [1] OPT__RECORD_PERFORMANCE 1 # record the code performance [1] OPT__MANUAL_CONTROL 1 # support manually dump data or stop run during the runtime # (by generating the file DUMP_GAMER_DUMP or STOP_GAMER_STOP) [1] -OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_RecordUser.cpp" [0] +OPT__RECORD_USER 0 # record the user-specified info -> edit "Aux_Record_User.cpp" [0] OPT__OPTIMIZE_AGGRESSIVE 0 # apply aggressive optimizations (experimental) [0] diff --git a/example/test_problem/Hydro/JetICMWall/clean.sh b/example/test_problem/Hydro/JetICMWall/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/JetICMWall/clean.sh +++ b/example/test_problem/Hydro/JetICMWall/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/JetICMWall/generate_make.sh b/example/test_problem/Hydro/JetICMWall/generate_make.sh index 26d0b778be..89094b3ed3 100644 --- a/example/test_problem/Hydro/JetICMWall/generate_make.sh +++ b/example/test_problem/Hydro/JetICMWall/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --gpu=true --model=HYDRO \ +${PYTHON} configure.py --mpi=true --hdf5=true --gpu=true --model=HYDRO \ --srhd=true --eos=TAUBMATHEWS --flux=HLLC --flu_scheme=MHM \ - --passive=4 + --passive=4 "$@" diff --git a/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter b/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter index c4e8df6f48..9f5981edd0 100644 --- a/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter +++ b/example/test_problem/Hydro/KelvinHelmholtzInstability/Input__Parameter @@ -144,7 +144,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -166,6 +166,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh b/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh +++ b/example/test_problem/Hydro/KelvinHelmholtzInstability/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh b/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh index 5078612f87..e4dc316bea 100644 --- a/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh +++ b/example/test_problem/Hydro/KelvinHelmholtzInstability/generate_make.sh @@ -2,5 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 \ - --model=HYDRO +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true --fftw=FFTW3 --model=HYDRO "$@" diff --git a/example/test_problem/Hydro/MHD_ABC/Input__Parameter b/example/test_problem/Hydro/MHD_ABC/Input__Parameter index 2ddb989967..170e6c72e3 100644 --- a/example/test_problem/Hydro/MHD_ABC/Input__Parameter +++ b/example/test_problem/Hydro/MHD_ABC/Input__Parameter @@ -150,7 +150,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## @@ -171,6 +171,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/MHD_ABC/clean.sh b/example/test_problem/Hydro/MHD_ABC/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/MHD_ABC/clean.sh +++ b/example/test_problem/Hydro/MHD_ABC/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/MHD_ABC/generate_make.sh b/example/test_problem/Hydro/MHD_ABC/generate_make.sh index ffbb224151..e6179f90c0 100644 --- a/example/test_problem/Hydro/MHD_ABC/generate_make.sh +++ b/example/test_problem/Hydro/MHD_ABC/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true \ - --model=HYDRO --mhd=true +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true \ + --model=HYDRO --mhd=true "$@" diff --git a/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter b/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter index ef9c31407b..23abdc7c7f 100644 --- a/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter +++ b/example/test_problem/Hydro/MHD_LinearWave/Input__Parameter @@ -146,7 +146,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## @@ -164,6 +164,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/MHD_LinearWave/clean.sh b/example/test_problem/Hydro/MHD_LinearWave/clean.sh index 2cfa93183c..f304eb25e0 100644 --- a/example/test_problem/Hydro/MHD_LinearWave/clean.sh +++ b/example/test_problem/Hydro/MHD_LinearWave/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh b/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh index b22c851748..751e715fdd 100644 --- a/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh +++ b/example/test_problem/Hydro/MHD_LinearWave/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --double=true --model=HYDRO --mhd=true --eos=GAMMA +${PYTHON} configure.py --double=true --model=HYDRO --mhd=true --eos=GAMMA "$@" diff --git a/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter b/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter index 004d6262b8..c524067066 100644 --- a/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter +++ b/example/test_problem/Hydro/MHD_OrszagTangVortex/Input__Parameter @@ -150,7 +150,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_CC_MAG 1 # output **cell-centered** magnetic field (necessary for yt analysis) [1] ##MHD ONLY## @@ -171,6 +171,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous @@ -204,6 +205,7 @@ OPT__CK_DIVERGENCE_B 1 # check the divergence-free constraint # YT inline analysis -YT_SCRIPT inline_script # inline python script name, exclude ".py" extension -YT_VERBOSE 1 # log level (0=off, 1=info, 2=warning, 3=debug) -YT_FIG_BASENAME Fig # figure basename, use libyt default if not set: (default=Fig%9d) +YT_SCRIPT inline_script # yt inline analysis script (do not include the ".py" file extension) +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] diff --git a/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh b/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh index 93cccb7e03..e171d74471 100644 --- a/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh +++ b/example/test_problem/Hydro/MHD_OrszagTangVortex/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh b/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh index ffbb224151..e6179f90c0 100644 --- a/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh +++ b/example/test_problem/Hydro/MHD_OrszagTangVortex/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --hdf5=true --gpu=true --mpi=true \ - --model=HYDRO --mhd=true +${PYTHON} configure.py --hdf5=true --gpu=true --mpi=true \ + --model=HYDRO --mhd=true "$@" diff --git a/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter b/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter index 896b05a15a..adf29812cf 100644 --- a/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter +++ b/example/test_problem/Hydro/ParticleEquilibriumIC/Input__Parameter @@ -209,7 +209,7 @@ INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 1 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -224,6 +224,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh b/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh +++ b/example/test_problem/Hydro/ParticleEquilibriumIC/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh b/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh index 5bd5109d60..f028629dfc 100644 --- a/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh +++ b/example/test_problem/Hydro/ParticleEquilibriumIC/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --gsl=true \ - --model=HYDRO --particle=true --gravity=true +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true --gsl=true \ + --model=HYDRO --particle=true --gravity=true "$@" diff --git a/example/test_problem/Hydro/ParticleTest/Input__Par_Mesh b/example/test_problem/Hydro/ParticleTest/Input__Par_Mesh new file mode 100644 index 0000000000..89f722f458 --- /dev/null +++ b/example/test_problem/Hydro/ParticleTest/Input__Par_Mesh @@ -0,0 +1,14 @@ +# List of supported labels in different models: +# HYDRO : Dens, MomX, MomY, MomZ, Engy, VelX, VelY, VelZ, Pres, Temp, Entr, Eint +# [, Pote] [, MagX, MagY, MagZ, MagE] +# ELBDM : Dens, Real, Imag [, Pote] +# +# Note: +# --> Built-in passive fields are supported as well +# (check Init_Field() in src/Init/Init_Field.cpp for the labels of passive fields) +# --> The input field label is case sensitive +# --> The output field label in the HDF5 snapshots is prefixed with "Mesh" +# +Dens +Pres +VelX diff --git a/example/test_problem/Hydro/ParticleTest/Input__Parameter b/example/test_problem/Hydro/ParticleTest/Input__Parameter index f899270052..321cce42de 100644 --- a/example/test_problem/Hydro/ParticleTest/Input__Parameter +++ b/example/test_problem/Hydro/ParticleTest/Input__Parameter @@ -185,9 +185,10 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_PAR_MESH 1 # output the attributes of tracer particles mapped from mesh quantities -> edit "Input__Par_Mesh" [1] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -207,6 +208,7 @@ OUTPUT_PART_X 0.5 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.5 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.5 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/ParticleTest/README b/example/test_problem/Hydro/ParticleTest/README index ecdbc75556..4341a03f78 100644 --- a/example/test_problem/Hydro/ParticleTest/README +++ b/example/test_problem/Hydro/ParticleTest/README @@ -26,3 +26,6 @@ Note: the gas. 6. Use python script "make_tracer_pngs.py" with yt to make PNG images, use bash script "make_tracer_movie.sh" to combine PNGs into movies with ffmpeg. +7. Set OPT__OUTPUT_PAR_MESH = 1 to output the mesh attributes, as listed in + Input__Par_Mesh, to tracer particles. Use the python script "check_mesh2tracer.py" + to verify the mesh attributes recorded in the HDF5 snapshots. diff --git a/example/test_problem/Hydro/ParticleTest/check_mesh2tracer.py b/example/test_problem/Hydro/ParticleTest/check_mesh2tracer.py new file mode 100644 index 0000000000..a9dfe4819c --- /dev/null +++ b/example/test_problem/Hydro/ParticleTest/check_mesh2tracer.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +# +# Check the mesh attributes stored in the HDF5 snapshots +# at the locations of the tracer particles +# + +import matplotlib +matplotlib.use("Agg") + + +import re +from glob import glob + +import h5py +import numpy as np +from matplotlib import pyplot as plt + +plt.rcParams["font.size"] = 16 + + +### helper function +def comp_dens(ParX, ParY, Center, Dens_Bg, BoxSize): + # use the formulae in SetGridIC() from the ParticleTest test problem + # to compute the density at these particles' locations + Radius = np.hypot(ParX - Center[0], ParY - Center[1]) + + return Dens_Bg * (1.0 + 5.0 * Radius / BoxSize) + + +def comp_pres(ParX, ParY, Center, Pres_Bg, BoxSize): + # use the formulae in SetGridIC() from the ParticleTest test problem + # to compute the pressure at these particles' locations + Radius = np.hypot(ParX - Center[0], ParY - Center[1]) + + return Pres_Bg * (1.0 + 5.0 * Radius / BoxSize) + + +def comp_velx(ParX, ParY, Center, Ang_Freq): + # use the formulae in SetGridIC() from the ParticleTest test problem + # to compute the velocity in the x direction at these particles' locations + Radius = np.hypot(ParX - Center[0], ParY - Center[1]) + Sin_Theta = (ParY - Center[1]) / Radius + Velocity = Ang_Freq * Radius + + return -1.0 * Velocity * Sin_Theta + + +### retrieve runtime parameters in Input__Parameter and Input__TestProb +regex_num = r"\s*([-+]?\d+\.?\d*[eE]?[-+]?\d*)" + +param = dict() + +# Input__Parameter +with open("Input__Parameter", "r") as f: + param_in = f.read() + + key_list = "BOX_SIZE", + for key in key_list: + value = re.findall(key + regex_num, param_in) + + # assume the value is a float + param[key] = float(value[0]) + +# Input__TestProb +with open("Input__TestProb", "r") as f: + param_in = f.read() + + key_list = "ParTest_Dens_Bg", "ParTest_Pres_Bg", "ParTest_Ang_Freq" + for key in key_list: + value = re.findall(key + regex_num, param_in) + + # assume the value is a float + param[key] = float(value[0]) + + +### load data +fn_list = glob("Data_" + "[0-9]" * 6) +fn_in = sorted(fn_list)[-1] # use the final snapshot +print("Loading data in {}".format(fn_in)) + +hdf_data = h5py.File(fn_in, "r") + +field_par = ["ParPosX", "ParPosY", "ParType"] +field_mesh = ["Mesh{}".format(label) + for label in np.genfromtxt("Input__Par_Mesh", dtype = "|U")] + +for key in field_par + field_mesh: + cmd = "{} = hdf_data['Particle']['{}'][:]".format(key, key) + exec(cmd) + +time_phys = hdf_data["Info"]["KeyInfo"]["Time"][0] + +hdf_data.close() + + +### post-process +cond_tracer = (ParType == 0) + +print("Number of tracer particles: {}/{}".format(cond_tracer.sum(), cond_tracer.size)) + +## check non-tracer particles +for field in field_mesh: + cmd = "set_nontracer = set({}[~cond_tracer])".format(field) + exec(cmd) + + if len(set_nontracer) > 1: + print("mesh quantities on non-tracer particles have more than one value: ", + " ".join(str(i) for i in set_nontracer)) + else: + # the value for non-tracer particles should be __FLT_MAX__ + print("{} on non-tracer particles: {}".format(field, set_nontracer)) + +## check tracer particles +for key in field_par + field_mesh: + cmd = "{}_tracer = {}[cond_tracer]".format(key, key) + exec(cmd) + +# compute the linear momentum in the x direction +Center_Bg = 0.25 * param["BOX_SIZE"], 0.25 * param["BOX_SIZE"] +Center_Mom = 0.50 * param["BOX_SIZE"], 0.50 * param["BOX_SIZE"] + +Radius = np.hypot(ParPosX_tracer - Center_Bg[0], ParPosY_tracer - Center_Bg[1]) +Dens_ref = comp_dens(ParPosX_tracer, ParPosY_tracer, Center_Bg, param["ParTest_Dens_Bg"], param["BOX_SIZE"]) +Pres_ref = comp_pres(ParPosX_tracer, ParPosY_tracer, Center_Bg, param["ParTest_Pres_Bg"], param["BOX_SIZE"]) +VelX_ref = comp_velx(ParPosX_tracer, ParPosY_tracer, Center_Mom, param["ParTest_Ang_Freq"]) + +# create a data set and sort the data based on the x-coordinate position +dataset = zip(Radius, MeshDens_tracer, Dens_ref, MeshPres_tracer, Pres_ref, MeshVelX_tracer, VelX_ref) +dataset = sorted(dataset) +dataset = [np.array(data) for data in zip(*dataset)] + +# compute the relative difference +reldiff_list = [np.abs(data_interp / data_ref - 1.0) + for data_interp, data_ref in zip(dataset[1::2], dataset[2::2])] + +# print information +for reldiff, key in zip(reldiff_list, field_mesh): + obj_tracer = "{}_tracer".format(key) + cmd = "minval = {}.min(); maxval = {}.max()".format(obj_tracer, obj_tracer) + exec(cmd) + + print("Min/Max of {} on tracer particles: {:14.7e} / {:14.7e}".format(key, minval, maxval)) + print("Min/Max RelDiff of {} on tracer particles: {:14.7e} / {:14.7e}".format(key, reldiff.min(), reldiff.max())) + +## visualization +fig = plt.figure(figsize = (14, 8)) +ax1 = plt.subplot2grid((5, 3), (0, 0), rowspan = 3) +ax2 = plt.subplot2grid((5, 3), (3, 0), rowspan = 2) +ax3 = plt.subplot2grid((5, 3), (0, 1), rowspan = 3) +ax4 = plt.subplot2grid((5, 3), (3, 1), rowspan = 2) +ax5 = plt.subplot2grid((5, 3), (0, 2), rowspan = 3) +ax6 = plt.subplot2grid((5, 3), (3, 2), rowspan = 2) + +axes_list_data = ax1, ax3, ax5 +axes_list_reldiff = ax2, ax4, ax6 + +# field quantity +label_list = "Interpolation", "Reference" +marker_list = "o", "x" +ylabel_list = "Dens", "Pres", "VelX" + +for idx_1, (ax, ylabel) in enumerate(zip(axes_list_data, ylabel_list)): + for idx_2, (label, marker) in enumerate(zip(label_list, marker_list), 2 * idx_1 + 1): + ax.scatter(dataset[0], dataset[idx_2], label = label, marker = marker) + + ax.set_ylabel(ylabel) + ax.legend(framealpha = 0) + +# relative difference +for reldiff, ax in zip(reldiff_list, axes_list_reldiff): + ax.scatter(dataset[0], reldiff) + + ax.set_yscale("log") + ax.set_xlabel("Radius of Tracer Particles") + ax.set_ylabel("Relative Difference") + +fig.suptitle("Time = {}".format(time_phys)) +fig.tight_layout() +plt.savefig("check_mesh2tracer.png", bbox_inches = "tight") +plt.close() diff --git a/example/test_problem/Hydro/ParticleTest/clean.sh b/example/test_problem/Hydro/ParticleTest/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/ParticleTest/clean.sh +++ b/example/test_problem/Hydro/ParticleTest/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/ParticleTest/generate_make.sh b/example/test_problem/Hydro/ParticleTest/generate_make.sh index 8071988e61..fe069d4ace 100644 --- a/example/test_problem/Hydro/ParticleTest/generate_make.sh +++ b/example/test_problem/Hydro/ParticleTest/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --model=HYDRO --particle=true --tracer=true --gravity=true +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=HYDRO --particle=true --tracer=true --gravity=true "$@" diff --git a/example/test_problem/Hydro/Plummer/Input__Parameter b/example/test_problem/Hydro/Plummer/Input__Parameter index f03920050f..c5346a6b8e 100644 --- a/example/test_problem/Hydro/Plummer/Input__Parameter +++ b/example/test_problem/Hydro/Plummer/Input__Parameter @@ -192,7 +192,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 1 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -217,6 +217,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous @@ -257,6 +258,7 @@ OPT__CK_MEMFREE 1.0 # check the free memory in GB (0=off, OPT__CK_PARTICLE 0 # check the particle allocation [0] # YT inline analysis -YT_SCRIPT inline_script # inline python script name, exclude ".py" extension -YT_VERBOSE 1 # log level (0=off, 1=info, 2=warning, 3=debug) [1] -YT_FIG_BASENAME Fig # figure basename, use libyt default if not set: (default=Fig%9d) +YT_SCRIPT inline_script # yt inline analysis script (do not include the ".py" file extension) +YT_VERBOSE 1 # verbose level of yt (0=off, 1=info, 2=warning, 3=debug) [1] +YT_FIG_BASENAME Fig # figure basename [Fig] +YT_JUPYTER_USE_CONNECTION_FILE 0 # use user-provided connection file when using libyt Jupyter UI [0] diff --git a/example/test_problem/Hydro/Plummer/clean.sh b/example/test_problem/Hydro/Plummer/clean.sh index 2e46ad0248..aef5e71407 100644 --- a/example/test_problem/Hydro/Plummer/clean.sh +++ b/example/test_problem/Hydro/Plummer/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance Record__Center diff --git a/example/test_problem/Hydro/Plummer/generate_make.sh b/example/test_problem/Hydro/Plummer/generate_make.sh index dc66626546..e022e8b448 100644 --- a/example/test_problem/Hydro/Plummer/generate_make.sh +++ b/example/test_problem/Hydro/Plummer/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --model=HYDRO --particle=true --gravity=true +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=HYDRO --particle=true --gravity=true "$@" diff --git a/example/test_problem/Hydro/Riemann/Input__Parameter b/example/test_problem/Hydro/Riemann/Input__Parameter index 84fe92d1dd..7911b39422 100644 --- a/example/test_problem/Hydro/Riemann/Input__Parameter +++ b/example/test_problem/Hydro/Riemann/Input__Parameter @@ -141,7 +141,7 @@ MONO_MAX_ITER 10 # maximum number of iterations to redu # data dump OPT__OUTPUT_TOTAL 0 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_PRES 0 # output gas pressure [0] ##HYDRO ONLY## OPT__OUTPUT_TEMP 0 # output gas temperature [0 (HD) or 1 (SRHD)] ##HYDRO ONLY## @@ -162,6 +162,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Riemann/clean.sh b/example/test_problem/Hydro/Riemann/clean.sh index 1197541bb6..99c54c062b 100644 --- a/example/test_problem/Hydro/Riemann/clean.sh +++ b/example/test_problem/Hydro/Riemann/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/Riemann/generate_make.sh b/example/test_problem/Hydro/Riemann/generate_make.sh index b07b45e140..82120dfead 100644 --- a/example/test_problem/Hydro/Riemann/generate_make.sh +++ b/example/test_problem/Hydro/Riemann/generate_make.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO +${PYTHON} configure.py --model=HYDRO "$@" diff --git a/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh b/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh index bddd9ed261..1805834732 100644 --- a/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh +++ b/example/test_problem/Hydro/Riemann/generate_make_Riemann_SRHD.sh @@ -2,4 +2,4 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --model=HYDRO --srhd=true --double=true --eos=TAUBMATHEWS --flux=HLLC --flu_scheme=MHM --slope=PLM +${PYTHON} configure.py --model=HYDRO --srhd=true --double=true --eos=TAUBMATHEWS --flux=HLLC --flu_scheme=MHM --slope=PLM "$@" diff --git a/example/test_problem/Hydro/SphericalCollapse/Input__Parameter b/example/test_problem/Hydro/SphericalCollapse/Input__Parameter index b801acfc6f..0268ae0b97 100644 --- a/example/test_problem/Hydro/SphericalCollapse/Input__Parameter +++ b/example/test_problem/Hydro/SphericalCollapse/Input__Parameter @@ -166,7 +166,7 @@ INIT_SUBSAMPLING_NCELL 4 # perform sub-sampling during initiali # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 7 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## @@ -188,6 +188,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/SphericalCollapse/clean.sh b/example/test_problem/Hydro/SphericalCollapse/clean.sh index aab55a8ee8..2c7ccfacf7 100644 --- a/example/test_problem/Hydro/SphericalCollapse/clean.sh +++ b/example/test_problem/Hydro/SphericalCollapse/clean.sh @@ -1,5 +1,5 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance diff --git a/example/test_problem/Hydro/SphericalCollapse/generate_make.sh b/example/test_problem/Hydro/SphericalCollapse/generate_make.sh index f1a57395ba..6398a3fe92 100644 --- a/example/test_problem/Hydro/SphericalCollapse/generate_make.sh +++ b/example/test_problem/Hydro/SphericalCollapse/generate_make.sh @@ -2,5 +2,5 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --model=HYDRO --gravity=true --comoving=true --dual=DE_ENPY +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --model=HYDRO --gravity=true --comoving=true --dual=DE_ENPY "$@" diff --git a/example/test_problem/Hydro/Zeldovich/Input__Parameter b/example/test_problem/Hydro/Zeldovich/Input__Parameter index c8557ca287..5358074506 100644 --- a/example/test_problem/Hydro/Zeldovich/Input__Parameter +++ b/example/test_problem/Hydro/Zeldovich/Input__Parameter @@ -132,7 +132,7 @@ DUAL_ENERGY_SWITCH 3.0e-2 # apply dual-energy if E_int/E_kin < D # fluid solvers in all models FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] -GPU_NSTREAM 8 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] +GPU_NSTREAM -1 # number of CUDA streams for the asynchronous memory copy in GPU (<=0=auto) [-1] OPT__FIXUP_FLUX 1 # correct coarse grids by the fine-grid boundary fluxes [1] ##HYDRO and ELBDM ONLY## OPT__FIXUP_RESTRICT 1 # correct coarse grids by averaging the fine-grid data [1] OPT__CORR_AFTER_ALL_SYNC -1 # apply various corrections after all levels are synchronized (see "Flu_CorrAfterAllSync"): @@ -181,7 +181,7 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] +OPT__OUTPUT_PART 4 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] OPT__OUTPUT_USER 1 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] @@ -197,6 +197,7 @@ OUTPUT_PART_X 0.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y 0.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z 0.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # miscellaneous diff --git a/example/test_problem/Hydro/Zeldovich/README b/example/test_problem/Hydro/Zeldovich/README index fe2022b6a1..64ce058f98 100644 --- a/example/test_problem/Hydro/Zeldovich/README +++ b/example/test_problem/Hydro/Zeldovich/README @@ -14,7 +14,7 @@ Default setup: NX0_TOT_X/Y/Z 128/32/32 OPT__BC_* 1 MAX_LEVEL 0 - GPU_NSTREAM 8 or 4 # necessary while DDUAL_ENERGY is enabled + GPU_NSTREAM -1 OPT__FLAG_RHO 1 OPT__OUTPUT_PART 4 OPT__OUTPUT_BASEPS 0 diff --git a/example/test_problem/Hydro/Zeldovich/clean.sh b/example/test_problem/Hydro/Zeldovich/clean.sh index 9f5d25f7c4..052fa3dce0 100644 --- a/example/test_problem/Hydro/Zeldovich/clean.sh +++ b/example/test_problem/Hydro/Zeldovich/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* gamer.e* gamer.o* Zeldovich_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB diff --git a/example/test_problem/Hydro/Zeldovich/generate_make.sh b/example/test_problem/Hydro/Zeldovich/generate_make.sh index f4aa3a97a1..ac3b9a5f8b 100644 --- a/example/test_problem/Hydro/Zeldovich/generate_make.sh +++ b/example/test_problem/Hydro/Zeldovich/generate_make.sh @@ -2,6 +2,6 @@ PYTHON=python3 -${PYTHON} configure.py --machine=eureka_intel --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ - --gsl=true --double=true \ - --model=HYDRO --gravity=true --comoving=true --dual=DE_ENPY --particle=true +${PYTHON} configure.py --mpi=true --hdf5=true --fftw=FFTW3 --gpu=true \ + --gsl=true --double=true --model=HYDRO --gravity=true \ + --comoving=true --dual=DE_ENPY --particle=true "$@" diff --git a/example/test_problem/Template/Input__Parameter b/example/test_problem/Template/Input__Parameter index f02ade2378..ad73dfe255 100644 --- a/example/test_problem/Template/Input__Parameter +++ b/example/test_problem/Template/Input__Parameter @@ -50,7 +50,17 @@ TESTPROB_ID 0 # test problem ID [0] # 100: HYDRO CDM cosmological simulation (+GRAVITY & COMOVING & PARTICLE) # 101: HYDRO Zeldovich pancake collapse (+GRAVITY & COMOVING & PARTICLE) # 1000: ELBDM external potential (+GRAVITY) - + # 1001: ELBDM Jeans instability in the comoving frame (+GRAVITY, +COMOVING) + # 1002: ELBDM Jeans instability in the physical frame (+GRAVITY) + # 1003: ELBDM soliton merger (+GRAVITY) + # 1004: ELBDM self-similar halo (+GRAVITY, +COMOVING) + # 1005: ELBDM rotating vortex pair + # 1006: ELBDM vortex pair in linear motion + # 1007: ELBDM halo extracted from a large-scale structure simulation (+GRAVITY) + # 1008: ELBDM 1D Gaussian wave packet + # 1009: ELBDM large-scale structure simulation (+GRAVITY, +COMOVING) + # 1010: ELBDM plane wave + # 1011: ELBDM small wave perturbations on homogeneous background # code units (in cgs) OPT__UNIT 0 # specify code units -> must set exactly 3 basic units below [0] ##USELESS FOR COMOVING## @@ -77,6 +87,7 @@ PAR_NPAR 0 # total number of particles (must be s PAR_INIT 1 # initialization option for particles: (1=FUNCTION, 2=RESTART, 3=FILE->"PAR_IC") PAR_IC_FORMAT 1 # data format of PAR_IC: (1=[attribute][id], 2=[id][attribute]; row-major) [1] PAR_IC_FLOAT8 -1 # floating-point precision for PAR_IC (<0: default, 0: single, 1: double) [default: same as FLOAT8_PAR] +PAR_IC_INT8 -1 # integer width for PAR_IC (<0: default, 0: 32-bit, 1: 64-bit) [default: same as INT8_PAR] PAR_IC_MASS -1.0 # mass of all particles for PAR_INIT==3 (<0=off) [-1.0] PAR_IC_TYPE -1 # type of all particles for PAR_INIT==3 (<0=off) [-1] PAR_INTERP 3 # particle interpolation scheme: (1=NGP, 2=CIC, 3=TSC) [2] @@ -102,6 +113,10 @@ DT__FLUID_INIT -1.0 # dt criterion: DT__FLUID at the first DT__SPEED_OF_LIGHT 0 # dt criterion: speed of light [0] ##SRHD ONLY## DT__GRAVITY -1.0 # dt criterion: gravity solver safety factor (<0=auto) [-1.0] DT__PHASE 0.0 # dt criterion: phase rotation safety factor (0=off) [0.0] ##ELBDM ONLY## +DT__HYBRID_CFL -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (diffusion) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_CFL_INIT -1.0 # dt criterion: DT__HYBRID_CFL in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY -1.0 # dt criterion: hybrid solver CFL factor (<0=auto) (Hamilton-Jacobi) [-1.0] ## ELBDM_HYBRID ONLY## +DT__HYBRID_VELOCITY_INIT -1.0 # dt criterion: DT__HYBRID_VELOCITY in the first step (<0=auto) [-1.0] ## ELBDM_HYBRID ONLY## DT__PARVEL 0.5 # dt criterion: particle velocity safety factor [0.5] DT__PARVEL_MAX -1.0 # dt criterion: maximum allowed dt from particle velocity (<0=off) [-1.0] DT__PARACC 0.5 # dt criterion: particle acceleration safety factor (0=off) [0.5] ##STORE_PAR_ACC ONLY## @@ -139,6 +154,9 @@ OPT__FLAG_JEANS 0 # flag: Jeans length (Input__Flag_Jean OPT__FLAG_CURRENT 0 # flag: current density in MHD (Input__Flag_Current) [0] ##MHD ONLY## OPT__FLAG_CRAY 0 # flag: cosmic-ray energy (Input__Flag_CRay) [0] ##COSMIC_RAY ONLY## OPT__FLAG_ENGY_DENSITY 0 # flag: energy density (Input_Flag_EngyDensity) [0] ##ELBDM ONLY## +OPT__FLAG_INTERFERENCE 0 # flag: interference level (Input__Flag_Interference) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL 0 # flag: spectral refinement (Input__Flag_Spectral) [0] ##ELBDM ONLY## +OPT__FLAG_SPECTRAL_N 2 # number of pol. coefficients to use for spectral refinement [2] ##ELBDM ONLY## OPT__FLAG_LOHNER_DENS 0 # flag: Lohner for mass density (Input__Flag_Lohner) [0] ##BOTH HYDRO AND ELBDM## OPT__FLAG_LOHNER_ENGY 0 # flag: Lohner for energy density (Input__Flag_Lohner) [0] ##HYDRO ONLY## OPT__FLAG_LOHNER_PRES 0 # flag: Lohner for pressure (Input__Flag_Lohner) [0] ##HYDRO ONLY## @@ -149,6 +167,14 @@ OPT__FLAG_LOHNER_FORM 2 # form of Lohner: (1=FLASH-1, 2=FLASH- OPT__FLAG_USER 0 # flag: user-defined (Input__Flag_User) -> edit "Flag_User.cpp" [0] OPT__FLAG_USER_NUM 1 # number of threshold values in user-defined table (Input__Flag_User) [1] OPT__FLAG_REGION 0 # flag: specify the regions **allowed** to be refined -> edit "Flag_Region.cpp" [0] +OPT__FLAG_ANGULAR 0 # flag: angular resolution (Input__Flag_AngularResolution) [0] +FLAG_ANGULAR_CEN_X -1.0 # x center coordinate for OPT__FLAG_ANGULAR (<0=auto -> box center) [-1.0] +FLAG_ANGULAR_CEN_Y -1.0 # y center coordinate for OPT__FLAG_ANGULAR (<0=auto -> box center) [-1.0] +FLAG_ANGULAR_CEN_Z -1.0 # z center coordinate for OPT__FLAG_ANGULAR (<0=auto -> box center) [-1.0] +OPT__FLAG_RADIAL 0 # flag: radial resolution (Input__Flag_RadialResolution) [0] +FLAG_RADIAL_CEN_X -1.0 # x center coordinate for OPT__FLAG_RADIAL (<0=auto -> box center) [-1.0] +FLAG_RADIAL_CEN_Y -1.0 # y center coordinate for OPT__FLAG_RADIAL (<0=auto -> box center) [-1.0] +FLAG_RADIAL_CEN_Z -1.0 # z center coordinate for OPT__FLAG_RADIAL (<0=auto -> box center) [-1.0] OPT__FLAG_NPAR_PATCH 0 # flag: # of particles per patch (Input__Flag_NParPatch): (0=off, 1=itself, 2=itself+siblings) [0] OPT__FLAG_NPAR_CELL 0 # flag: # of particles per cell (Input__Flag_NParCell) [0] OPT__FLAG_PAR_MASS_CELL 0 # flag: total particle mass per cell (Input__Flag_ParMassCell) [0] @@ -165,6 +191,7 @@ LB_INPUT__PAR_WEIGHT 0.0 # load-balance weighting of one partic OPT__RECORD_LOAD_BALANCE 1 # record the load-balance info [1] OPT__MINIMIZE_MPI_BARRIER 0 # minimize MPI barriers to improve load balance, especially with particles [0] # (STORE_POT_GHOST, PAR_IMPROVE_ACC=1, OPT__TIMING_BARRIER=0 only; recommend AUTO_REDUCE_DT=0) +OPT__LB_EXCHANGE_FATHER 1 # exchange all cells of all father patches during load balancing (must enable for hybrid scheme + MPI) [0 usually, 1 for ELBDM_HYBRID] ## ELBDM_HYBRID ONLY### # source terms @@ -176,14 +203,14 @@ SRC_GPU_NPGROUP -1 # number of patch groups sent into the # Grackle library for chemistry and radiative cooling (SUPPORT_GRACKLE only) GRACKLE_ACTIVATE 1 # enable Grackle [1] GRACKLE_VERBOSE 1 # map to "grackle_verbose" [1] -GRACKLE_COOLING 1 # ... "with_radiative_cooling" [1] -GRACKLE_PRIMORDIAL 0 # ... "primordial_chemistry" (0=Cloudy, 1/2/3=6-/9-/12-species) [0] +GRACKLE_COOLING 1 # map to "with_radiative_cooling" [1] +GRACKLE_PRIMORDIAL 0 # map to "primordial_chemistry" (0=Cloudy, 1/2/3=6-/9-/12-species) [0] # (must increase NCOMP_PASSIVE_USER by 6/9/12, respectively) -GRACKLE_METAL 0 # ... "metal_cooling" (must increase NCOMP_PASSIVE_USER by 1) [0] -GRACKLE_UV 0 # ... "UVbackground" [0] -GRACKLE_CMB_FLOOR 1 # ... "cmb_temperature_floor" [1] -GRACKLE_PE_HEATING 0 # ... "photoelectric_heating" [0] -GRACKLE_PE_HEATING_RATE 8.5e-26 # ... "photoelectric_heating_rate (in erg/cm^3/s)" [8.5e-26] +GRACKLE_METAL 0 # map to "metal_cooling" (must increase NCOMP_PASSIVE_USER by 1) [0] +GRACKLE_UV 0 # map to "UVbackground" [0] +GRACKLE_CMB_FLOOR 1 # map to "cmb_temperature_floor" [1] +GRACKLE_PE_HEATING 0 # map to "photoelectric_heating" [0] +GRACKLE_PE_HEATING_RATE 8.5e-26 # map to "photoelectric_heating_rate (in erg/cm^3/s)" [8.5e-26] GRACKLE_CLOUDY_TABLE CloudyData_noUVB.h5 # "grackle_data_file" GRACKLE_THREE_BODY_RATE 4 # used Glover+08 rate GRACKLE_CIE_COOLING 1 # 0: off; 1:on @@ -237,8 +264,12 @@ ELBDM_MASS 1.0 # particle mass in ev/c^2 (input unit ELBDM_PLANCK_CONST 1.0 # reduced Planck constant (will be overwritten if OPT__UNIT or COMOVING is on) ELBDM_LAMBDA 1.0 # quartic self-interaction coefficient [1.0] ##QUARTIC_SELF_INTERACTION ONLY## ELBDM_TAYLOR3_COEFF 0.166666667 # 3rd Taylor expansion coefficient [1.0/6.0] ##USELESS if ELBDM_TAYLOR3_AUTO is on## -ELBDM_TAYLOR3_AUTO 1 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [1] - +ELBDM_TAYLOR3_AUTO 0 # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax [0] +ELBDM_REMOVE_MOTION_CM 0 # remove the motion of center-of-mass (must enable OPT__CK_CONSERVATION): + # (0=off, 1=init, 2=every step) [0] +ELBDM_BASE_SPECTRAL 0 # adopt the spectral method to evolve base-level wave function (must enable SUPPORT_FFTW) [0] +ELBDM_MATCH_PHASE 1 # match child phases with father phases during data restriction [1] ##ELBDM_HYBRID ONLY## +ELBDM_FIRST_WAVE_LEVEL -1 # level at which to switch to the wave solver (must >=1) [-1] ##ELBDM_HYBRID ONLY## # fluid solvers in all models FLU_GPU_NPGROUP -1 # number of patch groups sent into the CPU/GPU fluid solver (<=0=auto) [-1] @@ -286,16 +317,16 @@ OPT__EXT_POT 0 # add external potential (0=off, 1= # tabular external potential EXT_POT_TABLE_NAME ExtPotTable # external potential table: filename -EXT_POT_TABLE_NPOINT_X 129 # ... : table size (i.e., number of data points) along x/y/z -EXT_POT_TABLE_NPOINT_Y 129 # -EXT_POT_TABLE_NPOINT_Z 129 # -EXT_POT_TABLE_DH_X 0.0078125 # ... : spatial interval between adjacent data points -EXT_POT_TABLE_DH_Y 0.0078125 # -EXT_POT_TABLE_DH_Z 0.0078125 # -EXT_POT_TABLE_EDGEL_X 0.0 # ... : starting x/y/z coordinates -EXT_POT_TABLE_EDGEL_Y 0.0 # -EXT_POT_TABLE_EDGEL_Z 0.0 # -EXT_POT_TABLE_FLOAT8 -1 # ... : double precision (<0=auto -> FLOAT8, 0=off, 1=on) [-1] +EXT_POT_TABLE_NPOINT_X 129 # external potential table: table size (i.e., number of data points) along x +EXT_POT_TABLE_NPOINT_Y 129 # external potential table: table size (i.e., number of data points) along y +EXT_POT_TABLE_NPOINT_Z 129 # external potential table: table size (i.e., number of data points) along z +EXT_POT_TABLE_DH_X 0.0078125 # external potential table: spatial interval between adjacent x data points +EXT_POT_TABLE_DH_Y 0.0078125 # external potential table: spatial interval between adjacent y data points +EXT_POT_TABLE_DH_Z 0.0078125 # external potential table: spatial interval between adjacent z data points +EXT_POT_TABLE_EDGEL_X 0.0 # external potential table: starting x coordinates +EXT_POT_TABLE_EDGEL_Y 0.0 # external potential table: starting y coordinates +EXT_POT_TABLE_EDGEL_Z 0.0 # external potential table: starting z coordinates +EXT_POT_TABLE_FLOAT8 -1 # external potential table: double precision (<0=auto -> FLOAT8, 0=off, 1=on) [-1] # --> not supported yet; use -1 for now OPT__GRAVITY_EXTRA_MASS 0 # add extra mass source when computing gravity [0] @@ -320,10 +351,11 @@ OPT__GPUID_SELECT -1 # GPU ID selection mode: (-3=Laohu, -2 INIT_SUBSAMPLING_NCELL 0 # perform sub-sampling during initialization: (0=off, >0=# of sub-sampling cells) [0] OPT__FFTW_STARTUP -1 # initialise fftw plans: (-1=auto, 0=ESTIMATE, 1=MEASURE, 2=PATIENT (only FFTW3)) [-1] -# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar) +# interpolation schemes: (-1=auto, 1=MinMod-3D, 2=MinMod-1D, 3=vanLeer, 4=CQuad, 5=Quad, 6=CQuar, 7=Quar, 8=Spectral (##ELBDM & SUPPORT_SPECTRAL_INT ONLY##)) OPT__INT_TIME 1 # perform "temporal" interpolation for OPT__DT_LEVEL == 2/3 [1] OPT__INT_PRIM 1 # switch to primitive variables when the interpolation on conserved variables fails [1] ##HYDRO ONLY## OPT__INT_PHASE 1 # interpolation on phase (does not support MinMod-1D) [1] ##ELBDM ONLY## +OPT__RES_PHASE 0 # restriction on phase [0] ##ELBDM ONLY## OPT__FLU_INT_SCHEME -1 # ghost-zone fluid variables for the fluid solver [-1] OPT__REF_FLU_INT_SCHEME -1 # newly allocated fluid variables during grid refinement [-1] OPT__MAG_INT_SCHEME 4 # ghost-zone magnetic field for the MHD solver (2,3,4,6 only) [4] @@ -336,14 +368,22 @@ INT_MONO_COEFF 2.0 # coefficient for ensuring the interpo INT_MONO_COEFF_B 2.0 # coefficient for ensuring the interpolation monotonicity of B field (1.0~4.0) [2.0] ##MHD ONLY## MONO_MAX_ITER 10 # maximum number of iterations to reduce INT_MONO_COEFF when interpolation fails (0=off) [10] INT_OPP_SIGN_0TH_ORDER 1 # switch to 0th-order interpolation if adjacent values change signs [HYDRO:1; ELBDM:0] +SPEC_INT_TABLE_PATH ./ # path to tables for spectral interpolation ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_XY_INSTEAD_DEPHA 1 # interpolate x and y (real and imaginary parts in current implementation) + # around vortices instead of density and phase for the spectral interpolation, + # which has the advantage of being well-defined across vortices [1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_VORTEX_THRESHOLD 0.1 # vortex detection threshold for SPEC_INT_XY_INSTEAD_DEPHA [0.1] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## +SPEC_INT_GHOST_BOUNDARY 4 # ghost boundary size for spectral interpolation [4] ##ELBDM & SUPPORT_SPECTRAL_INT ONLY## # data dump OPT__OUTPUT_TOTAL 1 # output the simulation snapshot: (0=off, 1=HDF5, 2=C-binary) [1] -OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag) [0] -OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of output text files [%24.16e] +OPT__OUTPUT_PART 0 # output a single line or slice: (0=off, 1=xy, 2=yz, 3=xz, 4=x, 5=y, 6=z, 7=diag, 8=entire box) [0] +OPT__OUTPUT_TEXT_FORMAT_FLT %24.16e # string format of floating-point variables in output text files [%24.16e] +OPT__OUTPUT_TEXT_LENGTH_INT 12 # string length of integer variables in output text files [12] OPT__OUTPUT_USER 0 # output the user-specified data -> edit "Output_User.cpp" [0] OPT__OUTPUT_PAR_MODE 0 # output the particle data: (0=off, 1=text-file, 2=C-binary) [0] ##PARTICLE ONLY## +OPT__OUTPUT_PAR_MESH 1 # output the attributes of tracer particles mapped from mesh quantities -> edit "Input__Par_Mesh" [1] ##PARTICLE ONLY## OPT__OUTPUT_BASEPS 0 # output the base-level power spectrum [0] OPT__OUTPUT_BASE 0 # only output the base-level data [0] ##OPT__OUTPUT_PART ONLY## OPT__OUTPUT_POT 1 # output gravitational potential [1] ##OPT__OUTPUT_TOTAL ONLY## @@ -371,6 +411,7 @@ OUTPUT_PART_X -1.0 # x coordinate for OPT__OUTPUT_PART [- OUTPUT_PART_Y -1.0 # y coordinate for OPT__OUTPUT_PART [-1.0] OUTPUT_PART_Z -1.0 # z coordinate for OPT__OUTPUT_PART [-1.0] INIT_DUMPID -1 # set the first dump ID (<0=auto) [-1] +OUTPUT_DIR . # set the output directory [.] # yt inline analysis (SUPPORT_LIBYT only) diff --git a/example/test_problem/Template/clean.sh b/example/test_problem/Template/clean.sh index 3909d21052..aa493a48c9 100644 --- a/example/test_problem/Template/clean.sh +++ b/example/test_problem/Template/clean.sh @@ -1,6 +1,6 @@ rm -f Record__Note Record__Timing Record__TimeStep Record__PatchCount Record__Dump Record__MemInfo Record__L1Err \ Record__Conservation Data* stderr stdout log XYslice* YZslice* XZslice* Xline* Yline* Zline* \ - Diag* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ + Diag* Box* BaseXYslice* BaseYZslice* BaseXZslice* BaseXline* BaseYline* BaseZline* BaseDiag* \ PowerSpec_* Particle_* nohup.out Record__Performance Record__TimingMPI_* \ Record__ParticleCount Record__User Patch_* Record__NCorrUnphy FailedPatchGroup* *.pyc Record__LoadBalance \ GRACKLE_INFO Record__DivB Record__Center diff --git a/example/yt/extract_power_spectrum.py b/example/yt/extract_power_spectrum.py new file mode 100644 index 0000000000..e510f5bc3e --- /dev/null +++ b/example/yt/extract_power_spectrum.py @@ -0,0 +1,144 @@ +import argparse +import sys +import yt +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import numpy as np + +# ref: https://yt-project.org/doc/examining/low_level_inspection.html#examining-grid-data-in-a-fixed-resolution-array + + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Extract power spectrum from GAMER AMR data. Supports 2D (x-y-plane) and 1D simulations (x-line) stored as 3D AMR data.' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./' ) +parser.add_argument( '-lv', action='store', required=False, type=int, dest='lv', help='sampling level [%(default)d]', default=0 ) +parser.add_argument( '-L', action='store', required=True, type=float, dest='L_box', help='box size in [Mpc/h]' ) +parser.add_argument( '-ndim', action='store', required=False, type=int, dest='ndim', help='number of dimensions for power spectrum [%(default)d]', default=3 ) + + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print(str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix +lv = args.lv +L_box = args.L_box +ndim = args.ndim + + +fields = [("gas", "density")] # fields for which to compute power spectrum + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + num = '%s'%ds + num = int(num[5:11]) + N = ds.domain_dimensions * 2 ** lv + + data = ds.smoothed_covering_grid( + level=lv, left_edge=[0, 0.0, 0.0], dims=N + ) + + for field in fields: + N = data[field].shape[0] + + # x-line at 0, 0 + if ndim == 1: + d = data[field][:, 0, 0] + # xy-plane + elif ndim == 2: + d = data[field][:, :, 0] + else: + d = data[field] + + + # Compute the 3D Fourier transform of the density data + density_fft = np.fft.rfftn(d) + + # Compute the power spectrum + power_spectrum = np.abs(density_fft)**2 + + + if ndim == 1: + kx_lin = np.fft.rfftfreq(d.shape[0]) + k = kx_lin + k_lin = kx_lin + + elif ndim == 2: + # Calculate the k values, with rfftn last axis undergoes real transform + kx_lin, ky_lin = np.fft.fftfreq(d.shape[0]), np.fft.rfftfreq(d.shape[1]) + + # Create a grid of k values + kx, ky = np.meshgrid(kx_lin, ky_lin, indexing='ij') + k = np.sqrt(kx**2 + ky**2) + + k_lin = ky_lin + + else: + # Calculate the k values, with rfftn last axis undergoes real transform + kx_lin, ky_lin, kz_lin = np.fft.fftfreq(d.shape[0]), np.fft.fftfreq(d.shape[1]), np.fft.rfftfreq(d.shape[2]) + + # Create a grid of k values + kx, ky, kz = np.meshgrid(kx_lin, ky_lin, kz_lin, indexing='ij') + k = np.sqrt(kx**2 + ky**2 + kz**2) + + k_lin = kz_lin + + # np.histogram expects list with bin edges + # k_lin contains centers of positive frequency bins + bins = k_lin + # bin shift centers to right bin boundaries + bins += (bins[1] - bins[0])/2 + # add leftmost bin boundary + bins = np.concatenate([[0], bins]) + + + counts, bin_edges = np.histogram(k, bins) + totals, bin_edges = np.histogram(k, bins, weights=power_spectrum) + + hist = totals/(counts + (counts == 0)) + volume = L_box ** ndim + dc_mode = np.abs(hist[0]) + dc_mode += dc_mode == 0 + AveVar = np.sqrt(dc_mode) / np.prod(d.shape) + Norm = volume / (AveVar * np.prod(d.shape)) ** 2 + + # Obtain bin centers from boundaries and make dimensional + ks = (bins[1:-1] + (bins[2] - bins[1])/2) * 2 * np.pi / L_box * N + spectrum = hist * Norm + spectrum = spectrum[1:] # do not output DC mode used for normalisation + + # Create a log-log plot of the power spectrum + plt.figure(figsize=(8, 6)) + plt.loglog(ks, spectrum, label='Power Spectrum') + plt.xlabel('k in [h/Mpc]') + plt.ylabel('P(k)') + plt.title('%s Power Spectrum' % field[1].capitalize()) + plt.grid() + plt.legend() + f = (np.char.capitalize(field[1]), num, lv, N, ndim) + plt.savefig('power_spectrum_%s_%06d_lv_%02d_%d_ndim_%d.png' % f) + plt.close() + + # store spectra in array + to_save = np.hstack([ks, spectrum]) + np.savetxt('power_spectrum_%s_%06d_lv_%02d_%d_ndim_%d.txt' % f, to_save) + diff --git a/example/yt/extract_uniform.py b/example/yt/extract_uniform.py new file mode 100644 index 0000000000..f2b2c56372 --- /dev/null +++ b/example/yt/extract_uniform.py @@ -0,0 +1,56 @@ +import argparse +import sys +import yt +import matplotlib.pyplot as plt +import numpy as np + +# ref: https://yt-project.org/doc/examining/low_level_inspection.html#examining-grid-data-in-a-fixed-resolution-array + + +# load the command-line parameters +parser = argparse.ArgumentParser( description='Extract uniform grids from GAMER AMR data.' ) + +parser.add_argument( '-s', action='store', required=True, type=int, dest='idx_start', + help='first data index' ) +parser.add_argument( '-e', action='store', required=True, type=int, dest='idx_end', + help='last data index' ) +parser.add_argument( '-d', action='store', required=False, type=int, dest='didx', + help='delta data index [%(default)d]', default=1 ) +parser.add_argument( '-i', action='store', required=False, type=str, dest='prefix', + help='data path prefix [%(default)s]', default='./' ) +parser.add_argument( '-lv', action='store', required=False, type=int, dest='lv', help='sampling level [%(default)d]', default=0 ) + + + +args=parser.parse_args() + +# take note +print( '\nCommand-line arguments:' ) +print( '-------------------------------------------------------------------' ) +for t in range( len(sys.argv) ): + print(str(sys.argv[t])) +print( '' ) +print( '-------------------------------------------------------------------\n' ) + +idx_start = args.idx_start +idx_end = args.idx_end +didx = args.didx +prefix = args.prefix +lv = args.lv + +fields = [("gas", "density")] # fields to extract + +ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) + +for ds in ts.piter(): + num = '%s'%ds + num = int(num[5:11]) + N = ds.domain_dimensions * 2 ** lv + + data = ds.smoothed_covering_grid( + level=lv, left_edge=[0, 0.0, 0.0], dims=N + ) + + for field in fields: + data[field].tofile('%s_%06d_Lv_%02d_%d_%d_%d.bin'%(np.char.capitalize(field[1]), num, lv, N[0], N[1], N[2])) + diff --git a/example/yt/find_center.py b/example/yt/find_center.py index 517c93194d..bf56ae2d24 100644 --- a/example/yt/find_center.py +++ b/example/yt/find_center.py @@ -32,14 +32,6 @@ def _TotDens(field, data): return data['Dens']+data['ParDens'] -yt.add_field( ('gamer', 'TotDens'), function=_TotDens, units='code_mass/code_length**3', sampling_type='cell' ) - - -field_dens = ('gamer', 'Dens') -field_pardens = ('gamer', 'ParDens') -field_totdens = ('gamer', 'TotDens') -field_pote = ('gamer', 'Pote') - yt.enable_parallelism() @@ -53,39 +45,44 @@ def _TotDens(field, data): print( '-------------------------------------------------------------------' ) print( '' ) + if ds.parameters["Particle"] == 1: + ds.add_field( ('gamer', 'TotDens'), function=_TotDens, units='code_mass/code_length**3', sampling_type='cell' ) + ad = ds.all_data() - #Extrema_density = ad.quantities.extrema( field_dens ).in_units('code_density') - #print( 'Extrema_density = ', Extrema_density ) - MaxLoc_density = ad.quantities.max_location( field_dens ) - print( 'Max Density Value = % 14.7e'%( MaxLoc_density[0].in_units('code_density').d ) ) - print( 'Max Density Coord_x = % 14.7e'%( MaxLoc_density[1].in_units('code_length').d ) ) - print( 'Max Density Coord_y = % 14.7e'%( MaxLoc_density[2].in_units('code_length').d ) ) - print( 'Max Density Coord_z = % 14.7e'%( MaxLoc_density[3].in_units('code_length').d ) ) - print( '' ) + if ds.parameters["Model"] == 'Hydro' or ds.parameters["Model"] == 'ELBDM': + #Extrema_density = ad.quantities.extrema( ('gamer','Dens') ).in_units('code_density') + #print( 'Extrema_density = ', Extrema_density ) + MaxLoc_density = ad.quantities.max_location( ('gamer','Dens') ) + print( 'Max Density Value = % 14.7e'%( MaxLoc_density[0].in_units('code_density').d ) ) + print( 'Max Density Coord_x = % 14.7e'%( MaxLoc_density[1].in_units('code_length').d ) ) + print( 'Max Density Coord_y = % 14.7e'%( MaxLoc_density[2].in_units('code_length').d ) ) + print( 'Max Density Coord_z = % 14.7e'%( MaxLoc_density[3].in_units('code_length').d ) ) + print( '' ) - #Extrema_pardensity = ad.quantities.extrema( field_pardens ).in_units('code_density') - #print( 'Extrema_pardensity = ', Extrema_pardensity ) - MaxLoc_pardensity = ad.quantities.max_location( field_pardens ) - print( 'Max Par_Density Value = % 14.7e'%( MaxLoc_pardensity[0].in_units('code_density').d ) ) - print( 'Max Par_Density Coord_x = % 14.7e'%( MaxLoc_pardensity[1].in_units('code_length').d ) ) - print( 'Max Par_Density Coord_y = % 14.7e'%( MaxLoc_pardensity[2].in_units('code_length').d ) ) - print( 'Max Par_Density Coord_z = % 14.7e'%( MaxLoc_pardensity[3].in_units('code_length').d ) ) - print( '' ) + if ds.parameters["Particle"] == 1: + #Extrema_pardensity = ad.quantities.extrema( ('gamer','ParDens') ).in_units('code_density') + #print( 'Extrema_pardensity = ', Extrema_pardensity ) + MaxLoc_pardensity = ad.quantities.max_location( ('gamer','ParDens') ) + print( 'Max Par_Density Value = % 14.7e'%( MaxLoc_pardensity[0].in_units('code_density').d ) ) + print( 'Max Par_Density Coord_x = % 14.7e'%( MaxLoc_pardensity[1].in_units('code_length').d ) ) + print( 'Max Par_Density Coord_y = % 14.7e'%( MaxLoc_pardensity[2].in_units('code_length').d ) ) + print( 'Max Par_Density Coord_z = % 14.7e'%( MaxLoc_pardensity[3].in_units('code_length').d ) ) + print( '' ) - #Extrema_totdensity = ad.quantities.extrema( field_totdens ).in_units('code_density') - #print( 'Extrema_totdensity = ', Extrema_totdensity ) - MaxLoc_totdensity = ad.quantities.max_location( field_totdens ) - print( 'Max Tot_Density Value = % 14.7e'%( MaxLoc_totdensity[0].in_units('code_density').d ) ) - print( 'Max Tot_Density Coord_x = % 14.7e'%( MaxLoc_totdensity[1].in_units('code_length').d ) ) - print( 'Max Tot_Density Coord_y = % 14.7e'%( MaxLoc_totdensity[2].in_units('code_length').d ) ) - print( 'Max Tot_Density Coord_z = % 14.7e'%( MaxLoc_totdensity[3].in_units('code_length').d ) ) - print( '' ) + #Extrema_totdensity = ad.quantities.extrema( ('gamer','TotDens') ).in_units('code_density') + #print( 'Extrema_totdensity = ', Extrema_totdensity ) + MaxLoc_totdensity = ad.quantities.max_location( ('gamer','TotDens') ) + print( 'Max Tot_Density Value = % 14.7e'%( MaxLoc_totdensity[0].in_units('code_density').d ) ) + print( 'Max Tot_Density Coord_x = % 14.7e'%( MaxLoc_totdensity[1].in_units('code_length').d ) ) + print( 'Max Tot_Density Coord_y = % 14.7e'%( MaxLoc_totdensity[2].in_units('code_length').d ) ) + print( 'Max Tot_Density Coord_z = % 14.7e'%( MaxLoc_totdensity[3].in_units('code_length').d ) ) + print( '' ) if ds.parameters["Opt__Output_Pot"] == 1: - #Extrema_pote = ad.quantities.extrema( field_pote ) + #Extrema_pote = ad.quantities.extrema( ('gamer','Pote') ) #print( 'Extrema_pote = ', Extrema_pote ) - MinLoc_pote = ad.quantities.min_location( field_pote ) + MinLoc_pote = ad.quantities.min_location( ('gamer','Pote') ) print( 'Min Potential Value = % 14.7e'%( MinLoc_pote[0].in_units('code_length**2/code_time**2').d ) ) print( 'Min Potential Coord_x = % 14.7e'%( MinLoc_pote[1].in_units('code_length').d ) ) print( 'Min Potential Coord_y = % 14.7e'%( MinLoc_pote[2].in_units('code_length').d ) ) @@ -94,21 +91,23 @@ def _TotDens(field, data): else: print( 'WARNING : To find the minimum gravitational potential, please turn on OPT__OUTPUT_POT in Input__Parameter !!\n' ) - CoM_Gas = ad.quantities.center_of_mass( use_gas=True, use_particles=False ) - print( 'CoM_Gas Coord_x = % 14.7e'%( CoM_Gas[0].in_units('code_length').d ) ) - print( 'CoM_Gas Coord_y = % 14.7e'%( CoM_Gas[1].in_units('code_length').d ) ) - print( 'CoM_Gas Coord_z = % 14.7e'%( CoM_Gas[2].in_units('code_length').d ) ) - print( '' ) + if ds.parameters["Model"] == 'Hydro' or ds.parameters["Model"] == 'ELBDM': + CoM_Gas = ad.quantities.center_of_mass( use_gas=True, use_particles=False ) + print( 'CoM_Gas Coord_x = % 14.7e'%( CoM_Gas[0].in_units('code_length').d ) ) + print( 'CoM_Gas Coord_y = % 14.7e'%( CoM_Gas[1].in_units('code_length').d ) ) + print( 'CoM_Gas Coord_z = % 14.7e'%( CoM_Gas[2].in_units('code_length').d ) ) + print( '' ) - CoM_Par = ad.quantities.center_of_mass( use_gas=False, use_particles=True, particle_type='all' ) - print( 'CoM_Par Coord_x = % 14.7e'%( CoM_Par[0].in_units('code_length').d ) ) - print( 'CoM_Par Coord_y = % 14.7e'%( CoM_Par[1].in_units('code_length').d ) ) - print( 'CoM_Par Coord_z = % 14.7e'%( CoM_Par[2].in_units('code_length').d ) ) - print( '' ) + if ds.parameters["Particle"] == 1: + CoM_Par = ad.quantities.center_of_mass( use_gas=False, use_particles=True, particle_type='all' ) + print( 'CoM_Par Coord_x = % 14.7e'%( CoM_Par[0].in_units('code_length').d ) ) + print( 'CoM_Par Coord_y = % 14.7e'%( CoM_Par[1].in_units('code_length').d ) ) + print( 'CoM_Par Coord_z = % 14.7e'%( CoM_Par[2].in_units('code_length').d ) ) + print( '' ) - CoM_All = ad.quantities.center_of_mass( use_gas=True, use_particles=True, particle_type='all' ) - print( 'CoM_All Coord_x = % 14.7e'%( CoM_All[0].in_units('code_length').d ) ) - print( 'CoM_All Coord_y = % 14.7e'%( CoM_All[1].in_units('code_length').d ) ) - print( 'CoM_All Coord_z = % 14.7e'%( CoM_All[2].in_units('code_length').d ) ) - print( '') + CoM_All = ad.quantities.center_of_mass( use_gas=True, use_particles=True, particle_type='all' ) + print( 'CoM_All Coord_x = % 14.7e'%( CoM_All[0].in_units('code_length').d ) ) + print( 'CoM_All Coord_y = % 14.7e'%( CoM_All[1].in_units('code_length').d ) ) + print( 'CoM_All Coord_z = % 14.7e'%( CoM_All[2].in_units('code_length').d ) ) + print( '') diff --git a/example/yt/fixed-resolution-array.py b/example/yt/fixed-resolution-array.py deleted file mode 100644 index b225c96804..0000000000 --- a/example/yt/fixed-resolution-array.py +++ /dev/null @@ -1,20 +0,0 @@ -import yt - -# ref: https://yt-project.org/doc/examining/low_level_inspection.html#examining-grid-data-in-a-fixed-resolution-array - -# target file -file = 'Data_000000' - -# target amr level -lv = 2 - -# load data -ds = yt.load( file ) - -# get unsmoothed/smoothed fixed resolution array -ad = ds.covering_grid( level=lv, left_edge=[0.0,0.0,0.0], dims=ds.domain_dimensions*2**lv ) -#ad = ds.smoothed_covering_grid( level=lv, left_edge=[0.0,0.0,0.0], dims=ds.domain_dimensions*2**lv ) - -density = ad['Dens'] -print( density.shape ) -print( density ) diff --git a/example/yt/get_conserved_quantities.py b/example/yt/get_conserved_quantities.py index 75a7ad9e2f..89aad414ec 100644 --- a/example/yt/get_conserved_quantities.py +++ b/example/yt/get_conserved_quantities.py @@ -42,6 +42,34 @@ def _thermal_energy(field, data): def _total_energy(field, data): return data['total_energy_density']*data['cell_volume'] + data['potential_energy'] +def _elbdm_momentum_x(field, data): + ELBDM_ETA = data.ds.parameters['ELBDM_Mass']*data.ds.units.code_mass/(data.ds.parameters['ELBDM_PlanckConst']*data.ds.units.code_length**2*data.ds.units.code_mass/data.ds.units.code_time) + return (data["Real"]*data["Imag_gradient_x"] - data["Imag"]*data["Real_gradient_x"])/ELBDM_ETA*data['cell_volume'] + +def _elbdm_momentum_y(field, data): + ELBDM_ETA = data.ds.parameters['ELBDM_Mass']*data.ds.units.code_mass/(data.ds.parameters['ELBDM_PlanckConst']*data.ds.units.code_length**2*data.ds.units.code_mass/data.ds.units.code_time) + return (data["Real"]*data["Imag_gradient_y"] - data["Imag"]*data["Real_gradient_y"])/ELBDM_ETA*data['cell_volume'] + +def _elbdm_momentum_z(field, data): + ELBDM_ETA = data.ds.parameters['ELBDM_Mass']*data.ds.units.code_mass/(data.ds.parameters['ELBDM_PlanckConst']*data.ds.units.code_length**2*data.ds.units.code_mass/data.ds.units.code_time) + return (data["Real"]*data["Imag_gradient_z"] - data["Imag"]*data["Real_gradient_z"])/ELBDM_ETA*data['cell_volume'] + +def _elbdm_angular_momentum_x(field, data): + return (data['y']-data.ds.domain_center[1])*data['elbdm_momentum_z'] - (data['z']-data.ds.domain_center[2])*data['elbdm_momentum_y'] + +def _elbdm_angular_momentum_y(field, data): + return (data['z']-data.ds.domain_center[2])*data['elbdm_momentum_x'] - (data['x']-data.ds.domain_center[0])*data['elbdm_momentum_z'] + +def _elbdm_angular_momentum_z(field, data): + return (data['x']-data.ds.domain_center[0])*data['elbdm_momentum_y'] - (data['y']-data.ds.domain_center[1])*data['elbdm_momentum_x'] + +def _elbdm_kinetic_energy(field, data): + ELBDM_ETA = data.ds.parameters['ELBDM_Mass']*data.ds.units.code_mass/(data.ds.parameters['ELBDM_PlanckConst']*data.ds.units.code_length**2*data.ds.units.code_mass/data.ds.units.code_time) + return 0.5*(data["Real_gradient_magnitude"]**2 + data["Imag_gradient_magnitude"]**2)/ELBDM_ETA**2*data['cell_volume'] + +def _elbdm_total_energy(field, data): + return data['elbdm_kinetic_energy'] + data['potential_energy'] + def _particle_momentum_x(field, data): return data['particle_mass']*data['particle_velocity_x'] @@ -58,18 +86,6 @@ def _particle_potential_energy(field, data): return 0.5*data['Pote']*data['ParDens']*data['cell_volume'] if data.ds.parameters["Opt__Output_Pot"] == 1 else float('nan')*data.ds.units.code_mass*data.ds.units.code_velocity**2 -# add new fields -yt.add_field( ('gamer','kinetic_energy'), function=_kinetic_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) -yt.add_field( ('gamer','potential_energy'), function=_potential_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) -yt.add_field( ('gamer','thermal_energy'), function=_thermal_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) -yt.add_field( ('gamer','total_energy'), function=_total_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) -yt.add_field( ('gamer','particle_momentum_x'), function=_particle_momentum_x, units='code_mass*code_velocity', sampling_type='particle' ) -yt.add_field( ('gamer','particle_momentum_y'), function=_particle_momentum_y, units='code_mass*code_velocity', sampling_type='particle' ) -yt.add_field( ('gamer','particle_momentum_z'), function=_particle_momentum_z, units='code_mass*code_velocity', sampling_type='particle' ) -yt.add_field( ('gamer','particle_kinetic_energy'), function=_particle_kinetic_energy, units='code_mass*code_velocity**2', sampling_type='particle' ) -yt.add_field( ('gamer','particle_potential_energy'), function=_particle_potential_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) - - #yt.enable_parallelism() ts = yt.DatasetSeries( [ prefix+'/Data_%06d'%idx for idx in range(idx_start, idx_end+1, didx) ] ) @@ -85,84 +101,143 @@ def _particle_potential_energy(field, data): ad = ds.all_data() # Check if the potential field exist - if ds.parameters["Opt__Output_Pot"] == 0: - print( 'WARNING : To calculate the gravitational potential energy, please turn on OPT__OUTPUT_POT in Input__Parameter !!\n' ) - - # Gas - Mass_Gas = ad.quantities.total_quantity( 'cell_mass' ) # total HYDRO mass - MomX_Gas = ad.quantities.total_quantity( 'momentum_x' ) # total HYDRO momentum x - MomY_Gas = ad.quantities.total_quantity( 'momentum_y' ) # total HYDRO momentum y - MomZ_Gas = ad.quantities.total_quantity( 'momentum_z' ) # total HYDRO momentum z - AngMomX_Gas = ad.quantities.total_quantity( 'angular_momentum_x' ) # total HYDRO angular momentum x - AngMomY_Gas = ad.quantities.total_quantity( 'angular_momentum_y' ) # total HYDRO angular momentum y - AngMomZ_Gas = ad.quantities.total_quantity( 'angular_momentum_z' ) # total HYDRO angular momentum z - Ekin_Gas = ad.quantities.total_quantity( 'kinetic_energy' ) # total HYDRO kinetic energy - Eint_Gas = ad.quantities.total_quantity( 'thermal_energy' ) # total HYDRO internal energy - Epot_Gas = ad.quantities.total_quantity( 'potential_energy' ) # total HYDRO potential energy - Etot_Gas = ad.quantities.total_quantity( 'total_energy' ) # total HYDRO energy - - # Particle - Mass_Par = ad.quantities.total_quantity( 'particle_mass' ) # total PARTICLE mass - MomX_Par = ad.quantities.total_quantity( 'particle_momentum_x' ) # total PARTICLE momentum x - MomY_Par = ad.quantities.total_quantity( 'particle_momentum_y' ) # total PARTICLE momentum y - MomZ_Par = ad.quantities.total_quantity( 'particle_momentum_z' ) # total PARTICLE momentum z - AngMomX_Par = ad.quantities.total_quantity( 'particle_angular_momentum_x' ) # total PARTICLE angular momentum x - AngMomY_Par = ad.quantities.total_quantity( 'particle_angular_momentum_y' ) # total PARTICLE angular momentum y - AngMomZ_Par = ad.quantities.total_quantity( 'particle_angular_momentum_z' ) # total PARTICLE angular momentum z - Ekin_Par = ad.quantities.total_quantity( 'particle_kinetic_energy' ) # total PARTICLE kinetic energy - Epot_Par = ad.quantities.total_quantity( 'particle_potential_energy' ) # total PARTICLE potential energy - Etot_Par = Ekin_Par + Epot_Par # total PARTICLE energy - - # All - Mass_All = Mass_Gas + Mass_Par # sum of the total HYDRO/ELBDM + PARTICLE mass - MomX_All = MomX_Gas + MomX_Par # sum of the total HYDRO/ELBDM + PARTICLE momentum x - MomY_All = MomY_Gas + MomY_Par # sum of the total HYDRO/ELBDM + PARTICLE momentum y - MomZ_All = MomZ_Gas + MomZ_Par # sum of the total HYDRO/ELBDM + PARTICLE momentum z - AngMomX_All = AngMomX_Gas + AngMomX_Par # sum of the total HYDRO/ELBDM + PARTICLE angular momentum x - AngMomY_All = AngMomY_Gas + AngMomY_Par # sum of the total HYDRO/ELBDM + PARTICLE angular momentum y - AngMomZ_All = AngMomZ_Gas + AngMomZ_Par # sum of the total HYDRO/ELBDM + PARTICLE angular momentum z - Ekin_All = Ekin_Gas + Ekin_Par # sum of the total HYDRO/ELBDM + PARTICLE kinetic energy - Epot_All = Epot_Gas + Epot_Par # sum of the total HYDRO/ELBDM + PARTICLE potential energy - Etot_All = Etot_Gas + Etot_Par # sum of the total HYDRO/ELBDM + PARTICLE energy + if ds.parameters["Gravity"] == 1: + if ds.parameters["Opt__Output_Pot"] == 0: + print( 'WARNING : To calculate the gravitational potential energy, please turn on OPT__OUTPUT_POT in Input__Parameter !!\n' ) + + # add new fields + if ds.parameters["Model"] == 'Hydro': + ds.add_field( ('gamer','kinetic_energy'), function=_kinetic_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + ds.add_field( ('gamer','potential_energy'), function=_potential_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + ds.add_field( ('gamer','thermal_energy'), function=_thermal_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + ds.add_field( ('gamer','total_energy'), function=_total_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + + if ds.parameters["Model"] == 'ELBDM': + Grad_R = ds.add_gradient_fields( ('gamer','Real') ) + Grad_I = ds.add_gradient_fields( ('gamer','Imag') ) + ds.add_field( ('gamer','elbdm_momentum_x'), function=_elbdm_momentum_x, units='code_mass*code_velocity', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_momentum_y'), function=_elbdm_momentum_y, units='code_mass*code_velocity', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_momentum_z'), function=_elbdm_momentum_z, units='code_mass*code_velocity', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_angular_momentum_x'), function=_elbdm_angular_momentum_x, units='code_mass*code_velocity*code_length', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_angular_momentum_y'), function=_elbdm_angular_momentum_y, units='code_mass*code_velocity*code_length', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_angular_momentum_z'), function=_elbdm_angular_momentum_z, units='code_mass*code_velocity*code_length', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_kinetic_energy'), function=_elbdm_kinetic_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + ds.add_field( ('gamer','potential_energy'), function=_potential_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + ds.add_field( ('gamer','elbdm_total_energy'), function=_elbdm_total_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + + if ds.parameters["Particle"] == 1: + ds.add_field( ('gamer','particle_momentum_x'), function=_particle_momentum_x, units='code_mass*code_velocity', sampling_type='particle' ) + ds.add_field( ('gamer','particle_momentum_y'), function=_particle_momentum_y, units='code_mass*code_velocity', sampling_type='particle' ) + ds.add_field( ('gamer','particle_momentum_z'), function=_particle_momentum_z, units='code_mass*code_velocity', sampling_type='particle' ) + ds.add_field( ('gamer','particle_kinetic_energy'), function=_particle_kinetic_energy, units='code_mass*code_velocity**2', sampling_type='particle' ) + ds.add_field( ('gamer','particle_potential_energy'), function=_particle_potential_energy, units='code_mass*code_velocity**2', sampling_type='cell' ) + + if ds.parameters["Model"] == 'Hydro': + # Gas + Mass_Gas = ad.quantities.total_quantity( 'cell_mass' ) # total HYDRO mass + MomX_Gas = ad.quantities.total_quantity( 'momentum_x' ) # total HYDRO momentum x + MomY_Gas = ad.quantities.total_quantity( 'momentum_y' ) # total HYDRO momentum y + MomZ_Gas = ad.quantities.total_quantity( 'momentum_z' ) # total HYDRO momentum z + AngMomX_Gas = ad.quantities.total_quantity( 'angular_momentum_x' ) # total HYDRO angular momentum x + AngMomY_Gas = ad.quantities.total_quantity( 'angular_momentum_y' ) # total HYDRO angular momentum y + AngMomZ_Gas = ad.quantities.total_quantity( 'angular_momentum_z' ) # total HYDRO angular momentum z + Ekin_Gas = ad.quantities.total_quantity( 'kinetic_energy' ) # total HYDRO kinetic energy + Eint_Gas = ad.quantities.total_quantity( 'thermal_energy' ) # total HYDRO internal energy + Epot_Gas = ad.quantities.total_quantity( 'potential_energy' ) # total HYDRO potential energy + Etot_Gas = ad.quantities.total_quantity( 'total_energy' ) # total HYDRO energy + + if ds.parameters["Model"] == 'ELBDM': + # Psi + Mass_Psi = ad.quantities.total_quantity( 'cell_mass' ) # total ELBDM mass + MomX_Psi = ad.quantities.total_quantity( 'elbdm_momentum_x' ) # total ELBDM momentum x + MomY_Psi = ad.quantities.total_quantity( 'elbdm_momentum_y' ) # total ELBDM momentum y + MomZ_Psi = ad.quantities.total_quantity( 'elbdm_momentum_z' ) # total ELBDM momentum z + AngMomX_Psi = ad.quantities.total_quantity( 'elbdm_angular_momentum_x' ) # total ELBDM angular momentum x + AngMomY_Psi = ad.quantities.total_quantity( 'elbdm_angular_momentum_y' ) # total ELBDM angular momentum y + AngMomZ_Psi = ad.quantities.total_quantity( 'elbdm_angular_momentum_z' ) # total ELBDM angular momentum z + Ekin_Psi = ad.quantities.total_quantity( 'elbdm_kinetic_energy' ) # total ELBDM kinetic energy + Epot_Psi = ad.quantities.total_quantity( 'potential_energy' ) # total ELBDM potential energy + Etot_Psi = ad.quantities.total_quantity( 'elbdm_total_energy' ) # total ELBDM energy + + if ds.parameters["Particle"] == 1: + # Particle + Mass_Par = ad.quantities.total_quantity( 'particle_mass' ) # total PARTICLE mass + MomX_Par = ad.quantities.total_quantity( 'particle_momentum_x' ) # total PARTICLE momentum x + MomY_Par = ad.quantities.total_quantity( 'particle_momentum_y' ) # total PARTICLE momentum y + MomZ_Par = ad.quantities.total_quantity( 'particle_momentum_z' ) # total PARTICLE momentum z + AngMomX_Par = ad.quantities.total_quantity( 'particle_angular_momentum_x' ) # total PARTICLE angular momentum x + AngMomY_Par = ad.quantities.total_quantity( 'particle_angular_momentum_y' ) # total PARTICLE angular momentum y + AngMomZ_Par = ad.quantities.total_quantity( 'particle_angular_momentum_z' ) # total PARTICLE angular momentum z + Ekin_Par = ad.quantities.total_quantity( 'particle_kinetic_energy' ) # total PARTICLE kinetic energy + Epot_Par = ad.quantities.total_quantity( 'particle_potential_energy' ) # total PARTICLE potential energy + Etot_Par = Ekin_Par + Epot_Par # total PARTICLE energy + + # All + Mass_All = Mass_Gas + Mass_Par # sum of the total HYDRO/ELBDM + PARTICLE mass + MomX_All = MomX_Gas + MomX_Par # sum of the total HYDRO/ELBDM + PARTICLE momentum x + MomY_All = MomY_Gas + MomY_Par # sum of the total HYDRO/ELBDM + PARTICLE momentum y + MomZ_All = MomZ_Gas + MomZ_Par # sum of the total HYDRO/ELBDM + PARTICLE momentum z + AngMomX_All = AngMomX_Gas + AngMomX_Par # sum of the total HYDRO/ELBDM + PARTICLE angular momentum x + AngMomY_All = AngMomY_Gas + AngMomY_Par # sum of the total HYDRO/ELBDM + PARTICLE angular momentum y + AngMomZ_All = AngMomZ_Gas + AngMomZ_Par # sum of the total HYDRO/ELBDM + PARTICLE angular momentum z + Ekin_All = Ekin_Gas + Ekin_Par # sum of the total HYDRO/ELBDM + PARTICLE kinetic energy + Epot_All = Epot_Gas + Epot_Par # sum of the total HYDRO/ELBDM + PARTICLE potential energy + Etot_All = Etot_Gas + Etot_Par # sum of the total HYDRO/ELBDM + PARTICLE energy # print the conserved quantities - print( '' ) - print( 'Gas' ) - print( 'Mass_Gas = % 14.7e'%( Mass_Gas.in_units('code_mass').d ) ) - print( 'MomX_Gas = % 14.7e'%( MomX_Gas.in_units('code_mass*code_velocity').d ) ) - print( 'MomY_Gas = % 14.7e'%( MomY_Gas.in_units('code_mass*code_velocity').d ) ) - print( 'MomZ_Gas = % 14.7e'%( MomZ_Gas.in_units('code_mass*code_velocity').d ) ) - print( 'AngMomX_Gas = % 14.7e'%( AngMomX_Gas.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'AngMomY_Gas = % 14.7e'%( AngMomY_Gas.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'AngMomZ_Gas = % 14.7e'%( AngMomZ_Gas.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'Ekin_Gas = % 14.7e'%( Ekin_Gas.in_units('code_mass*code_velocity**2').d ) ) - print( 'Eint_Gas = % 14.7e'%( Eint_Gas.in_units('code_mass*code_velocity**2').d ) ) - print( 'Epot_Gas = % 14.7e'%( Epot_Gas.in_units('code_mass*code_velocity**2').d ) ) - print( 'Etot_Gas = % 14.7e'%( Etot_Gas.in_units('code_mass*code_velocity**2').d ) ) - - print( '' ) - print( 'Par' ) - print( 'Mass_Par = % 14.7e'%( Mass_Par.in_units('code_mass').d ) ) - print( 'MomX_Par = % 14.7e'%( MomX_Par.in_units('code_mass*code_velocity').d ) ) - print( 'MomY_Par = % 14.7e'%( MomY_Par.in_units('code_mass*code_velocity').d ) ) - print( 'MomZ_Par = % 14.7e'%( MomZ_Par.in_units('code_mass*code_velocity').d ) ) - print( 'AngMomX_Par = % 14.7e'%( AngMomX_Par.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'AngMomY_Par = % 14.7e'%( AngMomY_Par.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'AngMomZ_Par = % 14.7e'%( AngMomZ_Par.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'Ekin_Par = % 14.7e'%( Ekin_Par.in_units('code_mass*code_velocity**2').d ) ) - print( 'Epot_Par = % 14.7e'%( Epot_Par.in_units('code_mass*code_velocity**2').d ) ) - print( 'Etot_Par = % 14.7e'%( Etot_Par.in_units('code_mass*code_velocity**2').d ) ) - - print( '' ) - print( 'All' ) - print( 'Mass_All = % 14.7e'%( Mass_All.in_units('code_mass').d ) ) - print( 'MomX_All = % 14.7e'%( MomX_All.in_units('code_mass*code_velocity').d ) ) - print( 'MomY_All = % 14.7e'%( MomY_All.in_units('code_mass*code_velocity').d ) ) - print( 'MomZ_All = % 14.7e'%( MomZ_All.in_units('code_mass*code_velocity').d ) ) - print( 'AngMomX_All = % 14.7e'%( AngMomX_All.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'AngMomY_All = % 14.7e'%( AngMomY_All.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'AngMomZ_All = % 14.7e'%( AngMomZ_All.in_units('code_length*code_mass*code_velocity').d ) ) - print( 'Ekin_All = % 14.7e'%( Ekin_All.in_units('code_mass*code_velocity**2').d ) ) - print( 'Epot_All = % 14.7e'%( Epot_All.in_units('code_mass*code_velocity**2').d ) ) - print( 'Etot_All = % 14.7e'%( Etot_All.in_units('code_mass*code_velocity**2').d ) ) + if ds.parameters["Model"] == 'Hydro': + print( '' ) + print( 'Gas' ) + print( 'Mass_Gas = % 14.7e'%( Mass_Gas.in_units('code_mass').d ) ) + print( 'MomX_Gas = % 14.7e'%( MomX_Gas.in_units('code_mass*code_velocity').d ) ) + print( 'MomY_Gas = % 14.7e'%( MomY_Gas.in_units('code_mass*code_velocity').d ) ) + print( 'MomZ_Gas = % 14.7e'%( MomZ_Gas.in_units('code_mass*code_velocity').d ) ) + print( 'AngMomX_Gas = % 14.7e'%( AngMomX_Gas.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomY_Gas = % 14.7e'%( AngMomY_Gas.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomZ_Gas = % 14.7e'%( AngMomZ_Gas.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'Ekin_Gas = % 14.7e'%( Ekin_Gas.in_units('code_mass*code_velocity**2').d ) ) + print( 'Eint_Gas = % 14.7e'%( Eint_Gas.in_units('code_mass*code_velocity**2').d ) ) + print( 'Epot_Gas = % 14.7e'%( Epot_Gas.in_units('code_mass*code_velocity**2').d ) ) + print( 'Etot_Gas = % 14.7e'%( Etot_Gas.in_units('code_mass*code_velocity**2').d ) ) + + if ds.parameters["Model"] == 'ELBDM': + print( '' ) + print( 'Psi' ) + print( 'Mass_Psi = % 14.7e'%( Mass_Psi.in_units('code_mass').d ) ) + print( 'MomX_Psi = % 14.7e'%( MomX_Psi.in_units('code_mass*code_velocity').d ) ) + print( 'MomY_Psi = % 14.7e'%( MomY_Psi.in_units('code_mass*code_velocity').d ) ) + print( 'MomZ_Psi = % 14.7e'%( MomZ_Psi.in_units('code_mass*code_velocity').d ) ) + print( 'AngMomX_Psi = % 14.7e'%( AngMomX_Psi.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomY_Psi = % 14.7e'%( AngMomY_Psi.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomZ_Psi = % 14.7e'%( AngMomZ_Psi.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'Ekin_Psi = % 14.7e'%( Ekin_Psi.in_units('code_mass*code_velocity**2').d ) ) + print( 'Epot_Psi = % 14.7e'%( Epot_Psi.in_units('code_mass*code_velocity**2').d ) ) + print( 'Etot_Psi = % 14.7e'%( Etot_Psi.in_units('code_mass*code_velocity**2').d ) ) + + if ds.parameters["Particle"] == 1: + print( '' ) + print( 'Par' ) + print( 'Mass_Par = % 14.7e'%( Mass_Par.in_units('code_mass').d ) ) + print( 'MomX_Par = % 14.7e'%( MomX_Par.in_units('code_mass*code_velocity').d ) ) + print( 'MomY_Par = % 14.7e'%( MomY_Par.in_units('code_mass*code_velocity').d ) ) + print( 'MomZ_Par = % 14.7e'%( MomZ_Par.in_units('code_mass*code_velocity').d ) ) + print( 'AngMomX_Par = % 14.7e'%( AngMomX_Par.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomY_Par = % 14.7e'%( AngMomY_Par.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomZ_Par = % 14.7e'%( AngMomZ_Par.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'Ekin_Par = % 14.7e'%( Ekin_Par.in_units('code_mass*code_velocity**2').d ) ) + print( 'Epot_Par = % 14.7e'%( Epot_Par.in_units('code_mass*code_velocity**2').d ) ) + print( 'Etot_Par = % 14.7e'%( Etot_Par.in_units('code_mass*code_velocity**2').d ) ) + + print( '' ) + print( 'All' ) + print( 'Mass_All = % 14.7e'%( Mass_All.in_units('code_mass').d ) ) + print( 'MomX_All = % 14.7e'%( MomX_All.in_units('code_mass*code_velocity').d ) ) + print( 'MomY_All = % 14.7e'%( MomY_All.in_units('code_mass*code_velocity').d ) ) + print( 'MomZ_All = % 14.7e'%( MomZ_All.in_units('code_mass*code_velocity').d ) ) + print( 'AngMomX_All = % 14.7e'%( AngMomX_All.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomY_All = % 14.7e'%( AngMomY_All.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'AngMomZ_All = % 14.7e'%( AngMomZ_All.in_units('code_length*code_mass*code_velocity').d ) ) + print( 'Ekin_All = % 14.7e'%( Ekin_All.in_units('code_mass*code_velocity**2').d ) ) + print( 'Epot_All = % 14.7e'%( Epot_All.in_units('code_mass*code_velocity**2').d ) ) + print( 'Etot_All = % 14.7e'%( Etot_All.in_units('code_mass*code_velocity**2').d ) ) diff --git a/include/AMR.h b/include/AMR.h index a16cb45314..663525aa93 100644 --- a/include/AMR.h +++ b/include/AMR.h @@ -30,40 +30,41 @@ void Aux_Error( const char *File, const int Line, const char *Func, const char * // Structure : AMR_t // Description : Data structure of the AMR implementation // -// Data Member : patch : Pointers of all patches -// num : Number of patches (real patch + buffer patch) at each level -// scale : Grid scale at each level (grid size normalized to that at the finest level) -// FluSg : Sandglass of the current fluid data [0/1] -// MagSg : Sandglass of the current magnetic field data [0/1] -// PotSg : Sandglass of the current potential data [0/1] -// FluSgTime : Physical time of FluSg -// MagSgTime : Physical time of MagSg -// PotSgTime : Physical time of PotSg -// NPatchComma : (1) SERIAL: [1] = [2] = ... = [27] = num[lv] = total number of patches -// (2) Parallel, but no LOAD_BALANCE: -// [ 0, start of buffer patches [s=0], start of buffer patches [s=1] -// ... start of buffer patches [s=25], total # of patches (=num[lv]) ] -// (3) Parallel, with LOAD_BALANCE: -// [ 0, start of sibling-buffer patches, start of father-buffer patches, -// total # of patches (=num[lv]), same as [3], ...] -// --> In all cases, [ 1] gives the total number of "real" patches -// [27] gives the total number of "real+buffer" patches -// dh : Grid size at each level -// BoxEdgeL : Simulation box left edge in the adopted coordinate system -// BoxEdgeR : Simulation box right edge in the adopted coordinate system -// BoxCenter : Simulation box center in the adopted coordinate system -// BoxSize : Simulation box size in the adopted coordinate system -// BoxScale : Simulation box scale -// WithFlux : Whether of not to allocate the flux arrays at all coarse-fine boundaries -// WithElectric : Whether of not to allocate the electric field arrays at all coarse-fine boundaries -// Par : Particle data -// ParaVar : Variables for parallelization -// LB : Variables for load-balance -// ResPower2 : ceil( log2( effective resolution at lv ) ) --> mainly used by LOAD_BALANCE -// NUpdateLv : Number of updates at each level in one global time-step -// --> Do not take into account the number of patches and particles at each level -// --> Mainly used for estimating the weighted load-imbalance factor to determine -// when to redistribute all patches (when LOAD_BALANCE is on) +// Data Member : patch : Pointers of all patches +// num : Number of patches (real patch + buffer patch) at each level +// scale : Grid scale at each level (grid size normalized to that at the finest level) +// FluSg : Sandglass of the current fluid data [0/1] +// MagSg : Sandglass of the current magnetic field data [0/1] +// PotSg : Sandglass of the current potential data [0/1] +// FluSgTime : Physical time of FluSg +// MagSgTime : Physical time of MagSg +// PotSgTime : Physical time of PotSg +// NPatchComma : (1) SERIAL: [1] = [2] = ... = [27] = num[lv] = total number of patches +// (2) Parallel, but no LOAD_BALANCE: +// [ 0, start of buffer patches [s=0], start of buffer patches [s=1] +// ... start of buffer patches [s=25], total # of patches (=num[lv]) ] +// (3) Parallel, with LOAD_BALANCE: +// [ 0, start of sibling-buffer patches, start of father-buffer patches, +// total # of patches (=num[lv]), same as [3], ...] +// --> In all cases, [ 1] gives the total number of "real" patches +// [27] gives the total number of "real+buffer" patches +// dh : Grid size at each level +// BoxEdgeL : Simulation box left edge in the adopted coordinate system +// BoxEdgeR : Simulation box right edge in the adopted coordinate system +// BoxCenter : Simulation box center in the adopted coordinate system +// BoxSize : Simulation box size in the adopted coordinate system +// BoxScale : Simulation box scale +// WithFlux : Whether of not to allocate the flux arrays at all coarse-fine boundaries +// WithElectric : Whether of not to allocate the electric field arrays at all coarse-fine boundaries +// Par : Particle data +// ParaVar : Variables for parallelization +// LB : Variables for load-balance +// ResPower2 : ceil( log2( effective resolution at lv ) ) --> mainly used by LOAD_BALANCE +// NUpdateLv : Number of updates at each level in one global time-step +// --> Do not take into account the number of patches and particles at each level +// --> Mainly used for estimating the weighted load-imbalance factor to determine +// when to redistribute all patches (when LOAD_BALANCE is on) +// use_wave_flag : Flag that determines whether hybrid ELBDM scheme uses fluid or wave scheme at a given AMR level // // Method : AMR_t : Constructor // ~AMR_t : Destructor @@ -115,7 +116,9 @@ struct AMR_t # endif long NUpdateLv [NLEVEL]; - +# if ( MODEL == ELBDM ) + bool use_wave_flag[NLEVEL]; +# endif //=================================================================================== // Constructor : AMR_t @@ -152,6 +155,16 @@ struct AMR_t PotSgTime[lv][ PotSg[lv] ] = -__FLT_MAX__; PotSgTime[lv][ 1-PotSg[lv] ] = -__FLT_MAX__; # endif + +# if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_WAVE ) + use_wave_flag[lv] = true; +# elif ( ELBDM_SCHEME == ELBDM_HYBRID ) + use_wave_flag[lv] = false; // use fluid solver by default for hybrid scheme +# else +# error : UNKNOWN ELBDM_SCHEME !! +# endif // ELBDM_SCHEME +# endif // #if ( MODEL == ELBDM ) } for (int Sg=0; Sg<2; Sg++) diff --git a/include/CUFLU.h b/include/CUFLU.h index db62c0938d..501af9b1f8 100644 --- a/include/CUFLU.h +++ b/include/CUFLU.h @@ -26,6 +26,11 @@ #endif +// include CUDA FFT library if GPU kinetic ELBDM Gram-Fourier extension solver is enabled +#if ( defined(__CUDACC__) && GRAMFE_SCHEME == GRAMFE_FFT ) +# include +#endif + // faster integer multiplication in Fermi #if ( defined __CUDACC__ && __CUDA_ARCH__ >= 200 ) # define __umul24( a, b ) ( (a)*(b) ) @@ -33,7 +38,6 @@ #endif - // ################################# // ## macros for different models ## // ################################# @@ -265,7 +269,6 @@ //========================================================================================= #elif ( MODEL == ELBDM ) - #else # error : ERROR : unsupported MODEL !! #endif // MODEL @@ -340,6 +343,18 @@ # else # define FLU_BLOCK_SIZE_X 512 // not optimized yet # endif +# elif ( GPU_ARCH == ADA_LOVELACE ) +# ifdef FLOAT8 +# define FLU_BLOCK_SIZE_X 256 +# else +# define FLU_BLOCK_SIZE_X 512 // not optimized yet +# endif +# elif ( GPU_ARCH == HOPPER ) +# ifdef FLOAT8 +# define FLU_BLOCK_SIZE_X 256 +# else +# define FLU_BLOCK_SIZE_X 512 // not optimized yet +# endif # else # define FLU_BLOCK_SIZE_X NULL_INT # ifdef GPU @@ -393,6 +408,18 @@ # else # define FLU_BLOCK_SIZE_X 512 // not optimized yet # endif +# elif ( GPU_ARCH == ADA_LOVELACE ) +# ifdef FLOAT8 +# define FLU_BLOCK_SIZE_X 256 +# else +# define FLU_BLOCK_SIZE_X 512 // not optimized yet +# endif +# elif ( GPU_ARCH == HOPPER ) +# ifdef FLOAT8 +# define FLU_BLOCK_SIZE_X 256 +# else +# define FLU_BLOCK_SIZE_X 512 // not optimized yet +# endif # else # define FLU_BLOCK_SIZE_X NULL_INT # ifdef GPU @@ -461,6 +488,20 @@ # define FLU_BLOCK_SIZE_Y 32 // not optimized yet # endif +# elif ( GPU_ARCH == ADA_LOVELACE ) +# ifdef FLOAT8 +# define FLU_BLOCK_SIZE_Y 16 // not optimized yet +# else +# define FLU_BLOCK_SIZE_Y 32 // not optimized yet +# endif + +# elif ( GPU_ARCH == HOPPER ) +# ifdef FLOAT8 +# define FLU_BLOCK_SIZE_Y 16 // not optimized yet +# else +# define FLU_BLOCK_SIZE_Y 32 // not optimized yet +# endif + # else # define FLU_BLOCK_SIZE_Y NULL_INT # ifdef GPU @@ -468,6 +509,65 @@ # endif # endif + +// to get rid of the "uses too much shared data" error message in the ELBDM HJ solver +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# if ( PATCH_SIZE == 8 && NCOMP_PASSIVE == 0 ) +# define FLU_HJ_BLOCK_SIZE_Y ( FLU_BLOCK_SIZE_Y ) // not optimized yet +# else +# define FLU_HJ_BLOCK_SIZE_Y ( FLU_BLOCK_SIZE_Y/2 ) // not optimized yet +# endif +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + + +// set number of threads and blocks used in GRAMFE_FFT GPU scheme +# if ( defined(__CUDACC__) && WAVE_SCHEME == WAVE_GRAMFE && GRAMFE_SCHEME == GRAMFE_FFT ) + +// cuFFTdx supports the following GPU architectures at the time of writing (23.05.23) +// +// Volta: 700 and 720 (sm_70, sm_72), +// +// Turing: 750 (sm_75), and +// +// Ampere: 800, 860 and 870 (sm_80, sm_86, sm_87). +// +// Ada: 890 (sm_89). +// +// Hopper: 900 (sm_90). +# if ( GPU_COMPUTE_CAPABILITY != 700 && GPU_COMPUTE_CAPABILITY != 720 && GPU_COMPUTE_CAPABILITY != 750 \ + && GPU_COMPUTE_CAPABILITY != 800 && GPU_COMPUTE_CAPABILITY != 860 && GPU_COMPUTE_CAPABILITY != 870 \ + && GPU_COMPUTE_CAPABILITY != 890 \ + && GPU_COMPUTE_CAPABILITY != 900 ) +# error : ERROR : GPU_COMPUTE_CAPABILITY unsupported by cuFFTdx (please visit cuFFTdx website to check whether your GPU is supported and update CUFLU.h accordingly if it is) !! +# endif + +// number of blocks suggested by cufftdx disabled by default +// profiling the code showed that a different number of blocks provides better performance +// this is because the code does not only compute the FFT, but also the Fourier extension +# define GRAMFE_USE_SUGGESTED_BLOCKS 0 +# define GRAMFE_CUSTOM_ELEMENTS_PER_THREAD 4 +# define GRAMFE_CUSTOM_FFTS_PER_BLOCK 12 + + +using CUFFTDX_ARCH = decltype(cufftdx::SM()); + +using fft_base = decltype(cufftdx::Block() + cufftdx::Size() + cufftdx::Type() + cufftdx::Precision() + CUFFTDX_ARCH() ); +using forward_fft = decltype(fft_base() + cufftdx::Direction()); +using inverse_fft = decltype(fft_base() + cufftdx::Direction()); + +// complete FFT description +static constexpr unsigned int elements_per_thread = GRAMFE_USE_SUGGESTED_BLOCKS ? forward_fft::elements_per_thread : GRAMFE_CUSTOM_ELEMENTS_PER_THREAD; +static constexpr unsigned int ffts_per_block = GRAMFE_USE_SUGGESTED_BLOCKS ? inverse_fft::suggested_ffts_per_block : GRAMFE_CUSTOM_FFTS_PER_BLOCK; + +using FFT = decltype( forward_fft() + cufftdx::ElementsPerThread() + cufftdx::FFTsPerBlock()); +using IFFT = decltype( inverse_fft() + cufftdx::ElementsPerThread() + cufftdx::FFTsPerBlock()); + +using complex_type = typename FFT::value_type; + +# endif // # if ( defined(__CUDACC__) && WAVE_SCHEME == WAVE_GRAMFE && GRAMFE_SCHEME == GRAMFE_FFT ) + +#else +# error : ERROR : Unsupported model in CUFLU.h #endif // MODEL @@ -476,8 +576,8 @@ # define DT_FLU_BLOCK_SIZE 512 // use shuffle reduction in the KEPLER and later GPUs -# if ( GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ - GPU_ARCH == TURING || GPU_ARCH == AMPERE ) +# if ( GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ + GPU_ARCH == TURING || GPU_ARCH == AMPERE || GPU_ARCH == ADA_LOVELACE || GPU_ARCH == HOPPER ) # define DT_FLU_USE_SHUFFLE # endif @@ -492,8 +592,8 @@ // --> please refer to https://en.wikipedia.org/wiki/CUDA#Version_features_and_specifications // for information on warp size #ifdef __CUDACC__ -#if ( GPU_ARCH == FERMI || GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ - GPU_ARCH == TURING || GPU_ARCH == AMPERE ) +#if ( GPU_ARCH == FERMI || GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ + GPU_ARCH == TURING || GPU_ARCH == AMPERE || GPU_ARCH == ADA_LOVELACE || GPU_ARCH == HOPPER ) // CUPOT.h will define WARP_SIZE as well # ifndef WARP_SIZE # define WARP_SIZE 32 @@ -513,9 +613,11 @@ #ifdef __CUDACC__ # define GPU_DEVICE __forceinline__ __device__ # define GPU_DEVICE_NOINLINE __noinline__ __device__ +# define GPU_DEVICE_VARIABLE __device__ #else # define GPU_DEVICE # define GPU_DEVICE_NOINLINE +# define GPU_DEVICE_VARIABLE #endif // unified CPU/GPU loop @@ -527,4 +629,5 @@ + #endif // #ifndef __CUFLU_H__ diff --git a/include/CUPOT.h b/include/CUPOT.h index 2cac34c68f..8843f5a058 100644 --- a/include/CUPOT.h +++ b/include/CUPOT.h @@ -95,6 +95,18 @@ # else # define POT_BLOCK_SIZE_Z 4 // not optimized yet # endif +# elif ( GPU_ARCH == ADA_LOVELACE ) +# ifdef FLOAT8 +# define POT_BLOCK_SIZE_Z 2 // not optimized yet +# else +# define POT_BLOCK_SIZE_Z 4 // not optimized yet +# endif +# elif ( GPU_ARCH == HOPPER ) +# ifdef FLOAT8 +# define POT_BLOCK_SIZE_Z 2 // not optimized yet +# else +# define POT_BLOCK_SIZE_Z 4 // not optimized yet +# endif # else # define POT_BLOCK_SIZE_Z NULL_INT # ifdef GPU @@ -115,8 +127,8 @@ // --> only work for POT_GHOST_SIZE == 5 since # threads must be a multiple of warpSize // --> although strictly speaking the shuffle functions do NOT work for double precision, but experiments // show that residual_sum += (float)residual, where residual_sum is double, gives acceptable accuracy -# if ( GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ - GPU_ARCH == TURING || GPU_ARCH == AMPERE ) +# if ( GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ + GPU_ARCH == TURING || GPU_ARCH == AMPERE || GPU_ARCH == ADA_LOVELACE || GPU_ARCH == HOPPER ) # define SOR_USE_SHUFFLE # endif @@ -172,8 +184,8 @@ #define DT_GRA_BLOCK_SIZE 256 // use shuffle reduction in the KEPLER and later GPUs -#if ( GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ - GPU_ARCH == TURING || GPU_ARCH == AMPERE ) +#if ( GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ + GPU_ARCH == TURING || GPU_ARCH == AMPERE || GPU_ARCH == ADA_LOVELACE || GPU_ARCH == HOPPER ) # define DT_GRA_USE_SHUFFLE #endif @@ -182,8 +194,8 @@ // --> please refer to https://en.wikipedia.org/wiki/CUDA#Version_features_and_specifications // for information on warp size #ifdef __CUDACC__ -#if ( GPU_ARCH == FERMI || GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ - GPU_ARCH == TURING || GPU_ARCH == AMPERE ) +#if ( GPU_ARCH == FERMI || GPU_ARCH == KEPLER || GPU_ARCH == MAXWELL || GPU_ARCH == PASCAL || GPU_ARCH == VOLTA || \ + GPU_ARCH == TURING || GPU_ARCH == AMPERE || GPU_ARCH == ADA_LOVELACE || GPU_ARCH == HOPPER ) // CUFLU.h will define WARP_SIZE as well # ifndef WARP_SIZE # define WARP_SIZE 32 diff --git a/include/EoS.h b/include/EoS.h index 91506030c9..2c0338dd7b 100644 --- a/include/EoS.h +++ b/include/EoS.h @@ -13,10 +13,11 @@ // Structure : EoS_t // Description : Data structure storing the EoS variables to be passed to the CPU/GPU solvers // -// Note : This object stores the GPU addresses and thus should never be used in CPU codes -// (except for codes shared by both CPU and GPU with a function parameter EoS_t EoS) -// --> For CPU-only codes, use the global variables EoS_AuxArray_Flt/Int, EoS_*_CPUPtr, -// and h_EoS_Table[] instead +// Note : 1. This object stores the GPU addresses and thus should never be used in CPU codes +// (except for codes shared by both CPU and GPU with a function parameter EoS_t EoS) +// --> For CPU-only codes, use the global variables EoS_AuxArray_Flt/Int, EoS_*_CPUPtr, +// and h_EoS_Table[] instead +// 2. When MODEL != HYDRO, we still define EoS_t for compilation but remove all data members // // Data Member : *_AuxArrayDevPtr_* : Auxiliary array pointers // *_FuncPtr : Function pointers to the major EoS functions @@ -27,6 +28,7 @@ struct EoS_t { +# if ( MODEL == HYDRO ) // auxiliary array pointers double *AuxArrayDevPtr_Flt; int *AuxArrayDevPtr_Int; @@ -48,6 +50,7 @@ struct EoS_t // table pointers real **Table; +# endif }; // struct EoS_t diff --git a/include/FFTW.h b/include/FFTW.h index ff235736fd..a712ee7219 100644 --- a/include/FFTW.h +++ b/include/FFTW.h @@ -12,7 +12,7 @@ #include "GAMER.h" -#if ( SUPPORT_FFTW == FFTW2 || SUPPORT_FFTW == FFTW3 ) +#if ( SUPPORT_FFTW == FFTW2 || SUPPORT_FFTW == FFTW3 ) // wrappers for fftw3 single and double precision routines #if ( SUPPORT_FFTW == FFTW3 ) @@ -155,7 +155,7 @@ namespace gamer_fftw = fftw2; #endif // #if ( SUPPORT_FFTW == FFTW3 ) ... #else -//real and imaginary part should only be accessed through c_re and c_im since this macro is also defined in FFTW2 +// real and imaginary part should only be accessed through c_re and c_im since this macro is also defined in FFTW2 # if ( SUPPORT_FFTW == FFTW3 ) # define c_re(c) ((c)[0]) # define c_im(c) ((c)[1]) @@ -169,8 +169,8 @@ namespace gamer_fftw = fftw2; # endif -//wrappers for fftw plans and real-to-complex as well as complex to real n-dimensional transforms on the root level of the AMR hierarchy -//used for Poisson solver and for computing power spectra +// wrappers for fftw plans and real-to-complex as well as complex to real n-dimensional transforms on the root level +// of the AMR hierarchy used for Poisson solver and for computing power spectra namespace root_fftw { const auto fft_malloc = gamer_fftw::fft_malloc; const auto fft_free = gamer_fftw::fft_free; @@ -225,6 +225,69 @@ const auto destroy_complex_plan_nd = gamer_fftw::destroy_complex_mpi_plan_nd; #endif // #ifdef SERIAL ... # else #endif // # if ( SUPPORT_FFTW == FFTW3 ) ... # else -#endif // #if ( SUPPORT_FFTW == FFTW2 || SUPPORT_FFTW == FFTW3 ) +#ifdef SUPPORT_SPECTRAL_INT +// accuracy for FFT in Gram-FE extension interpolation (GFEI) +// --> should always be set to double-precision for stability +#define GFEI_FFTW_FLOAT8 -#endif // #ifndef __FFTW_H__ \ No newline at end of file +#if ( SUPPORT_FFTW == FFTW3 ) +#ifdef GFEI_FFTW_FLOAT8 +namespace gfei_fftw = fftw3_double_precision; +#else // #ifdef GFEI_FFTW_FLOAT8 +namespace gfei_fftw = fftw3_single_precision; +#endif // #ifdef GFEI_FFTW_FLOAT8 ... # else +#else // #if ( SUPPORT_FFTW == FFTW3 ) +namespace gfei_fftw = fftw2; +#endif // #if ( SUPPORT_FFTW == FFTW3 ) ... #else + +// wrappers for fftw plans and complex 1D-transform used in Gram-Fourier extension interpolation algorithm +#if ( SUPPORT_FFTW == FFTW3 ) +#define gfei_fftw_c2c(plan, arr) gfei_fftw::execute_dft_c2c_1d ( plan, (gfei_fftw::fft_complex*) arr, (gfei_fftw::fft_complex*) arr ) +#define gfei_fftw_r2c(plan, arr) gfei_fftw::execute_dft_r2c_1d ( plan, (gfei_fftw::fft_real*) arr, (gfei_fftw::fft_complex*) arr ) +#define gfei_fftw_c2r(plan, arr) gfei_fftw::execute_dft_c2r_1d ( plan, (gfei_fftw::fft_complex*) arr, (gfei_fftw::fft_real*) arr ) +#define gfei_fftw_create_1d_forward_c2c_plan(size, arr, startup) gfei_fftw::plan_dft_c2c_1d ( size, (gfei_fftw::fft_complex*) arr, (gfei_fftw::fft_complex*) arr, FFTW_FORWARD , startup ) +#define gfei_fftw_create_1d_backward_c2c_plan(size, arr, startup) gfei_fftw::plan_dft_c2c_1d ( size, (gfei_fftw::fft_complex*) arr, (gfei_fftw::fft_complex*) arr, FFTW_BACKWARD, startup ) +#define gfei_fftw_create_1d_r2c_plan(size, arr, startup) gfei_fftw::plan_dft_r2c_1d ( size, (gfei_fftw::fft_real*) arr, (gfei_fftw::fft_complex*) arr, startup ) +#define gfei_fftw_create_1d_c2r_plan(size, arr, startup) gfei_fftw::plan_dft_c2r_1d ( size, (gfei_fftw::fft_complex*) arr, (gfei_fftw::fft_real*) arr, startup ) +#else // #if ( SUPPORT_FFTW == FFTW3 ) +#define gfei_fftw_c2c(plan, arr) gfei_fftw::execute_dft_c2c_1d ( plan, (gfei_fftw::fft_complex*) arr, NULL ) +#define gfei_fftw_r2c(plan, arr) gfei_fftw::execute_dft_r2c_1d ( plan, (gfei_fftw::fft_real*) arr, NULL ) +#define gfei_fftw_c2r(plan, arr) gfei_fftw::execute_dft_c2r_1d ( plan, (gfei_fftw::fft_real*) arr, NULL ) +#define gfei_fftw_create_1d_forward_c2c_plan(size, arr, startup) gfei_fftw::plan_dft_c2c_1d ( size, FFTW_FORWARD , startup | FFTW_IN_PLACE ) +#define gfei_fftw_create_1d_backward_c2c_plan(size, arr, startup) gfei_fftw::plan_dft_c2c_1d ( size, FFTW_BACKWARD, startup | FFTW_IN_PLACE ) +#define gfei_fftw_create_1d_r2c_plan(size, arr, startup) gfei_fftw::plan_dft_r2c_1d ( size, FFTW_REAL_TO_COMPLEX, startup | FFTW_IN_PLACE ) +#define gfei_fftw_create_1d_c2r_plan(size, arr, startup) gfei_fftw::plan_dft_c2r_1d ( size, FFTW_COMPLEX_TO_REAL, startup | FFTW_IN_PLACE ) +#endif // #if ( SUPPORT_FFTW == FFTW3 ) ... # else +#endif // #ifdef SUPPORT_SPECTRAL_INT + +#if ( SUPPORT_FFTW == FFTW3 ) +#ifdef GRAMFE_FFT_FLOAT8 +namespace gramfe_fftw = fftw3_double_precision; +#else // #ifdef GRAMFE_FFT_FLOAT8 +namespace gramfe_fftw = fftw3_single_precision; +#endif // #ifdef GRAMFE_FFT_FLOAT8 ... # else +#else // #if ( SUPPORT_FFTW == FFTW3 ) +namespace gramfe_fftw = fftw2; +#endif // #if ( SUPPORT_FFTW == FFTW3 ) ... #else + +// wrappers for fftw plans and complex 1D-transform used in Gram-Fourier extension algorithm +#if ( SUPPORT_FFTW == FFTW3 ) +#define gramfe_fftw_c2c(plan, arr) gramfe_fftw::execute_dft_c2c_1d ( plan, (gramfe_fftw::fft_complex*) arr, (gramfe_fftw::fft_complex*) arr ) +#define gramfe_fftw_r2c(plan, arr) gramfe_fftw::execute_dft_r2c_1d ( plan, (gramfe_fftw::fft_real*) arr, (gramfe_fftw::fft_complex*) arr ) +#define gramfe_fftw_c2r(plan, arr) gramfe_fftw::execute_dft_c2r_1d ( plan, (gramfe_fftw::fft_complex*) arr, (gramfe_fftw::fft_real*) arr ) +#define gramfe_fftw_create_1d_forward_c2c_plan(size, arr, startup) gramfe_fftw::plan_dft_c2c_1d ( size, (gramfe_fftw::fft_complex*) arr, (gramfe_fftw::fft_complex*) arr, FFTW_FORWARD , startup ) +#define gramfe_fftw_create_1d_backward_c2c_plan(size, arr, startup) gramfe_fftw::plan_dft_c2c_1d ( size, (gramfe_fftw::fft_complex*) arr, (gramfe_fftw::fft_complex*) arr, FFTW_BACKWARD, startup ) +#else // #if ( SUPPORT_FFTW == FFTW3 ) +#define gramfe_fftw_c2c(plan, arr) gramfe_fftw::execute_dft_c2c_1d ( plan, (gramfe_fftw::fft_complex*) arr, NULL ) +#define gramfe_fftw_r2c(plan, arr) gramfe_fftw::execute_dft_r2c_1d ( plan, (gramfe_fftw::fft_real*) arr, NULL ) +#define gramfe_fftw_c2r(plan, arr) gramfe_fftw::execute_dft_c2r_1d ( plan, (gramfe_fftw::fft_real*) arr, NULL ) +#define gramfe_fftw_create_1d_forward_c2c_plan(size, arr, startup) gramfe_fftw::plan_dft_c2c_1d ( size, FFTW_FORWARD , startup | FFTW_IN_PLACE ) +#define gramfe_fftw_create_1d_backward_c2c_plan(size, arr, startup) gramfe_fftw::plan_dft_c2c_1d ( size, FFTW_BACKWARD, startup | FFTW_IN_PLACE ) +#endif // #if ( SUPPORT_FFTW == FFTW3 ) ... # else + + +#endif // #if ( SUPPORT_FFTW == FFTW2 || SUPPORT_FFTW == FFTW3 ) + + + +#endif // #ifndef __FFTW_H__ diff --git a/include/Field.h b/include/Field.h index bbad5d8a84..ea1ee399d2 100644 --- a/include/Field.h +++ b/include/Field.h @@ -48,6 +48,20 @@ SET_GLOBAL( FieldIdx_t Idx_Metal, Idx_Undefined ); #elif ( MODEL == ELBDM ) +#if ( ELBDM_SCHEME == ELBDM_WAVE ) +SET_GLOBAL( FieldIdx_t Idx_Dens, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_Real, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_Imag, Idx_Undefined ); +#elif ( ELBDM_SCHEME == ELBDM_HYBRID ) +SET_GLOBAL( FieldIdx_t Idx_Dens, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_Real, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_Imag, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_Phas, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_Stub, Idx_Undefined ); +#else +# error : ERROR : unsupported ELBDM_SCHEME !! +#endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) + #else # error : ERROR : unsupported MODEL !! #endif // MODEL @@ -69,8 +83,8 @@ SET_GLOBAL( FieldIdx_t Idx_ParPosZ, Idx_Undefined ); SET_GLOBAL( FieldIdx_t Idx_ParVelX, Idx_Undefined ); SET_GLOBAL( FieldIdx_t Idx_ParVelY, Idx_Undefined ); SET_GLOBAL( FieldIdx_t Idx_ParVelZ, Idx_Undefined ); -SET_GLOBAL( FieldIdx_t Idx_ParType, Idx_Undefined ); SET_GLOBAL( FieldIdx_t Idx_ParTime, Idx_Undefined ); +SET_GLOBAL( FieldIdx_t Idx_ParType, Idx_Undefined ); #ifdef STORE_PAR_ACC SET_GLOBAL( FieldIdx_t Idx_ParAccX, Idx_Undefined ); SET_GLOBAL( FieldIdx_t Idx_ParAccY, Idx_Undefined ); @@ -93,7 +107,8 @@ SET_GLOBAL( const char *PotLabel, "Pote" ); // potential label is currently fix SET_GLOBAL( char MagLabel[NCOMP_MAG][MAX_STRING] ); #endif #ifdef PARTICLE -SET_GLOBAL( char ParAttLabel[PAR_NATT_TOTAL][MAX_STRING] ); +SET_GLOBAL( char ParAttFltLabel[PAR_NATT_FLT_TOTAL][MAX_STRING] ); +SET_GLOBAL( char ParAttIntLabel[PAR_NATT_INT_TOTAL][MAX_STRING] ); #endif diff --git a/include/GAMER.h b/include/GAMER.h index 51b089e0fc..eb1aae3622 100644 --- a/include/GAMER.h +++ b/include/GAMER.h @@ -52,12 +52,6 @@ #endif // #if ( SUPPORT_FFTW == FFTW3 ) ... #elif ( SUPPORT_FFTW == FFTW2 ) #ifdef SUPPORT_GRACKLE -#ifdef FLOAT8 -# define CONFIG_BFLOAT_8 -#else -# define CONFIG_BFLOAT_4 -#endif - extern "C" { # include } @@ -89,6 +83,9 @@ extern "C" { # include "Serial.h" #endif +#ifdef SUPPORT_SPECTRAL_INT +# include "GramFE_Interpolation.h" +#endif #endif // #ifndef __GAMER_H__ diff --git a/include/GSL.h b/include/GSL.h index 430d83fc91..742dc2f047 100644 --- a/include/GSL.h +++ b/include/GSL.h @@ -3,6 +3,8 @@ #ifdef SUPPORT_GSL + + // **************************************************************************** // ** This header defines wrappers for functions in the GSL library ** // ** in single and double precision. ** @@ -18,122 +20,126 @@ namespace gsl_double_precision { - using gsl_real = double; - using complex = gsl_complex; - using vector = gsl_vector; - using vector_view = gsl_vector_view; - using vector_const_view = gsl_vector_const_view; - using vector_complex = gsl_vector_complex; - using vector_complex_view = gsl_vector_complex_view; - using vector_complex_const_view = gsl_vector_complex_const_view; - using matrix = gsl_matrix; - using matrix_view = gsl_matrix_view; - using matrix_const_view = gsl_matrix_const_view; - using matrix_complex = gsl_matrix_complex; - using matrix_complex_view = gsl_matrix_complex_view; - using matrix_complex_const_view = gsl_matrix_complex_const_view; - using permutation = gsl_permutation; - const auto sf_gegenpoly_n = gsl_sf_gegenpoly_n; - const auto vector_alloc = gsl_vector_alloc; - const auto vector_free = gsl_vector_free; - const auto vector_view_array = gsl_vector_view_array; - const auto vector_const_view_array = gsl_vector_const_view_array; - const auto vector_const_subvector = gsl_vector_const_subvector; - const auto vector_complex_alloc = gsl_vector_complex_alloc; - const auto vector_complex_free = gsl_vector_complex_free; - const auto vector_complex_view_array = gsl_vector_complex_view_array; - const auto vector_complex_const_view_array = gsl_vector_complex_const_view_array; - const auto vector_complex_const_subvector = gsl_vector_complex_const_subvector; - const auto matrix_alloc = gsl_matrix_alloc; - const auto matrix_free = gsl_matrix_free; - const auto matrix_view_array = gsl_matrix_view_array; - const auto matrix_const_view_array = gsl_matrix_const_view_array; - const auto matrix_const_submatrix = gsl_matrix_const_submatrix; - const auto matrix_transpose = gsl_matrix_transpose; - const auto matrix_complex_alloc = gsl_matrix_complex_alloc; - const auto matrix_complex_free = gsl_matrix_complex_free; - const auto matrix_complex_view_array = gsl_matrix_complex_view_array; - const auto matrix_complex_const_view_array = gsl_matrix_complex_const_view_array; - const auto matrix_complex_const_submatrix = gsl_matrix_complex_const_submatrix; - const auto matrix_complex_transpose = gsl_matrix_complex_transpose; - const auto permutation_alloc = gsl_permutation_alloc; - const auto permutation_free = gsl_permutation_free; - const auto permute_vector = gsl_permute_vector; - const auto permute_vector_complex = gsl_permute_vector_complex; - const auto linalg_complex_LU_decomp = gsl_linalg_complex_LU_decomp; - const auto linalg_complex_LU_svx = gsl_linalg_complex_LU_svx; - const auto vector_set = gsl_vector_set; - const auto vector_get = gsl_vector_get; - const auto vector_complex_set = gsl_vector_complex_set; - const auto vector_complex_get = gsl_vector_complex_get; - const auto matrix_set = gsl_matrix_set; - const auto matrix_get = gsl_matrix_get; - const auto matrix_complex_set = gsl_matrix_complex_set; - const auto matrix_complex_get = gsl_matrix_complex_get; - const auto blas_cgemv = gsl_blas_zgemv; - const auto blas_ctrsv = gsl_blas_ztrsv; - const auto blas_sgemv = gsl_blas_dgemv; - const auto blas_sgemm = gsl_blas_dgemm; + using gsl_real = double; + using complex = gsl_complex; + using vector = gsl_vector; + using vector_view = gsl_vector_view; + using vector_const_view = gsl_vector_const_view; + using vector_complex = gsl_vector_complex; + using vector_complex_view = gsl_vector_complex_view; + using vector_complex_const_view = gsl_vector_complex_const_view; + using matrix = gsl_matrix; + using matrix_view = gsl_matrix_view; + using matrix_const_view = gsl_matrix_const_view; + using matrix_complex = gsl_matrix_complex; + using matrix_complex_view = gsl_matrix_complex_view; + using matrix_complex_const_view = gsl_matrix_complex_const_view; + using permutation = gsl_permutation; + const auto sf_gegenpoly_n = gsl_sf_gegenpoly_n; + const auto vector_alloc = gsl_vector_alloc; + const auto vector_free = gsl_vector_free; + const auto vector_view_array = gsl_vector_view_array; + const auto vector_const_view_array = gsl_vector_const_view_array; + const auto vector_const_subvector = gsl_vector_const_subvector; + const auto vector_complex_alloc = gsl_vector_complex_alloc; + const auto vector_complex_free = gsl_vector_complex_free; + const auto vector_complex_view_array = gsl_vector_complex_view_array; + const auto vector_complex_const_view_array = gsl_vector_complex_const_view_array; + const auto vector_complex_const_subvector = gsl_vector_complex_const_subvector; + const auto matrix_alloc = gsl_matrix_alloc; + const auto matrix_free = gsl_matrix_free; + const auto matrix_view_array = gsl_matrix_view_array; + const auto matrix_const_view_array = gsl_matrix_const_view_array; + const auto matrix_const_submatrix = gsl_matrix_const_submatrix; + const auto matrix_transpose = gsl_matrix_transpose; + const auto matrix_complex_alloc = gsl_matrix_complex_alloc; + const auto matrix_complex_free = gsl_matrix_complex_free; + const auto matrix_complex_view_array = gsl_matrix_complex_view_array; + const auto matrix_complex_const_view_array = gsl_matrix_complex_const_view_array; + const auto matrix_complex_const_submatrix = gsl_matrix_complex_const_submatrix; + const auto matrix_complex_transpose = gsl_matrix_complex_transpose; + const auto permutation_alloc = gsl_permutation_alloc; + const auto permutation_free = gsl_permutation_free; + const auto permute_vector = gsl_permute_vector; + const auto permute_vector_complex = gsl_permute_vector_complex; + const auto linalg_complex_LU_decomp = gsl_linalg_complex_LU_decomp; + const auto linalg_complex_LU_svx = gsl_linalg_complex_LU_svx; + const auto vector_set = gsl_vector_set; + const auto vector_get = gsl_vector_get; + const auto vector_complex_set = gsl_vector_complex_set; + const auto vector_complex_get = gsl_vector_complex_get; + const auto matrix_set = gsl_matrix_set; + const auto matrix_get = gsl_matrix_get; + const auto matrix_complex_set = gsl_matrix_complex_set; + const auto matrix_complex_get = gsl_matrix_complex_get; + const auto blas_cgemv = gsl_blas_zgemv; + const auto blas_ctrsv = gsl_blas_ztrsv; + const auto blas_sgemv = gsl_blas_dgemv; + const auto blas_sgemm = gsl_blas_dgemm; + const auto blas_cgemm = gsl_blas_zgemm; }; namespace gsl_single_precision { - using gsl_real = float; - using complex = gsl_complex_float; - using vector = gsl_vector_float; - using vector_view = gsl_vector_float_view; - using vector_const_view = gsl_vector_float_const_view; - using vector_complex = gsl_vector_complex_float; - using vector_complex_view = gsl_vector_complex_float_view; - using vector_complex_const_view = gsl_vector_complex_float_const_view; - using matrix = gsl_matrix_float; - using matrix_view = gsl_matrix_float_view; - using matrix_const_view = gsl_matrix_float_const_view; - using matrix_complex = gsl_matrix_complex_float; - using matrix_complex_view = gsl_matrix_complex_float_view; - using matrix_complex_const_view = gsl_matrix_complex_float_const_view; - using permutation = gsl_permutation; - const auto sf_gegenpoly_n = gsl_sf_gegenpoly_n; - const auto vector_alloc = gsl_vector_float_alloc; - const auto vector_free = gsl_vector_float_free; - const auto vector_view_array = gsl_vector_float_view_array; - const auto vector_const_view_array = gsl_vector_float_const_view_array; - const auto vector_const_subvector = gsl_vector_float_const_subvector; - const auto vector_complex_alloc = gsl_vector_complex_float_alloc; - const auto vector_complex_free = gsl_vector_complex_float_free; - const auto vector_complex_view_array = gsl_vector_complex_float_view_array; - const auto vector_complex_const_view_array = gsl_vector_complex_float_const_view_array; - const auto vector_complex_const_subvector = gsl_vector_complex_float_const_subvector; - const auto matrix_alloc = gsl_matrix_float_alloc; - const auto matrix_free = gsl_matrix_float_free; - const auto matrix_view_array = gsl_matrix_float_view_array; - const auto matrix_const_view_array = gsl_matrix_float_const_view_array; - const auto matrix_const_submatrix = gsl_matrix_float_const_submatrix; - const auto matrix_transpose = gsl_matrix_float_transpose; - const auto matrix_complex_alloc = gsl_matrix_complex_float_alloc; - const auto matrix_complex_free = gsl_matrix_complex_float_free; - const auto matrix_complex_view_array = gsl_matrix_complex_float_view_array; - const auto matrix_complex_const_view_array = gsl_matrix_complex_float_const_view_array; - const auto matrix_complex_const_submatrix = gsl_matrix_complex_float_const_submatrix; - const auto matrix_complex_transpose = gsl_matrix_complex_float_transpose; - const auto permutation_alloc = gsl_permutation_alloc; - const auto permutation_free = gsl_permutation_free; - const auto permute_vector = gsl_permute_vector_float; - const auto permute_vector_complex = gsl_permute_vector_complex_float; - const auto linalg_complex_LU_decomp = gsl_linalg_complex_LU_decomp; - const auto linalg_complex_LU_svx = gsl_linalg_complex_LU_svx; - const auto vector_set = gsl_vector_float_set; - const auto vector_get = gsl_vector_float_get; - const auto vector_complex_set = gsl_vector_complex_float_set; - const auto vector_complex_get = gsl_vector_complex_float_get; - const auto matrix_set = gsl_matrix_float_set; - const auto matrix_get = gsl_matrix_float_get; - const auto matrix_complex_set = gsl_matrix_complex_float_set; - const auto matrix_complex_get = gsl_matrix_complex_float_get; - const auto blas_cgemv = gsl_blas_cgemv; - const auto blas_ctrsv = gsl_blas_ctrsv; - const auto blas_sgemv = gsl_blas_sgemv; - const auto blas_sgemm = gsl_blas_sgemm; + using gsl_real = float; + using complex = gsl_complex_float; + using vector = gsl_vector_float; + using vector_view = gsl_vector_float_view; + using vector_const_view = gsl_vector_float_const_view; + using vector_complex = gsl_vector_complex_float; + using vector_complex_view = gsl_vector_complex_float_view; + using vector_complex_const_view = gsl_vector_complex_float_const_view; + using matrix = gsl_matrix_float; + using matrix_view = gsl_matrix_float_view; + using matrix_const_view = gsl_matrix_float_const_view; + using matrix_complex = gsl_matrix_complex_float; + using matrix_complex_view = gsl_matrix_complex_float_view; + using matrix_complex_const_view = gsl_matrix_complex_float_const_view; + using permutation = gsl_permutation; + const auto sf_gegenpoly_n = gsl_sf_gegenpoly_n; + const auto vector_alloc = gsl_vector_float_alloc; + const auto vector_free = gsl_vector_float_free; + const auto vector_view_array = gsl_vector_float_view_array; + const auto vector_const_view_array = gsl_vector_float_const_view_array; + const auto vector_const_subvector = gsl_vector_float_const_subvector; + const auto vector_complex_alloc = gsl_vector_complex_float_alloc; + const auto vector_complex_free = gsl_vector_complex_float_free; + const auto vector_complex_view_array = gsl_vector_complex_float_view_array; + const auto vector_complex_const_view_array = gsl_vector_complex_float_const_view_array; + const auto vector_complex_const_subvector = gsl_vector_complex_float_const_subvector; + const auto matrix_alloc = gsl_matrix_float_alloc; + const auto matrix_free = gsl_matrix_float_free; + const auto matrix_view_array = gsl_matrix_float_view_array; + const auto matrix_const_view_array = gsl_matrix_float_const_view_array; + const auto matrix_const_submatrix = gsl_matrix_float_const_submatrix; + const auto matrix_transpose = gsl_matrix_float_transpose; + const auto matrix_complex_alloc = gsl_matrix_complex_float_alloc; + const auto matrix_complex_free = gsl_matrix_complex_float_free; + const auto matrix_complex_view_array = gsl_matrix_complex_float_view_array; + const auto matrix_complex_const_view_array = gsl_matrix_complex_float_const_view_array; + const auto matrix_complex_const_submatrix = gsl_matrix_complex_float_const_submatrix; + const auto matrix_complex_transpose = gsl_matrix_complex_float_transpose; + const auto permutation_alloc = gsl_permutation_alloc; + const auto permutation_free = gsl_permutation_free; + const auto permute_vector = gsl_permute_vector_float; + const auto permute_vector_complex = gsl_permute_vector_complex_float; + const auto linalg_complex_LU_decomp = gsl_linalg_complex_LU_decomp; + const auto linalg_complex_LU_svx = gsl_linalg_complex_LU_svx; + const auto vector_set = gsl_vector_float_set; + const auto vector_get = gsl_vector_float_get; + const auto vector_complex_set = gsl_vector_complex_float_set; + const auto vector_complex_get = gsl_vector_complex_float_get; + const auto matrix_set = gsl_matrix_float_set; + const auto matrix_get = gsl_matrix_float_get; + const auto matrix_complex_set = gsl_matrix_complex_float_set; + const auto matrix_complex_get = gsl_matrix_complex_float_get; + const auto blas_cgemv = gsl_blas_cgemv; + const auto blas_ctrsv = gsl_blas_ctrsv; + const auto blas_sgemv = gsl_blas_sgemv; + const auto blas_sgemm = gsl_blas_sgemm; + const auto blas_cgemm = gsl_blas_cgemm; }; + + #endif // #ifdef SUPPORT_GSL #endif // #ifndef __GAMER_GSL_H__ diff --git a/include/Global.h b/include/Global.h index 7740d8e9ab..30beccc53d 100644 --- a/include/Global.h +++ b/include/Global.h @@ -8,6 +8,7 @@ #ifdef SUPPORT_LIBYT #include #endif +#include "GatherTree.h" // ********************************************************************************************************** @@ -18,7 +19,8 @@ // 1. common global variables // ============================================================================================================ -extern AMR_t *amr; // AMR tree structure +extern AMR_t *amr; // local AMR tree structure +extern LB_GlobalTree *GlobalTree; // global AMR tree structure extern double Time[NLEVEL]; // "present" physical time at each level extern double Time_Prev[NLEVEL]; // "previous" physical time at each level extern double dTime_AllLv[NLEVEL]; // current evolution physical time interval at each level @@ -30,6 +32,8 @@ extern double dTime_Base; // physical time interval extern double FlagTable_Rho [NLEVEL-1]; // refinement criterion of density extern double FlagTable_RhoGradient[NLEVEL-1]; // refinement criterion of density gradient extern double FlagTable_Lohner [NLEVEL-1][5]; // refinement criterion based on Lohner's error estimator +extern double FlagTable_Angular [NLEVEL-1][3]; // refinement criterion based on angular resolution +extern double FlagTable_Radial [NLEVEL-1]; // refinement criterion based on radial resolution extern double *FlagTable_User [NLEVEL-1]; // user-defined refinement criterion extern double *DumpTable; // dump table recording the physical times to output data extern int DumpTable_NDump; // number of data dumps in the dump table @@ -64,7 +68,7 @@ extern int INIT_DUMPID, INIT_SUBSAMPLING_NCELL, OPT__TIMING_BARRIER, OPT_ extern double OUTPUT_PART_X, OUTPUT_PART_Y, OUTPUT_PART_Z, AUTO_REDUCE_DT_FACTOR, AUTO_REDUCE_DT_FACTOR_MIN; extern double AUTO_REDUCE_INT_MONO_FACTOR, AUTO_REDUCE_INT_MONO_MIN; extern double OPT__CK_MEMFREE, INT_MONO_COEFF, UNIT_L, UNIT_M, UNIT_T, UNIT_V, UNIT_D, UNIT_E, UNIT_P; -extern bool OPT__FLAG_RHO, OPT__FLAG_RHO_GRADIENT, OPT__FLAG_USER, OPT__FLAG_LOHNER_DENS, OPT__FLAG_REGION; +extern bool OPT__FLAG_RHO, OPT__FLAG_RHO_GRADIENT, OPT__FLAG_USER, OPT__FLAG_LOHNER_DENS, OPT__FLAG_REGION, OPT__FLAG_ANGULAR, OPT__FLAG_RADIAL; extern int OPT__FLAG_USER_NUM, MONO_MAX_ITER, OPT__RESET_FLUID_INIT; extern bool OPT__DT_USER, OPT__RECORD_DT, OPT__RECORD_MEMORY, OPT__MEMORY_POOL, OPT__RESTART_RESET; extern bool OPT__FIXUP_RESTRICT, OPT__INIT_RESTRICT, OPT__VERBOSE, OPT__MANUAL_CONTROL, OPT__UNIT; @@ -77,10 +81,14 @@ extern bool OPT__OPTIMIZE_AGGRESSIVE, OPT__INIT_GRID_WITH_OMP, OPT__NO_FLA extern bool OPT__RECORD_NOTE, OPT__RECORD_UNPHY, INT_OPP_SIGN_0TH_ORDER; extern bool OPT__INT_FRAC_PASSIVE_LR, OPT__CK_INPUT_FLUID, OPT__SORT_PATCH_BY_LBIDX; extern char OPT__OUTPUT_TEXT_FORMAT_FLT[MAX_STRING]; +extern int OPT__OUTPUT_TEXT_LENGTH_INT; extern int OPT__UM_IC_FLOAT8; extern double COM_CEN_X, COM_CEN_Y, COM_CEN_Z, COM_MAX_R, COM_MIN_RHO, COM_TOLERR_R; extern int COM_MAX_ITER; extern double ANGMOM_ORIGIN_X, ANGMOM_ORIGIN_Y, ANGMOM_ORIGIN_Z; +extern char OUTPUT_DIR[MAX_STRING-100]; +extern double FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, FLAG_ANGULAR_CEN_Z; +extern double FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, FLAG_RADIAL_CEN_Z; extern UM_IC_Format_t OPT__UM_IC_FORMAT; extern TestProbID_t TESTPROB_ID; @@ -138,11 +146,25 @@ extern bool OPT__OUTPUT_ENTHALPY; #elif ( MODEL == ELBDM ) extern double DT__PHASE, FlagTable_EngyDensity[NLEVEL-1][2]; -extern bool OPT__FLAG_ENGY_DENSITY, OPT__INT_PHASE, ELBDM_TAYLOR3_AUTO; +extern bool OPT__FLAG_ENGY_DENSITY, OPT__INT_PHASE, OPT__RES_PHASE, ELBDM_TAYLOR3_AUTO; extern double ELBDM_TAYLOR3_COEFF, ELBDM_MASS, ELBDM_PLANCK_CONST, ELBDM_ETA, MIN_DENS; #ifdef QUARTIC_SELF_INTERACTION extern double ELBDM_LAMBDA; #endif +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +extern bool OPT__FLAG_INTERFERENCE; +extern double FlagTable_Interference[NLEVEL-1][4]; +extern double DT__HYBRID_CFL, DT__HYBRID_CFL_INIT, DT__HYBRID_VELOCITY, DT__HYBRID_VELOCITY_INIT; +extern bool ELBDM_MATCH_PHASE; +extern int ELBDM_FIRST_WAVE_LEVEL; +#endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +extern bool OPT__FLAG_SPECTRAL; +extern int OPT__FLAG_SPECTRAL_N; +extern double FlagTable_Spectral[NLEVEL-1][2]; + +extern ELBDMRemoveMotionCM_t ELBDM_REMOVE_MOTION_CM; +extern bool ELBDM_BASE_SPECTRAL; #else # error : ERROR : unsupported MODEL !! @@ -201,6 +223,7 @@ extern double LB_INPUT__WLI_MAX; // LB->WLI_Max loaded from extern double LB_INPUT__PAR_WEIGHT; // LB->Par_Weight loaded from "Input__Parameter" #endif extern bool OPT__RECORD_LOAD_BALANCE; +extern bool OPT__LB_EXCHANGE_FATHER; #endif extern bool OPT__MINIMIZE_MPI_BARRIER; #ifdef SUPPORT_FFTW @@ -214,11 +237,12 @@ extern bool FFTW3_Double_OMP_Enabled, FFTW3_Single_OMP_Enabled; // ============================================================================================================ #ifdef PARTICLE extern double DT__PARVEL, DT__PARVEL_MAX, DT__PARACC; -extern bool OPT__CK_PARTICLE, OPT__FLAG_NPAR_CELL, OPT__FLAG_PAR_MASS_CELL, OPT__FREEZE_PAR; +extern bool OPT__CK_PARTICLE, OPT__FLAG_NPAR_CELL, OPT__FLAG_PAR_MASS_CELL, OPT__FREEZE_PAR, OPT__OUTPUT_PAR_MESH; extern int OPT__OUTPUT_PAR_MODE, OPT__PARTICLE_COUNT, OPT__FLAG_NPAR_PATCH, FlagTable_NParPatch[NLEVEL-1], FlagTable_NParCell[NLEVEL-1]; extern double FlagTable_ParMassCell[NLEVEL-1]; extern ParOutputDens_t OPT__OUTPUT_PAR_DENS; extern int PAR_IC_FLOAT8; +extern int PAR_IC_INT8; #endif @@ -338,6 +362,18 @@ extern bool FB_Any; extern int FB_ParaBuf; #endif +// (2-13) spectral interpolation +#ifdef SUPPORT_SPECTRAL_INT +extern char SPEC_INT_TABLE_PATH[MAX_STRING]; +extern int SPEC_INT_GHOST_BOUNDARY; +#if ( MODEL == ELBDM ) +extern bool SPEC_INT_XY_INSTEAD_DEPHA; +extern double SPEC_INT_VORTEX_THRESHOLD; +#endif +class InterpolationHandler; +extern InterpolationHandler Int_InterpolationHandler; +#endif // #ifdef SUPPORT_SPECTRAL_INT + // (2-13) cosmic ray // ======================================================================================================= @@ -374,6 +410,15 @@ extern real (*h_Mag_Array_F_In [2])[NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ]; extern real (*h_Mag_Array_F_Out[2])[NCOMP_MAG][ PS2P1*SQR(PS2) ]; extern real (*h_Ele_Array [2])[9][NCOMP_ELE][ PS2P1*PS2 ]; #endif +#if ( MODEL == ELBDM ) +extern bool (*h_IsCompletelyRefined[2]); +#endif +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +extern bool (*h_HasWaveCounterpart[2])[ CUBE(HYB_NXT) ]; +#endif +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +extern gramfe_matmul_float (*h_GramFE_TimeEvo)[ 2*FLU_NXT ]; +#endif #ifdef GRAVITY extern real (*h_Rho_Array_P [2])[RHO_NXT][RHO_NXT][RHO_NXT]; @@ -398,7 +443,7 @@ extern real (*h_Flu_Array_USG_G [2])[GRA_NIN-1][PS1][PS1][PS1]; #endif // #ifdef GRAVITY #ifdef SUPPORT_GRACKLE -extern real (*h_Che_Array[2]); +extern real_che (*h_Che_Array[2]); // do not declare Grackle variables for CUDA source files since they do not include #ifndef __CUDACC__ extern grackle_field_data *Che_FieldData; diff --git a/include/GramFE_ExtensionTables.h b/include/GramFE_ExtensionTables.h new file mode 100644 index 0000000000..f086131ee8 --- /dev/null +++ b/include/GramFE_ExtensionTables.h @@ -0,0 +1,627 @@ +#ifndef __GRAM_EXTENSION_TABLES_H__ +#define __GRAM_EXTENSION_TABLES_H__ + + + +#include "CUFLU.h" +#include "Macro.h" + +#if ( MODEL == ELBDM && WAVE_SCHEME == WAVE_GRAMFE ) + + + +// ********************************************************************************************************** +// ** Precomputed (at least) double precision values of Gram polynomials and their periodic Fourier ** +// ** extensions as used in the Gram-Fourier extension algorithm. ** +// ** For FFT algorithm: ** +// ** GRAMFE_NDELTA = 14 ** +// ** GRAMFE_ND = 24, 26, 28, 30, 32 ** +// ** GRAMFE_ORDER = GRAMFE_ORDER ** +// ** ** +// ** For matrix multiplication algorithm: ** +// ** PATCH_SIZE = 8, 16 ** +// ** GRAMFE_NDELTA = 14 ** +// ** GRAMFE_ND = 32 ** +// ** GRAMFE_ORDER = 14 ** +// ********************************************************************************************************** + + +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + +# if ( PATCH_SIZE == 8 && GRAMFE_ND == 32 && GRAMFE_NDELTA == 14 && GRAMFE_ORDER == 14 ) + +const static __float128 GramFE_FFT[2 * GRAMFE_FLU_NXT * GRAMFE_FLU_NXT] = { +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 2.71393355889744396227394602664786725e-256q, 1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.18779246928701395062593119994335117e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.66165137967658364321486983154515733e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.27336589284599135807768168558629142e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.35893931640496906129247871292290942e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 1.16519355183409790889169608034951314e-257q, 1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.71393355889744396227394602664786725e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 5.42786711779488792454789205329573451e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.63465052196464628889241132457627623e-256q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -6.51344054135386621928878216401970799e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.08057973690826005122698192124748013e-255q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, -2.18779246928701395062593119994335117e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 1.66165137967658364321486983154515733e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 3.27336589284599135807768168558629142e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, -4.35893931640496906129247871292290942e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 4.37558493857402790125186239988670233e-256q, 1.16519355183409790889169608034951314e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -2.25437495796324812741127978102381184e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 3.32330275935316728642973966309031467e-256q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -6.53008616352292505924816585098350091e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, -1.98804500325831142026988545670196915e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 6.54673178569198271615536337117258284e-256q, 2.28766620230136521580395407156404217e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -8.68458738847182162571837621869294399e-256q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, -8.70123301064088046567775990565673690e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -6.58002303003010039607413074510016866e-256q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 8.71787863280993812258495742584581884e-256q, 4.45881304941932032647050158454360043e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -6.59666865219915923603351443206396158e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -2.18779246928701395062593119994335117e-256q, -1.00000000000000000000000000000000000e+00q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -1.00000000000000000000000000000000000e+00q, 4.37558493857402790125186239988670233e-256q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -1.92146251458207724348453687562150848e-256q, 1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 1.66165137967658364321486983154515733e-256q, 1.00000000000000000000000000000000000e+00q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.00000000000000000000000000000000000e+00q, 3.32330275935316728642973966309031467e-256q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.16519355183409790889169608034951314e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 2.33038710366819581778339216069902629e-257q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 3.27336589284599135807768168558629142e-256q, 1.00000000000000000000000000000000000e+00q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.00000000000000000000000000000000000e+00q, 6.54673178569198271615536337117258284e-256q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -4.49210429375743741486317587508383076e-256q, -1.00000000000000000000000000000000000e+00q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.71393355889744396227394602664786725e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 5.42786711779488792454789205329573451e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.63465052196464628889241132457627623e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -6.51344054135386621928878216401970799e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.08057973690826005122698192124748013e-255q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -8.68458738847182162571837621869294399e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.29769442162005571017515994339227482e-255q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.08557342355897758490957841065914690e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.72693010439292925777848226491525525e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.51480910633185113251290073218212733e-255q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.30268810827077324385775643280394160e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.09056711020969535520261213342575587e-255q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.73192379104364679146107875432692202e-255q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.58540146993867635298512690796121609e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.16115947381652010245396384249496025e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.83439798799334881924845706781765824e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -6.66325114087539341281886301314442225e-256q, -1.00000000000000000000000000000000000e+00q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -6.58002303003010039607413074510016866e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.73525291547745855945295549171968060e-255q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.16615316046723763613656033190662703e-255q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -4.35893931640496906129247871292290942e-256q, -1.00000000000000000000000000000000000e+00q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -1.00000000000000000000000000000000000e+00q, 8.71787863280993812258495742584581884e-256q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -8.83439798799334881924845706781765824e-256q, -1.00000000000000000000000000000000000e+00q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, -1.00000000000000000000000000000000000e+00q, 4.37558493857402790125186239988670233e-256q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -1.00000000000000000000000000000000000e+00q, 3.32330275935316728642973966309031467e-256q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -1.00000000000000000000000000000000000e+00q, 6.54673178569198271615536337117258284e-256q, 1.00000000000000000000000000000000000e+00q, -8.68458738847182162571837621869294399e-256q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 1.00000000000000000000000000000000000e+00q, -6.58002303003010039607413074510016866e-256q, -1.00000000000000000000000000000000000e+00q, 8.71787863280993812258495742584581884e-256q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, 1.00000000000000000000000000000000000e+00q, -4.47545867158837916642988527150739334e-256q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 1.00000000000000000000000000000000000e+00q, -8.75116987714805580250372479977340466e-256q, -1.00000000000000000000000000000000000e+00q, 2.33038710366819581778339216069902629e-257q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -1.00000000000000000000000000000000000e+00q, 4.50874991592649625482255956204762367e-256q, 1.00000000000000000000000000000000000e+00q, -6.64660551870633457285947932618062934e-256q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, -1.00000000000000000000000000000000000e+00q, 1.30601723270458501184963317019670018e-255q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -1.00000000000000000000000000000000000e+00q, -3.97609000651662284053977091340393831e-256q, 1.00000000000000000000000000000000000e+00q, -8.81775236582428997928907338085386533e-256q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 1.00000000000000000000000000000000000e+00q, -1.30934635713839654323107267423451657e-255q, -1.00000000000000000000000000000000000e+00q, 4.57533240460273043160790814312808434e-256q, 1.00000000000000000000000000000000000e+00q, -1.73691747769436432514367524373858880e-255q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, 1.00000000000000000000000000000000000e+00q, -3.32912443381170846956362087690593635e-257q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, 1.00000000000000000000000000000000000e+00q, -4.60862364894084752000058243366831468e-256q, -1.00000000000000000000000000000000000e+00q, 1.74024660212817609313555198113134738e-255q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 1.00000000000000000000000000000000000e+00q, -1.31600460600602007921482614902003373e-255q, -1.00000000000000000000000000000000000e+00q, 4.64191489327896460839325672420854501e-256q, 1.00000000000000000000000000000000000e+00q, -1.74357572656198762451699148516916377e-255q, -1.00000000000000000000000000000000000e+00q, 8.91762609883864065294100316908720085e-256q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, -1.00000000000000000000000000000000000e+00q, 1.31933373043983184720670288641279232e-255q, 1.00000000000000000000000000000000000e+00q, -4.67520613761708169678593101474877535e-256q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -2.18779246928701395062593119994335117e-256q, -1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 4.37558493857402790125186239988670233e-256q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 1.00000000000000000000000000000000000e+00q, -8.75116987714805580250372479977340466e-256q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -2.15949491159961457337368132383099425e-255q, -1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 4.65856051544802285682654732778498244e-256q, 1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 1.16519355183409790889169608034951314e-257q, 1.00000000000000000000000000000000000e+00q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.00000000000000000000000000000000000e+00q, 2.33038710366819581778339216069902629e-257q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.92146251458207724348453687562150848e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -6.66325114087539341281886301314442225e-256q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -3.84292502916415448696907375124301697e-256q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.49431798564580619360341286869690090e-257q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -2.25437495796324812741127978102381184e-256q, -1.00000000000000000000000000000000000e+00q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.00000000000000000000000000000000000e+00q, 4.50874991592649625482255956204762367e-256q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -3.89286189567133041532113172874704021e-256q, 1.00000000000000000000000000000000000e+00q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 1.66165137967658364321486983154515733e-256q, 1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 3.32330275935316728642973966309031467e-256q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 1.00000000000000000000000000000000000e+00q, -6.64660551870633457285947932618062934e-256q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.16266821212112302760024942420478467e-257q, 1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 4.64191489327896460839325672420854501e-256q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -8.96756296534581717281915422997857959e-256q, -1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.16519355183409790889169608034951314e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.33038710366819581778339216069902629e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.82975576873995214367350651880248132e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.16266821212112302760024942420478467e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.32912443381170846956362087690593635e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82849309888346516515754341212648855e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.16140554226463604908428631752879191e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.32786176395522149104765777022994358e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.49431798564580619360341286869690090e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -4.66077420733639163556678432139805258e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.82723042902697707753015577409920425e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.16014287240814796145689867950150761e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -6.53008616352292505924816585098350091e-256q, -1.00000000000000000000000000000000000e+00q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.00000000000000000000000000000000000e+00q, 1.30601723270458501184963317019670018e-255q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 3.02462452601298473134320497495258787e-255q, 1.00000000000000000000000000000000000e+00q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.98804500325831142026988545670196915e-256q, 1.00000000000000000000000000000000000e+00q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -1.00000000000000000000000000000000000e+00q, -3.97609000651662284053977091340393831e-256q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -4.69185175978613994521922161832521277e-256q, -1.00000000000000000000000000000000000e+00q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -8.81775236582428997928907338085386533e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.74524028877889362681814847054301416e-255q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.32266285487364337858814239045060870e-255q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.00085420968393366968573543713145443e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 2.60870534097535801909695236964569959e-255q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.18612790707010824408782075626317852e-255q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 4.49431798564580619360341286869690090e-257q, 1.00000000000000000000000000000000000e+00q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.27336589284599135807768168558629142e-256q, 1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 6.54673178569198271615536337117258284e-256q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -4.49210429375743741486317587508383076e-256q, -1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 1.00000000000000000000000000000000000e+00q, -1.30934635713839654323107267423451657e-255q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 2.16948228490104964073887430265432780e-255q, 1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 8.98420858751487482972635175016766152e-256q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -1.75855678651414046217521818675910629e-255q, -1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 2.28766620230136521580395407156404217e-256q, 1.00000000000000000000000000000000000e+00q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -1.00000000000000000000000000000000000e+00q, 4.57533240460273043160790814312808434e-256q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 3.79298816265697915014310885712634921e-256q, -1.00000000000000000000000000000000000e+00q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 2.71393355889744396227394602664786725e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 5.42786711779488792454789205329573451e-256q, -8.63465052196464628889241132457627623e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -6.51344054135386621928878216401970799e-256q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, -1.08057973690826005122698192124748013e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -8.68458738847182162571837621869294399e-256q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, -1.29769442162005571017515994339227482e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.08557342355897758490957841065914690e-255q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.72693010439292925777848226491525525e-255q, -1.51480910633185113251290073218212733e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.30268810827077324385775643280394160e-255q, 1.09056711020969535520261213342575587e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, -1.73192379104364679146107875432692202e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.58540146993867635298512690796121609e-255q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.16115947381652010245396384249496025e-255q, -8.83439798799334881924845706781765824e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.73691747769436432514367524373858880e-255q, 2.59039515658939388666772339737288287e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, -2.16615316046723763613656033190662703e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, 1.74191116434508185882627173315025557e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.59538884324011142035031988678454965e-255q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795516981915682131829380e-255q, 3.02462452601298473134320497495258787e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -2.60038252989082895403291637619621642e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -3.45386020878585851555696452983051049e-255q, 2.17614053376867317672262777743984497e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 3.02961821266370226502580146436425465e-255q, -1.75189853764651692619146471197358913e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.60537621654154648771551286560788320e-255q, 3.45885389543657604923956101924217727e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.18113422041939071040522426685151174e-255q, -3.03461189931441979870839795377592143e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, 2.61036990319226402139810935501954997e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 3.46384758208729358292215750865384405e-255q, -2.18612790707010824408782075626317852e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -5.17080293987735270597025381592243219e-255q, 3.89308326486016689391504259682188227e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.61536358984298155508070584443121675e-255q, -1.33764391482579621624636909204055123e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.32231894763304020490792768498992050e-255q, 3.04459927261585533929446539930913937e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.76687959759866976384969141356353165e-255q, -4.75155463040591398912168723986784312e-255q, -1.00000000000000000000000000000000000e+00q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 1.00000000000000000000000000000000000e+00q, -3.32912443381170846956362087690593635e-257q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -4.16140554226463604908428631752879191e-257q, -1.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 2.18945703150391977546926026030099491e-255q, 1.00000000000000000000000000000000000e+00q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -3.03461189931441979870839795377592143e-255q, -1.00000000000000000000000000000000000e+00q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -4.60862364894084752000058243366831468e-256q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 4.32786176395522149104765777022994358e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.00085420968393366968573543713145443e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.82501673713860829878991878048613411e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, -7.91888876869512918421296061965500177e-256q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -8.70123301064088046567775990565673690e-256q, -1.00000000000000000000000000000000000e+00q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -1.00000000000000000000000000000000000e+00q, 1.74024660212817609313555198113134738e-255q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 2.61036990319226402139810935501954997e-255q, 1.00000000000000000000000000000000000e+00q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -6.66325114087539341281886301314442225e-256q, -1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 2.17614053376867317672262777743984497e-255q, 1.00000000000000000000000000000000000e+00q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -1.00000000000000000000000000000000000e+00q, 1.33265022817507868256377260262888445e-255q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -4.89159922581484247557526736156659478e-256q, -1.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 2.07626680075432179323938628914168287e-255q, -1.00000000000000000000000000000000000e+00q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -6.58002303003010039607413074510016866e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.73525291547745855945295549171968060e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.16615316046723763613656033190662703e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.31600460600602007921482614902003373e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.65856051544802285682654732778498244e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.96756296534581717281915422997857959e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.17780509598557870580291029610381097e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.60870534097535801909695236964569959e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.75855678651414046217521818675910629e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -9.08408232052922668643046770517570802e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.18945703150391977546926026030099491e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.47050583095491711890591098343936121e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.89159922581484247557526736156659478e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.77020872203248129523113091760134804e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.05125752148347840205734440738477214e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.33230632093447527227312066381325406e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.35096041256104305160343880825664336e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -1.00000000000000000000000000000000000e+00q, 4.64191489327896460839325672420854501e-256q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -3.69311442964262788496508598550565820e-256q, 1.00000000000000000000000000000000000e+00q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -4.35893931640496906129247871292290942e-256q, -1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 8.71787863280993812258495742584581884e-256q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 1.00000000000000000000000000000000000e+00q, -1.74357572656198762451699148516916377e-255q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -2.17946965820248470810406728147766136e-255q, -1.00000000000000000000000000000000000e+00q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -1.00000000000000000000000000000000000e+00q, 2.61536358984298155508070584443121675e-255q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.05125752148347840205734440738477214e-255q, 1.00000000000000000000000000000000000e+00q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 4.45881304941932032647050158454360043e-256q, 1.00000000000000000000000000000000000e+00q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -1.00000000000000000000000000000000000e+00q, 8.91762609883864065294100316908720085e-256q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.33764391482579621624636909204055123e-255q, -1.00000000000000000000000000000000000e+00q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.49431798564580619360341286869690090e-257q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.07626680075432179323938628914168287e-255q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -5.99242398086107517127375594300726599e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 6.99116131100458856246160101344837040e-257q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.05629205415145142189856309814007357e-255q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -6.59666865219915923603351443206396158e-256q, -1.00000000000000000000000000000000000e+00q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -1.00000000000000000000000000000000000e+00q, 1.31933373043983184720670288641279232e-255q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 3.04459927261585533929446539930913937e-255q, 1.00000000000000000000000000000000000e+00q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -8.83439798799334881924845706781765824e-256q, -1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 1.00000000000000000000000000000000000e+00q, -4.67520613761708169678593101474877535e-256q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 5.16014287240814796145689867950150761e-257q, 1.00000000000000000000000000000000000e+00q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -1.00000000000000000000000000000000000e+00q, 1.76687959759866976384969141356353165e-255q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -1.35096041256104305160343880825664336e-255q, -1.00000000000000000000000000000000000e+00q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, 9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, 9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, 8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, 7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, 5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, 4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, 1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, 9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -9.80171403295606036287779261328978464e-02q, 9.95184726672196928731750631413888186e-01q, -1.95090322016128275839363936938752886e-01q, 9.80785280403230430579242238309234381e-01q, -2.90284677254462386564171083591645584e-01q, 9.56940335732208824381928025104571134e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.71396736825997642039709489836241119e-01q, 8.81921264348355049556005269550951198e-01q, -5.55570233019602177648721408331766725e-01q, 8.31469612302545235671402679145103320e-01q, -6.34393284163645487794269683945458382e-01q, 7.73010453362736993376813643408240750e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.73010453362736993376813643408240750e-01q, 6.34393284163645487794269683945458382e-01q, -8.31469612302545235671402679145103320e-01q, 5.55570233019602177648721408331766725e-01q, -8.81921264348355049556005269550951198e-01q, 4.71396736825997642039709489836241119e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.56940335732208824381928025104571134e-01q, 2.90284677254462386564171083591645584e-01q, -9.80785280403230430579242238309234381e-01q, 1.95090322016128275839363936938752886e-01q, -9.95184726672196928731750631413888186e-01q, 9.80171403295606036287779261328978464e-02q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, -9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, -9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, -8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, -7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, -5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, -4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, -1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, -9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, -4.75155463040591398912168723986784312e-255q, -1.00000000000000000000000000000000000e+00q, 9.80171403295606036287779261328978464e-02q, -9.95184726672196928731750631413888186e-01q, 1.95090322016128275839363936938752886e-01q, -9.80785280403230430579242238309234381e-01q, 2.90284677254462386564171083591645584e-01q, -9.56940335732208824381928025104571134e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.71396736825997642039709489836241119e-01q, -8.81921264348355049556005269550951198e-01q, 5.55570233019602177648721408331766725e-01q, -8.31469612302545235671402679145103320e-01q, 6.34393284163645487794269683945458382e-01q, -7.73010453362736993376813643408240750e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.73010453362736993376813643408240750e-01q, -6.34393284163645487794269683945458382e-01q, 8.31469612302545235671402679145103320e-01q, -5.55570233019602177648721408331766725e-01q, 8.81921264348355049556005269550951198e-01q, -4.71396736825997642039709489836241119e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.56940335732208824381928025104571134e-01q, -2.90284677254462386564171083591645584e-01q, 9.80785280403230430579242238309234381e-01q, -1.95090322016128275839363936938752886e-01q, 9.95184726672196928731750631413888186e-01q, -9.80171403295606036287779261328978464e-02q, +}; +const static __float128 GramFE_IFFT[2 * PS2 * GRAMFE_FLU_NXT] = { +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.09264127724325663242917120886410970e-259q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -2.18528255448651326485834241772821940e-259q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 8.48104237155451330636560177606732812e-259q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 4.37056510897302652971668483545643881e-259q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -2.60087846391539716963880377548957973e-260q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -1.69620847431090266127312035521346562e-258q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.28516074805275398360822866115237669e-258q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 8.74113021794605305943336967091287761e-259q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -4.63065295536456628278445273030198830e-259q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -5.20175692783079433927760755097915946e-260q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.72221725895005663657989714469802057e-258q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 3.39241694862180532254624071042693125e-258q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -9.00121806433759281250113756575842711e-259q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -2.57032149610550796721645732230475338e-258q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 7.80263539174619259203303684536648483e-260q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 1.74822604358921061188667393418257552e-258q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -3.41842573326095929785301749991148620e-258q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -9.26130591072913256556890546060397660e-259q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 2.59633028074466194252323411178930833e-258q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 1.04035138556615886785552151019583189e-259q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.77423482822836458719345072366713047e-258q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -3.44443451790011327315979428939604115e-258q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.11463420757186149699637763372858035e-258q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 6.78483389724361064509248142085386249e-258q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.30043923195769862092328940504138139e-259q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -1.80024361286751856250022751315168542e-258q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 3.47044330253926724846657107888059610e-258q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.56250000000000000000000000000000000e-02q, 5.14064299221101593443291464460950677e-258q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -6.81084268188276415826949798894204597e-258q, 1.56250000000000000000000000000000000e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.56250000000000000000000000000000000e-02q, -1.56052707834923851840660736907329697e-259q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.82625239750667253780700430263624037e-258q, -1.56250000000000000000000000000000000e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -4.63065295536456628278445273030198830e-259q, 1.56250000000000000000000000000000000e-02q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.56250000000000000000000000000000000e-02q, -9.26130591072913256556890546060397660e-259q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 3.47044330253926724846657107888059610e-258q, -1.56250000000000000000000000000000000e-02q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -2.60087846391539716963880377548957973e-260q, 1.56250000000000000000000000000000000e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.56250000000000000000000000000000000e-02q, -5.20175692783079433927760755097915946e-260q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 7.80263539174619259203303684536648483e-260q, -1.56250000000000000000000000000000000e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.56250000000000000000000000000000000e-02q, 1.04035138556615886785552151019583189e-259q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.30043923195769862092328940504138139e-259q, 1.56250000000000000000000000000000000e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.56250000000000000000000000000000000e-02q, -1.56052707834923851840660736907329697e-259q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.82061492474077798264327512554611429e-259q, -1.56250000000000000000000000000000000e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.72221725895005663657989714469802057e-258q, -1.56250000000000000000000000000000000e-02q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.56250000000000000000000000000000000e-02q, -3.44443451790011327315979428939604115e-258q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -5.16665177685016944760993121269769025e-258q, 1.56250000000000000000000000000000000e-02q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 8.48104237155451330636560177606732812e-259q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -1.69620847431090266127312035521346562e-258q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -2.54431271146635399190968053282019844e-258q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.56250000000000000000000000000000000e-02q, 3.39241694862180532254624071042693125e-258q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 4.24052118577725619105304066663729259e-258q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -5.08862542293270798381936106564039687e-258q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.00992244919479545038481519842235004e-257q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.56250000000000000000000000000000000e-02q, 6.78483389724361064509248142085386249e-258q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 3.47044330253926724846657107888059610e-258q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -8.48104237155451238210608133327458517e-258q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.34916414405697598263943926946504316e-257q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.56250000000000000000000000000000000e-02q, 1.01772508458654159676387221312807937e-257q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 6.86286025116107210888305156791115587e-258q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -2.01984489838959090076963039684470007e-257q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.68840583891915633004215925194918770e-257q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -9.00121806433759281250113756575842711e-259q, 1.56250000000000000000000000000000000e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.56250000000000000000000000000000000e-02q, -1.80024361286751856250022751315168542e-258q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 6.86286025116107210888305156791115587e-258q, -1.56250000000000000000000000000000000e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.28516074805275398360822866115237669e-258q, -1.56250000000000000000000000000000000e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.56250000000000000000000000000000000e-02q, -2.57032149610550796721645732230475338e-258q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.77423482822836458719345072366713047e-258q, 1.56250000000000000000000000000000000e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.56250000000000000000000000000000000e-02q, 5.14064299221101593443291464460950677e-258q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 8.50705115619366681954261834415551159e-258q, -1.56250000000000000000000000000000000e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.56250000000000000000000000000000000e-02q, -3.54846965645672917438690144733426094e-258q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -6.91487782043938005949660514688026577e-258q, 1.56250000000000000000000000000000000e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 7.80263539174619259203303684536648483e-260q, -1.56250000000000000000000000000000000e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.56250000000000000000000000000000000e-02q, -1.56052707834923851840660736907329697e-259q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -2.34079061752385748877881091523721328e-259q, 1.56250000000000000000000000000000000e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -1.09264127724325663242917120886410970e-259q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -2.18528255448651326485834241772821940e-259q, 8.48104237155451330636560177606732812e-259q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 4.37056510897302652971668483545643881e-259q, -2.60087846391539716963880377548957973e-260q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -1.69620847431090266127312035521346562e-258q, 1.28516074805275398360822866115237669e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 8.74113021794605305943336967091287761e-259q, -4.63065295536456628278445273030198830e-259q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -5.20175692783079433927760755097915946e-260q, 1.72221725895005663657989714469802057e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 3.39241694862180532254624071042693125e-258q, -9.00121806433759281250113756575842711e-259q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -2.57032149610550796721645732230475338e-258q, 7.80263539174619259203303684536648483e-260q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 1.74822604358921061188667393418257552e-258q, -3.41842573326095929785301749991148620e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -9.26130591072913256556890546060397660e-259q, 2.59633028074466194252323411178930833e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 1.04035138556615886785552151019583189e-259q, -1.77423482822836458719345072366713047e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -3.44443451790011327315979428939604115e-258q, 5.11463420757186149699637763372858035e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 6.78483389724361064509248142085386249e-258q, -1.30043923195769862092328940504138139e-259q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -1.80024361286751856250022751315168542e-258q, 3.47044330253926724846657107888059610e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 5.14064299221101593443291464460950677e-258q, -6.81084268188276415826949798894204597e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -1.56052707834923851840660736907329697e-259q, 1.82625239750667253780700430263624037e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 3.49645208717842122377334786836515104e-258q, -5.16665177685016944760993121269769025e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -6.83685146652191859570603499982297239e-258q, 1.82061492474077798264327512554611429e-259q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 1.85226118214582651311378109212079532e-258q, -3.52246087181757519908012465784970599e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -5.19266056148932388504646822357861667e-258q, 6.86286025116107210888305156791115587e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 2.08070277113231773571104302039166378e-259q, -1.02032596305045704050752591421617202e-257q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -3.54846965645672917438690144733426094e-258q, -3.10632031759111159417169602609682680e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 6.88886903580022654631958857879208229e-258q, -2.34079061752385748877881091523721328e-259q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -1.02292684151437229939927552674571607e-257q, 3.57447844109588314969367823681881589e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 1.35696677944872212901849628417077250e-257q, -6.91487782043938005949660514688026577e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -2.60087846391539724184657881008276277e-259q, 1.02552771997828774314292922783380871e-257q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 3.60048722573503712500045502630337084e-258q, -1.35956765791263757276214998525886514e-257q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -6.94088660507853449693314215776119219e-258q, 2.86096631030693728374544684330104444e-259q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 1.02812859844220318688658292892190135e-257q, -3.62649601037419110030723181578792579e-258q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -1.36216853637655283165389959778840919e-257q, 6.96689538971768801011015872584937567e-258q, -1.56250000000000000000000000000000000e-02q, 1.56250000000000000000000000000000000e-02q, 3.12105415669847703681321473814659393e-259q, -1.03072947690611863063023663000999400e-257q, 1.56250000000000000000000000000000000e-02q, -1.56250000000000000000000000000000000e-02q, -3.65250479501334507561400860527248074e-258q, 1.36476941484046827539755329887650184e-257q, -1.56250000000000000000000000000000000e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -3.41842573326095929785301749991148620e-258q, 1.56250000000000000000000000000000000e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.56250000000000000000000000000000000e-02q, -6.83685146652191859570603499982297239e-258q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 1.02552771997828774314292922783380871e-257q, -1.56250000000000000000000000000000000e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -4.63065295536456628278445273030198830e-259q, 1.56250000000000000000000000000000000e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.56250000000000000000000000000000000e-02q, -9.26130591072913256556890546060397660e-259q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 3.47044330253926724846657107888059610e-258q, -1.56250000000000000000000000000000000e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.56250000000000000000000000000000000e-02q, 1.85226118214582651311378109212079532e-258q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -2.34079061752385748877881091523721328e-259q, 1.56250000000000000000000000000000000e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.56250000000000000000000000000000000e-02q, -6.94088660507853449693314215776119219e-258q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -3.00228517903449569294458886815860701e-258q, -1.56250000000000000000000000000000000e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, 2.59633028074466194252323411178930833e-258q, -1.56250000000000000000000000000000000e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.56250000000000000000000000000000000e-02q, -5.19266056148932388504646822357861667e-258q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, -3.62649601037419110030723181578792579e-258q, 1.56250000000000000000000000000000000e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -2.60087846391539716963880377548957973e-260q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -5.20175692783079433927760755097915946e-260q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 7.80263539174619259203303684536648483e-260q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.56250000000000000000000000000000000e-02q, 1.04035138556615886785552151019583189e-259q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -1.30043923195769862092328940504138139e-259q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -1.56052707834923851840660736907329697e-259q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 1.82061492474077798264327512554611429e-259q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.56250000000000000000000000000000000e-02q, 2.08070277113231773571104302039166378e-259q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -2.34079061752385748877881091523721328e-259q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -2.60087846391539724184657881008276277e-259q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 2.86096631030693728374544684330104444e-259q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.56250000000000000000000000000000000e-02q, 3.12105415669847703681321473814659393e-259q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -3.38114200309001678988098263299214342e-259q, 1.56250000000000000000000000000000000e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.56250000000000000000000000000000000e-02q, -3.64122984948155596528655025109222858e-259q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 3.90131769587309571835431814593777807e-259q, -1.56250000000000000000000000000000000e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, -1.77423482822836458719345072366713047e-258q, 1.56250000000000000000000000000000000e-02q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.56250000000000000000000000000000000e-02q, -3.54846965645672917438690144733426094e-258q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, 1.36476941484046827539755329887650184e-257q, -1.56250000000000000000000000000000000e-02q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, 1.72221725895005663657989714469802057e-258q, -1.56250000000000000000000000000000000e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.56250000000000000000000000000000000e-02q, -3.44443451790011327315979428939604115e-258q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, -5.16665177685016944760993121269769025e-258q, 1.56250000000000000000000000000000000e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.56250000000000000000000000000000000e-02q, 6.88886903580022654631958857879208229e-258q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, 2.86096631030693728374544684330104444e-259q, -1.56250000000000000000000000000000000e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.56250000000000000000000000000000000e-02q, -1.03333035537003388952198624253953805e-257q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, -2.03805104763699845241949403878570280e-257q, 1.56250000000000000000000000000000000e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, +1.56250000000000000000000000000000000e-02q, 0.00000000000000000000000000000000000e+00q, -9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, -1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, 4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, 1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, 1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, -5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, -1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, 5.11463420757186149699637763372858035e-258q, -1.56250000000000000000000000000000000e-02q, 1.20782883337927655215127131782537617e-02q, 9.91239506505696074678546381164778722e-03q, -1.53247700063004754778006599735817872e-02q, 3.04828628150200430999006151466801384e-03q, 7.36557401290621315687046077869126748e-03q, -1.37800197554430476493125823367336125e-02q, 5.97942863070452784030051063268729195e-03q, 1.44356176954888552887990016415642458e-02q, -1.49521927458157628809676253922589240e-02q, -4.53569808210097479006517318111946224e-03q, 1.29917126922272693073656668616422394e-02q, -8.68078489093128402576127200518385507e-03q, -1.53151781764938443169965509582652885e-03q, 1.55497613542530770114336036158420029e-02q, -1.10485434560398058240204832713970973e-02q, -1.10485434560398058240204832713970973e-02q, 1.55497613542530770114336036158420029e-02q, -1.53151781764938443169965509582652885e-03q, -8.68078489093128402576127200518385507e-03q, 1.29917126922272693073656668616422394e-02q, -4.53569808210097479006517318111946224e-03q, -1.49521927458157628809676253922589240e-02q, 1.44356176954888552887990016415642458e-02q, 5.97942863070452784030051063268729195e-03q, -1.37800197554430476493125823367336125e-02q, 7.36557401290621315687046077869126748e-03q, 3.04828628150200430999006151466801384e-03q, -1.53247700063004754778006599735817872e-02q, 9.91239506505696074678546381164778722e-03q, 1.20782883337927655215127131782537617e-02q, -1.56250000000000000000000000000000000e-02q, -1.02292684151437229939927552674571607e-257q, 9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, 3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, 1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, -4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, -1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, -1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, 5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, 1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, -7.01891295899599596072371230481848557e-258q, 1.56250000000000000000000000000000000e-02q, -1.20782883337927655215127131782537617e-02q, -9.91239506505696074678546381164778722e-03q, 1.53247700063004754778006599735817872e-02q, -3.04828628150200430999006151466801384e-03q, -7.36557401290621315687046077869126748e-03q, 1.37800197554430476493125823367336125e-02q, -5.97942863070452784030051063268729195e-03q, -1.44356176954888552887990016415642458e-02q, 1.49521927458157628809676253922589240e-02q, 4.53569808210097479006517318111946224e-03q, -1.29917126922272693073656668616422394e-02q, 8.68078489093128402576127200518385507e-03q, 1.53151781764938443169965509582652885e-03q, -1.55497613542530770114336036158420029e-02q, 1.10485434560398058240204832713970973e-02q, 1.10485434560398058240204832713970973e-02q, -1.55497613542530770114336036158420029e-02q, 1.53151781764938443169965509582652885e-03q, 8.68078489093128402576127200518385507e-03q, -1.29917126922272693073656668616422394e-02q, 4.53569808210097479006517318111946224e-03q, 1.49521927458157628809676253922589240e-02q, -1.44356176954888552887990016415642458e-02q, -5.97942863070452784030051063268729195e-03q, 1.37800197554430476493125823367336125e-02q, -7.36557401290621315687046077869126748e-03q, -3.04828628150200430999006151466801384e-03q, 1.53247700063004754778006599735817872e-02q, -9.91239506505696074678546381164778722e-03q, -1.20782883337927655215127131782537617e-02q, +}; +const static __float128 GramFE_Extend[2 * GRAMFE_FLU_NXT * FLU_NXT] = { +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +2.36887499627680959972639046680342734e-07q, 0.00000000000000000000000000000000000e+00q, -2.92997636281253278636108744459320974e-06q, 0.00000000000000000000000000000000000e+00q, 1.68362688651709440463763445272604713e-05q, 0.00000000000000000000000000000000000e+00q, -5.94836372906789277725803088969769306e-05q, 0.00000000000000000000000000000000000e+00q, 1.44116748986326668373683657087269694e-04q, 0.00000000000000000000000000000000000e+00q, -2.52784211127082814301453295158239598e-04q, 0.00000000000000000000000000000000000e+00q, 3.30190714679559139173997683869288267e-04q, 0.00000000000000000000000000000000000e+00q, -3.25174308330353017092162470902394489e-04q, 0.00000000000000000000000000000000000e+00q, 2.41434572845224739443339978528513257e-04q, 0.00000000000000000000000000000000000e+00q, -1.33489855004118647841676592591397821e-04q, 0.00000000000000000000000000000000000e+00q, 5.34308673925039750670674953969552234e-05q, 0.00000000000000000000000000000000000e+00q, -1.46645280431389965502837063882068946e-05q, 0.00000000000000000000000000000000000e+00q, 2.47439956229830750858607324449423004e-06q, 0.00000000000000000000000000000000000e+00q, -1.93943668790719410478296837185840928e-07q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.99999801908296737096293327340390533e-01q, 0.00000000000000000000000000000000000e+00q, 1.39999974395488759881800433504395187e+01q, 0.00000000000000000000000000000000000e+00q, -9.09999846330514685632806504145264626e+01q, 0.00000000000000000000000000000000000e+00q, 3.63999943325472827382327523082494736e+02q, 0.00000000000000000000000000000000000e+00q, -1.00099985674360505072399973869323730e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199973798706764682719949632883072e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299964331935461814282462000846863e+03q, 0.00000000000000000000000000000000000e+00q, 3.43199963411337512297905050218105316e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299971717100970636238344013690948e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199983727680637457524426281452179e+03q, 0.00000000000000000000000000000000000e+00q, -1.00099993225839364185958402231335640e+03q, 0.00000000000000000000000000000000000e+00q, 3.63999980672322749342129100114107132e+02q, 0.00000000000000000000000000000000000e+00q, -9.09999966114461358301923610270023346e+01q, 0.00000000000000000000000000000000000e+00q, 1.39999997241753533216979121789336205e+01q, 0.00000000000000000000000000000000000e+00q, +1.23203929079687809957505129077048878e-04q, 0.00000000000000000000000000000000000e+00q, -1.51929340893591996800027210667849431e-03q, 0.00000000000000000000000000000000000e+00q, 8.70340238924272729947873017408710439e-03q, 0.00000000000000000000000000000000000e+00q, -3.06530486826787178233910680091867107e-02q, 0.00000000000000000000000000000000000e+00q, 7.40265939094255365215957453983719461e-02q, 0.00000000000000000000000000000000000e+00q, -1.29414121421986799687076086229353677e-01q, 0.00000000000000000000000000000000000e+00q, 1.68466430838223296673206164086877834e-01q, 0.00000000000000000000000000000000000e+00q, -1.65324438898375863926659690150700044e-01q, 0.00000000000000000000000000000000000e+00q, 1.22305289816168477612379206220794003e-01q, 0.00000000000000000000000000000000000e+00q, -6.73703325969320226951353447475412395e-02q, 0.00000000000000000000000000000000000e+00q, 2.68617309615631315311556903679957031e-02q, 0.00000000000000000000000000000000000e+00q, -7.34302134644970998927915317722181499e-03q, 0.00000000000000000000000000000000000e+00q, 1.23390533544661122784813489516864138e-03q, 0.00000000000000000000000000000000000e+00q, -9.63008214260880880891804722843119180e-05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.39998978227359831549847513088025153e+01q, 0.00000000000000000000000000000000000e+00q, 1.94998669526872362212088773958384991e+02q, 0.00000000000000000000000000000000000e+00q, -1.25999195955849472738918848335742950e+03q, 0.00000000000000000000000000000000000e+00q, 5.00497015330880731198703870177268982e+03q, 0.00000000000000000000000000000000000e+00q, -1.36499240961745945242000743746757507e+04q, 0.00000000000000000000000000000000000e+00q, 2.70268603791422137874178588390350342e+04q, 0.00000000000000000000000000000000000e+00q, -4.00398089126340928487479686737060547e+04q, 0.00000000000000000000000000000000000e+00q, 4.50448029936892999103292822837829590e+04q, 0.00000000000000000000000000000000000e+00q, -3.86098469957865527248941361904144287e+04q, 0.00000000000000000000000000000000000e+00q, 2.50249115807556481740903109312057495e+04q, 0.00000000000000000000000000000000000e+00q, -1.20119630385542295698542147874832153e+04q, 0.00000000000000000000000000000000000e+00q, 4.09498941349492088193073868751525879e+03q, 0.00000000000000000000000000000000000e+00q, -9.09998137251925186319567728787660599e+02q, 0.00000000000000000000000000000000000e+00q, 1.04999847864859788160174502991139889e+02q, 0.00000000000000000000000000000000000e+00q, +1.14224810138782873619733848613577720e-02q, 0.00000000000000000000000000000000000e+00q, -1.40489553508885839372410941905400250e-01q, 0.00000000000000000000000000000000000e+00q, 8.02653853637795178244118687871377915e-01q, 0.00000000000000000000000000000000000e+00q, -2.81913888391005684752599336206912994e+00q, 0.00000000000000000000000000000000000e+00q, 6.78886795353494676419359166175127029e+00q, 0.00000000000000000000000000000000000e+00q, -1.18336276506313904377520884736441076e+01q, 0.00000000000000000000000000000000000e+00q, 1.53579308187564471666064491728320718e+01q, 0.00000000000000000000000000000000000e+00q, -1.50242408756899159527620213339105248e+01q, 0.00000000000000000000000000000000000e+00q, 1.10786392112495484241208032472059131e+01q, 0.00000000000000000000000000000000000e+00q, -6.08193112844193350952082255389541388e+00q, 0.00000000000000000000000000000000000e+00q, 2.41646544789411388265421010146383196e+00q, 0.00000000000000000000000000000000000e+00q, -6.58162882173078167546975691948318854e-01q, 0.00000000000000000000000000000000000e+00q, 1.10175874782447086319692175493401010e-01q, 0.00000000000000000000000000000000000e+00q, -8.56466625997150468596608163807104575e-03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.04990466049499687528623326215893030e+02q, 0.00000000000000000000000000000000000e+00q, 1.45587505450031540021882392466068268e+03q, 0.00000000000000000000000000000000000e+00q, -9.35924041382875111594330519437789917e+03q, 0.00000000000000000000000000000000000e+00q, 3.69571648170866974396631121635437012e+04q, 0.00000000000000000000000000000000000e+00q, -1.00092753003756239195354282855987549e+05q, 0.00000000000000000000000000000000000e+00q, 1.96546606600716622779145836830139160e+05q, 0.00000000000000000000000000000000000e+00q, -2.88269589375540381297469139099121094e+05q, 0.00000000000000000000000000000000000e+00q, 3.20300942136116616893559694290161133e+05q, 0.00000000000000000000000000000000000e+00q, -2.70255143154438643250614404678344727e+05q, 0.00000000000000000000000000000000000e+00q, 1.71591384521572996163740754127502441e+05q, 0.00000000000000000000000000000000000e+00q, -8.00763869127819198183715343475341797e+04q, 0.00000000000000000000000000000000000e+00q, 2.62069620595633241464383900165557861e+04q, 0.00000000000000000000000000000000000e+00q, -5.45981686882549001893494278192520142e+03q, 0.00000000000000000000000000000000000e+00q, 5.59985005664049936058290768414735794e+02q, 0.00000000000000000000000000000000000e+00q, +4.12842272872321058851952102486393414e-01q, 0.00000000000000000000000000000000000e+00q, -5.06559998639425579369799379492178559e+00q, 0.00000000000000000000000000000000000e+00q, 2.88701039534473267167413723655045033e+01q, 0.00000000000000000000000000000000000e+00q, -1.01142960370803550063101283740252256e+02q, 0.00000000000000000000000000000000000e+00q, 2.42928055885869014218769734725356102e+02q, 0.00000000000000000000000000000000000e+00q, -4.22296435021406352916528703644871712e+02q, 0.00000000000000000000000000000000000e+00q, 5.46519372111229131405707448720932007e+02q, 0.00000000000000000000000000000000000e+00q, -5.33075624957016771077178418636322021e+02q, 0.00000000000000000000000000000000000e+00q, 3.91879040302392979810974793508648872e+02q, 0.00000000000000000000000000000000000e+00q, -2.14445993040961980113934259861707687e+02q, 0.00000000000000000000000000000000000e+00q, 8.49189637106185557513526873663067818e+01q, 0.00000000000000000000000000000000000e+00q, -2.30482009834203758202875178540125489e+01q, 0.00000000000000000000000000000000000e+00q, 3.84411462019557204072839340369682759e+00q, 0.00000000000000000000000000000000000e+00q, -2.97678486258721897161905189932440408e-01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.59648550740095174660382326692342758e+02q, 0.00000000000000000000000000000000000e+00q, 7.73036749184147538471734151244163513e+03q, 0.00000000000000000000000000000000000e+00q, -4.94756889648799260612577199935913086e+04q, 0.00000000000000000000000000000000000e+00q, 1.94373819796618423424661159515380859e+05q, 0.00000000000000000000000000000000000e+00q, -5.23327400341129337903112173080444336e+05q, 0.00000000000000000000000000000000000e+00q, 1.02051417348118394147604703903198242e+06q, 0.00000000000000000000000000000000000e+00q, -1.48442212644082610495388507843017578e+06q, 0.00000000000000000000000000000000000e+00q, 1.63290715209588292054831981658935547e+06q, 0.00000000000000000000000000000000000e+00q, -1.36079318438108335249125957489013672e+06q, 0.00000000000000000000000000000000000e+00q, 8.50520371656275587156414985656738281e+05q, 0.00000000000000000000000000000000000e+00q, -3.88821404652111697942018508911132812e+05q, 0.00000000000000000000000000000000000e+00q, 1.23720091172263535554520785808563232e+05q, 0.00000000000000000000000000000000000e+00q, -2.47449434713479167839977890253067017e+04q, 0.00000000000000000000000000000000000e+00q, 2.37942110804216008546063676476478577e+03q, 0.00000000000000000000000000000000000e+00q, +7.94050888366461027345621914719231427e+00q, 0.00000000000000000000000000000000000e+00q, -9.72133672693178141344105824828147888e+01q, 0.00000000000000000000000000000000000e+00q, 5.52769930498713392807985655963420868e+02q, 0.00000000000000000000000000000000000e+00q, -1.93196009774519188795238733291625977e+03q, 0.00000000000000000000000000000000000e+00q, 4.62879124786432475957553833723068237e+03q, 0.00000000000000000000000000000000000e+00q, -8.02585513174832613003673031926155090e+03q, 0.00000000000000000000000000000000000e+00q, 1.03589434032486533396877348423004150e+04q, 0.00000000000000000000000000000000000e+00q, -1.00758580190830525680212303996086121e+04q, 0.00000000000000000000000000000000000e+00q, 7.38534757886491388489957898855209351e+03q, 0.00000000000000000000000000000000000e+00q, -4.02902213146196891102590598165988922e+03q, 0.00000000000000000000000000000000000e+00q, 1.59030607954800075276580173522233963e+03q, 0.00000000000000000000000000000000000e+00q, -4.30162781746580890285258647054433823e+02q, 0.00000000000000000000000000000000000e+00q, 7.14876141481348668094142340123653412e+01q, 0.00000000000000000000000000000000000e+00q, -5.51483378049246031338270768173970282e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.37301156893400684566586278378963470e+03q, 0.00000000000000000000000000000000000e+00q, 3.26674087398220835893880575895309448e+04q, 0.00000000000000000000000000000000000e+00q, -2.08276511803175031673163175582885742e+05q, 0.00000000000000000000000000000000000e+00q, 8.14674966840214096009731292724609375e+05q, 0.00000000000000000000000000000000000e+00q, -2.18238247313607437536120414733886719e+06q, 0.00000000000000000000000000000000000e+00q, 4.23088682727170176804065704345703125e+06q, 0.00000000000000000000000000000000000e+00q, -6.11190246061916090548038482666015625e+06q, 0.00000000000000000000000000000000000e+00q, 6.66823140636229887604713439941406250e+06q, 0.00000000000000000000000000000000000e+00q, -5.50189848970829229801893234252929688e+06q, 0.00000000000000000000000000000000000e+00q, 3.39663298522647563368082046508789062e+06q, 0.00000000000000000000000000000000000e+00q, -1.52867882007416384294629096984863281e+06q, 0.00000000000000000000000000000000000e+00q, 4.76537459701199724804610013961791992e+05q, 0.00000000000000000000000000000000000e+00q, -9.26743183755208447109907865524291992e+04q, 0.00000000000000000000000000000000000e+00q, 8.55603114338716659403871744871139526e+03q, 0.00000000000000000000000000000000000e+00q, +9.56190522292223761269269743934273720e+01q, 0.00000000000000000000000000000000000e+00q, -1.16816980853096083592390641570091248e+03q, 0.00000000000000000000000000000000000e+00q, 6.62794358847314470040146261453628540e+03q, 0.00000000000000000000000000000000000e+00q, -2.31127896949155583570245653390884399e+04q, 0.00000000000000000000000000000000000e+00q, 5.52461577994979306822642683982849121e+04q, 0.00000000000000000000000000000000000e+00q, -9.55567832486978004453703761100769043e+04q, 0.00000000000000000000000000000000000e+00q, 1.23018861862941732397302985191345215e+05q, 0.00000000000000000000000000000000000e+00q, -1.19335393173610907979309558868408203e+05q, 0.00000000000000000000000000000000000e+00q, 8.72224721865198225714266300201416016e+04q, 0.00000000000000000000000000000000000e+00q, -4.74417211354369137552566826343536377e+04q, 0.00000000000000000000000000000000000e+00q, 1.86668611698739223356824368238449097e+04q, 0.00000000000000000000000000000000000e+00q, -5.03236836401574601040920242667198181e+03q, 0.00000000000000000000000000000000000e+00q, 8.33356234639607123426685575395822525e+02q, 0.00000000000000000000000000000000000e+00q, -6.40464660353877377474418608471751213e+01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.47972901281802296580281108617782593e+03q, 0.00000000000000000000000000000000000e+00q, 1.16397178392671179608441889286041260e+05q, 0.00000000000000000000000000000000000e+00q, -7.39685842853170004673302173614501953e+05q, 0.00000000000000000000000000000000000e+00q, 2.88253386234461003914475440979003906e+06q, 0.00000000000000000000000000000000000e+00q, -7.68898437951618619263172149658203125e+06q, 0.00000000000000000000000000000000000e+00q, 1.48330949216556102037429809570312500e+07q, 0.00000000000000000000000000000000000e+00q, -2.13051980091861151158809661865234375e+07q, 0.00000000000000000000000000000000000e+00q, 2.30878486419988311827182769775390625e+07q, 0.00000000000000000000000000000000000e+00q, -1.88962972895989902317523956298828125e+07q, 0.00000000000000000000000000000000000e+00q, 1.15518204300614465028047561645507812e+07q, 0.00000000000000000000000000000000000e+00q, -5.13611123006965685635805130004882812e+06q, 0.00000000000000000000000000000000000e+00q, 1.57651606519755744375288486480712891e+06q, 0.00000000000000000000000000000000000e+00q, -3.00429473256150027737021446228027344e+05q, 0.00000000000000000000000000000000000e+00q, 2.69758538394233473809435963630676270e+04q, 0.00000000000000000000000000000000000e+00q, +7.94900552646560072389547713100910187e+02q, 0.00000000000000000000000000000000000e+00q, -9.69175064648319312254898250102996826e+03q, 0.00000000000000000000000000000000000e+00q, 5.48749908658784042927436530590057373e+04q, 0.00000000000000000000000000000000000e+00q, -1.90947220350904564838856458663940430e+05q, 0.00000000000000000000000000000000000e+00q, 4.55395559479195508174598217010498047e+05q, 0.00000000000000000000000000000000000e+00q, -7.85830458179152221418917179107666016e+05q, 0.00000000000000000000000000000000000e+00q, 1.00918043837534240446984767913818359e+06q, 0.00000000000000000000000000000000000e+00q, -9.76425894839434185996651649475097656e+05q, 0.00000000000000000000000000000000000e+00q, 7.11718014186399406753480434417724609e+05q, 0.00000000000000000000000000000000000e+00q, -3.85992770466238493099808692932128906e+05q, 0.00000000000000000000000000000000000e+00q, 1.51408802754616597667336463928222656e+05q, 0.00000000000000000000000000000000000e+00q, -4.06842933349556551547721028327941895e+04q, 0.00000000000000000000000000000000000e+00q, 6.71372539088926441763760522007942200e+03q, 0.00000000000000000000000000000000000e+00q, -5.14043761191922271791554521769285202e+02q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.63499356382984733500052243471145630e+04q, 0.00000000000000000000000000000000000e+00q, 3.60830949023088789544999599456787109e+05q, 0.00000000000000000000000000000000000e+00q, -2.28680800872522359713912010192871094e+06q, 0.00000000000000000000000000000000000e+00q, 8.88409937179564125835895538330078125e+06q, 0.00000000000000000000000000000000000e+00q, -2.36141005705766677856445312500000000e+07q, 0.00000000000000000000000000000000000e+00q, 4.53698038612031787633895874023437500e+07q, 0.00000000000000000000000000000000000e+00q, -6.48594196932383179664611816406250000e+07q, 0.00000000000000000000000000000000000e+00q, 6.98999262067281156778335571289062500e+07q, 0.00000000000000000000000000000000000e+00q, -5.68380351678420007228851318359375000e+07q, 0.00000000000000000000000000000000000e+00q, 3.44762425876275300979614257812500000e+07q, 0.00000000000000000000000000000000000e+00q, -1.51834361676665861159563064575195312e+07q, 0.00000000000000000000000000000000000e+00q, 4.60568663022324908524751663208007812e+06q, 0.00000000000000000000000000000000000e+00q, -8.64539257196950027719140052795410156e+05q, 0.00000000000000000000000000000000000e+00q, 7.61001942566360521595925092697143555e+04q, 0.00000000000000000000000000000000000e+00q, +4.86379309389436912169912829995155334e+03q, 0.00000000000000000000000000000000000e+00q, -5.91875270648701407480984926223754883e+04q, 0.00000000000000000000000000000000000e+00q, 3.34457724899542808998376131057739258e+05q, 0.00000000000000000000000000000000000e+00q, -1.16141098242895468138158321380615234e+06q, 0.00000000000000000000000000000000000e+00q, 2.76393740754958195611834526062011719e+06q, 0.00000000000000000000000000000000000e+00q, -4.75871866943902987986803054809570312e+06q, 0.00000000000000000000000000000000000e+00q, 6.09677811937944684177637100219726562e+06q, 0.00000000000000000000000000000000000e+00q, -5.88414265097811724990606307983398438e+06q, 0.00000000000000000000000000000000000e+00q, 4.27758772470599692314863204956054688e+06q, 0.00000000000000000000000000000000000e+00q, -2.31336424051040876656770706176757812e+06q, 0.00000000000000000000000000000000000e+00q, 9.04706946988797746598720550537109375e+05q, 0.00000000000000000000000000000000000e+00q, -2.42316973593849164899438619613647461e+05q, 0.00000000000000000000000000000000000e+00q, 3.98490735694921750109642744064331055e+04q, 0.00000000000000000000000000000000000e+00q, -3.03974599460325271138572134077548981e+03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.23280704239716287702322006225585938e+04q, 0.00000000000000000000000000000000000e+00q, 9.88557218342571170069277286529541016e+05q, 0.00000000000000000000000000000000000e+00q, -6.25139666716878488659858703613281250e+06q, 0.00000000000000000000000000000000000e+00q, 2.42255336364214234054088592529296875e+07q, 0.00000000000000000000000000000000000e+00q, -6.42076070715376660227775573730468750e+07q, 0.00000000000000000000000000000000000e+00q, 1.22956706746985718607902526855468750e+08q, 0.00000000000000000000000000000000000e+00q, -1.75108654873948901891708374023437500e+08q, 0.00000000000000000000000000000000000e+00q, 1.87884797669123411178588867187500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.51985213231815546751022338867187500e+08q, 0.00000000000000000000000000000000000e+00q, 9.16239538252204060554504394531250000e+07q, 0.00000000000000000000000000000000000e+00q, -4.00537655225732922554016113281250000e+07q, 0.00000000000000000000000000000000000e+00q, 1.20402110267533641308546066284179688e+07q, 0.00000000000000000000000000000000000e+00q, -2.23466958269417239353060722351074219e+06q, 0.00000000000000000000000000000000000e+00q, 1.93875897138525993796065449714660645e+05q, 0.00000000000000000000000000000000000e+00q, +2.29011801313868127181194722652435303e+04q, 0.00000000000000000000000000000000000e+00q, -2.78170794607152638491243124008178711e+05q, 0.00000000000000000000000000000000000e+00q, 1.56890482461023726500570774078369141e+06q, 0.00000000000000000000000000000000000e+00q, -5.43731032923763990402221679687500000e+06q, 0.00000000000000000000000000000000000e+00q, 1.29131291796419620513916015625000000e+07q, 0.00000000000000000000000000000000000e+00q, -2.21847279877500757575035095214843750e+07q, 0.00000000000000000000000000000000000e+00q, 2.83579011879414245486259460449218750e+07q, 0.00000000000000000000000000000000000e+00q, -2.73028532237650640308856964111328125e+07q, 0.00000000000000000000000000000000000e+00q, 1.97974161020504049956798553466796875e+07q, 0.00000000000000000000000000000000000e+00q, -1.06773431443375963717699050903320312e+07q, 0.00000000000000000000000000000000000e+00q, 4.16343497171019902452826499938964844e+06q, 0.00000000000000000000000000000000000e+00q, -1.11162023306701960973441600799560547e+06q, 0.00000000000000000000000000000000000e+00q, 1.82184375449731305707246065139770508e+05q, 0.00000000000000000000000000000000000e+00q, -1.38461078676415254449239000678062439e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.76417240899573516799136996269226074e+05q, 0.00000000000000000000000000000000000e+00q, 2.40755168685663072392344474792480469e+06q, 0.00000000000000000000000000000000000e+00q, -1.51981634072598516941070556640625000e+07q, 0.00000000000000000000000000000000000e+00q, 5.87783766765418648719787597656250000e+07q, 0.00000000000000000000000000000000000e+00q, -1.55430408171088457107543945312500000e+08q, 0.00000000000000000000000000000000000e+00q, 2.96867198797536849975585937500000000e+08q, 0.00000000000000000000000000000000000e+00q, -4.21509281995835781097412109375000000e+08q, 0.00000000000000000000000000000000000e+00q, 4.50687287713834106922149658203125000e+08q, 0.00000000000000000000000000000000000e+00q, -3.63093143760909140110015869140625000e+08q, 0.00000000000000000000000000000000000e+00q, 2.17844343623268336057662963867187500e+08q, 0.00000000000000000000000000000000000e+00q, -9.46901105848329663276672363281250000e+07q, 0.00000000000000000000000000000000000e+00q, 2.82686569522144831717014312744140625e+07q, 0.00000000000000000000000000000000000e+00q, -5.20248136799148470163345336914062500e+06q, 0.00000000000000000000000000000000000e+00q, 4.46592077661924064159393310546875000e+05q, 0.00000000000000000000000000000000000e+00q, +8.56924658534391928697004914283752441e+04q, 0.00000000000000000000000000000000000e+00q, -1.03901879406249488238245248794555664e+06q, 0.00000000000000000000000000000000000e+00q, 5.84943842597020231187343597412109375e+06q, 0.00000000000000000000000000000000000e+00q, -2.02338607091768905520439147949218750e+07q, 0.00000000000000000000000000000000000e+00q, 4.79587115671265795826911926269531250e+07q, 0.00000000000000000000000000000000000e+00q, -8.22221292676741033792495727539062500e+07q, 0.00000000000000000000000000000000000e+00q, 1.04871419397167891263961791992187500e+08q, 0.00000000000000000000000000000000000e+00q, -1.00735263169329926371574401855468750e+08q, 0.00000000000000000000000000000000000e+00q, 7.28627953052846938371658325195312500e+07q, 0.00000000000000000000000000000000000e+00q, -3.91929736353254839777946472167968750e+07q, 0.00000000000000000000000000000000000e+00q, 1.52390414863385781645774841308593750e+07q, 0.00000000000000000000000000000000000e+00q, -4.05624435239109862595796585083007812e+06q, 0.00000000000000000000000000000000000e+00q, 6.62563529342300840653479099273681641e+05q, 0.00000000000000000000000000000000000e+00q, -5.01722454605897073633968830108642578e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.82522188352944038342684507369995117e+05q, 0.00000000000000000000000000000000000e+00q, 5.21360558051911834627389907836914062e+06q, 0.00000000000000000000000000000000000e+00q, -3.28643950006668344140052795410156250e+07q, 0.00000000000000000000000000000000000e+00q, 1.26894016753705158829689025878906250e+08q, 0.00000000000000000000000000000000000e+00q, -3.34930368283692538738250732421875000e+08q, 0.00000000000000000000000000000000000e+00q, 6.38361938786892652511596679687500000e+08q, 0.00000000000000000000000000000000000e+00q, -9.04211874854269027709960937500000000e+08q, 0.00000000000000000000000000000000000e+00q, 9.64148115473548650741577148437500000e+08q, 0.00000000000000000000000000000000000e+00q, -7.74294689982156395912170410156250000e+08q, 0.00000000000000000000000000000000000e+00q, 4.62834162958291769027709960937500000e+08q, 0.00000000000000000000000000000000000e+00q, -2.00303010424596697092056274414062500e+08q, 0.00000000000000000000000000000000000e+00q, 5.94873533541214987635612487792968750e+07q, 0.00000000000000000000000000000000000e+00q, -1.08789529330453164875507354736328125e+07q, 0.00000000000000000000000000000000000e+00q, 9.26621756037812680006027221679687500e+05q, 0.00000000000000000000000000000000000e+00q, +2.61000519059037789702415466308593750e+05q, 0.00000000000000000000000000000000000e+00q, -3.15917247107760701328516006469726562e+06q, 0.00000000000000000000000000000000000e+00q, 1.77540735556865967810153961181640625e+07q, 0.00000000000000000000000000000000000e+00q, -6.13015317183465883135795593261718750e+07q, 0.00000000000000000000000000000000000e+00q, 1.45022719611256331205368041992187500e+08q, 0.00000000000000000000000000000000000e+00q, -2.48137771814088612794876098632812500e+08q, 0.00000000000000000000000000000000000e+00q, 3.15826611273925185203552246093750000e+08q, 0.00000000000000000000000000000000000e+00q, -3.02694080923870980739593505859375000e+08q, 0.00000000000000000000000000000000000e+00q, 2.18420458242674022912979125976562500e+08q, 0.00000000000000000000000000000000000e+00q, -1.17188454681101053953170776367187500e+08q, 0.00000000000000000000000000000000000e+00q, 4.54397435578436851501464843750000000e+07q, 0.00000000000000000000000000000000000e+00q, -1.20587738391769193112850189208984375e+07q, 0.00000000000000000000000000000000000e+00q, 1.96332050382406706921756267547607422e+06q, 0.00000000000000000000000000000000000e+00q, -1.48141804490470152813941240310668945e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.35751868354327278211712837219238281e+05q, 0.00000000000000000000000000000000000e+00q, 1.00160563016800060868263244628906250e+07q, 0.00000000000000000000000000000000000e+00q, -6.30551036313259676098823547363281250e+07q, 0.00000000000000000000000000000000000e+00q, 2.43117710426262021064758300781250000e+08q, 0.00000000000000000000000000000000000e+00q, -6.40687631004755377769470214843750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.21898668986118555068969726562500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.72326252886783242225646972656250000e+09q, 0.00000000000000000000000000000000000e+00q, 1.83343164403762173652648925781250000e+09q, 0.00000000000000000000000000000000000e+00q, -1.46870167628100824356079101562500000e+09q, 0.00000000000000000000000000000000000e+00q, 8.75376126225490331649780273437500000e+08q, 0.00000000000000000000000000000000000e+00q, -3.77566515988679349422454833984375000e+08q, 0.00000000000000000000000000000000000e+00q, 1.11688123749933123588562011718750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.03287014409763142466545104980468750e+07q, 0.00000000000000000000000000000000000e+00q, 1.72155946864269510842859745025634766e+06q, 0.00000000000000000000000000000000000e+00q, +6.58974821926897624507546424865722656e+05q, 0.00000000000000000000000000000000000e+00q, -7.96289693731257133185863494873046875e+06q, 0.00000000000000000000000000000000000e+00q, 4.46739170526001602411270141601562500e+07q, 0.00000000000000000000000000000000000e+00q, -1.53980225079069107770919799804687500e+08q, 0.00000000000000000000000000000000000e+00q, 3.63612207216345429420471191406250000e+08q, 0.00000000000000000000000000000000000e+00q, -6.20965072510790944099426269531250000e+08q, 0.00000000000000000000000000000000000e+00q, 7.88768738571286320686340332031250000e+08q, 0.00000000000000000000000000000000000e+00q, -7.54358052784818410873413085937500000e+08q, 0.00000000000000000000000000000000000e+00q, 5.43095073535292983055114746093750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.90671107295070469379425048828125000e+08q, 0.00000000000000000000000000000000000e+00q, 1.12408895485035091638565063476562500e+08q, 0.00000000000000000000000000000000000e+00q, -2.97450600457214042544364929199218750e+07q, 0.00000000000000000000000000000000000e+00q, 4.82761176859534252434968948364257812e+06q, 0.00000000000000000000000000000000000e+00q, -3.63003764928934047929942607879638672e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.25176831108715338632464408874511719e+06q, 0.00000000000000000000000000000000000e+00q, 1.70194774995843768119812011718750000e+07q, 0.00000000000000000000000000000000000e+00q, -1.07005890637847825884819030761718750e+08q, 0.00000000000000000000000000000000000e+00q, 4.12016615784403085708618164062500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.08422316843285202980041503906250000e+09q, 0.00000000000000000000000000000000000e+00q, 2.05967451130671620368957519531250000e+09q, 0.00000000000000000000000000000000000e+00q, -2.90682721473305940628051757812500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08693007067012453079223632812500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.46773198135372114181518554687500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.46739358885875654220581054687500000e+09q, 0.00000000000000000000000000000000000e+00q, -6.31231502403079271316528320312500000e+08q, 0.00000000000000000000000000000000000e+00q, 1.86149744972140580415725708007812500e+08q, 0.00000000000000000000000000000000000e+00q, -3.37590409940905421972274780273437500e+07q, 0.00000000000000000000000000000000000e+00q, 2.84655874064176715910434722900390625e+06q, 0.00000000000000000000000000000000000e+00q, +1.39870934848503139801323413848876953e+06q, 0.00000000000000000000000000000000000e+00q, -1.68738041363708041608333587646484375e+07q, 0.00000000000000000000000000000000000e+00q, 9.45091395778453052043914794921875000e+07q, 0.00000000000000000000000000000000000e+00q, -3.25197903478495001792907714843750000e+08q, 0.00000000000000000000000000000000000e+00q, 7.66585455180426597595214843750000000e+08q, 0.00000000000000000000000000000000000e+00q, -1.30676155024917721748352050781250000e+09q, 0.00000000000000000000000000000000000e+00q, 1.65670391567275857925415039062500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.58120630442676329612731933593750000e+09q, 0.00000000000000000000000000000000000e+00q, 1.13590602625557041168212890625000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.06530272307486534118652343750000000e+08q, 0.00000000000000000000000000000000000e+00q, 2.33965137123379468917846679687500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.17399283206173330545425415039062500e+07q, 0.00000000000000000000000000000000000e+00q, 9.99005526737835444509983062744140625e+06q, 0.00000000000000000000000000000000000e+00q, -7.48675429098235443234443664550781250e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.87852637815187987871468067169189453e+06q, 0.00000000000000000000000000000000000e+00q, 2.55047457000868469476699829101562500e+07q, 0.00000000000000000000000000000000000e+00q, -1.60130554526109069585800170898437500e+08q, 0.00000000000000000000000000000000000e+00q, 6.15705136409626603126525878906250000e+08q, 0.00000000000000000000000000000000000e+00q, -1.61792288489140057563781738281250000e+09q, 0.00000000000000000000000000000000000e+00q, 3.06900759325446414947509765625000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.32460852481571006774902343750000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.58498640634127616882324218750000000e+09q, 0.00000000000000000000000000000000000e+00q, -3.65875888545870065689086914062500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.17135170549238586425781250000000000e+09q, 0.00000000000000000000000000000000000e+00q, -9.32011367900125503540039062500000000e+08q, 0.00000000000000000000000000000000000e+00q, 2.74168176908887207508087158203125000e+08q, 0.00000000000000000000000000000000000e+00q, -4.95795724920831769704818725585937500e+07q, 0.00000000000000000000000000000000000e+00q, 4.16655327771877683699131011962890625e+06q, 0.00000000000000000000000000000000000e+00q, +2.52328820448361197486519813537597656e+06q, 0.00000000000000000000000000000000000e+00q, -3.03906869572833031415939331054687500e+07q, 0.00000000000000000000000000000000000e+00q, 1.69938790985355913639068603515625000e+08q, 0.00000000000000000000000000000000000e+00q, -5.83781287567417860031127929687500000e+08q, 0.00000000000000000000000000000000000e+00q, 1.37381935599911785125732421875000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.33779136674459552764892578125000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.95841569566190004348754882812500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.81814107537782430648803710937500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.02032474270536112785339355468750000e+09q, 0.00000000000000000000000000000000000e+00q, -1.07638858719949126243591308593750000e+09q, 0.00000000000000000000000000000000000e+00q, 4.14214935866426289081573486328125000e+08q, 0.00000000000000000000000000000000000e+00q, -1.09019381351673915982246398925781250e+08q, 0.00000000000000000000000000000000000e+00q, 1.75895791316969059407711029052734375e+07q, 0.00000000000000000000000000000000000e+00q, -1.31400320001968531869351863861083984e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.48019205291745020076632499694824219e+06q, 0.00000000000000000000000000000000000e+00q, 3.36173855386542230844497680664062500e+07q, 0.00000000000000000000000000000000000e+00q, -2.10731965978568822145462036132812500e+08q, 0.00000000000000000000000000000000000e+00q, 8.09035089375622153282165527343750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.12277517853438067436218261718750000e+09q, 0.00000000000000000000000000000000000e+00q, 4.02066444766431283950805664062500000e+09q, 0.00000000000000000000000000000000000e+00q, -5.65706809637136268615722656250000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98834711082380771636962890625000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.77083061684382438659667968750000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.82640401109957695007324218750000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.21088940951250839233398437500000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.55462305617642164230346679687500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.41297166300129517912864685058593750e+07q, 0.00000000000000000000000000000000000e+00q, 5.37482664792278688400983810424804688e+06q, 0.00000000000000000000000000000000000e+00q, +3.90217596189485443755984306335449219e+06q, 0.00000000000000000000000000000000000e+00q, -4.69204887483244016766548156738281250e+07q, 0.00000000000000000000000000000000000e+00q, 2.61945177605184346437454223632812500e+08q, 0.00000000000000000000000000000000000e+00q, -8.98391860856992125511169433593750000e+08q, 0.00000000000000000000000000000000000e+00q, 2.11073780486662554740905761718750000e+09q, 0.00000000000000000000000000000000000e+00q, -3.58575660672981405258178710937500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.52977239746195888519287109375000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.30708959308705615997314453125000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08175229420271253585815429687500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.63847878300576901435852050781250000e+09q, 0.00000000000000000000000000000000000e+00q, 6.29099587048946857452392578125000000e+08q, 0.00000000000000000000000000000000000e+00q, -1.65169837180640727281570434570312500e+08q, 0.00000000000000000000000000000000000e+00q, 2.65772006421376951038837432861328125e+07q, 0.00000000000000000000000000000000000e+00q, -1.97946790835838369093835353851318359e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.87357866229098383337259292602539062e+06q, 0.00000000000000000000000000000000000e+00q, 3.88735827163963541388511657714843750e+07q, 0.00000000000000000000000000000000000e+00q, -2.43241586428552627563476562500000000e+08q, 0.00000000000000000000000000000000000e+00q, 9.32265145641333103179931640625000000e+08q, 0.00000000000000000000000000000000000e+00q, -2.44216478438530778884887695312500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.61837974092287158966064453125000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.48805675627180671691894531250000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.85742464713243484497070312500000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45464934513130664825439453125000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.22627423811852025985717773437500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.37983436910601663589477539062500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.04311246893498718738555908203125000e+08q, 0.00000000000000000000000000000000000e+00q, -7.27955557989170700311660766601562500e+07q, 0.00000000000000000000000000000000000e+00q, 6.08737508663816470652818679809570312e+06q, 0.00000000000000000000000000000000000e+00q, +5.20809016710331384092569351196289062e+06q, 0.00000000000000000000000000000000000e+00q, -6.25165016442116275429725646972656250e+07q, 0.00000000000000000000000000000000000e+00q, 3.48442246651547253131866455078125000e+08q, 0.00000000000000000000000000000000000e+00q, -1.19313149292185688018798828125000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.79872844286932182312011718750000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.74681509884183883666992187500000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98651041136041831970214843750000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.68234690882154941558837890625000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.05833649538345623016357421875000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.15350626403272342681884765625000000e+09q, 0.00000000000000000000000000000000000e+00q, 8.25116551161202073097229003906250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.16141359616178184747695922851562500e+08q, 0.00000000000000000000000000000000000e+00q, 3.46920985572281405329704284667968750e+07q, 0.00000000000000000000000000000000000e+00q, -2.57670985178047046065330505371093750e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.91358142251645680516958236694335938e+06q, 0.00000000000000000000000000000000000e+00q, 3.93265494053069576621055603027343750e+07q, 0.00000000000000000000000000000000000e+00q, -2.45574016015345066785812377929687500e+08q, 0.00000000000000000000000000000000000e+00q, 9.39431274951780319213867187500000000e+08q, 0.00000000000000000000000000000000000e+00q, -2.45659607275719070434570312500000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.63789122134245491027832031250000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.50496014852136230468750000000000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.86445220826482963562011718750000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45169188022724533081054687500000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.21942880329317045211791992187500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.37467092536294865608215332031250000e+09q, 0.00000000000000000000000000000000000e+00q, 4.02113835982502460479736328125000000e+08q, 0.00000000000000000000000000000000000e+00q, -7.22686497805902510881423950195312500e+07q, 0.00000000000000000000000000000000000e+00q, 6.03138142701608967036008834838867188e+06q, 0.00000000000000000000000000000000000e+00q, +6.03138142701608687639236450195312500e+06q, 0.00000000000000000000000000000000000e+00q, -7.22686497805902063846588134765625000e+07q, 0.00000000000000000000000000000000000e+00q, 4.02113835982502281665802001953125000e+08q, 0.00000000000000000000000000000000000e+00q, -1.37467092536294794082641601562500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.21942880329316902160644531250000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45169188022724246978759765625000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.86445220826482677459716796875000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.50496014852135944366455078125000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.63789122134245300292968750000000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.45659607275718975067138671875000000e+09q, 0.00000000000000000000000000000000000e+00q, 9.39431274951779961585998535156250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.45574016015344977378845214843750000e+08q, 0.00000000000000000000000000000000000e+00q, 3.93265494053069427609443664550781250e+07q, 0.00000000000000000000000000000000000e+00q, -2.91358142251645540818572044372558594e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.57670985178047278895974159240722656e+06q, 0.00000000000000000000000000000000000e+00q, 3.46920985572281777858734130859375000e+07q, 0.00000000000000000000000000000000000e+00q, -2.16141359616178423166275024414062500e+08q, 0.00000000000000000000000000000000000e+00q, 8.25116551161203026771545410156250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.15350626403272581100463867187500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.05833649538346052169799804687500000e+09q, 0.00000000000000000000000000000000000e+00q, -5.68234690882155513763427734375000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98651041136042499542236328125000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.74681509884184455871582031250000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.79872844286932468414306640625000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.19313149292185831069946289062500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.48442246651547670364379882812500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.25165016442117020487785339355468750e+07q, 0.00000000000000000000000000000000000e+00q, 5.20809016710331942886114120483398438e+06q, 0.00000000000000000000000000000000000e+00q, +6.08737508663816563785076141357421875e+06q, 0.00000000000000000000000000000000000e+00q, -7.27955557989170849323272705078125000e+07q, 0.00000000000000000000000000000000000e+00q, 4.04311246893498778343200683593750000e+08q, 0.00000000000000000000000000000000000e+00q, -1.37983436910601687431335449218750000e+09q, 0.00000000000000000000000000000000000e+00q, 3.22627423811852121353149414062500000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45464934513130855560302734375000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.85742464713243675231933593750000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.48805675627180862426757812500000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.61837974092287254333496093750000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.44216478438530826568603515625000000e+09q, 0.00000000000000000000000000000000000e+00q, 9.32265145641333460807800292968750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.43241586428552716970443725585937500e+08q, 0.00000000000000000000000000000000000e+00q, 3.88735827163963690400123596191406250e+07q, 0.00000000000000000000000000000000000e+00q, -2.87357866229098476469516754150390625e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.97946790835838718339800834655761719e+06q, 0.00000000000000000000000000000000000e+00q, 2.65772006421377435326576232910156250e+07q, 0.00000000000000000000000000000000000e+00q, -1.65169837180641025304794311523437500e+08q, 0.00000000000000000000000000000000000e+00q, 6.29099587048947930335998535156250000e+08q, 0.00000000000000000000000000000000000e+00q, -1.63847878300577187538146972656250000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08175229420271825790405273437500000e+09q, 0.00000000000000000000000000000000000e+00q, -4.30708959308706474304199218750000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.52977239746196746826171875000000000e+09q, 0.00000000000000000000000000000000000e+00q, -3.58575660672982072830200195312500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.11073780486662960052490234375000000e+09q, 0.00000000000000000000000000000000000e+00q, -8.98391860856993913650512695312500000e+08q, 0.00000000000000000000000000000000000e+00q, 2.61945177605184853076934814453125000e+08q, 0.00000000000000000000000000000000000e+00q, -4.69204887483244910836219787597656250e+07q, 0.00000000000000000000000000000000000e+00q, 3.90217596189486188814043998718261719e+06q, 0.00000000000000000000000000000000000e+00q, +5.37482664792279060930013656616210938e+06q, 0.00000000000000000000000000000000000e+00q, -6.41297166300130039453506469726562500e+07q, 0.00000000000000000000000000000000000e+00q, 3.55462305617642462253570556640625000e+08q, 0.00000000000000000000000000000000000e+00q, -1.21088940951250958442687988281250000e+09q, 0.00000000000000000000000000000000000e+00q, 2.82640401109957933425903320312500000e+09q, 0.00000000000000000000000000000000000e+00q, -4.77083061684382820129394531250000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98834711082381343841552734375000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.65706809637136840820312500000000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.02066444766431665420532226562500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.12277517853438258171081542968750000e+09q, 0.00000000000000000000000000000000000e+00q, 8.09035089375622868537902832031250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.10731965978569030761718750000000000e+08q, 0.00000000000000000000000000000000000e+00q, 3.36173855386542603373527526855468750e+07q, 0.00000000000000000000000000000000000e+00q, -2.48019205291745252907276153564453125e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.31400320001968881115317344665527344e+06q, 0.00000000000000000000000000000000000e+00q, 1.75895791316969506442546844482421875e+07q, 0.00000000000000000000000000000000000e+00q, -1.09019381351674199104309082031250000e+08q, 0.00000000000000000000000000000000000e+00q, 4.14214935866427302360534667968750000e+08q, 0.00000000000000000000000000000000000e+00q, -1.07638858719949388504028320312500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.02032474270536637306213378906250000e+09q, 0.00000000000000000000000000000000000e+00q, -2.81814107537783145904541015625000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.95841569566190767288208007812500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.33779136674460172653198242187500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.37381935599912142753601074218750000e+09q, 0.00000000000000000000000000000000000e+00q, -5.83781287567419409751892089843750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.69938790985356360673904418945312500e+08q, 0.00000000000000000000000000000000000e+00q, -3.03906869572833850979804992675781250e+07q, 0.00000000000000000000000000000000000e+00q, 2.52328820448361849412322044372558594e+06q, 0.00000000000000000000000000000000000e+00q, +4.16655327771878335624933242797851562e+06q, 0.00000000000000000000000000000000000e+00q, -4.95795724920832514762878417968750000e+07q, 0.00000000000000000000000000000000000e+00q, 2.74168176908887624740600585937500000e+08q, 0.00000000000000000000000000000000000e+00q, -9.32011367900126934051513671875000000e+08q, 0.00000000000000000000000000000000000e+00q, 2.17135170549238920211791992187500000e+09q, 0.00000000000000000000000000000000000e+00q, -3.65875888545870637893676757812500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.58498640634128284454345703125000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.32460852481571674346923828125000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.06900759325446891784667968750000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.61792288489140319824218750000000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.15705136409627556800842285156250000e+08q, 0.00000000000000000000000000000000000e+00q, -1.60130554526109308004379272460937500e+08q, 0.00000000000000000000000000000000000e+00q, 2.55047457000868879258632659912109375e+07q, 0.00000000000000000000000000000000000e+00q, -1.87852637815188290551304817199707031e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.48675429098237887956202030181884766e+05q, 0.00000000000000000000000000000000000e+00q, 9.99005526737838797271251678466796875e+06q, 0.00000000000000000000000000000000000e+00q, -6.17399283206175342202186584472656250e+07q, 0.00000000000000000000000000000000000e+00q, 2.33965137123380243778228759765625000e+08q, 0.00000000000000000000000000000000000e+00q, -6.06530272307488560676574707031250000e+08q, 0.00000000000000000000000000000000000e+00q, 1.13590602625557422637939453125000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.58120630442676877975463867187500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.65670391567276430130004882812500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.30676155024918150901794433593750000e+09q, 0.00000000000000000000000000000000000e+00q, 7.66585455180429220199584960937500000e+08q, 0.00000000000000000000000000000000000e+00q, -3.25197903478496134281158447265625000e+08q, 0.00000000000000000000000000000000000e+00q, 9.45091395778456330299377441406250000e+07q, 0.00000000000000000000000000000000000e+00q, -1.68738041363708600401878356933593750e+07q, 0.00000000000000000000000000000000000e+00q, 1.39870934848503628745675086975097656e+06q, 0.00000000000000000000000000000000000e+00q, +2.84655874064177321270108222961425781e+06q, 0.00000000000000000000000000000000000e+00q, -3.37590409940906092524528503417968750e+07q, 0.00000000000000000000000000000000000e+00q, 1.86149744972140967845916748046875000e+08q, 0.00000000000000000000000000000000000e+00q, -6.31231502403080701828002929687500000e+08q, 0.00000000000000000000000000000000000e+00q, 1.46739358885875988006591796875000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.46773198135372686386108398437500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08693007067013120651245117187500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.90682721473306560516357421875000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.05967451130672073364257812500000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.08422316843285441398620605468750000e+09q, 0.00000000000000000000000000000000000e+00q, 4.12016615784403979778289794921875000e+08q, 0.00000000000000000000000000000000000e+00q, -1.07005890637848064303398132324218750e+08q, 0.00000000000000000000000000000000000e+00q, 1.70194774995844140648841857910156250e+07q, 0.00000000000000000000000000000000000e+00q, -1.25176831108715618029236793518066406e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.63003764928935503121465444564819336e+05q, 0.00000000000000000000000000000000000e+00q, 4.82761176859536208212375640869140625e+06q, 0.00000000000000000000000000000000000e+00q, -2.97450600457215271890163421630859375e+07q, 0.00000000000000000000000000000000000e+00q, 1.12408895485035553574562072753906250e+08q, 0.00000000000000000000000000000000000e+00q, -2.90671107295071721076965332031250000e+08q, 0.00000000000000000000000000000000000e+00q, 5.43095073535295248031616210937500000e+08q, 0.00000000000000000000000000000000000e+00q, -7.54358052784821629524230957031250000e+08q, 0.00000000000000000000000000000000000e+00q, 7.88768738571289777755737304687500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.20965072510793566703796386718750000e+08q, 0.00000000000000000000000000000000000e+00q, 3.63612207216346979141235351562500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.53980225079069763422012329101562500e+08q, 0.00000000000000000000000000000000000e+00q, 4.46739170526003539562225341796875000e+07q, 0.00000000000000000000000000000000000e+00q, -7.96289693731260579079389572143554688e+06q, 0.00000000000000000000000000000000000e+00q, 6.58974821926900534890592098236083984e+05q, 0.00000000000000000000000000000000000e+00q, +1.72155946864269976504147052764892578e+06q, 0.00000000000000000000000000000000000e+00q, -2.03287014409763701260089874267578125e+07q, 0.00000000000000000000000000000000000e+00q, 1.11688123749933436512947082519531250e+08q, 0.00000000000000000000000000000000000e+00q, -3.77566515988680362701416015625000000e+08q, 0.00000000000000000000000000000000000e+00q, 8.75376126225492715835571289062500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.46870167628101253509521484375000000e+09q, 0.00000000000000000000000000000000000e+00q, 1.83343164403762674331665039062500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.72326252886783742904663085937500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.21898668986118912696838378906250000e+09q, 0.00000000000000000000000000000000000e+00q, -6.40687631004757165908813476562500000e+08q, 0.00000000000000000000000000000000000e+00q, 2.43117710426262706518173217773437500e+08q, 0.00000000000000000000000000000000000e+00q, -6.30551036313261464238166809082031250e+07q, 0.00000000000000000000000000000000000e+00q, 1.00160563016800340265035629272460938e+07q, 0.00000000000000000000000000000000000e+00q, -7.35751868354329373687505722045898438e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.48141804490470909513533115386962891e+05q, 0.00000000000000000000000000000000000e+00q, 1.96332050382407684810459613800048828e+06q, 0.00000000000000000000000000000000000e+00q, -1.20587738391769807785749435424804688e+07q, 0.00000000000000000000000000000000000e+00q, 4.54397435578439161181449890136718750e+07q, 0.00000000000000000000000000000000000e+00q, -1.17188454681101649999618530273437500e+08q, 0.00000000000000000000000000000000000e+00q, 2.18420458242675125598907470703125000e+08q, 0.00000000000000000000000000000000000e+00q, -3.02694080923872530460357666015625000e+08q, 0.00000000000000000000000000000000000e+00q, 3.15826611273926794528961181640625000e+08q, 0.00000000000000000000000000000000000e+00q, -2.48137771814089894294738769531250000e+08q, 0.00000000000000000000000000000000000e+00q, 1.45022719611257076263427734375000000e+08q, 0.00000000000000000000000000000000000e+00q, -6.13015317183469012379646301269531250e+07q, 0.00000000000000000000000000000000000e+00q, 1.77540735556866899132728576660156250e+07q, 0.00000000000000000000000000000000000e+00q, -3.15917247107762331143021583557128906e+06q, 0.00000000000000000000000000000000000e+00q, 2.61000519059039157582446932792663574e+05q, 0.00000000000000000000000000000000000e+00q, +9.26621756037815706804394721984863281e+05q, 0.00000000000000000000000000000000000e+00q, -1.08789529330453518778085708618164062e+07q, 0.00000000000000000000000000000000000e+00q, 5.94873533541216924786567687988281250e+07q, 0.00000000000000000000000000000000000e+00q, -2.00303010424597352743148803710937500e+08q, 0.00000000000000000000000000000000000e+00q, 4.62834162958293318748474121093750000e+08q, 0.00000000000000000000000000000000000e+00q, -7.74294689982159137725830078125000000e+08q, 0.00000000000000000000000000000000000e+00q, 9.64148115473551869392395019531250000e+08q, 0.00000000000000000000000000000000000e+00q, -9.04211874854272127151489257812500000e+08q, 0.00000000000000000000000000000000000e+00q, 6.38361938786894917488098144531250000e+08q, 0.00000000000000000000000000000000000e+00q, -3.34930368283693671226501464843750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.26894016753705605864524841308593750e+08q, 0.00000000000000000000000000000000000e+00q, -3.28643950006669498980045318603515625e+07q, 0.00000000000000000000000000000000000e+00q, 5.21360558051913697272539138793945312e+06q, 0.00000000000000000000000000000000000e+00q, -3.82522188352945377118885517120361328e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.01722454605900056776590645313262939e+04q, 0.00000000000000000000000000000000000e+00q, 6.62563529342304798774421215057373047e+05q, 0.00000000000000000000000000000000000e+00q, -4.05624435239112284034490585327148438e+06q, 0.00000000000000000000000000000000000e+00q, 1.52390414863386694341897964477539062e+07q, 0.00000000000000000000000000000000000e+00q, -3.91929736353257223963737487792968750e+07q, 0.00000000000000000000000000000000000e+00q, 7.28627953052851259708404541015625000e+07q, 0.00000000000000000000000000000000000e+00q, -1.00735263169330552220344543457031250e+08q, 0.00000000000000000000000000000000000e+00q, 1.04871419397168532013893127441406250e+08q, 0.00000000000000000000000000000000000e+00q, -8.22221292676746100187301635742187500e+07q, 0.00000000000000000000000000000000000e+00q, 4.79587115671268701553344726562500000e+07q, 0.00000000000000000000000000000000000e+00q, -2.02338607091770172119140625000000000e+07q, 0.00000000000000000000000000000000000e+00q, 5.84943842597023863345384597778320312e+06q, 0.00000000000000000000000000000000000e+00q, -1.03901879406250128522515296936035156e+06q, 0.00000000000000000000000000000000000e+00q, 8.56924658534397167386487126350402832e+04q, 0.00000000000000000000000000000000000e+00q, +4.46592077661920629907399415969848633e+05q, 0.00000000000000000000000000000000000e+00q, -5.20248136799144465476274490356445312e+06q, 0.00000000000000000000000000000000000e+00q, 2.82686569522142596542835235595703125e+07q, 0.00000000000000000000000000000000000e+00q, -9.46901105848322212696075439453125000e+07q, 0.00000000000000000000000000000000000e+00q, 2.17844343623266607522964477539062500e+08q, 0.00000000000000000000000000000000000e+00q, -3.63093143760906279087066650390625000e+08q, 0.00000000000000000000000000000000000e+00q, 4.50687287713830471038818359375000000e+08q, 0.00000000000000000000000000000000000e+00q, -4.21509281995832383632659912109375000e+08q, 0.00000000000000000000000000000000000e+00q, 2.96867198797534465789794921875000000e+08q, 0.00000000000000000000000000000000000e+00q, -1.55430408171087205410003662109375000e+08q, 0.00000000000000000000000000000000000e+00q, 5.87783766765413880348205566406250000e+07q, 0.00000000000000000000000000000000000e+00q, -1.51981634072597287595272064208984375e+07q, 0.00000000000000000000000000000000000e+00q, 2.40755168685661116614937782287597656e+06q, 0.00000000000000000000000000000000000e+00q, -1.76417240899572061607614159584045410e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.38461078676413399080047383904457092e+04q, 0.00000000000000000000000000000000000e+00q, 1.82184375449728860985487699508666992e+05q, 0.00000000000000000000000000000000000e+00q, -1.11162023306700447574257850646972656e+06q, 0.00000000000000000000000000000000000e+00q, 4.16343497171014267951250076293945312e+06q, 0.00000000000000000000000000000000000e+00q, -1.06773431443374510854482650756835938e+07q, 0.00000000000000000000000000000000000e+00q, 1.97974161020501367747783660888671875e+07q, 0.00000000000000000000000000000000000e+00q, -2.73028532237646952271461486816406250e+07q, 0.00000000000000000000000000000000000e+00q, 2.83579011879410371184349060058593750e+07q, 0.00000000000000000000000000000000000e+00q, -2.21847279877497740089893341064453125e+07q, 0.00000000000000000000000000000000000e+00q, 1.29131291796417869627475738525390625e+07q, 0.00000000000000000000000000000000000e+00q, -5.43731032923756539821624755859375000e+06q, 0.00000000000000000000000000000000000e+00q, 1.56890482461021584458649158477783203e+06q, 0.00000000000000000000000000000000000e+00q, -2.78170794607148854993283748626708984e+05q, 0.00000000000000000000000000000000000e+00q, 2.29011801313864998519420623779296875e+04q, 0.00000000000000000000000000000000000e+00q, +1.93875897138525557238608598709106445e+05q, 0.00000000000000000000000000000000000e+00q, -2.23466958269416727125644683837890625e+06q, 0.00000000000000000000000000000000000e+00q, 1.20402110267533380538225173950195312e+07q, 0.00000000000000000000000000000000000e+00q, -4.00537655225732028484344482421875000e+07q, 0.00000000000000000000000000000000000e+00q, 9.16239538252201974391937255859375000e+07q, 0.00000000000000000000000000000000000e+00q, -1.51985213231815218925476074218750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.87884797669122964143753051757812500e+08q, 0.00000000000000000000000000000000000e+00q, -1.75108654873948484659194946289062500e+08q, 0.00000000000000000000000000000000000e+00q, 1.22956706746985435485839843750000000e+08q, 0.00000000000000000000000000000000000e+00q, -6.42076070715375170111656188964843750e+07q, 0.00000000000000000000000000000000000e+00q, 2.42255336364213675260543823242187500e+07q, 0.00000000000000000000000000000000000e+00q, -6.25139666716876998543739318847656250e+06q, 0.00000000000000000000000000000000000e+00q, 9.88557218342568958178162574768066406e+05q, 0.00000000000000000000000000000000000e+00q, -7.23280704239714541472494602203369141e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.03974599460324134270194917917251587e+03q, 0.00000000000000000000000000000000000e+00q, 3.98490735694920294918119907379150391e+04q, 0.00000000000000000000000000000000000e+00q, -2.42316973593848262680694460868835449e+05q, 0.00000000000000000000000000000000000e+00q, 9.04706946988794370554387569427490234e+05q, 0.00000000000000000000000000000000000e+00q, -2.31336424051039991900324821472167969e+06q, 0.00000000000000000000000000000000000e+00q, 4.27758772470598109066486358642578125e+06q, 0.00000000000000000000000000000000000e+00q, -5.88414265097809582948684692382812500e+06q, 0.00000000000000000000000000000000000e+00q, 6.09677811937942449003458023071289062e+06q, 0.00000000000000000000000000000000000e+00q, -4.75871866943901218473911285400390625e+06q, 0.00000000000000000000000000000000000e+00q, 2.76393740754957171157002449035644531e+06q, 0.00000000000000000000000000000000000e+00q, -1.16141098242895049042999744415283203e+06q, 0.00000000000000000000000000000000000e+00q, 3.34457724899541586637496948242187500e+05q, 0.00000000000000000000000000000000000e+00q, -5.91875270648699224693700671195983887e+04q, 0.00000000000000000000000000000000000e+00q, 4.86379309389435093180509284138679504e+03q, 0.00000000000000000000000000000000000e+00q, +7.61001942566358629846945405006408691e+04q, 0.00000000000000000000000000000000000e+00q, -8.64539257196947932243347167968750000e+05q, 0.00000000000000000000000000000000000e+00q, 4.60568663022323790937662124633789062e+06q, 0.00000000000000000000000000000000000e+00q, -1.51834361676665488630533218383789062e+07q, 0.00000000000000000000000000000000000e+00q, 3.44762425876274406909942626953125000e+07q, 0.00000000000000000000000000000000000e+00q, -5.68380351678418591618537902832031250e+07q, 0.00000000000000000000000000000000000e+00q, 6.98999262067279368638992309570312500e+07q, 0.00000000000000000000000000000000000e+00q, -6.48594196932381540536880493164062500e+07q, 0.00000000000000000000000000000000000e+00q, 4.53698038612030670046806335449218750e+07q, 0.00000000000000000000000000000000000e+00q, -2.36141005705766081809997558593750000e+07q, 0.00000000000000000000000000000000000e+00q, 8.88409937179561890661716461181640625e+06q, 0.00000000000000000000000000000000000e+00q, -2.28680800872521754354238510131835938e+06q, 0.00000000000000000000000000000000000e+00q, 3.60830949023087858222424983978271484e+05q, 0.00000000000000000000000000000000000e+00q, -2.63499356382984042284078896045684814e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.14043761191920111741637811064720154e+02q, 0.00000000000000000000000000000000000e+00q, 6.71372539088923531380714848637580872e+03q, 0.00000000000000000000000000000000000e+00q, -4.06842933349554732558317482471466064e+04q, 0.00000000000000000000000000000000000e+00q, 1.51408802754615928279235959053039551e+05q, 0.00000000000000000000000000000000000e+00q, -3.85992770466236805077642202377319336e+05q, 0.00000000000000000000000000000000000e+00q, 7.11718014186396263539791107177734375e+05q, 0.00000000000000000000000000000000000e+00q, -9.76425894839429878629744052886962891e+05q, 0.00000000000000000000000000000000000e+00q, 1.00918043837533798068761825561523438e+06q, 0.00000000000000000000000000000000000e+00q, -7.85830458179148728959262371063232422e+05q, 0.00000000000000000000000000000000000e+00q, 4.55395559479193470906466245651245117e+05q, 0.00000000000000000000000000000000000e+00q, -1.90947220350903720827773213386535645e+05q, 0.00000000000000000000000000000000000e+00q, 5.48749908658781641861423850059509277e+04q, 0.00000000000000000000000000000000000e+00q, -9.69175064648314946680329740047454834e+03q, 0.00000000000000000000000000000000000e+00q, 7.94900552646556548097578343003988266e+02q, 0.00000000000000000000000000000000000e+00q, +2.69758538394232746213674545288085938e+04q, 0.00000000000000000000000000000000000e+00q, -3.00429473256149212829768657684326172e+05q, 0.00000000000000000000000000000000000e+00q, 1.57651606519755301997065544128417969e+06q, 0.00000000000000000000000000000000000e+00q, -5.13611123006964288651943206787109375e+06q, 0.00000000000000000000000000000000000e+00q, 1.15518204300614148378372192382812500e+07q, 0.00000000000000000000000000000000000e+00q, -1.88962972895989380776882171630859375e+07q, 0.00000000000000000000000000000000000e+00q, 2.30878486419987678527832031250000000e+07q, 0.00000000000000000000000000000000000e+00q, -2.13051980091860517859458923339843750e+07q, 0.00000000000000000000000000000000000e+00q, 1.48330949216555692255496978759765625e+07q, 0.00000000000000000000000000000000000e+00q, -7.68898437951616384088993072509765625e+06q, 0.00000000000000000000000000000000000e+00q, 2.88253386234460165724158287048339844e+06q, 0.00000000000000000000000000000000000e+00q, -7.39685842853167909197509288787841797e+05q, 0.00000000000000000000000000000000000e+00q, 1.16397178392670844914391636848449707e+05q, 0.00000000000000000000000000000000000e+00q, -8.47972901281799749995116144418716431e+03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.40464660353874108977834112010896206e+01q, 0.00000000000000000000000000000000000e+00q, 8.33356234639602917013689875602722168e+02q, 0.00000000000000000000000000000000000e+00q, -5.03236836401571963506285101175308228e+03q, 0.00000000000000000000000000000000000e+00q, 1.86668611698738241102546453475952148e+04q, 0.00000000000000000000000000000000000e+00q, -4.74417211354366736486554145812988281e+04q, 0.00000000000000000000000000000000000e+00q, 8.72224721865193714620545506477355957e+04q, 0.00000000000000000000000000000000000e+00q, -1.19335393173610296798869967460632324e+05q, 0.00000000000000000000000000000000000e+00q, 1.23018861862941106664948165416717529e+05q, 0.00000000000000000000000000000000000e+00q, -9.55567832486973202321678400039672852e+04q, 0.00000000000000000000000000000000000e+00q, 5.52461577994976469199173152446746826e+04q, 0.00000000000000000000000000000000000e+00q, -2.31127896949154383037239313125610352e+04q, 0.00000000000000000000000000000000000e+00q, 6.62794358847311013960279524326324463e+03q, 0.00000000000000000000000000000000000e+00q, -1.16816980853095492420834489166736603e+03q, 0.00000000000000000000000000000000000e+00q, 9.56190522292218787470119423232972622e+01q, 0.00000000000000000000000000000000000e+00q, +8.55603114338721752574201673269271851e+03q, 0.00000000000000000000000000000000000e+00q, -9.26743183755214122356846928596496582e+04q, 0.00000000000000000000000000000000000e+00q, 4.76537459701202693395316600799560547e+05q, 0.00000000000000000000000000000000000e+00q, -1.52867882007417362183332443237304688e+06q, 0.00000000000000000000000000000000000e+00q, 3.39663298522649751976132392883300781e+06q, 0.00000000000000000000000000000000000e+00q, -5.50189848970832768827676773071289062e+06q, 0.00000000000000000000000000000000000e+00q, 6.66823140636234171688556671142578125e+06q, 0.00000000000000000000000000000000000e+00q, -6.11190246061920002102851867675781250e+06q, 0.00000000000000000000000000000000000e+00q, 4.23088682727172970771789550781250000e+06q, 0.00000000000000000000000000000000000e+00q, -2.18238247313608881086111068725585938e+06q, 0.00000000000000000000000000000000000e+00q, 8.14674966840219451114535331726074219e+05q, 0.00000000000000000000000000000000000e+00q, -2.08276511803176399553194642066955566e+05q, 0.00000000000000000000000000000000000e+00q, 3.26674087398223018681164830923080444e+04q, 0.00000000000000000000000000000000000e+00q, -2.37301156893402230707579292356967926e+03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.51483378049253403219154279213398695e+00q, 0.00000000000000000000000000000000000e+00q, 7.14876141481358331475348677486181259e+01q, 0.00000000000000000000000000000000000e+00q, -4.30162781746586688313982449471950531e+02q, 0.00000000000000000000000000000000000e+00q, 1.59030607954802212589129339903593063e+03q, 0.00000000000000000000000000000000000e+00q, -4.02902213146202348070801235735416412e+03q, 0.00000000000000000000000000000000000e+00q, 7.38534757886501392931677401065826416e+03q, 0.00000000000000000000000000000000000e+00q, -1.00758580190831889922264963388442993e+04q, 0.00000000000000000000000000000000000e+00q, 1.03589434032487934018718078732490540e+04q, 0.00000000000000000000000000000000000e+00q, -8.02585513174843526940094307065010071e+03q, 0.00000000000000000000000000000000000e+00q, 4.62879124786438751470996066927909851e+03q, 0.00000000000000000000000000000000000e+00q, -1.93196009774521826329873874783515930e+03q, 0.00000000000000000000000000000000000e+00q, 5.52769930498720896139275282621383667e+02q, 0.00000000000000000000000000000000000e+00q, -9.72133672693191499547538114711642265e+01q, 0.00000000000000000000000000000000000e+00q, 7.94050888366471863122342256247065961e+00q, 0.00000000000000000000000000000000000e+00q, +2.37942110804217600161791779100894928e+03q, 0.00000000000000000000000000000000000e+00q, -2.47449434713480877690017223358154297e+04q, 0.00000000000000000000000000000000000e+00q, 1.23720091172264408669434487819671631e+05q, 0.00000000000000000000000000000000000e+00q, -3.88821404652114491909742355346679688e+05q, 0.00000000000000000000000000000000000e+00q, 8.50520371656281757168471813201904297e+05q, 0.00000000000000000000000000000000000e+00q, -1.36079318438109336420893669128417969e+06q, 0.00000000000000000000000000000000000e+00q, 1.63290715209589502774178981781005859e+06q, 0.00000000000000000000000000000000000e+00q, -1.48442212644083704799413681030273438e+06q, 0.00000000000000000000000000000000000e+00q, 1.02051417348119162488728761672973633e+06q, 0.00000000000000000000000000000000000e+00q, -5.23327400341133296024054288864135742e+05q, 0.00000000000000000000000000000000000e+00q, 1.94373819796619878616183996200561523e+05q, 0.00000000000000000000000000000000000e+00q, -4.94756889648802971350960433483123779e+04q, 0.00000000000000000000000000000000000e+00q, 7.73036749184153450187295675277709961e+03q, 0.00000000000000000000000000000000000e+00q, -5.59648550740099494760215748101472855e+02q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.97678486258726671120911078105564229e-01q, 0.00000000000000000000000000000000000e+00q, 3.84411462019563421321777241246309131e+00q, 0.00000000000000000000000000000000000e+00q, -2.30482009834207453025101131061092019e+01q, 0.00000000000000000000000000000000000e+00q, 8.49189637106199199934053467586636543e+01q, 0.00000000000000000000000000000000000e+00q, -2.14445993040965447562484769150614738e+02q, 0.00000000000000000000000000000000000e+00q, 3.91879040302399346273887204006314278e+02q, 0.00000000000000000000000000000000000e+00q, -5.33075624957025411276845261454582214e+02q, 0.00000000000000000000000000000000000e+00q, 5.46519372111237998979049734771251678e+02q, 0.00000000000000000000000000000000000e+00q, -4.22296435021413230970210861414670944e+02q, 0.00000000000000000000000000000000000e+00q, 2.42928055885872964836380560882389545e+02q, 0.00000000000000000000000000000000000e+00q, -1.01142960370805212733102962374687195e+02q, 0.00000000000000000000000000000000000e+00q, 2.88701039534477992276606528321281075e+01q, 0.00000000000000000000000000000000000e+00q, -5.06559998639433928246944560669362545e+00q, 0.00000000000000000000000000000000000e+00q, 4.12842272872327831212402315941289999e-01q, 0.00000000000000000000000000000000000e+00q, +5.59985005664054142471286468207836151e+02q, 0.00000000000000000000000000000000000e+00q, -5.45981686882553367468062788248062134e+03q, 0.00000000000000000000000000000000000e+00q, 2.62069620595635387871880084276199341e+04q, 0.00000000000000000000000000000000000e+00q, -8.00763869127825892064720392227172852e+04q, 0.00000000000000000000000000000000000e+00q, 1.71591384521574451355263590812683105e+05q, 0.00000000000000000000000000000000000e+00q, -2.70255143154440971557050943374633789e+05q, 0.00000000000000000000000000000000000e+00q, 3.20300942136119410861283540725708008e+05q, 0.00000000000000000000000000000000000e+00q, -2.88269589375542884226888418197631836e+05q, 0.00000000000000000000000000000000000e+00q, 1.96546606600718339905142784118652344e+05q, 0.00000000000000000000000000000000000e+00q, -1.00092753003757112310267984867095947e+05q, 0.00000000000000000000000000000000000e+00q, 3.69571648170870248577557504177093506e+04q, 0.00000000000000000000000000000000000e+00q, -9.35924041382883478945586830377578735e+03q, 0.00000000000000000000000000000000000e+00q, 1.45587505450032836051832418888807297e+03q, 0.00000000000000000000000000000000000e+00q, -1.04990466049500625445034529548138380e+02q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.56466625997167468886672736516629811e-03q, 0.00000000000000000000000000000000000e+00q, 1.10175874782449279010165810177568346e-01q, 0.00000000000000000000000000000000000e+00q, -6.58162882173091268178666268795495853e-01q, 0.00000000000000000000000000000000000e+00q, 2.41646544789416184428887390822637826e+00q, 0.00000000000000000000000000000000000e+00q, -6.08193112844205518996432147105224431e+00q, 0.00000000000000000000000000000000000e+00q, 1.10786392112497686923688888782635331e+01q, 0.00000000000000000000000000000000000e+00q, -1.50242408756902161570678799762390554e+01q, 0.00000000000000000000000000000000000e+00q, 1.53579308187567562526965048164129257e+01q, 0.00000000000000000000000000000000000e+00q, -1.18336276506316284695685681072063744e+01q, 0.00000000000000000000000000000000000e+00q, 6.78886795353508265549180578091181815e+00q, 0.00000000000000000000000000000000000e+00q, -2.81913888391011369094485417008399963e+00q, 0.00000000000000000000000000000000000e+00q, 8.02653853637811387500278215156868100e-01q, 0.00000000000000000000000000000000000e+00q, -1.40489553508888670441123736054578330e-01q, 0.00000000000000000000000000000000000e+00q, 1.14224810138785180801956897767013288e-02q, 0.00000000000000000000000000000000000e+00q, +1.04999847864860726076585706323385239e+02q, 0.00000000000000000000000000000000000e+00q, -9.09998137251934053892910014837980270e+02q, 0.00000000000000000000000000000000000e+00q, 4.09498941349496271868702024221420288e+03q, 0.00000000000000000000000000000000000e+00q, -1.20119630385543550801230594515800476e+04q, 0.00000000000000000000000000000000000e+00q, 2.50249115807559137465432286262512207e+04q, 0.00000000000000000000000000000000000e+00q, -3.86098469957869674544781446456909180e+04q, 0.00000000000000000000000000000000000e+00q, 4.50448029936897873994894325733184814e+04q, 0.00000000000000000000000000000000000e+00q, -4.00398089126345221302472054958343506e+04q, 0.00000000000000000000000000000000000e+00q, 2.70268603791425084637012332677841187e+04q, 0.00000000000000000000000000000000000e+00q, -1.36499240961747436813311651349067688e+04q, 0.00000000000000000000000000000000000e+00q, 5.00497015330886188166914507746696472e+03q, 0.00000000000000000000000000000000000e+00q, -1.25999195955850859718339052051305771e+03q, 0.00000000000000000000000000000000000e+00q, 1.94998669526874522262005484662950039e+02q, 0.00000000000000000000000000000000000e+00q, -1.39998978227361359216729397303424776e+01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.63008214260905817541771889445101351e-05q, 0.00000000000000000000000000000000000e+00q, 1.23390533544664332023244046609988800e-03q, 0.00000000000000000000000000000000000e+00q, -7.34302134644990080886151062600220030e-03q, 0.00000000000000000000000000000000000e+00q, 2.68617309615638288899930330444476567e-02q, 0.00000000000000000000000000000000000e+00q, -6.73703325969337712963991293690924067e-02q, 0.00000000000000000000000000000000000e+00q, 1.22305289816171655625787195731390966e-01q, 0.00000000000000000000000000000000000e+00q, -1.65324438898380166040880112632294185e-01q, 0.00000000000000000000000000000000000e+00q, 1.68466430838227682054153433455212507e-01q, 0.00000000000000000000000000000000000e+00q, -1.29414121421990185867301192956801970e-01q, 0.00000000000000000000000000000000000e+00q, 7.40265939094274794118888394223176874e-02q, 0.00000000000000000000000000000000000e+00q, -3.06530486826795192656369692940643290e-02q, 0.00000000000000000000000000000000000e+00q, 8.70340238924295628297755911262356676e-03q, 0.00000000000000000000000000000000000e+00q, -1.51929340893595986664021957324166578e-03q, 0.00000000000000000000000000000000000e+00q, 1.23203929079691035458968273452740050e-04q, 0.00000000000000000000000000000000000e+00q, +1.39999997241755078647429400007240474e+01q, 0.00000000000000000000000000000000000e+00q, -9.09999966114473721745525836013257504e+01q, 0.00000000000000000000000000000000000e+00q, 3.63999980672327922093245433643460274e+02q, 0.00000000000000000000000000000000000e+00q, -1.00099993225840842114848783239722252e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199983727683638790040276944637299e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299971717105518109747208654880524e+03q, 0.00000000000000000000000000000000000e+00q, 3.43199963411342741892440244555473328e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299964331940054762526415288448334e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199973798709834227338433265686035e+03q, 0.00000000000000000000000000000000000e+00q, -1.00099985674362051213392987847328186e+03q, 0.00000000000000000000000000000000000e+00q, 3.63999943325478511724213603883981705e+02q, 0.00000000000000000000000000000000000e+00q, -9.09999846330528754378974554128944874e+01q, 0.00000000000000000000000000000000000e+00q, 1.39999974395490944800712895812466741e+01q, 0.00000000000000000000000000000000000e+00q, -9.99999801908312280218638079531956464e-01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.93943668790726927895703719101350160e-07q, 0.00000000000000000000000000000000000e+00q, 2.47439956229840364682558660758271429e-06q, 0.00000000000000000000000000000000000e+00q, -1.46645280431395657564242612780347486e-05q, 0.00000000000000000000000000000000000e+00q, 5.34308673925060553799859519585879752e-05q, 0.00000000000000000000000000000000000e+00q, -1.33489855004123824907050210875070206e-04q, 0.00000000000000000000000000000000000e+00q, 2.41434572845234117792131978141867421e-04q, 0.00000000000000000000000000000000000e+00q, -3.25174308330365702257580551304272376e-04q, 0.00000000000000000000000000000000000e+00q, 3.30190714679572041179850261372052955e-04q, 0.00000000000000000000000000000000000e+00q, -2.52784211127092680541222913248589066e-04q, 0.00000000000000000000000000000000000e+00q, 1.44116748986332306224980581710326533e-04q, 0.00000000000000000000000000000000000e+00q, -5.94836372906812520309875746971073340e-05q, 0.00000000000000000000000000000000000e+00q, 1.68362688651716013439434138643235883e-05q, 0.00000000000000000000000000000000000e+00q, -2.92997636281264755932544040228915350e-06q, 0.00000000000000000000000000000000000e+00q, 2.36887499627690250865279242287186889e-07q, 0.00000000000000000000000000000000000e+00q, +}; + +# elif ( PATCH_SIZE == 16 && GRAMFE_ND == 32 && GRAMFE_NDELTA == 14 && GRAMFE_ORDER == 14 ) + +const static __float128 GramFE_FFT[2 * GRAMFE_FLU_NXT * GRAMFE_FLU_NXT] = { +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.76204223103254674822049932587848329e-257q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00234531271368498223311130098604216e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 2.71393355889744396227394602664786725e-256q, 1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.76204223103254674822049932587848329e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00234531271368498223311130098604216e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.05462749193454559705523403778242982e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.69054068375567893840437010445811826e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.02133624759642850866255974724219949e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -9.52408446206509349644099865175696658e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.07361842681728941924772902573226490e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -2.00469062542736996446622260197208432e-256q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.42786711779488851607398513668309000e-257q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.62836013533846655482219554100492700e-256q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 2.71393355889744396227394602664786725e-256q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 5.42786711779488792454789205329573451e-256q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -6.51344054135386621928878216401970799e-256q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.02133624759642850866255974724219949e-256q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.33502932292159190183224962632684773e-256q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 4.07596373953097410571779378502462931e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -4.85178916167728228031086579078087292e-256q, -1.00000000000000000000000000000000000e+00q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -1.00000000000000000000000000000000000e+00q, 9.70357832335456456062173158156174583e-256q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.00234531271368498223311130098604216e-256q, 1.00000000000000000000000000000000000e+00q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.00000000000000000000000000000000000e+00q, -2.00469062542736996446622260197208432e-256q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.99290417435684244754669573673030209e-258q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 4.76204223103254674822049932587848329e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -1.00234531271368498223311130098604216e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, -2.05462749193454559705523403778242982e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, 9.69054068375567893840437010445811826e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, 2.02133624759642850866255974724219949e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -9.52408446206509349644099865175696658e-257q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 3.07361842681728941924772902573226490e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -2.00469062542736996446622260197208432e-256q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, 4.12590060603815003406985176252865256e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 8.66794176630276278575899253172915108e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -4.10925498386909119411046807556485965e-256q, 2.28766620230136521580395407156404217e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, 6.23046496447987067218800415273407240e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, 1.95475375892019433187721116616173882e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 4.07596373953097410571779378502462931e-256q, 8.33502932292159190183224962632684773e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -1.93810813675113578768087402089162365e-256q, 4.45881304941932032647050158454360043e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, 4.05931811736191585728450318144819189e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.47545867158837916642988527150739334e-256q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -4.04267249519285701732511949448439898e-256q, 2.35424869097759939258930265264450284e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 1.90481689241301869928819973035139332e-256q, 6.16388247580363649540265557165361173e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 6.62995989653727573290009563921683642e-256q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, 1.88817127024396015509186258508127815e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -6.14723685363457883849545805146452979e-256q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 4.00938125085473992893244520394416864e-256q, 8.26844683424535772504690104524638706e-256q, -1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 4.52539553809555450325585016562406110e-256q, 1.00000000000000000000000000000000000e+00q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 3.27336589284599135807768168558629142e-256q, 1.00000000000000000000000000000000000e+00q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -1.00000000000000000000000000000000000e+00q, 6.54673178569198271615536337117258284e-256q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -1.51480910633185113251290073218212733e-255q, -1.00000000000000000000000000000000000e+00q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 1.08557342355897770321479702733661800e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 3.25672027067693310964439108200985400e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 5.42786711779488792454789205329573451e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -6.51344054135386621928878216401970799e-256q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -8.68458738847182162571837621869294399e-256q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.08557342355897758490957841065914690e-255q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.30268810827077324385775643280394160e-255q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.58540146993867635298512690796121609e-255q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.82975576873995214367350651880248132e-257q, -1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 3.16266821212112302760024942420478467e-257q, 1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -1.73192379104364679146107875432692202e-255q, -1.00000000000000000000000000000000000e+00q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.22502878753762549509266343137521083e-257q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -6.46350367484669088246281726990304023e-256q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -6.58002303003010039607413074510016866e-256q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -2.58540146993867635298512690796121609e-255q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -2.16615316046723763613656033190662703e-255q, -1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -4.35893931640496906129247871292290942e-256q, -1.00000000000000000000000000000000000e+00q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -1.00000000000000000000000000000000000e+00q, 8.71787863280993812258495742584581884e-256q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.02133624759642850866255974724219949e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.33502932292159190183224962632684773e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -4.04267249519285701732511949448439898e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.16388247580363649540265557165361173e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.99273562868568168049915460036773122e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.24775755511288013673875781592066487e-255q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 3.94279876217850575214709662286370797e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.89286189567133041532113172874704021e-256q, 1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -1.66700586458431838036644992526536955e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.13528185689288937147620388308546572e-256q, -1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 1.24775755511288013673875781592066487e-255q, -1.00000000000000000000000000000000000e+00q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 4.07596373953097410571779378502462931e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -4.47545867158837916642988527150739334e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -8.81775236582428997928907338085386533e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 3.94279876217850575214709662286370797e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -4.60862364894084752000058243366831468e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, 8.15192747906194821143558757004925863e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -4.85178916167728228031086579078087292e-256q, -1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 9.70357832335456456062173158156174583e-256q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 1.00000000000000000000000000000000000e+00q, -1.94071566467091291212434631631234917e-255q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -2.15949491159961457337368132383099425e-255q, -1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 2.59705340545701742265147687215840003e-255q, 1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 6.23046496447987067218800415273407240e-256q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, 4.07596373953097410571779378502462931e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.26844683424535772504690104524638706e-256q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -1.24609299289597413443760083054681448e-255q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, 8.15192747906194821143558757004925863e-256q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.65856051544802285682654732778498244e-256q, 1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.23444105737763330138168809970457273e-255q, -1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.99273562868568168049915460036773122e-256q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 8.13528185689288937147620388308546572e-256q, -1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.08625417405575686060457926796501642e-255q, 1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -2.25437495796324812741127978102381184e-256q, -1.00000000000000000000000000000000000e+00q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -1.00000000000000000000000000000000000e+00q, 4.50874991592649625482255956204762367e-256q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -3.89286189567133041532113172874704021e-256q, 1.00000000000000000000000000000000000e+00q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.00234531271368498223311130098604216e-256q, 1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, -2.00469062542736996446622260197208432e-256q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 1.00000000000000000000000000000000000e+00q, 4.00938125085473992893244520394416864e-256q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.16266821212112302760024942420478467e-257q, 1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, 4.64191489327896460839325672420854501e-256q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 1.23444105737763330138168809970457273e-255q, -1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.39858083487136848950933914734606042e-257q, 1.00000000000000000000000000000000000e+00q, -2.79716166974273697901867829469212084e-257q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, 1.00000000000000000000000000000000000e+00q, -5.59432333948547395803735658938424167e-257q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, -1.00000000000000000000000000000000000e+00q, -9.52408446206509349644099865175696658e-257q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -1.00000000000000000000000000000000000e+00q, -2.00469062542736996446622260197208432e-256q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -1.00000000000000000000000000000000000e+00q, -4.10925498386909119411046807556485965e-256q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 1.00000000000000000000000000000000000e+00q, 4.07596373953097410571779378502462931e-256q, -1.00000000000000000000000000000000000e+00q, -1.93810813675113578768087402089162365e-256q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, 1.00000000000000000000000000000000000e+00q, -4.47545867158837916642988527150739334e-256q, -1.00000000000000000000000000000000000e+00q, -4.04267249519285701732511949448439898e-256q, 1.00000000000000000000000000000000000e+00q, 1.90481689241301869928819973035139332e-256q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -1.00000000000000000000000000000000000e+00q, -6.14723685363457883849545805146452979e-256q, 1.00000000000000000000000000000000000e+00q, 4.00938125085473992893244520394416864e-256q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, -1.00000000000000000000000000000000000e+00q, -8.25180121207630006813970352505730512e-256q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -1.00000000000000000000000000000000000e+00q, 1.73358835326055255715179850634583022e-255q, 1.00000000000000000000000000000000000e+00q, -8.81775236582428997928907338085386533e-256q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 1.00000000000000000000000000000000000e+00q, 8.21850996773818238822093615112971930e-256q, -1.00000000000000000000000000000000000e+00q, 4.57533240460273043160790814312808434e-256q, 1.00000000000000000000000000000000000e+00q, 3.94279876217850575214709662286370797e-256q, -1.00000000000000000000000000000000000e+00q, -1.24609299289597413443760083054681448e-255q, 1.00000000000000000000000000000000000e+00q, -3.32912443381170846956362087690593635e-257q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, 1.00000000000000000000000000000000000e+00q, -4.60862364894084752000058243366831468e-256q, -1.00000000000000000000000000000000000e+00q, -3.90950751784038866375442233232347764e-256q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 1.00000000000000000000000000000000000e+00q, 8.15192747906194821143558757004925863e-256q, -1.00000000000000000000000000000000000e+00q, -1.66700586458431838036644992526536955e-255q, 1.00000000000000000000000000000000000e+00q, 3.87621627350227157536174804178324730e-256q, -1.00000000000000000000000000000000000e+00q, 8.91762609883864065294100316908720085e-256q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, -1.00000000000000000000000000000000000e+00q, -8.11863623472383171456900636289638378e-256q, 1.00000000000000000000000000000000000e+00q, -4.67520613761708169678593101474877535e-256q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 1.00000000000000000000000000000000000e+00q, -8.95091734317675833285977054301478667e-256q, -1.00000000000000000000000000000000000e+00q, 4.32786176395522149104765777022994358e-257q, 1.00000000000000000000000000000000000e+00q, 8.08534499038571403465023898896879796e-256q, -1.00000000000000000000000000000000000e+00q, 4.70849738195519878517860530528900568e-256q, 1.00000000000000000000000000000000000e+00q, 3.80963378482603739857639946070278663e-256q, -1.00000000000000000000000000000000000e+00q, -1.23277649516072729908053111433072235e-255q, 1.00000000000000000000000000000000000e+00q, -2.17780509598557870580291029610381097e-255q, -1.00000000000000000000000000000000000e+00q, 1.32599197930745514658001912784336728e-255q, 1.00000000000000000000000000000000000e+00q, -4.74178862629331587357127959582923602e-256q, -1.00000000000000000000000000000000000e+00q, -3.77634254048792031018372517016255630e-256q, 1.00000000000000000000000000000000000e+00q, 1.22944737072691576769909161029290596e-255q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, 1.00000000000000000000000000000000000e+00q, 8.01876250170947985786489040788833729e-256q, -1.00000000000000000000000000000000000e+00q, -1.65368936684907154500938020904927741e-255q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, -1.00000000000000000000000000000000000e+00q, 9.05079107619110900651170033124812219e-256q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -6.53008616352292505924816585098350091e-256q, -1.00000000000000000000000000000000000e+00q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.00000000000000000000000000000000000e+00q, 1.30601723270458501184963317019670018e-255q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 3.02462452601298473134320497495258787e-255q, 1.00000000000000000000000000000000000e+00q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -2.16615316046723763613656033190662703e-255q, -1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -1.98804500325831142026988545670196915e-256q, 1.00000000000000000000000000000000000e+00q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -1.00000000000000000000000000000000000e+00q, -3.97609000651662284053977091340393831e-256q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -4.69185175978613994521922161832521277e-256q, -1.00000000000000000000000000000000000e+00q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.30435267048767900954847618482284979e-255q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -8.81775236582428997928907338085386533e-256q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.74524028877889362681814847054301416e-255q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -1.32266285487364337858814239045060870e-255q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.03128277488060826732695844973810504e-255q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 2.60870534097535801909695236964569959e-255q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -2.18612790707010824408782075626317852e-255q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 3.99273562868568168049915460036773122e-256q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 8.13528185689288937147620388308546572e-256q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.08625417405575686060457926796501642e-255q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -4.74178862629331587357127959582923602e-256q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.03414545402205134960450281105904026e-256q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -7.98547125737136336099830920073546244e-256q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.69311442964262788496508598550565820e-256q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.27336589284599135807768168558629142e-256q, 1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 6.54673178569198271615536337117258284e-256q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -1.51480910633185113251290073218212733e-255q, -1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 1.00000000000000000000000000000000000e+00q, -1.30934635713839654323107267423451657e-255q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 2.16948228490104964073887430265432780e-255q, 1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 3.02961821266370226502580146436425465e-255q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -1.75855678651414046217521818675910629e-255q, -1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 2.28766620230136521580395407156404217e-256q, 1.00000000000000000000000000000000000e+00q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -1.00000000000000000000000000000000000e+00q, 4.57533240460273043160790814312808434e-256q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 3.79298816265697915014310885712634921e-256q, -1.00000000000000000000000000000000000e+00q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795540642959405467323600e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -4.34229369423591081285918810934647200e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -6.51344054135386621928878216401970799e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -8.68458738847182162571837621869294399e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.08557342355897758490957841065914690e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.30268810827077324385775643280394160e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.58540146993867635298512690796121609e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.73691747769436432514367524373858880e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.17114684711795516981915682131829380e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.32266285487364337858814239045060870e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.60537621654154648771551286560788320e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -5.17080293987735270597025381592243219e-255q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -5.99242398086107517127375594300726599e-257q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -4.42552180508120323807782729400337009e-256q, -1.00000000000000000000000000000000000e+00q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.66456221690585418856883441631333103e-258q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.32912443381170837713766883262666205e-258q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -6.65824886762341675427533766525332410e-258q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.32281108452927117390905219226484087e-258q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.33164977352468335085506753305066482e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.66456221690585423478181043845296817e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.82975576873995214367350651880248132e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.16266821212112302760024942420478467e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.32912443381170846956362087690593635e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82849309888346516515754341212648855e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -4.16140554226463604908428631752879191e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.32786176395522149104765777022994358e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.08625417405575686060457926796501642e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.17780509598557870580291029610381097e-255q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.17946965820248470810406728147766136e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.16014287240814796145689867950150761e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -5.32659909409873340342027013220265928e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.07626680075432179323938628914168287e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 5.65951153747990428734701303760496264e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.07293767632051002524750955174892428e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -5.99242398086107517127375594300726599e-257q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.19278615593773130685069976433881130e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 6.32533642424224605520049884840956934e-257q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.03414545402205134960450281105904026e-256q, -1.00000000000000000000000000000000000e+00q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -4.60862364894084752000058243366831468e-256q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 4.32786176395522149104765777022994358e-257q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.03128277488060826732695844973810504e-255q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.82501673713860829878991878048613411e-256q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, -7.91888876869512918421296061965500177e-256q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.70123301064088046567775990565673690e-256q, -1.00000000000000000000000000000000000e+00q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -1.00000000000000000000000000000000000e+00q, 1.74024660212817609313555198113134738e-255q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 2.61036990319226402139810935501954997e-255q, 1.00000000000000000000000000000000000e+00q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -1.73192379104364679146107875432692202e-255q, -1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 2.17614053376867317672262777743984497e-255q, 1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 3.46384758208729358292215750865384405e-255q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -4.75155463040591398912168723986784312e-255q, -1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.10221904572803624741113417260673317e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 2.20443809145607249482226834521346633e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.02133624759642850866255974724219949e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -4.40887618291214498964453669042693267e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.83101843859643986159708597971266844e-257q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, -4.04267249519285701732511949448439898e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.26844683424535772504690104524638706e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -8.81775236582428997928907338085386533e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 3.66203687719287972319417195942533688e-257q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 3.85957065133321332692845743820680988e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, 8.08534499038571403465023898896879796e-256q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.23111193294382153338981136231181415e-255q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, -1.65368936684907154500938020904927741e-255q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.07626680075432179323938628914168287e-255q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.76355047316485799585781467617077307e-255q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.34097303925960798423824582943330981e-255q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 9.18395605354357736008239749340904354e-256q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.95818171449107665236061594264705546e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 1.64500575750752509901853268627504217e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -3.29001151501505019803706537255008433e-256q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 1.29270073496933817649256345398060805e-255q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -6.58002303003010039607413074510016866e-256q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.58540146993867635298512690796121609e-255q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 8.85104361016240647615565458800674018e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.31600460600602007921482614902003373e-255q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.17780509598557870580291029610381097e-255q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 2.60870534097535801909695236964569959e-255q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -5.17080293987735270597025381592243219e-255q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, -7.91888876869512918421296061965500177e-256q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.77020872203248129523113091760134804e-255q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00000000000000000000000000000000000e+00q, 4.33230632093447527227312066381325406e-255q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -1.00000000000000000000000000000000000e+00q, 4.64191489327896460839325672420854501e-256q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -3.69311442964262788496508598550565820e-256q, 1.00000000000000000000000000000000000e+00q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -4.35893931640496906129247871292290942e-256q, -1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 8.71787863280993812258495742584581884e-256q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 1.00000000000000000000000000000000000e+00q, -1.74357572656198762451699148516916377e-255q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -2.17946965820248470810406728147766136e-255q, -1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 2.61536358984298155508070584443121675e-255q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.05125752148347840205734440738477214e-255q, 1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 4.45881304941932032647050158454360043e-256q, 1.00000000000000000000000000000000000e+00q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.00000000000000000000000000000000000e+00q, 8.91762609883864065294100316908720085e-256q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.33764391482579621624636909204055123e-255q, -1.00000000000000000000000000000000000e+00q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.23212461318078304754596769464490874e-257q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -2.46424922636156609509193538928981748e-257q, -2.96361789143332242098204974739327251e-257q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 4.92849845272313219018387077857963497e-257q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 9.85699690544626438036774155715926993e-257q, 2.22108371362513103901860549048358150e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, 2.02133624759642850866255974724219949e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, 8.33502932292159190183224962632684773e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -4.04267249519285701732511949448439898e-256q, 6.16388247580363649540265557165361173e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, 3.99273562868568168049915460036773122e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, 1.30768179492149077754035292221560837e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, 1.24775755511288013673875781592066487e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 3.94279876217850575214709662286370797e-256q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, -3.89286189567133041532113172874704021e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -1.66700586458431838036644992526536955e-255q, 8.13528185689288937147620388308546572e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, 8.93427172100769949290038685605099376e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -4.69185175978613994521922161832521277e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 8.08534499038571403465023898896879796e-256q, -2.08625417405575686060457926796501642e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -1.23277649516072729908053111433072235e-255q, 3.79298816265697915014310885712634921e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -4.74178862629331587357127959582923602e-256q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, -9.03414545402205134960450281105904026e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, -1.65202480463216577931866045703036922e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -7.98547125737136336099830920073546244e-256q, 2.07626680075432179323938628914168287e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -9.08408232052922668643046770517570802e-256q, -3.69311442964262788496508598550565820e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 2.61536358984298155508070584443121675e-255q, -1.33764391482579621624636909204055123e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -5.99242398086107517127375594300726599e-257q, -1.21779543520857469803274164609572202e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -2.49551511022576027347751563184132974e-255q, -4.89159922581484247557526736156659478e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 7.88559752435701150429419324572741595e-256q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 9.18395605354357736008239749340904354e-256q, 3.59324069662827661978706311388496720e-256q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -2.62535096314441662244589882325455030e-255q, -2.91476341969719851710520774118603441e-255q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, 6.99116131100458856246160101344837040e-257q, 1.20780806190713963066754866727238847e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, -1.77686697090010483121488439238686520e-255q, 4.99147295882919374075329023318728579e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -7.78572379134266083064226345749408043e-256q, -2.20610265367297837881820671390984562e-255q, -1.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 3.33401172916863676073289985053073909e-255q, -3.49336696361392535460904024226427619e-256q, 1.00000000000000000000000000000000000e+00q, -1.00000000000000000000000000000000000e+00q, -1.62705637137857787429524077661709314e-255q, -1.35761866142866635097675504968721833e-255q, -1.00000000000000000000000000000000000e+00q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -6.59666865219915923603351443206396158e-256q, -1.00000000000000000000000000000000000e+00q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.00000000000000000000000000000000000e+00q, 1.31933373043983184720670288641279232e-255q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 3.04459927261585533929446539930913937e-255q, 1.00000000000000000000000000000000000e+00q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 1.16880153440427042419648275368719384e-256q, 1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, 2.33760306880854084839296550737438767e-256q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 1.24775755511288013673875781592066487e-255q, -1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 1.00000000000000000000000000000000000e+00q, -4.67520613761708169678593101474877535e-256q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.16014287240814796145689867950150761e-257q, 1.00000000000000000000000000000000000e+00q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -1.00000000000000000000000000000000000e+00q, -2.49551511022576027347751563184132974e-255q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -1.35096041256104305160343880825664336e-255q, -1.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -4.75155463040591398912168723986784312e-255q, -1.00000000000000000000000000000000000e+00q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.11886466789709479160747131787684833e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.23772933579418958321494263575369667e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 1.97139938108925287607354831143185399e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -4.47545867158837916642988527150739334e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -2.66329954704936670171013506610132964e-257q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 3.94279876217850575214709662286370797e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 8.15192747906194821143558757004925863e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -8.95091734317675833285977054301478667e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -4.74178862629331587357127959582923602e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -5.32659909409873340342027013220265928e-257q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -1.76355047316485799585781467617077307e-255q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 7.88559752435701150429419324572741595e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -9.21724729788169504000116486733662936e-256q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, 1.63038549581238964228711751400985173e-255q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.00000000000000000000000000000000000e+00q, -7.98989864114810121424182972965528046e-257q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.76077956117605940000072804208539335e-257q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 1.15215591223521188000014560841707867e-256q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -2.30431182447042376000029121683415734e-256q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -2.16393088197761074552382888511497179e-257q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -4.60862364894084752000058243366831468e-256q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.13528185689288937147620388308546572e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, 4.32786176395522149104765777022994358e-257q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.23111193294382153338981136231181415e-255q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.82501673713860829878991878048613411e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, -7.91888876869512918421296061965500177e-256q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.00000000000000000000000000000000000e+00q, -9.21724729788169504000116486733662936e-256q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 3.52665820795204244300171453280450653e-256q, -1.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.00000000000000000000000000000000000e+00q, -1.62705637137857787429524077661709314e-255q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -2.90144692196195144513770079161500009e-255q, 1.00000000000000000000000000000000000e+00q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.30665713718410844647035597612652176e-256q, -1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 6.61331427436821689294071195225304351e-256q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 4.59197802677178868004119874670452177e-256q, 1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 1.00000000000000000000000000000000000e+00q, -1.32266285487364337858814239045060870e-255q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -2.18612790707010824408782075626317852e-255q, -1.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -1.00000000000000000000000000000000000e+00q, 9.18395605354357736008239749340904354e-256q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.91305801146303750186630302117843377e-255q, 1.00000000000000000000000000000000000e+00q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 2.35424869097759939258930265264450284e-256q, 1.00000000000000000000000000000000000e+00q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -1.00000000000000000000000000000000000e+00q, 4.70849738195519878517860530528900568e-256q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 3.59324069662827661978706311388496720e-256q, -1.00000000000000000000000000000000000e+00q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.85178916167728228031086579078087292e-256q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 9.70357832335456456062173158156174583e-256q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 6.56337740786104155611474705813637575e-256q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -1.94071566467091291212434631631234917e-255q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -2.15949491159961457337368132383099425e-255q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 1.31267548157220831122294941162727515e-255q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 2.59705340545701742265147687215840003e-255q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -3.88143132934182582424869263262469833e-255q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -9.03414545402205134960450281105904026e-256q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 4.31898982319922914674736264766198850e-255q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.60336774708403754834457840812828680e-255q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -2.62535096314441662244589882325455030e-255q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.90972888702922549726398905043073299e-255q, -1.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 5.19410681091403484530295374431680007e-255q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 2.21609002697441344618339969273317918e-255q, 1.00000000000000000000000000000000000e+00q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 6.16388247580363649540265557165361173e-256q, -1.00000000000000000000000000000000000e+00q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -1.00000000000000000000000000000000000e+00q, -1.23277649516072729908053111433072235e-255q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 1.34763128812723128361156207086388478e-255q, 1.00000000000000000000000000000000000e+00q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -5.09495467441371763214724223128078664e-257q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -1.01899093488274352642944844625615733e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.13551029006615333580380846314696350e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 2.03798186976548705285889689251231466e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.44451273996394676450727574025952742e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 2.27102058013230667160761692629392700e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 6.23046496447987067218800415273407240e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 4.07596373953097410571779378502462931e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 8.73452425497899696254434111280961175e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.08890254799278935290145514805190548e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.26844683424535772504690104524638706e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -4.54204116026461334321523385258785401e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.95944438434756459210648030982750088e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -1.24609299289597413443760083054681448e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 8.15192747906194821143558757004925863e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 4.65856051544802285682654732778498244e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.23444105737763330138168809970457273e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -2.17780509598557870580291029610381097e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 1.32765654152436114888117611321721767e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -1.65368936684907154500938020904927741e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.75855678651414046217521818675910629e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -9.08408232052922668643046770517570802e-256q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -2.07293767632051002524750955174892428e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -7.91888876869512918421296061965500177e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -4.89159922581484247557526736156659478e-256q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 2.49218598579194826887520166109362896e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.21113718634095116204898817131020485e-255q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 6.99116131100458856246160101344837040e-257q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -1.35096041256104305160343880825664336e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, 1.63038549581238964228711751400985173e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -3.49336696361392535460904024226427619e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, 9.31712103089604571365309465556996488e-256q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 2.04963380528382812252524685670949860e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.00000000000000000000000000000000000e+00q, -3.49380970199159878501773644512384470e-255q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.12463793618166209432398739534820713e-256q, 1.00000000000000000000000000000000000e+00q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -1.00000000000000000000000000000000000e+00q, -2.46888211475526660276337619940914547e-255q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 1.18783331530426925932672547627077917e-255q, -1.00000000000000000000000000000000000e+00q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 6.62995989653727573290009563921683642e-256q, 1.00000000000000000000000000000000000e+00q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -1.00000000000000000000000000000000000e+00q, 1.32599197930745514658001912784336728e-255q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -3.05458664591729040665965837813247292e-255q, -1.00000000000000000000000000000000000e+00q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 5.92723578286664484196409949478654502e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.18544715657332896839281989895730900e-256q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 4.44216742725026207803721098096716300e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -2.37089431314665793678563979791461801e-256q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -8.88433485450052415607442196193432600e-256q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 1.74690485099579939250886822256192235e-255q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -4.74178862629331587357127959582923602e-256q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, -7.98547125737136336099830920073546244e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -5.99242398086107517127375594300726599e-257q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, 9.18395605354357736008239749340904354e-256q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -1.77686697090010483121488439238686520e-255q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, -1.62705637137857787429524077661709314e-255q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 1.00000000000000000000000000000000000e+00q, -3.49380970199159878501773644512384470e-255q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -1.00000000000000000000000000000000000e+00q, -4.17250834811151372120915853593003284e-255q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -8.76781549931711464246310848673719757e-256q, -1.00000000000000000000000000000000000e+00q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -1.00000000000000000000000000000000000e+00q, 1.75356309986342292849262169734743951e-255q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 4.76154200370734905648688021869117667e-255q, 1.00000000000000000000000000000000000e+00q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -2.25437495796324812741127978102381184e-256q, -1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, 4.50874991592649625482255956204762367e-256q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -3.89286189567133041532113172874704021e-256q, 1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 1.00000000000000000000000000000000000e+00q, -9.01749983185299250964511912409524735e-256q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -2.19278615593773130685069976433881130e-255q, -1.00000000000000000000000000000000000e+00q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -1.00000000000000000000000000000000000e+00q, -7.78572379134266083064226345749408043e-256q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 5.12463793618166209432398739534820713e-256q, 1.00000000000000000000000000000000000e+00q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 4.99368665071756325890114358103455029e-258q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 9.98737330143512651780228716206910058e-258q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.49810599521526879281843898575181650e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -1.99747466028702530356045743241382012e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.49684332535878125974676361340017797e-257q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 2.99621199043053758563687797150363299e-257q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.49558065550229428123080050672418520e-257q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -3.99494932057405060712091486482764023e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.08625417405575686060457926796501642e-255q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 4.99368665071756251949352722680035593e-257q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.07626680075432179323938628914168287e-255q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -5.99242398086107517127375594300726599e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, 6.99116131100458856246160101344837040e-257q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -2.20610265367297837881820671390984562e-255q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 1.00000000000000000000000000000000000e+00q, -7.98989864114810121424182972965528046e-257q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -2.04630468085001635453337011931674002e-255q, 1.00000000000000000000000000000000000e+00q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -1.00000000000000000000000000000000000e+00q, -4.17250834811151372120915853593003284e-255q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 2.03631730754858128716817714049340646e-255q, -1.00000000000000000000000000000000000e+00q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -1.00234531271368498223311130098604216e-256q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, -2.00469062542736996446622260197208432e-256q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.32095744663948230419662836210427251e-256q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, 4.00938125085473992893244520394416864e-256q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 3.16266821212112302760024942420478467e-257q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 4.64191489327896460839325672420854501e-256q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 1.23444105737763330138168809970457273e-255q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, 8.01876250170947985786489040788833729e-256q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.69311442964262788496508598550565820e-256q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, 6.32533642424224605520049884840956934e-257q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -4.95818171449107665236061594264705546e-256q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 1.00000000000000000000000000000000000e+00q, -9.28382978655792921678651344841709003e-256q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.36094778586247811896863178707997691e-255q, 1.00000000000000000000000000000000000e+00q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -1.00000000000000000000000000000000000e+00q, -2.46888211475526660276337619940914547e-255q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 2.03631730754858128716817714049340646e-255q, -1.00000000000000000000000000000000000e+00q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 8.26844683424535772504690104524638706e-256q, -1.00000000000000000000000000000000000e+00q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -1.00000000000000000000000000000000000e+00q, -1.65368936684907154500938020904927741e-255q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 3.91305801146303750186630302117843377e-255q, 1.00000000000000000000000000000000000e+00q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 4.39223056074308614968515300346313976e-256q, 1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, 8.78446112148617229937030600692627951e-256q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -1.31766916822292584490554590103894193e-255q, -1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 1.00000000000000000000000000000000000e+00q, -1.75689222429723445987406120138525590e-255q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 2.19611528037154331145301373508651207e-255q, 1.00000000000000000000000000000000000e+00q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -1.00000000000000000000000000000000000e+00q, 2.63533833644585168981109180207788385e-255q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -3.07456139252016054139004433577914002e-255q, -1.00000000000000000000000000000000000e+00q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, 9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, 9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, 9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, 9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, 8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, 8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, 8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, 7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, 7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, 6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, 5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, 5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, 4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, 3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, 3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, 2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, 1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, 7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, 4.52539553809555450325585016562406110e-256q, 1.00000000000000000000000000000000000e+00q, -7.84590957278449435685629964609688614e-02q, 9.96917333733127963846243346779374406e-01q, -1.56434465040230868959625354364106897e-01q, 9.87688340595137770350220307591371238e-01q, -2.33445363855905418937197737250244245e-01q, 9.72369920397676557044519540795590729e-01q, -3.09016994374947451262869435595348477e-01q, 9.51056516295153531181938433292089030e-01q, -3.82683432365089781779232680491986685e-01q, 9.23879532511286738483136105060111731e-01q, -4.53990499739546804480738728670985438e-01q, 8.91006524188367898808849076885962859e-01q, -5.22498564715948909942255795613164082e-01q, 8.52640164354092178200517082586884499e-01q, -5.87785252292473137103456792829092592e-01q, 8.09016994374947451262869435595348477e-01q, -6.49448048330183658194414419995155185e-01q, 7.60405965600030930851005450676893815e-01q, -7.07106781186547572737310929369414225e-01q, 7.07106781186547572737310929369414225e-01q, -7.60405965600030930851005450676893815e-01q, 6.49448048330183658194414419995155185e-01q, -8.09016994374947451262869435595348477e-01q, 5.87785252292473137103456792829092592e-01q, -8.52640164354092178200517082586884499e-01q, 5.22498564715948909942255795613164082e-01q, -8.91006524188367898808849076885962859e-01q, 4.53990499739546804480738728670985438e-01q, -9.23879532511286738483136105060111731e-01q, 3.82683432365089781779232680491986685e-01q, -9.51056516295153531181938433292089030e-01q, 3.09016994374947451262869435595348477e-01q, -9.72369920397676557044519540795590729e-01q, 2.33445363855905418937197737250244245e-01q, -9.87688340595137770350220307591371238e-01q, 1.56434465040230868959625354364106897e-01q, -9.96917333733127963846243346779374406e-01q, 7.84590957278449435685629964609688614e-02q, -1.00000000000000000000000000000000000e+00q, 9.05079107619110900651170033124812219e-256q, -9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, -9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, -9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, -9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, -9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, -8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, -8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, -8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, -7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, -7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, -6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, -5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, -5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, -4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, -3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, -3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, -2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, -1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, -7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, -1.35761866142866635097675504968721833e-255q, -1.00000000000000000000000000000000000e+00q, 7.84590957278449435685629964609688614e-02q, -9.96917333733127963846243346779374406e-01q, 1.56434465040230868959625354364106897e-01q, -9.87688340595137770350220307591371238e-01q, 2.33445363855905418937197737250244245e-01q, -9.72369920397676557044519540795590729e-01q, 3.09016994374947451262869435595348477e-01q, -9.51056516295153531181938433292089030e-01q, 3.82683432365089781779232680491986685e-01q, -9.23879532511286738483136105060111731e-01q, 4.53990499739546804480738728670985438e-01q, -8.91006524188367898808849076885962859e-01q, 5.22498564715948909942255795613164082e-01q, -8.52640164354092178200517082586884499e-01q, 5.87785252292473137103456792829092592e-01q, -8.09016994374947451262869435595348477e-01q, 6.49448048330183658194414419995155185e-01q, -7.60405965600030930851005450676893815e-01q, 7.07106781186547572737310929369414225e-01q, -7.07106781186547572737310929369414225e-01q, 7.60405965600030930851005450676893815e-01q, -6.49448048330183658194414419995155185e-01q, 8.09016994374947451262869435595348477e-01q, -5.87785252292473137103456792829092592e-01q, 8.52640164354092178200517082586884499e-01q, -5.22498564715948909942255795613164082e-01q, 8.91006524188367898808849076885962859e-01q, -4.53990499739546804480738728670985438e-01q, 9.23879532511286738483136105060111731e-01q, -3.82683432365089781779232680491986685e-01q, 9.51056516295153531181938433292089030e-01q, -3.09016994374947451262869435595348477e-01q, 9.72369920397676557044519540795590729e-01q, -2.33445363855905418937197737250244245e-01q, 9.87688340595137770350220307591371238e-01q, -1.56434465040230868959625354364106897e-01q, 9.96917333733127963846243346779374406e-01q, -7.84590957278449435685629964609688614e-02q, +}; +const static __float128 GramFE_IFFT[2 * PS2 * GRAMFE_FLU_NXT] = { +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, -1.74822604358921066965289396185712196e-259q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 3.49645208717842133930578792371424391e-259q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, 3.08031153295195761886491923661227185e-259q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 6.99290417435684267861157584742848783e-259q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, -4.16140554226463576025318617915605974e-260q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -6.16062306590391523772983847322454371e-259q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, 1.27373866860342936182383453568055951e-258q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 1.39858083487136853572231516948569757e-258q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 8.32281108452927152050637235831211947e-260q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, -2.75554761432009052610188338723755862e-258q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, -1.44019489029401485000018201052134834e-258q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -2.54747733720685872364766907136111903e-258q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.25000000000000006938893903907228378e-02q, -1.24842166267939072807595585374681792e-259q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -8.74113021794605334826446980928560978e-260q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -1.74822604358921066965289396185712196e-259q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -1.54015576647597880943245961830613593e-259q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 3.49645208717842133930578792371424391e-259q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -2.08070277113231788012659308957802987e-260q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 3.08031153295195761886491923661227185e-259q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -6.36869334301714680911917267840279757e-259q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 6.99290417435684267861157584742848783e-259q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -4.16140554226463576025318617915605974e-260q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.37777380716004526305094169361877931e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -6.16062306590391523772983847322454371e-259q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -7.20097445147007425000091005260674168e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 1.27373866860342936182383453568055951e-258q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 6.24210831339695364037977926873408960e-260q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 1.39858083487136853572231516948569757e-258q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 5.95255278879068366634050426804628985e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -1.25293164089210632021734117051182700e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 8.32281108452927152050637235831211947e-260q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.41938786258269157732880853465443008e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -2.75554761432009052610188338723755862e-258q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -2.56828436491818199631904254722803728e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.04035138556615886785552151019583189e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -1.44019489029401485000018201052134834e-258q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -2.54747733720685872364766907136111903e-258q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 1.21131758546945977487459421877799049e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -1.24842166267939072807595585374681792e-259q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.46100191800533812267155548638826659e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 2.79716166974273707144463033897139513e-258q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 2.52667030949553545097629559549420077e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 1.19051055775813673326810085360925797e-258q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 6.80564092495493345563409467532440927e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 3.84202303352161158920775719360678253e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 2.50586328178421264043468234102365399e-258q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.37777380716004526305094169361877931e-258q, -1.25000000000000006938893903907228378e-02q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.25000000000000006938893903907228378e-02q, -2.75554761432009052610188338723755862e-258q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -4.13332142148013602021770519155452367e-258q, 1.25000000000000006938893903907228378e-02q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 6.78483389724361110722224164225023397e-259q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -1.35696677944872222144444832845004679e-258q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -2.03545016917308310110179238197688445e-258q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.25000000000000006938893903907228378e-02q, 2.71393355889744444288889665690009359e-258q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.39241694862180532254624071042693125e-258q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -4.07090033834616620220358476395376891e-258q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.07937959355836304852280932170315452e-258q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.25000000000000006938893903907228378e-02q, 5.42786711779488888577779331380018717e-258q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -6.78483389724361064509248142085386249e-258q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -4.13332142148013602021770519155452367e-258q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.25000000000000006938893903907228378e-02q, 8.14180067669233240440716952790753781e-258q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -1.61587591871167260970456186434063090e-257q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -7.20097445147007425000091005260674168e-259q, 1.25000000000000006938893903907228378e-02q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.25000000000000006938893903907228378e-02q, -1.44019489029401485000018201052134834e-258q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.02812859844220318688658292892190135e-258q, -1.25000000000000006938893903907228378e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.25000000000000006938893903907228378e-02q, -2.05625719688440637377316585784380271e-258q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -8.07937959355836304852280932170315452e-258q, 1.25000000000000006938893903907228378e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.25000000000000006938893903907228378e-02q, 4.11251439376881274754633171568760542e-258q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 6.80564092495493345563409467532440927e-258q, -1.25000000000000006938893903907228378e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.25000000000000006938893903907228378e-02q, -1.61587591871167260970456186434063090e-257q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -5.53190225635150478700490047173840697e-258q, 1.25000000000000006938893903907228378e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.54015576647597880943245961830613593e-259q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, 3.08031153295195761886491923661227185e-259q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, -6.16062306590391523772983847322454371e-259q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 6.24210831339695364037977926873408960e-260q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.41938786258269157732880853465443008e-258q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -1.24842166267939072807595585374681792e-259q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 2.52667030949553545097629559549420077e-258q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -2.83877572516538315465761706930886017e-258q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, -2.46424922636156609509193538928981748e-258q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.20422175982630268455105017690466405e-258q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 1.04187866536519895075865038557914625e-257q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 3.49645208717842133930578792371424391e-259q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 6.99290417435684267861157584742848783e-259q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, -6.16062306590391523772983847322454371e-259q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 1.39858083487136853572231516948569757e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 8.32281108452927152050637235831211947e-260q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, -2.54747733720685872364766907136111903e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 2.79716166974273707144463033897139513e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 1.66456221690585430410127447166242389e-259q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 5.51109522864018105220376677447511724e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, -2.46424922636156609509193538928981748e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 2.88038978058802970000036402104269667e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, -5.09495467441371744729533814272223805e-258q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 2.49684332535878145615191170749363584e-259q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -6.06473645209660322009239041559318833e-258q, 1.25000000000000006938893903907228378e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.25000000000000006938893903907228378e-02q, -1.21294729041932064401847808311863767e-257q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 8.20422175982630268455105017690466405e-258q, -1.25000000000000006938893903907228378e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.25293164089210632021734117051182700e-258q, -1.25000000000000006938893903907228378e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.25000000000000006938893903907228378e-02q, 2.50586328178421264043468234102365399e-258q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -2.90119680829935297267173749690961493e-258q, 1.25000000000000006938893903907228378e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -8.74113021794605334826446980928560978e-260q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -1.74822604358921066965289396185712196e-259q, -1.54015576647597880943245961830613593e-259q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 3.49645208717842133930578792371424391e-259q, -2.08070277113231788012659308957802987e-260q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 3.08031153295195761886491923661227185e-259q, -6.36869334301714680911917267840279757e-259q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 6.99290417435684267861157584742848783e-259q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -4.16140554226463576025318617915605974e-260q, 1.37777380716004526305094169361877931e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -6.16062306590391523772983847322454371e-259q, -7.20097445147007425000091005260674168e-259q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 1.27373866860342936182383453568055951e-258q, 6.24210831339695364037977926873408960e-260q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 1.39858083487136853572231516948569757e-258q, 5.95255278879068366634050426804628985e-259q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, -1.25293164089210632021734117051182700e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 8.32281108452927152050637235831211947e-260q, -1.41938786258269157732880853465443008e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -2.75554761432009052610188338723755862e-258q, -2.56828436491818199631904254722803728e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, -1.04035138556615886785552151019583189e-259q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -1.44019489029401485000018201052134834e-258q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -2.54747733720685872364766907136111903e-258q, 1.21131758546945977487459421877799049e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -1.24842166267939072807595585374681792e-259q, 1.46100191800533812267155548638826659e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 2.79716166974273707144463033897139513e-258q, 2.52667030949553545097629559549420077e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 1.19051055775813673326810085360925797e-258q, 6.80564092495493345563409467532440927e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, 3.84202303352161158920775719360678253e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 2.50586328178421264043468234102365399e-258q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 1.66456221690585430410127447166242389e-259q, 5.15737575754768680317969834892662134e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -2.83877572516538315465761706930886017e-258q, 1.08349272078784531124949324875443417e-257q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 5.51109522864018105220376677447511724e-258q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 5.13656872983636399263808509445607456e-258q, 2.85958275287670642732899054517577842e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -2.46424922636156609509193538928981748e-258q, 7.78808120559983907964262154515178486e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -2.08070277113231773571104302039166378e-259q, 8.20422175982630268455105017690466405e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 2.88038978058802970000036402104269667e-258q, 2.44344219865024282242056191342289923e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, 2.28877304824554959593147736394264981e-259q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -5.09495467441371744729533814272223805e-258q, 1.04187866536519895075865038557914625e-257q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 2.42263517093891954974918843755598097e-258q, 5.57351631177415040808812698067950053e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 2.49684332535878145615191170749363584e-259q, 5.07414764670239463675372488825169127e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -2.92200383601067624534311097277653318e-258q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 5.59432333948547414288926067794279026e-258q, -2.70491360247201331637234605104462187e-259q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 5.05334061899107090195259119098840154e-258q, 2.94281086372199905588472422724707996e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -2.38102111551627346653620170721851594e-258q, 7.70485309475454598895712764168411184e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -1.36112818499098669112681893506488185e-257q, 8.28744987067159485097702363757959412e-258q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, 2.96361789143332232855609770311399822e-258q, 2.36021408780495019386482823135159769e-258q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, 7.68404606704322317841551438721356506e-258q, 3.12105415669847703681321473814659393e-259q, -1.25000000000000006938893903907228378e-02q, 1.25000000000000006938893903907228378e-02q, -5.01172656356842528086936468204730798e-258q, 1.03355585428066982654200508379092754e-257q, 1.25000000000000006938893903907228378e-02q, -1.25000000000000006938893903907228378e-02q, -1.09805764018577164833243070400091409e-257q, 5.65674442261944349877362088414717355e-258q, -1.25000000000000006938893903907228378e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.41938786258269157732880853465443008e-258q, 1.25000000000000006938893903907228378e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.25000000000000006938893903907228378e-02q, -2.83877572516538315465761706930886017e-258q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.37777380716004526305094169361877931e-258q, -1.25000000000000006938893903907228378e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.25000000000000006938893903907228378e-02q, -2.75554761432009052610188338723755862e-258q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -4.13332142148013602021770519155452367e-258q, 1.25000000000000006938893903907228378e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.25000000000000006938893903907228378e-02q, 5.51109522864018105220376677447511724e-258q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 2.28877304824554959593147736394264981e-259q, -1.25000000000000006938893903907228378e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.25000000000000006938893903907228378e-02q, -8.26664284296027204043541038310904734e-258q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.63044083810959894678749931958711083e-257q, 1.25000000000000006938893903907228378e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 4.09170736605748947487495823982068716e-258q, -1.25000000000000006938893903907228378e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.25000000000000006938893903907228378e-02q, -8.18341473211497894974991647964137432e-258q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -1.89351138291481398958188755065107859e-257q, 1.25000000000000006938893903907228378e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -1.35696677944872222144444832845004679e-258q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 2.71393355889744444288889665690009359e-258q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -4.07090033834616620220358476395376891e-258q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 5.42786711779488888577779331380018717e-258q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -6.78483389724361064509248142085386249e-258q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 8.14180067669233240440716952790753781e-258q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -1.61587591871167260970456186434063090e-257q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 1.08557342355897777715555866276003743e-257q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 1.35696677944872212901849628417077250e-257q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -8.26664284296027204043541038310904734e-258q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 1.62836013533846648088143390558150756e-257q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -1.09805764018577164833243070400091409e-257q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.25000000000000006938893903907228378e-02q, 3.23175183742334521940912372868126181e-257q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.25000000000000006938893903907228378e-02q, -3.74526498803817232864341763042681985e-259q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -2.08070277113231788012659308957802987e-260q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -4.16140554226463576025318617915605974e-260q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 6.24210831339695364037977926873408960e-260q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, 8.32281108452927152050637235831211947e-260q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.04035138556615886785552151019583189e-259q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -1.24842166267939072807595585374681792e-259q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 6.80564092495493345563409467532440927e-258q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, 1.66456221690585430410127447166242389e-259q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -2.08070277113231773571104302039166378e-259q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 2.28877304824554959593147736394264981e-259q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, 2.49684332535878145615191170749363584e-259q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -2.70491360247201331637234605104462187e-259q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -1.36112818499098669112681893506488185e-257q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 3.12105415669847703681321473814659393e-259q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.25000000000000006938893903907228378e-02q, 3.32912443381170860820254894332484779e-259q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -3.53719471092494017959188314850310165e-259q, 1.25000000000000006938893903907228378e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.25000000000000006938893903907228378e-02q, -3.74526498803817232864341763042681985e-259q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 3.95333526515140390003275183560507371e-259q, -1.25000000000000006938893903907228378e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -7.20097445147007425000091005260674168e-259q, 1.25000000000000006938893903907228378e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.25000000000000006938893903907228378e-02q, -1.44019489029401485000018201052134834e-258q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.25000000000000006938893903907228378e-02q, 2.88038978058802970000036402104269667e-258q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -2.70491360247201331637234605104462187e-259q, 1.25000000000000006938893903907228378e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.25000000000000006938893903907228378e-02q, -1.09805764018577164833243070400091409e-257q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -4.94930548043445500072548403305018175e-258q, -1.25000000000000006938893903907228378e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -2.16490473880455834144482517206181366e-257q, 1.25000000000000006938893903907228378e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 1.02812859844220318688658292892190135e-258q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -2.05625719688440637377316585784380271e-258q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -8.07937959355836304852280932170315452e-258q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.25000000000000006938893903907228378e-02q, 4.11251439376881274754633171568760542e-258q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 6.80564092495493345563409467532440927e-258q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -1.61587591871167260970456186434063090e-257q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -5.53190225635150478700490047173840697e-258q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.25000000000000006938893903907228378e-02q, 8.22502878753762549509266343137521083e-258q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -1.36112818499098669112681893506488185e-257q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -1.63044083810959894678749931958711083e-257q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.25000000000000006938893903907228378e-02q, 3.23175183742334521940912372868126181e-257q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -4.94930548043445500072548403305018175e-258q, -1.25000000000000006938893903907228378e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.25000000000000006938893903907228378e-02q, -1.10638045127030095740098009434768139e-257q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -2.70769145058404741487450859200038096e-257q, 1.25000000000000006938893903907228378e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, -5.44867414550621169631940656827073395e-258q, 1.25000000000000006938893903907228378e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.25000000000000006938893903907228378e-02q, -1.08973482910124233926388131365414679e-257q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, 1.63460224365186350889582197048122019e-257q, -1.25000000000000006938893903907228378e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.54015576647597880943245961830613593e-259q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 3.08031153295195761886491923661227185e-259q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -6.16062306590391523772983847322454371e-259q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 6.24210831339695364037977926873408960e-260q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -1.41938786258269157732880853465443008e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -1.24842166267939072807595585374681792e-259q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 2.52667030949553545097629559549420077e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -2.83877572516538315465761706930886017e-258q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -2.46424922636156609509193538928981748e-258q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 8.20422175982630268455105017690466405e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.04187866536519895075865038557914625e-257q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 2.49684332535878145615191170749363584e-259q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 5.05334061899107090195259119098840154e-258q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 7.70485309475454598895712764168411184e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 2.96361789143332232855609770311399822e-258q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 3.12105415669847703681321473814659393e-259q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -1.09805764018577164833243070400091409e-257q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 4.99091953585710154606823098478401826e-258q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 5.67755145033076630931523413861772033e-258q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 1.63460224365186350889582197048122019e-257q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -3.74526498803817232864341763042681985e-259q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.55969694389110009698268563447741165e-257q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, -4.92849845272313219018387077857963497e-258q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 5.73997253346473658945911478761484657e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, -1.64084435196526053691021003538093281e-257q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -4.36947581937786762047362052270704577e-259q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.25000000000000006938893903907228378e-02q, 1.11054185681256551950930274524179075e-257q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -4.86607736958916283429951057237525168e-258q, -1.25000000000000006938893903907228378e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.25000000000000006938893903907228378e-02q, 2.08375733073039790151730077115829250e-257q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01691023211161120840490630309739293e-257q, 1.25000000000000006938893903907228378e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, 1.46100191800533812267155548638826659e-258q, -1.25000000000000006938893903907228378e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.25000000000000006938893903907228378e-02q, -2.92200383601067624534311097277653318e-258q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.55969694389110009698268563447741165e-257q, 1.25000000000000006938893903907228378e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 6.99290417435684267861157584742848783e-259q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 1.39858083487136853572231516948569757e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -1.23212461318078304754596769464490874e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 2.79716166974273707144463033897139513e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 1.66456221690585430410127447166242389e-259q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -2.46424922636156609509193538928981748e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -5.09495467441371744729533814272223805e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 5.59432333948547414288926067794279026e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 2.96361789143332232855609770311399822e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 3.32912443381170860820254894332484779e-259q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 1.10221904572803621044075335489502345e-257q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -4.92849845272313219018387077857963497e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 5.76077956117605940000072804208539335e-258q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, -1.01899093488274348945906762854444761e-257q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.25000000000000006938893903907228378e-02q, 4.99368665071756291230382341498727168e-259q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, -4.13332142148013602021770519155452367e-258q, 1.25000000000000006938893903907228378e-02q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.25000000000000006938893903907228378e-02q, -8.26664284296027204043541038310904734e-258q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, 5.73997253346473658945911478761484657e-258q, -1.25000000000000006938893903907228378e-02q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, -6.06473645209660322009239041559318833e-258q, 1.25000000000000006938893903907228378e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.25000000000000006938893903907228378e-02q, -1.21294729041932064401847808311863767e-257q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, 8.20422175982630268455105017690466405e-258q, -1.25000000000000006938893903907228378e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.25000000000000006938893903907228378e-02q, 2.42589458083864128803695616623727533e-257q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, -2.69936863949951792095405511309506507e-257q, 1.25000000000000006938893903907228378e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.25000000000000006938893903907228378e-02q, -1.64084435196526053691021003538093281e-257q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, 3.24631675682127155649206118392774174e-257q, -1.25000000000000006938893903907228378e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -6.36869334301714680911917267840279757e-259q, -1.25000000000000006938893903907228378e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.25000000000000006938893903907228378e-02q, 1.27373866860342936182383453568055951e-258q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, -1.41938786258269157732880853465443008e-258q, 1.25000000000000006938893903907228378e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.25000000000000006938893903907228378e-02q, -2.54747733720685872364766907136111903e-258q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, 6.80564092495493345563409467532440927e-258q, -1.25000000000000006938893903907228378e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.25000000000000006938893903907228378e-02q, -2.83877572516538315465761706930886017e-258q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 7.78808120559983907964262154515178486e-258q, 1.25000000000000006938893903907228378e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.25000000000000006938893903907228378e-02q, -5.09495467441371744729533814272223805e-258q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.25000000000000006938893903907228378e-02q, -1.36112818499098669112681893506488185e-257q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.03355585428066982654200508379092754e-257q, 1.25000000000000006938893903907228378e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.25000000000000006938893903907228378e-02q, 5.67755145033076630931523413861772033e-258q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -4.94930548043445500072548403305018175e-258q, -1.25000000000000006938893903907228378e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.25000000000000006938893903907228378e-02q, 1.55761624111996781592852430903035697e-257q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, -4.36947581937786762047362052270704577e-259q, 1.25000000000000006938893903907228378e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.25000000000000006938893903907228378e-02q, -1.01899093488274348945906762854444761e-257q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, 5.82320064431002875588508824828977664e-258q, -1.25000000000000006938893903907228378e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.25000000000000006938893903907228378e-02q, -2.18363106374474924063608527820240294e-257q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 1.54305132172204147884558685378387705e-257q, 1.25000000000000006938893903907228378e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, -3.70452236429165291069512212889249777e-259q, 1.25000000000000006938893903907228378e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.25000000000000006938893903907228378e-02q, -7.40904472858330582139024425778499554e-259q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 2.77635464203141379877325686310447688e-258q, -1.25000000000000006938893903907228378e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.25000000000000006938893903907228378e-02q, 1.48180894571666116427804885155699911e-258q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, -1.87263249401908616432170881521340992e-259q, 1.25000000000000006938893903907228378e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.25000000000000006938893903907228378e-02q, -5.55270928406282759754651372620895375e-258q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 1.09181553187237462031804263910120147e-257q, -1.25000000000000006938893903907228378e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.25000000000000006938893903907228378e-02q, 2.96361789143332232855609770311399822e-258q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 4.99091953585710154606823098478401826e-258q, 1.25000000000000006938893903907228378e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.25000000000000006938893903907228378e-02q, -3.74526498803817232864341763042681985e-259q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 5.73997253346473658945911478761484657e-258q, -1.25000000000000006938893903907228378e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.25000000000000006938893903907228378e-02q, 1.11054185681256551950930274524179075e-257q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 1.01691023211161120840490630309739293e-257q, 1.25000000000000006938893903907228378e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.25000000000000006938893903907228378e-02q, -2.18363106374474924063608527820240294e-257q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -2.60781771756969607575572408495627052e-257q, -1.25000000000000006938893903907228378e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, -2.81796869745406034411600381483831338e-258q, 1.25000000000000006938893903907228378e-02q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.25000000000000006938893903907228378e-02q, -5.63593739490812068823200762967662677e-258q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -4.86607736958916283429951057237525168e-258q, -1.25000000000000006938893903907228378e-02q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -1.25293164089210632021734117051182700e-258q, -1.25000000000000006938893903907228378e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.25000000000000006938893903907228378e-02q, 2.50586328178421264043468234102365399e-258q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, -2.90119680829935297267173749690961493e-258q, 1.25000000000000006938893903907228378e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.25000000000000006938893903907228378e-02q, -5.01172656356842528086936468204730798e-258q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, 3.95333526515140390003275183560507371e-259q, -1.25000000000000006938893903907228378e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.25000000000000006938893903907228378e-02q, -5.80239361659870594534347499381922986e-258q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 1.54305132172204147884558685378387705e-257q, 1.25000000000000006938893903907228378e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, +1.25000000000000006938893903907228378e-02q, 0.00000000000000000000000000000000000e+00q, -1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, 1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, -1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, 1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, -1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, 1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, -1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, 1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, -9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, 8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, -8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, 7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, -6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, 5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, -4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, 3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, -2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, 1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, -9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, 5.49028820092885824166215352000457046e-258q, -1.25000000000000006938893903907228378e-02q, 9.80738696598061881343211254602465488e-04q, 1.24614666716641002419674322254650178e-02q, -1.95543081300288568852296933187062677e-03q, -1.23461042574392210885436682588078838e-02q, 2.91806704819881764997879791678769834e-03q, 1.21546240049709569630564942599448841e-02q, -3.86271242968684288057734654842079181e-03q, -1.18882064536894194867189256115125318e-02q, 4.78354290456362192529571331078841467e-03q, 1.15484941563910852718732868993356533e-02q, -5.67488124674433470906453891302589909e-03q, -1.11375815523545983881659182657131169e-02q, 6.53123205894936068038880705444171326e-03q, 1.06580020544261525744511587276974751e-02q, -7.34731565365591421379320991036365740e-03q, -1.01127124296868427938411727495804371e-02q, 8.11810060412729642131957064066227758e-03q, 9.50507457000038594174817774273833493e-03q, -8.83883476483184396532699622639484005e-03q, -8.83883476483184396532699622639484005e-03q, 9.50507457000038594174817774273833493e-03q, 8.11810060412729642131957064066227758e-03q, -1.01127124296868427938411727495804371e-02q, -7.34731565365591421379320991036365740e-03q, 1.06580020544261525744511587276974751e-02q, 6.53123205894936068038880705444171326e-03q, -1.11375815523545983881659182657131169e-02q, -5.67488124674433470906453891302589909e-03q, 1.15484941563910852718732868993356533e-02q, 4.78354290456362192529571331078841467e-03q, -1.18882064536894194867189256115125318e-02q, -3.86271242968684288057734654842079181e-03q, 1.21546240049709569630564942599448841e-02q, 2.91806704819881764997879791678769834e-03q, -1.23461042574392210885436682588078838e-02q, -1.95543081300288568852296933187062677e-03q, 1.24614666716641002419674322254650178e-02q, 9.80738696598061881343211254602465488e-04q, -1.25000000000000006938893903907228378e-02q, -1.09805764018577164833243070400091409e-257q, 1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, -1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, 1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, -1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, 1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, -1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, 1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, -1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, 9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, -8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, 8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, -7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, 6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, -5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, 4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, -3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, 2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, -1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, 9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, -1.64708646027865738007269401172209684e-257q, 1.25000000000000006938893903907228378e-02q, -9.80738696598061881343211254602465488e-04q, -1.24614666716641002419674322254650178e-02q, 1.95543081300288568852296933187062677e-03q, 1.23461042574392210885436682588078838e-02q, -2.91806704819881764997879791678769834e-03q, -1.21546240049709569630564942599448841e-02q, 3.86271242968684288057734654842079181e-03q, 1.18882064536894194867189256115125318e-02q, -4.78354290456362192529571331078841467e-03q, -1.15484941563910852718732868993356533e-02q, 5.67488124674433470906453891302589909e-03q, 1.11375815523545983881659182657131169e-02q, -6.53123205894936068038880705444171326e-03q, -1.06580020544261525744511587276974751e-02q, 7.34731565365591421379320991036365740e-03q, 1.01127124296868427938411727495804371e-02q, -8.11810060412729642131957064066227758e-03q, -9.50507457000038594174817774273833493e-03q, 8.83883476483184396532699622639484005e-03q, 8.83883476483184396532699622639484005e-03q, -9.50507457000038594174817774273833493e-03q, -8.11810060412729642131957064066227758e-03q, 1.01127124296868427938411727495804371e-02q, 7.34731565365591421379320991036365740e-03q, -1.06580020544261525744511587276974751e-02q, -6.53123205894936068038880705444171326e-03q, 1.11375815523545983881659182657131169e-02q, 5.67488124674433470906453891302589909e-03q, -1.15484941563910852718732868993356533e-02q, -4.78354290456362192529571331078841467e-03q, 1.18882064536894194867189256115125318e-02q, 3.86271242968684288057734654842079181e-03q, -1.21546240049709569630564942599448841e-02q, -2.91806704819881764997879791678769834e-03q, 1.23461042574392210885436682588078838e-02q, 1.95543081300288568852296933187062677e-03q, -1.24614666716641002419674322254650178e-02q, -9.80738696598061881343211254602465488e-04q, +}; +const static __float128 GramFE_Extend[2 * GRAMFE_FLU_NXT * FLU_NXT] = { +1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 1.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, +2.36887499627680959972639046680342734e-07q, 0.00000000000000000000000000000000000e+00q, -2.92997636281253278636108744459320974e-06q, 0.00000000000000000000000000000000000e+00q, 1.68362688651709440463763445272604713e-05q, 0.00000000000000000000000000000000000e+00q, -5.94836372906789277725803088969769306e-05q, 0.00000000000000000000000000000000000e+00q, 1.44116748986326668373683657087269694e-04q, 0.00000000000000000000000000000000000e+00q, -2.52784211127082814301453295158239598e-04q, 0.00000000000000000000000000000000000e+00q, 3.30190714679559139173997683869288267e-04q, 0.00000000000000000000000000000000000e+00q, -3.25174308330353017092162470902394489e-04q, 0.00000000000000000000000000000000000e+00q, 2.41434572845224739443339978528513257e-04q, 0.00000000000000000000000000000000000e+00q, -1.33489855004118647841676592591397821e-04q, 0.00000000000000000000000000000000000e+00q, 5.34308673925039750670674953969552234e-05q, 0.00000000000000000000000000000000000e+00q, -1.46645280431389965502837063882068946e-05q, 0.00000000000000000000000000000000000e+00q, 2.47439956229830750858607324449423004e-06q, 0.00000000000000000000000000000000000e+00q, -1.93943668790719410478296837185840928e-07q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.99999801908296737096293327340390533e-01q, 0.00000000000000000000000000000000000e+00q, 1.39999974395488759881800433504395187e+01q, 0.00000000000000000000000000000000000e+00q, -9.09999846330514685632806504145264626e+01q, 0.00000000000000000000000000000000000e+00q, 3.63999943325472827382327523082494736e+02q, 0.00000000000000000000000000000000000e+00q, -1.00099985674360505072399973869323730e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199973798706764682719949632883072e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299964331935461814282462000846863e+03q, 0.00000000000000000000000000000000000e+00q, 3.43199963411337512297905050218105316e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299971717100970636238344013690948e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199983727680637457524426281452179e+03q, 0.00000000000000000000000000000000000e+00q, -1.00099993225839364185958402231335640e+03q, 0.00000000000000000000000000000000000e+00q, 3.63999980672322749342129100114107132e+02q, 0.00000000000000000000000000000000000e+00q, -9.09999966114461358301923610270023346e+01q, 0.00000000000000000000000000000000000e+00q, 1.39999997241753533216979121789336205e+01q, 0.00000000000000000000000000000000000e+00q, +1.23203929079687809957505129077048878e-04q, 0.00000000000000000000000000000000000e+00q, -1.51929340893591996800027210667849431e-03q, 0.00000000000000000000000000000000000e+00q, 8.70340238924272729947873017408710439e-03q, 0.00000000000000000000000000000000000e+00q, -3.06530486826787178233910680091867107e-02q, 0.00000000000000000000000000000000000e+00q, 7.40265939094255365215957453983719461e-02q, 0.00000000000000000000000000000000000e+00q, -1.29414121421986799687076086229353677e-01q, 0.00000000000000000000000000000000000e+00q, 1.68466430838223296673206164086877834e-01q, 0.00000000000000000000000000000000000e+00q, -1.65324438898375863926659690150700044e-01q, 0.00000000000000000000000000000000000e+00q, 1.22305289816168477612379206220794003e-01q, 0.00000000000000000000000000000000000e+00q, -6.73703325969320226951353447475412395e-02q, 0.00000000000000000000000000000000000e+00q, 2.68617309615631315311556903679957031e-02q, 0.00000000000000000000000000000000000e+00q, -7.34302134644970998927915317722181499e-03q, 0.00000000000000000000000000000000000e+00q, 1.23390533544661122784813489516864138e-03q, 0.00000000000000000000000000000000000e+00q, -9.63008214260880880891804722843119180e-05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.39998978227359831549847513088025153e+01q, 0.00000000000000000000000000000000000e+00q, 1.94998669526872362212088773958384991e+02q, 0.00000000000000000000000000000000000e+00q, -1.25999195955849472738918848335742950e+03q, 0.00000000000000000000000000000000000e+00q, 5.00497015330880731198703870177268982e+03q, 0.00000000000000000000000000000000000e+00q, -1.36499240961745945242000743746757507e+04q, 0.00000000000000000000000000000000000e+00q, 2.70268603791422137874178588390350342e+04q, 0.00000000000000000000000000000000000e+00q, -4.00398089126340928487479686737060547e+04q, 0.00000000000000000000000000000000000e+00q, 4.50448029936892999103292822837829590e+04q, 0.00000000000000000000000000000000000e+00q, -3.86098469957865527248941361904144287e+04q, 0.00000000000000000000000000000000000e+00q, 2.50249115807556481740903109312057495e+04q, 0.00000000000000000000000000000000000e+00q, -1.20119630385542295698542147874832153e+04q, 0.00000000000000000000000000000000000e+00q, 4.09498941349492088193073868751525879e+03q, 0.00000000000000000000000000000000000e+00q, -9.09998137251925186319567728787660599e+02q, 0.00000000000000000000000000000000000e+00q, 1.04999847864859788160174502991139889e+02q, 0.00000000000000000000000000000000000e+00q, +1.14224810138782873619733848613577720e-02q, 0.00000000000000000000000000000000000e+00q, -1.40489553508885839372410941905400250e-01q, 0.00000000000000000000000000000000000e+00q, 8.02653853637795178244118687871377915e-01q, 0.00000000000000000000000000000000000e+00q, -2.81913888391005684752599336206912994e+00q, 0.00000000000000000000000000000000000e+00q, 6.78886795353494676419359166175127029e+00q, 0.00000000000000000000000000000000000e+00q, -1.18336276506313904377520884736441076e+01q, 0.00000000000000000000000000000000000e+00q, 1.53579308187564471666064491728320718e+01q, 0.00000000000000000000000000000000000e+00q, -1.50242408756899159527620213339105248e+01q, 0.00000000000000000000000000000000000e+00q, 1.10786392112495484241208032472059131e+01q, 0.00000000000000000000000000000000000e+00q, -6.08193112844193350952082255389541388e+00q, 0.00000000000000000000000000000000000e+00q, 2.41646544789411388265421010146383196e+00q, 0.00000000000000000000000000000000000e+00q, -6.58162882173078167546975691948318854e-01q, 0.00000000000000000000000000000000000e+00q, 1.10175874782447086319692175493401010e-01q, 0.00000000000000000000000000000000000e+00q, -8.56466625997150468596608163807104575e-03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.04990466049499687528623326215893030e+02q, 0.00000000000000000000000000000000000e+00q, 1.45587505450031540021882392466068268e+03q, 0.00000000000000000000000000000000000e+00q, -9.35924041382875111594330519437789917e+03q, 0.00000000000000000000000000000000000e+00q, 3.69571648170866974396631121635437012e+04q, 0.00000000000000000000000000000000000e+00q, -1.00092753003756239195354282855987549e+05q, 0.00000000000000000000000000000000000e+00q, 1.96546606600716622779145836830139160e+05q, 0.00000000000000000000000000000000000e+00q, -2.88269589375540381297469139099121094e+05q, 0.00000000000000000000000000000000000e+00q, 3.20300942136116616893559694290161133e+05q, 0.00000000000000000000000000000000000e+00q, -2.70255143154438643250614404678344727e+05q, 0.00000000000000000000000000000000000e+00q, 1.71591384521572996163740754127502441e+05q, 0.00000000000000000000000000000000000e+00q, -8.00763869127819198183715343475341797e+04q, 0.00000000000000000000000000000000000e+00q, 2.62069620595633241464383900165557861e+04q, 0.00000000000000000000000000000000000e+00q, -5.45981686882549001893494278192520142e+03q, 0.00000000000000000000000000000000000e+00q, 5.59985005664049936058290768414735794e+02q, 0.00000000000000000000000000000000000e+00q, +4.12842272872321058851952102486393414e-01q, 0.00000000000000000000000000000000000e+00q, -5.06559998639425579369799379492178559e+00q, 0.00000000000000000000000000000000000e+00q, 2.88701039534473267167413723655045033e+01q, 0.00000000000000000000000000000000000e+00q, -1.01142960370803550063101283740252256e+02q, 0.00000000000000000000000000000000000e+00q, 2.42928055885869014218769734725356102e+02q, 0.00000000000000000000000000000000000e+00q, -4.22296435021406352916528703644871712e+02q, 0.00000000000000000000000000000000000e+00q, 5.46519372111229131405707448720932007e+02q, 0.00000000000000000000000000000000000e+00q, -5.33075624957016771077178418636322021e+02q, 0.00000000000000000000000000000000000e+00q, 3.91879040302392979810974793508648872e+02q, 0.00000000000000000000000000000000000e+00q, -2.14445993040961980113934259861707687e+02q, 0.00000000000000000000000000000000000e+00q, 8.49189637106185557513526873663067818e+01q, 0.00000000000000000000000000000000000e+00q, -2.30482009834203758202875178540125489e+01q, 0.00000000000000000000000000000000000e+00q, 3.84411462019557204072839340369682759e+00q, 0.00000000000000000000000000000000000e+00q, -2.97678486258721897161905189932440408e-01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.59648550740095174660382326692342758e+02q, 0.00000000000000000000000000000000000e+00q, 7.73036749184147538471734151244163513e+03q, 0.00000000000000000000000000000000000e+00q, -4.94756889648799260612577199935913086e+04q, 0.00000000000000000000000000000000000e+00q, 1.94373819796618423424661159515380859e+05q, 0.00000000000000000000000000000000000e+00q, -5.23327400341129337903112173080444336e+05q, 0.00000000000000000000000000000000000e+00q, 1.02051417348118394147604703903198242e+06q, 0.00000000000000000000000000000000000e+00q, -1.48442212644082610495388507843017578e+06q, 0.00000000000000000000000000000000000e+00q, 1.63290715209588292054831981658935547e+06q, 0.00000000000000000000000000000000000e+00q, -1.36079318438108335249125957489013672e+06q, 0.00000000000000000000000000000000000e+00q, 8.50520371656275587156414985656738281e+05q, 0.00000000000000000000000000000000000e+00q, -3.88821404652111697942018508911132812e+05q, 0.00000000000000000000000000000000000e+00q, 1.23720091172263535554520785808563232e+05q, 0.00000000000000000000000000000000000e+00q, -2.47449434713479167839977890253067017e+04q, 0.00000000000000000000000000000000000e+00q, 2.37942110804216008546063676476478577e+03q, 0.00000000000000000000000000000000000e+00q, +7.94050888366461027345621914719231427e+00q, 0.00000000000000000000000000000000000e+00q, -9.72133672693178141344105824828147888e+01q, 0.00000000000000000000000000000000000e+00q, 5.52769930498713392807985655963420868e+02q, 0.00000000000000000000000000000000000e+00q, -1.93196009774519188795238733291625977e+03q, 0.00000000000000000000000000000000000e+00q, 4.62879124786432475957553833723068237e+03q, 0.00000000000000000000000000000000000e+00q, -8.02585513174832613003673031926155090e+03q, 0.00000000000000000000000000000000000e+00q, 1.03589434032486533396877348423004150e+04q, 0.00000000000000000000000000000000000e+00q, -1.00758580190830525680212303996086121e+04q, 0.00000000000000000000000000000000000e+00q, 7.38534757886491388489957898855209351e+03q, 0.00000000000000000000000000000000000e+00q, -4.02902213146196891102590598165988922e+03q, 0.00000000000000000000000000000000000e+00q, 1.59030607954800075276580173522233963e+03q, 0.00000000000000000000000000000000000e+00q, -4.30162781746580890285258647054433823e+02q, 0.00000000000000000000000000000000000e+00q, 7.14876141481348668094142340123653412e+01q, 0.00000000000000000000000000000000000e+00q, -5.51483378049246031338270768173970282e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.37301156893400684566586278378963470e+03q, 0.00000000000000000000000000000000000e+00q, 3.26674087398220835893880575895309448e+04q, 0.00000000000000000000000000000000000e+00q, -2.08276511803175031673163175582885742e+05q, 0.00000000000000000000000000000000000e+00q, 8.14674966840214096009731292724609375e+05q, 0.00000000000000000000000000000000000e+00q, -2.18238247313607437536120414733886719e+06q, 0.00000000000000000000000000000000000e+00q, 4.23088682727170176804065704345703125e+06q, 0.00000000000000000000000000000000000e+00q, -6.11190246061916090548038482666015625e+06q, 0.00000000000000000000000000000000000e+00q, 6.66823140636229887604713439941406250e+06q, 0.00000000000000000000000000000000000e+00q, -5.50189848970829229801893234252929688e+06q, 0.00000000000000000000000000000000000e+00q, 3.39663298522647563368082046508789062e+06q, 0.00000000000000000000000000000000000e+00q, -1.52867882007416384294629096984863281e+06q, 0.00000000000000000000000000000000000e+00q, 4.76537459701199724804610013961791992e+05q, 0.00000000000000000000000000000000000e+00q, -9.26743183755208447109907865524291992e+04q, 0.00000000000000000000000000000000000e+00q, 8.55603114338716659403871744871139526e+03q, 0.00000000000000000000000000000000000e+00q, +9.56190522292223761269269743934273720e+01q, 0.00000000000000000000000000000000000e+00q, -1.16816980853096083592390641570091248e+03q, 0.00000000000000000000000000000000000e+00q, 6.62794358847314470040146261453628540e+03q, 0.00000000000000000000000000000000000e+00q, -2.31127896949155583570245653390884399e+04q, 0.00000000000000000000000000000000000e+00q, 5.52461577994979306822642683982849121e+04q, 0.00000000000000000000000000000000000e+00q, -9.55567832486978004453703761100769043e+04q, 0.00000000000000000000000000000000000e+00q, 1.23018861862941732397302985191345215e+05q, 0.00000000000000000000000000000000000e+00q, -1.19335393173610907979309558868408203e+05q, 0.00000000000000000000000000000000000e+00q, 8.72224721865198225714266300201416016e+04q, 0.00000000000000000000000000000000000e+00q, -4.74417211354369137552566826343536377e+04q, 0.00000000000000000000000000000000000e+00q, 1.86668611698739223356824368238449097e+04q, 0.00000000000000000000000000000000000e+00q, -5.03236836401574601040920242667198181e+03q, 0.00000000000000000000000000000000000e+00q, 8.33356234639607123426685575395822525e+02q, 0.00000000000000000000000000000000000e+00q, -6.40464660353877377474418608471751213e+01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.47972901281802296580281108617782593e+03q, 0.00000000000000000000000000000000000e+00q, 1.16397178392671179608441889286041260e+05q, 0.00000000000000000000000000000000000e+00q, -7.39685842853170004673302173614501953e+05q, 0.00000000000000000000000000000000000e+00q, 2.88253386234461003914475440979003906e+06q, 0.00000000000000000000000000000000000e+00q, -7.68898437951618619263172149658203125e+06q, 0.00000000000000000000000000000000000e+00q, 1.48330949216556102037429809570312500e+07q, 0.00000000000000000000000000000000000e+00q, -2.13051980091861151158809661865234375e+07q, 0.00000000000000000000000000000000000e+00q, 2.30878486419988311827182769775390625e+07q, 0.00000000000000000000000000000000000e+00q, -1.88962972895989902317523956298828125e+07q, 0.00000000000000000000000000000000000e+00q, 1.15518204300614465028047561645507812e+07q, 0.00000000000000000000000000000000000e+00q, -5.13611123006965685635805130004882812e+06q, 0.00000000000000000000000000000000000e+00q, 1.57651606519755744375288486480712891e+06q, 0.00000000000000000000000000000000000e+00q, -3.00429473256150027737021446228027344e+05q, 0.00000000000000000000000000000000000e+00q, 2.69758538394233473809435963630676270e+04q, 0.00000000000000000000000000000000000e+00q, +7.94900552646560072389547713100910187e+02q, 0.00000000000000000000000000000000000e+00q, -9.69175064648319312254898250102996826e+03q, 0.00000000000000000000000000000000000e+00q, 5.48749908658784042927436530590057373e+04q, 0.00000000000000000000000000000000000e+00q, -1.90947220350904564838856458663940430e+05q, 0.00000000000000000000000000000000000e+00q, 4.55395559479195508174598217010498047e+05q, 0.00000000000000000000000000000000000e+00q, -7.85830458179152221418917179107666016e+05q, 0.00000000000000000000000000000000000e+00q, 1.00918043837534240446984767913818359e+06q, 0.00000000000000000000000000000000000e+00q, -9.76425894839434185996651649475097656e+05q, 0.00000000000000000000000000000000000e+00q, 7.11718014186399406753480434417724609e+05q, 0.00000000000000000000000000000000000e+00q, -3.85992770466238493099808692932128906e+05q, 0.00000000000000000000000000000000000e+00q, 1.51408802754616597667336463928222656e+05q, 0.00000000000000000000000000000000000e+00q, -4.06842933349556551547721028327941895e+04q, 0.00000000000000000000000000000000000e+00q, 6.71372539088926441763760522007942200e+03q, 0.00000000000000000000000000000000000e+00q, -5.14043761191922271791554521769285202e+02q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.63499356382984733500052243471145630e+04q, 0.00000000000000000000000000000000000e+00q, 3.60830949023088789544999599456787109e+05q, 0.00000000000000000000000000000000000e+00q, -2.28680800872522359713912010192871094e+06q, 0.00000000000000000000000000000000000e+00q, 8.88409937179564125835895538330078125e+06q, 0.00000000000000000000000000000000000e+00q, -2.36141005705766677856445312500000000e+07q, 0.00000000000000000000000000000000000e+00q, 4.53698038612031787633895874023437500e+07q, 0.00000000000000000000000000000000000e+00q, -6.48594196932383179664611816406250000e+07q, 0.00000000000000000000000000000000000e+00q, 6.98999262067281156778335571289062500e+07q, 0.00000000000000000000000000000000000e+00q, -5.68380351678420007228851318359375000e+07q, 0.00000000000000000000000000000000000e+00q, 3.44762425876275300979614257812500000e+07q, 0.00000000000000000000000000000000000e+00q, -1.51834361676665861159563064575195312e+07q, 0.00000000000000000000000000000000000e+00q, 4.60568663022324908524751663208007812e+06q, 0.00000000000000000000000000000000000e+00q, -8.64539257196950027719140052795410156e+05q, 0.00000000000000000000000000000000000e+00q, 7.61001942566360521595925092697143555e+04q, 0.00000000000000000000000000000000000e+00q, +4.86379309389436912169912829995155334e+03q, 0.00000000000000000000000000000000000e+00q, -5.91875270648701407480984926223754883e+04q, 0.00000000000000000000000000000000000e+00q, 3.34457724899542808998376131057739258e+05q, 0.00000000000000000000000000000000000e+00q, -1.16141098242895468138158321380615234e+06q, 0.00000000000000000000000000000000000e+00q, 2.76393740754958195611834526062011719e+06q, 0.00000000000000000000000000000000000e+00q, -4.75871866943902987986803054809570312e+06q, 0.00000000000000000000000000000000000e+00q, 6.09677811937944684177637100219726562e+06q, 0.00000000000000000000000000000000000e+00q, -5.88414265097811724990606307983398438e+06q, 0.00000000000000000000000000000000000e+00q, 4.27758772470599692314863204956054688e+06q, 0.00000000000000000000000000000000000e+00q, -2.31336424051040876656770706176757812e+06q, 0.00000000000000000000000000000000000e+00q, 9.04706946988797746598720550537109375e+05q, 0.00000000000000000000000000000000000e+00q, -2.42316973593849164899438619613647461e+05q, 0.00000000000000000000000000000000000e+00q, 3.98490735694921750109642744064331055e+04q, 0.00000000000000000000000000000000000e+00q, -3.03974599460325271138572134077548981e+03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.23280704239716287702322006225585938e+04q, 0.00000000000000000000000000000000000e+00q, 9.88557218342571170069277286529541016e+05q, 0.00000000000000000000000000000000000e+00q, -6.25139666716878488659858703613281250e+06q, 0.00000000000000000000000000000000000e+00q, 2.42255336364214234054088592529296875e+07q, 0.00000000000000000000000000000000000e+00q, -6.42076070715376660227775573730468750e+07q, 0.00000000000000000000000000000000000e+00q, 1.22956706746985718607902526855468750e+08q, 0.00000000000000000000000000000000000e+00q, -1.75108654873948901891708374023437500e+08q, 0.00000000000000000000000000000000000e+00q, 1.87884797669123411178588867187500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.51985213231815546751022338867187500e+08q, 0.00000000000000000000000000000000000e+00q, 9.16239538252204060554504394531250000e+07q, 0.00000000000000000000000000000000000e+00q, -4.00537655225732922554016113281250000e+07q, 0.00000000000000000000000000000000000e+00q, 1.20402110267533641308546066284179688e+07q, 0.00000000000000000000000000000000000e+00q, -2.23466958269417239353060722351074219e+06q, 0.00000000000000000000000000000000000e+00q, 1.93875897138525993796065449714660645e+05q, 0.00000000000000000000000000000000000e+00q, +2.29011801313868127181194722652435303e+04q, 0.00000000000000000000000000000000000e+00q, -2.78170794607152638491243124008178711e+05q, 0.00000000000000000000000000000000000e+00q, 1.56890482461023726500570774078369141e+06q, 0.00000000000000000000000000000000000e+00q, -5.43731032923763990402221679687500000e+06q, 0.00000000000000000000000000000000000e+00q, 1.29131291796419620513916015625000000e+07q, 0.00000000000000000000000000000000000e+00q, -2.21847279877500757575035095214843750e+07q, 0.00000000000000000000000000000000000e+00q, 2.83579011879414245486259460449218750e+07q, 0.00000000000000000000000000000000000e+00q, -2.73028532237650640308856964111328125e+07q, 0.00000000000000000000000000000000000e+00q, 1.97974161020504049956798553466796875e+07q, 0.00000000000000000000000000000000000e+00q, -1.06773431443375963717699050903320312e+07q, 0.00000000000000000000000000000000000e+00q, 4.16343497171019902452826499938964844e+06q, 0.00000000000000000000000000000000000e+00q, -1.11162023306701960973441600799560547e+06q, 0.00000000000000000000000000000000000e+00q, 1.82184375449731305707246065139770508e+05q, 0.00000000000000000000000000000000000e+00q, -1.38461078676415254449239000678062439e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.76417240899573516799136996269226074e+05q, 0.00000000000000000000000000000000000e+00q, 2.40755168685663072392344474792480469e+06q, 0.00000000000000000000000000000000000e+00q, -1.51981634072598516941070556640625000e+07q, 0.00000000000000000000000000000000000e+00q, 5.87783766765418648719787597656250000e+07q, 0.00000000000000000000000000000000000e+00q, -1.55430408171088457107543945312500000e+08q, 0.00000000000000000000000000000000000e+00q, 2.96867198797536849975585937500000000e+08q, 0.00000000000000000000000000000000000e+00q, -4.21509281995835781097412109375000000e+08q, 0.00000000000000000000000000000000000e+00q, 4.50687287713834106922149658203125000e+08q, 0.00000000000000000000000000000000000e+00q, -3.63093143760909140110015869140625000e+08q, 0.00000000000000000000000000000000000e+00q, 2.17844343623268336057662963867187500e+08q, 0.00000000000000000000000000000000000e+00q, -9.46901105848329663276672363281250000e+07q, 0.00000000000000000000000000000000000e+00q, 2.82686569522144831717014312744140625e+07q, 0.00000000000000000000000000000000000e+00q, -5.20248136799148470163345336914062500e+06q, 0.00000000000000000000000000000000000e+00q, 4.46592077661924064159393310546875000e+05q, 0.00000000000000000000000000000000000e+00q, +8.56924658534391928697004914283752441e+04q, 0.00000000000000000000000000000000000e+00q, -1.03901879406249488238245248794555664e+06q, 0.00000000000000000000000000000000000e+00q, 5.84943842597020231187343597412109375e+06q, 0.00000000000000000000000000000000000e+00q, -2.02338607091768905520439147949218750e+07q, 0.00000000000000000000000000000000000e+00q, 4.79587115671265795826911926269531250e+07q, 0.00000000000000000000000000000000000e+00q, -8.22221292676741033792495727539062500e+07q, 0.00000000000000000000000000000000000e+00q, 1.04871419397167891263961791992187500e+08q, 0.00000000000000000000000000000000000e+00q, -1.00735263169329926371574401855468750e+08q, 0.00000000000000000000000000000000000e+00q, 7.28627953052846938371658325195312500e+07q, 0.00000000000000000000000000000000000e+00q, -3.91929736353254839777946472167968750e+07q, 0.00000000000000000000000000000000000e+00q, 1.52390414863385781645774841308593750e+07q, 0.00000000000000000000000000000000000e+00q, -4.05624435239109862595796585083007812e+06q, 0.00000000000000000000000000000000000e+00q, 6.62563529342300840653479099273681641e+05q, 0.00000000000000000000000000000000000e+00q, -5.01722454605897073633968830108642578e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.82522188352944038342684507369995117e+05q, 0.00000000000000000000000000000000000e+00q, 5.21360558051911834627389907836914062e+06q, 0.00000000000000000000000000000000000e+00q, -3.28643950006668344140052795410156250e+07q, 0.00000000000000000000000000000000000e+00q, 1.26894016753705158829689025878906250e+08q, 0.00000000000000000000000000000000000e+00q, -3.34930368283692538738250732421875000e+08q, 0.00000000000000000000000000000000000e+00q, 6.38361938786892652511596679687500000e+08q, 0.00000000000000000000000000000000000e+00q, -9.04211874854269027709960937500000000e+08q, 0.00000000000000000000000000000000000e+00q, 9.64148115473548650741577148437500000e+08q, 0.00000000000000000000000000000000000e+00q, -7.74294689982156395912170410156250000e+08q, 0.00000000000000000000000000000000000e+00q, 4.62834162958291769027709960937500000e+08q, 0.00000000000000000000000000000000000e+00q, -2.00303010424596697092056274414062500e+08q, 0.00000000000000000000000000000000000e+00q, 5.94873533541214987635612487792968750e+07q, 0.00000000000000000000000000000000000e+00q, -1.08789529330453164875507354736328125e+07q, 0.00000000000000000000000000000000000e+00q, 9.26621756037812680006027221679687500e+05q, 0.00000000000000000000000000000000000e+00q, +2.61000519059037789702415466308593750e+05q, 0.00000000000000000000000000000000000e+00q, -3.15917247107760701328516006469726562e+06q, 0.00000000000000000000000000000000000e+00q, 1.77540735556865967810153961181640625e+07q, 0.00000000000000000000000000000000000e+00q, -6.13015317183465883135795593261718750e+07q, 0.00000000000000000000000000000000000e+00q, 1.45022719611256331205368041992187500e+08q, 0.00000000000000000000000000000000000e+00q, -2.48137771814088612794876098632812500e+08q, 0.00000000000000000000000000000000000e+00q, 3.15826611273925185203552246093750000e+08q, 0.00000000000000000000000000000000000e+00q, -3.02694080923870980739593505859375000e+08q, 0.00000000000000000000000000000000000e+00q, 2.18420458242674022912979125976562500e+08q, 0.00000000000000000000000000000000000e+00q, -1.17188454681101053953170776367187500e+08q, 0.00000000000000000000000000000000000e+00q, 4.54397435578436851501464843750000000e+07q, 0.00000000000000000000000000000000000e+00q, -1.20587738391769193112850189208984375e+07q, 0.00000000000000000000000000000000000e+00q, 1.96332050382406706921756267547607422e+06q, 0.00000000000000000000000000000000000e+00q, -1.48141804490470152813941240310668945e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.35751868354327278211712837219238281e+05q, 0.00000000000000000000000000000000000e+00q, 1.00160563016800060868263244628906250e+07q, 0.00000000000000000000000000000000000e+00q, -6.30551036313259676098823547363281250e+07q, 0.00000000000000000000000000000000000e+00q, 2.43117710426262021064758300781250000e+08q, 0.00000000000000000000000000000000000e+00q, -6.40687631004755377769470214843750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.21898668986118555068969726562500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.72326252886783242225646972656250000e+09q, 0.00000000000000000000000000000000000e+00q, 1.83343164403762173652648925781250000e+09q, 0.00000000000000000000000000000000000e+00q, -1.46870167628100824356079101562500000e+09q, 0.00000000000000000000000000000000000e+00q, 8.75376126225490331649780273437500000e+08q, 0.00000000000000000000000000000000000e+00q, -3.77566515988679349422454833984375000e+08q, 0.00000000000000000000000000000000000e+00q, 1.11688123749933123588562011718750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.03287014409763142466545104980468750e+07q, 0.00000000000000000000000000000000000e+00q, 1.72155946864269510842859745025634766e+06q, 0.00000000000000000000000000000000000e+00q, +6.58974821926897624507546424865722656e+05q, 0.00000000000000000000000000000000000e+00q, -7.96289693731257133185863494873046875e+06q, 0.00000000000000000000000000000000000e+00q, 4.46739170526001602411270141601562500e+07q, 0.00000000000000000000000000000000000e+00q, -1.53980225079069107770919799804687500e+08q, 0.00000000000000000000000000000000000e+00q, 3.63612207216345429420471191406250000e+08q, 0.00000000000000000000000000000000000e+00q, -6.20965072510790944099426269531250000e+08q, 0.00000000000000000000000000000000000e+00q, 7.88768738571286320686340332031250000e+08q, 0.00000000000000000000000000000000000e+00q, -7.54358052784818410873413085937500000e+08q, 0.00000000000000000000000000000000000e+00q, 5.43095073535292983055114746093750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.90671107295070469379425048828125000e+08q, 0.00000000000000000000000000000000000e+00q, 1.12408895485035091638565063476562500e+08q, 0.00000000000000000000000000000000000e+00q, -2.97450600457214042544364929199218750e+07q, 0.00000000000000000000000000000000000e+00q, 4.82761176859534252434968948364257812e+06q, 0.00000000000000000000000000000000000e+00q, -3.63003764928934047929942607879638672e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.25176831108715338632464408874511719e+06q, 0.00000000000000000000000000000000000e+00q, 1.70194774995843768119812011718750000e+07q, 0.00000000000000000000000000000000000e+00q, -1.07005890637847825884819030761718750e+08q, 0.00000000000000000000000000000000000e+00q, 4.12016615784403085708618164062500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.08422316843285202980041503906250000e+09q, 0.00000000000000000000000000000000000e+00q, 2.05967451130671620368957519531250000e+09q, 0.00000000000000000000000000000000000e+00q, -2.90682721473305940628051757812500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08693007067012453079223632812500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.46773198135372114181518554687500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.46739358885875654220581054687500000e+09q, 0.00000000000000000000000000000000000e+00q, -6.31231502403079271316528320312500000e+08q, 0.00000000000000000000000000000000000e+00q, 1.86149744972140580415725708007812500e+08q, 0.00000000000000000000000000000000000e+00q, -3.37590409940905421972274780273437500e+07q, 0.00000000000000000000000000000000000e+00q, 2.84655874064176715910434722900390625e+06q, 0.00000000000000000000000000000000000e+00q, +1.39870934848503139801323413848876953e+06q, 0.00000000000000000000000000000000000e+00q, -1.68738041363708041608333587646484375e+07q, 0.00000000000000000000000000000000000e+00q, 9.45091395778453052043914794921875000e+07q, 0.00000000000000000000000000000000000e+00q, -3.25197903478495001792907714843750000e+08q, 0.00000000000000000000000000000000000e+00q, 7.66585455180426597595214843750000000e+08q, 0.00000000000000000000000000000000000e+00q, -1.30676155024917721748352050781250000e+09q, 0.00000000000000000000000000000000000e+00q, 1.65670391567275857925415039062500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.58120630442676329612731933593750000e+09q, 0.00000000000000000000000000000000000e+00q, 1.13590602625557041168212890625000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.06530272307486534118652343750000000e+08q, 0.00000000000000000000000000000000000e+00q, 2.33965137123379468917846679687500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.17399283206173330545425415039062500e+07q, 0.00000000000000000000000000000000000e+00q, 9.99005526737835444509983062744140625e+06q, 0.00000000000000000000000000000000000e+00q, -7.48675429098235443234443664550781250e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.87852637815187987871468067169189453e+06q, 0.00000000000000000000000000000000000e+00q, 2.55047457000868469476699829101562500e+07q, 0.00000000000000000000000000000000000e+00q, -1.60130554526109069585800170898437500e+08q, 0.00000000000000000000000000000000000e+00q, 6.15705136409626603126525878906250000e+08q, 0.00000000000000000000000000000000000e+00q, -1.61792288489140057563781738281250000e+09q, 0.00000000000000000000000000000000000e+00q, 3.06900759325446414947509765625000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.32460852481571006774902343750000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.58498640634127616882324218750000000e+09q, 0.00000000000000000000000000000000000e+00q, -3.65875888545870065689086914062500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.17135170549238586425781250000000000e+09q, 0.00000000000000000000000000000000000e+00q, -9.32011367900125503540039062500000000e+08q, 0.00000000000000000000000000000000000e+00q, 2.74168176908887207508087158203125000e+08q, 0.00000000000000000000000000000000000e+00q, -4.95795724920831769704818725585937500e+07q, 0.00000000000000000000000000000000000e+00q, 4.16655327771877683699131011962890625e+06q, 0.00000000000000000000000000000000000e+00q, +2.52328820448361197486519813537597656e+06q, 0.00000000000000000000000000000000000e+00q, -3.03906869572833031415939331054687500e+07q, 0.00000000000000000000000000000000000e+00q, 1.69938790985355913639068603515625000e+08q, 0.00000000000000000000000000000000000e+00q, -5.83781287567417860031127929687500000e+08q, 0.00000000000000000000000000000000000e+00q, 1.37381935599911785125732421875000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.33779136674459552764892578125000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.95841569566190004348754882812500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.81814107537782430648803710937500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.02032474270536112785339355468750000e+09q, 0.00000000000000000000000000000000000e+00q, -1.07638858719949126243591308593750000e+09q, 0.00000000000000000000000000000000000e+00q, 4.14214935866426289081573486328125000e+08q, 0.00000000000000000000000000000000000e+00q, -1.09019381351673915982246398925781250e+08q, 0.00000000000000000000000000000000000e+00q, 1.75895791316969059407711029052734375e+07q, 0.00000000000000000000000000000000000e+00q, -1.31400320001968531869351863861083984e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.48019205291745020076632499694824219e+06q, 0.00000000000000000000000000000000000e+00q, 3.36173855386542230844497680664062500e+07q, 0.00000000000000000000000000000000000e+00q, -2.10731965978568822145462036132812500e+08q, 0.00000000000000000000000000000000000e+00q, 8.09035089375622153282165527343750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.12277517853438067436218261718750000e+09q, 0.00000000000000000000000000000000000e+00q, 4.02066444766431283950805664062500000e+09q, 0.00000000000000000000000000000000000e+00q, -5.65706809637136268615722656250000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98834711082380771636962890625000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.77083061684382438659667968750000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.82640401109957695007324218750000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.21088940951250839233398437500000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.55462305617642164230346679687500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.41297166300129517912864685058593750e+07q, 0.00000000000000000000000000000000000e+00q, 5.37482664792278688400983810424804688e+06q, 0.00000000000000000000000000000000000e+00q, +3.90217596189485443755984306335449219e+06q, 0.00000000000000000000000000000000000e+00q, -4.69204887483244016766548156738281250e+07q, 0.00000000000000000000000000000000000e+00q, 2.61945177605184346437454223632812500e+08q, 0.00000000000000000000000000000000000e+00q, -8.98391860856992125511169433593750000e+08q, 0.00000000000000000000000000000000000e+00q, 2.11073780486662554740905761718750000e+09q, 0.00000000000000000000000000000000000e+00q, -3.58575660672981405258178710937500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.52977239746195888519287109375000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.30708959308705615997314453125000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08175229420271253585815429687500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.63847878300576901435852050781250000e+09q, 0.00000000000000000000000000000000000e+00q, 6.29099587048946857452392578125000000e+08q, 0.00000000000000000000000000000000000e+00q, -1.65169837180640727281570434570312500e+08q, 0.00000000000000000000000000000000000e+00q, 2.65772006421376951038837432861328125e+07q, 0.00000000000000000000000000000000000e+00q, -1.97946790835838369093835353851318359e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.87357866229098383337259292602539062e+06q, 0.00000000000000000000000000000000000e+00q, 3.88735827163963541388511657714843750e+07q, 0.00000000000000000000000000000000000e+00q, -2.43241586428552627563476562500000000e+08q, 0.00000000000000000000000000000000000e+00q, 9.32265145641333103179931640625000000e+08q, 0.00000000000000000000000000000000000e+00q, -2.44216478438530778884887695312500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.61837974092287158966064453125000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.48805675627180671691894531250000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.85742464713243484497070312500000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45464934513130664825439453125000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.22627423811852025985717773437500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.37983436910601663589477539062500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.04311246893498718738555908203125000e+08q, 0.00000000000000000000000000000000000e+00q, -7.27955557989170700311660766601562500e+07q, 0.00000000000000000000000000000000000e+00q, 6.08737508663816470652818679809570312e+06q, 0.00000000000000000000000000000000000e+00q, +5.20809016710331384092569351196289062e+06q, 0.00000000000000000000000000000000000e+00q, -6.25165016442116275429725646972656250e+07q, 0.00000000000000000000000000000000000e+00q, 3.48442246651547253131866455078125000e+08q, 0.00000000000000000000000000000000000e+00q, -1.19313149292185688018798828125000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.79872844286932182312011718750000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.74681509884183883666992187500000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98651041136041831970214843750000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.68234690882154941558837890625000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.05833649538345623016357421875000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.15350626403272342681884765625000000e+09q, 0.00000000000000000000000000000000000e+00q, 8.25116551161202073097229003906250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.16141359616178184747695922851562500e+08q, 0.00000000000000000000000000000000000e+00q, 3.46920985572281405329704284667968750e+07q, 0.00000000000000000000000000000000000e+00q, -2.57670985178047046065330505371093750e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.91358142251645680516958236694335938e+06q, 0.00000000000000000000000000000000000e+00q, 3.93265494053069576621055603027343750e+07q, 0.00000000000000000000000000000000000e+00q, -2.45574016015345066785812377929687500e+08q, 0.00000000000000000000000000000000000e+00q, 9.39431274951780319213867187500000000e+08q, 0.00000000000000000000000000000000000e+00q, -2.45659607275719070434570312500000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.63789122134245491027832031250000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.50496014852136230468750000000000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.86445220826482963562011718750000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45169188022724533081054687500000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.21942880329317045211791992187500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.37467092536294865608215332031250000e+09q, 0.00000000000000000000000000000000000e+00q, 4.02113835982502460479736328125000000e+08q, 0.00000000000000000000000000000000000e+00q, -7.22686497805902510881423950195312500e+07q, 0.00000000000000000000000000000000000e+00q, 6.03138142701608967036008834838867188e+06q, 0.00000000000000000000000000000000000e+00q, +6.03138142701608687639236450195312500e+06q, 0.00000000000000000000000000000000000e+00q, -7.22686497805902063846588134765625000e+07q, 0.00000000000000000000000000000000000e+00q, 4.02113835982502281665802001953125000e+08q, 0.00000000000000000000000000000000000e+00q, -1.37467092536294794082641601562500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.21942880329316902160644531250000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45169188022724246978759765625000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.86445220826482677459716796875000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.50496014852135944366455078125000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.63789122134245300292968750000000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.45659607275718975067138671875000000e+09q, 0.00000000000000000000000000000000000e+00q, 9.39431274951779961585998535156250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.45574016015344977378845214843750000e+08q, 0.00000000000000000000000000000000000e+00q, 3.93265494053069427609443664550781250e+07q, 0.00000000000000000000000000000000000e+00q, -2.91358142251645540818572044372558594e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.57670985178047278895974159240722656e+06q, 0.00000000000000000000000000000000000e+00q, 3.46920985572281777858734130859375000e+07q, 0.00000000000000000000000000000000000e+00q, -2.16141359616178423166275024414062500e+08q, 0.00000000000000000000000000000000000e+00q, 8.25116551161203026771545410156250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.15350626403272581100463867187500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.05833649538346052169799804687500000e+09q, 0.00000000000000000000000000000000000e+00q, -5.68234690882155513763427734375000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98651041136042499542236328125000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.74681509884184455871582031250000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.79872844286932468414306640625000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.19313149292185831069946289062500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.48442246651547670364379882812500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.25165016442117020487785339355468750e+07q, 0.00000000000000000000000000000000000e+00q, 5.20809016710331942886114120483398438e+06q, 0.00000000000000000000000000000000000e+00q, +6.08737508663816563785076141357421875e+06q, 0.00000000000000000000000000000000000e+00q, -7.27955557989170849323272705078125000e+07q, 0.00000000000000000000000000000000000e+00q, 4.04311246893498778343200683593750000e+08q, 0.00000000000000000000000000000000000e+00q, -1.37983436910601687431335449218750000e+09q, 0.00000000000000000000000000000000000e+00q, 3.22627423811852121353149414062500000e+09q, 0.00000000000000000000000000000000000e+00q, -5.45464934513130855560302734375000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.85742464713243675231933593750000000e+09q, 0.00000000000000000000000000000000000e+00q, -6.48805675627180862426757812500000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.61837974092287254333496093750000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.44216478438530826568603515625000000e+09q, 0.00000000000000000000000000000000000e+00q, 9.32265145641333460807800292968750000e+08q, 0.00000000000000000000000000000000000e+00q, -2.43241586428552716970443725585937500e+08q, 0.00000000000000000000000000000000000e+00q, 3.88735827163963690400123596191406250e+07q, 0.00000000000000000000000000000000000e+00q, -2.87357866229098476469516754150390625e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.97946790835838718339800834655761719e+06q, 0.00000000000000000000000000000000000e+00q, 2.65772006421377435326576232910156250e+07q, 0.00000000000000000000000000000000000e+00q, -1.65169837180641025304794311523437500e+08q, 0.00000000000000000000000000000000000e+00q, 6.29099587048947930335998535156250000e+08q, 0.00000000000000000000000000000000000e+00q, -1.63847878300577187538146972656250000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08175229420271825790405273437500000e+09q, 0.00000000000000000000000000000000000e+00q, -4.30708959308706474304199218750000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.52977239746196746826171875000000000e+09q, 0.00000000000000000000000000000000000e+00q, -3.58575660672982072830200195312500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.11073780486662960052490234375000000e+09q, 0.00000000000000000000000000000000000e+00q, -8.98391860856993913650512695312500000e+08q, 0.00000000000000000000000000000000000e+00q, 2.61945177605184853076934814453125000e+08q, 0.00000000000000000000000000000000000e+00q, -4.69204887483244910836219787597656250e+07q, 0.00000000000000000000000000000000000e+00q, 3.90217596189486188814043998718261719e+06q, 0.00000000000000000000000000000000000e+00q, +5.37482664792279060930013656616210938e+06q, 0.00000000000000000000000000000000000e+00q, -6.41297166300130039453506469726562500e+07q, 0.00000000000000000000000000000000000e+00q, 3.55462305617642462253570556640625000e+08q, 0.00000000000000000000000000000000000e+00q, -1.21088940951250958442687988281250000e+09q, 0.00000000000000000000000000000000000e+00q, 2.82640401109957933425903320312500000e+09q, 0.00000000000000000000000000000000000e+00q, -4.77083061684382820129394531250000000e+09q, 0.00000000000000000000000000000000000e+00q, 5.98834711082381343841552734375000000e+09q, 0.00000000000000000000000000000000000e+00q, -5.65706809637136840820312500000000000e+09q, 0.00000000000000000000000000000000000e+00q, 4.02066444766431665420532226562500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.12277517853438258171081542968750000e+09q, 0.00000000000000000000000000000000000e+00q, 8.09035089375622868537902832031250000e+08q, 0.00000000000000000000000000000000000e+00q, -2.10731965978569030761718750000000000e+08q, 0.00000000000000000000000000000000000e+00q, 3.36173855386542603373527526855468750e+07q, 0.00000000000000000000000000000000000e+00q, -2.48019205291745252907276153564453125e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.31400320001968881115317344665527344e+06q, 0.00000000000000000000000000000000000e+00q, 1.75895791316969506442546844482421875e+07q, 0.00000000000000000000000000000000000e+00q, -1.09019381351674199104309082031250000e+08q, 0.00000000000000000000000000000000000e+00q, 4.14214935866427302360534667968750000e+08q, 0.00000000000000000000000000000000000e+00q, -1.07638858719949388504028320312500000e+09q, 0.00000000000000000000000000000000000e+00q, 2.02032474270536637306213378906250000e+09q, 0.00000000000000000000000000000000000e+00q, -2.81814107537783145904541015625000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.95841569566190767288208007812500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.33779136674460172653198242187500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.37381935599912142753601074218750000e+09q, 0.00000000000000000000000000000000000e+00q, -5.83781287567419409751892089843750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.69938790985356360673904418945312500e+08q, 0.00000000000000000000000000000000000e+00q, -3.03906869572833850979804992675781250e+07q, 0.00000000000000000000000000000000000e+00q, 2.52328820448361849412322044372558594e+06q, 0.00000000000000000000000000000000000e+00q, +4.16655327771878335624933242797851562e+06q, 0.00000000000000000000000000000000000e+00q, -4.95795724920832514762878417968750000e+07q, 0.00000000000000000000000000000000000e+00q, 2.74168176908887624740600585937500000e+08q, 0.00000000000000000000000000000000000e+00q, -9.32011367900126934051513671875000000e+08q, 0.00000000000000000000000000000000000e+00q, 2.17135170549238920211791992187500000e+09q, 0.00000000000000000000000000000000000e+00q, -3.65875888545870637893676757812500000e+09q, 0.00000000000000000000000000000000000e+00q, 4.58498640634128284454345703125000000e+09q, 0.00000000000000000000000000000000000e+00q, -4.32460852481571674346923828125000000e+09q, 0.00000000000000000000000000000000000e+00q, 3.06900759325446891784667968750000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.61792288489140319824218750000000000e+09q, 0.00000000000000000000000000000000000e+00q, 6.15705136409627556800842285156250000e+08q, 0.00000000000000000000000000000000000e+00q, -1.60130554526109308004379272460937500e+08q, 0.00000000000000000000000000000000000e+00q, 2.55047457000868879258632659912109375e+07q, 0.00000000000000000000000000000000000e+00q, -1.87852637815188290551304817199707031e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -7.48675429098237887956202030181884766e+05q, 0.00000000000000000000000000000000000e+00q, 9.99005526737838797271251678466796875e+06q, 0.00000000000000000000000000000000000e+00q, -6.17399283206175342202186584472656250e+07q, 0.00000000000000000000000000000000000e+00q, 2.33965137123380243778228759765625000e+08q, 0.00000000000000000000000000000000000e+00q, -6.06530272307488560676574707031250000e+08q, 0.00000000000000000000000000000000000e+00q, 1.13590602625557422637939453125000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.58120630442676877975463867187500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.65670391567276430130004882812500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.30676155024918150901794433593750000e+09q, 0.00000000000000000000000000000000000e+00q, 7.66585455180429220199584960937500000e+08q, 0.00000000000000000000000000000000000e+00q, -3.25197903478496134281158447265625000e+08q, 0.00000000000000000000000000000000000e+00q, 9.45091395778456330299377441406250000e+07q, 0.00000000000000000000000000000000000e+00q, -1.68738041363708600401878356933593750e+07q, 0.00000000000000000000000000000000000e+00q, 1.39870934848503628745675086975097656e+06q, 0.00000000000000000000000000000000000e+00q, +2.84655874064177321270108222961425781e+06q, 0.00000000000000000000000000000000000e+00q, -3.37590409940906092524528503417968750e+07q, 0.00000000000000000000000000000000000e+00q, 1.86149744972140967845916748046875000e+08q, 0.00000000000000000000000000000000000e+00q, -6.31231502403080701828002929687500000e+08q, 0.00000000000000000000000000000000000e+00q, 1.46739358885875988006591796875000000e+09q, 0.00000000000000000000000000000000000e+00q, -2.46773198135372686386108398437500000e+09q, 0.00000000000000000000000000000000000e+00q, 3.08693007067013120651245117187500000e+09q, 0.00000000000000000000000000000000000e+00q, -2.90682721473306560516357421875000000e+09q, 0.00000000000000000000000000000000000e+00q, 2.05967451130672073364257812500000000e+09q, 0.00000000000000000000000000000000000e+00q, -1.08422316843285441398620605468750000e+09q, 0.00000000000000000000000000000000000e+00q, 4.12016615784403979778289794921875000e+08q, 0.00000000000000000000000000000000000e+00q, -1.07005890637848064303398132324218750e+08q, 0.00000000000000000000000000000000000e+00q, 1.70194774995844140648841857910156250e+07q, 0.00000000000000000000000000000000000e+00q, -1.25176831108715618029236793518066406e+06q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.63003764928935503121465444564819336e+05q, 0.00000000000000000000000000000000000e+00q, 4.82761176859536208212375640869140625e+06q, 0.00000000000000000000000000000000000e+00q, -2.97450600457215271890163421630859375e+07q, 0.00000000000000000000000000000000000e+00q, 1.12408895485035553574562072753906250e+08q, 0.00000000000000000000000000000000000e+00q, -2.90671107295071721076965332031250000e+08q, 0.00000000000000000000000000000000000e+00q, 5.43095073535295248031616210937500000e+08q, 0.00000000000000000000000000000000000e+00q, -7.54358052784821629524230957031250000e+08q, 0.00000000000000000000000000000000000e+00q, 7.88768738571289777755737304687500000e+08q, 0.00000000000000000000000000000000000e+00q, -6.20965072510793566703796386718750000e+08q, 0.00000000000000000000000000000000000e+00q, 3.63612207216346979141235351562500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.53980225079069763422012329101562500e+08q, 0.00000000000000000000000000000000000e+00q, 4.46739170526003539562225341796875000e+07q, 0.00000000000000000000000000000000000e+00q, -7.96289693731260579079389572143554688e+06q, 0.00000000000000000000000000000000000e+00q, 6.58974821926900534890592098236083984e+05q, 0.00000000000000000000000000000000000e+00q, +1.72155946864269976504147052764892578e+06q, 0.00000000000000000000000000000000000e+00q, -2.03287014409763701260089874267578125e+07q, 0.00000000000000000000000000000000000e+00q, 1.11688123749933436512947082519531250e+08q, 0.00000000000000000000000000000000000e+00q, -3.77566515988680362701416015625000000e+08q, 0.00000000000000000000000000000000000e+00q, 8.75376126225492715835571289062500000e+08q, 0.00000000000000000000000000000000000e+00q, -1.46870167628101253509521484375000000e+09q, 0.00000000000000000000000000000000000e+00q, 1.83343164403762674331665039062500000e+09q, 0.00000000000000000000000000000000000e+00q, -1.72326252886783742904663085937500000e+09q, 0.00000000000000000000000000000000000e+00q, 1.21898668986118912696838378906250000e+09q, 0.00000000000000000000000000000000000e+00q, -6.40687631004757165908813476562500000e+08q, 0.00000000000000000000000000000000000e+00q, 2.43117710426262706518173217773437500e+08q, 0.00000000000000000000000000000000000e+00q, -6.30551036313261464238166809082031250e+07q, 0.00000000000000000000000000000000000e+00q, 1.00160563016800340265035629272460938e+07q, 0.00000000000000000000000000000000000e+00q, -7.35751868354329373687505722045898438e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.48141804490470909513533115386962891e+05q, 0.00000000000000000000000000000000000e+00q, 1.96332050382407684810459613800048828e+06q, 0.00000000000000000000000000000000000e+00q, -1.20587738391769807785749435424804688e+07q, 0.00000000000000000000000000000000000e+00q, 4.54397435578439161181449890136718750e+07q, 0.00000000000000000000000000000000000e+00q, -1.17188454681101649999618530273437500e+08q, 0.00000000000000000000000000000000000e+00q, 2.18420458242675125598907470703125000e+08q, 0.00000000000000000000000000000000000e+00q, -3.02694080923872530460357666015625000e+08q, 0.00000000000000000000000000000000000e+00q, 3.15826611273926794528961181640625000e+08q, 0.00000000000000000000000000000000000e+00q, -2.48137771814089894294738769531250000e+08q, 0.00000000000000000000000000000000000e+00q, 1.45022719611257076263427734375000000e+08q, 0.00000000000000000000000000000000000e+00q, -6.13015317183469012379646301269531250e+07q, 0.00000000000000000000000000000000000e+00q, 1.77540735556866899132728576660156250e+07q, 0.00000000000000000000000000000000000e+00q, -3.15917247107762331143021583557128906e+06q, 0.00000000000000000000000000000000000e+00q, 2.61000519059039157582446932792663574e+05q, 0.00000000000000000000000000000000000e+00q, +9.26621756037815706804394721984863281e+05q, 0.00000000000000000000000000000000000e+00q, -1.08789529330453518778085708618164062e+07q, 0.00000000000000000000000000000000000e+00q, 5.94873533541216924786567687988281250e+07q, 0.00000000000000000000000000000000000e+00q, -2.00303010424597352743148803710937500e+08q, 0.00000000000000000000000000000000000e+00q, 4.62834162958293318748474121093750000e+08q, 0.00000000000000000000000000000000000e+00q, -7.74294689982159137725830078125000000e+08q, 0.00000000000000000000000000000000000e+00q, 9.64148115473551869392395019531250000e+08q, 0.00000000000000000000000000000000000e+00q, -9.04211874854272127151489257812500000e+08q, 0.00000000000000000000000000000000000e+00q, 6.38361938786894917488098144531250000e+08q, 0.00000000000000000000000000000000000e+00q, -3.34930368283693671226501464843750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.26894016753705605864524841308593750e+08q, 0.00000000000000000000000000000000000e+00q, -3.28643950006669498980045318603515625e+07q, 0.00000000000000000000000000000000000e+00q, 5.21360558051913697272539138793945312e+06q, 0.00000000000000000000000000000000000e+00q, -3.82522188352945377118885517120361328e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.01722454605900056776590645313262939e+04q, 0.00000000000000000000000000000000000e+00q, 6.62563529342304798774421215057373047e+05q, 0.00000000000000000000000000000000000e+00q, -4.05624435239112284034490585327148438e+06q, 0.00000000000000000000000000000000000e+00q, 1.52390414863386694341897964477539062e+07q, 0.00000000000000000000000000000000000e+00q, -3.91929736353257223963737487792968750e+07q, 0.00000000000000000000000000000000000e+00q, 7.28627953052851259708404541015625000e+07q, 0.00000000000000000000000000000000000e+00q, -1.00735263169330552220344543457031250e+08q, 0.00000000000000000000000000000000000e+00q, 1.04871419397168532013893127441406250e+08q, 0.00000000000000000000000000000000000e+00q, -8.22221292676746100187301635742187500e+07q, 0.00000000000000000000000000000000000e+00q, 4.79587115671268701553344726562500000e+07q, 0.00000000000000000000000000000000000e+00q, -2.02338607091770172119140625000000000e+07q, 0.00000000000000000000000000000000000e+00q, 5.84943842597023863345384597778320312e+06q, 0.00000000000000000000000000000000000e+00q, -1.03901879406250128522515296936035156e+06q, 0.00000000000000000000000000000000000e+00q, 8.56924658534397167386487126350402832e+04q, 0.00000000000000000000000000000000000e+00q, +4.46592077661920629907399415969848633e+05q, 0.00000000000000000000000000000000000e+00q, -5.20248136799144465476274490356445312e+06q, 0.00000000000000000000000000000000000e+00q, 2.82686569522142596542835235595703125e+07q, 0.00000000000000000000000000000000000e+00q, -9.46901105848322212696075439453125000e+07q, 0.00000000000000000000000000000000000e+00q, 2.17844343623266607522964477539062500e+08q, 0.00000000000000000000000000000000000e+00q, -3.63093143760906279087066650390625000e+08q, 0.00000000000000000000000000000000000e+00q, 4.50687287713830471038818359375000000e+08q, 0.00000000000000000000000000000000000e+00q, -4.21509281995832383632659912109375000e+08q, 0.00000000000000000000000000000000000e+00q, 2.96867198797534465789794921875000000e+08q, 0.00000000000000000000000000000000000e+00q, -1.55430408171087205410003662109375000e+08q, 0.00000000000000000000000000000000000e+00q, 5.87783766765413880348205566406250000e+07q, 0.00000000000000000000000000000000000e+00q, -1.51981634072597287595272064208984375e+07q, 0.00000000000000000000000000000000000e+00q, 2.40755168685661116614937782287597656e+06q, 0.00000000000000000000000000000000000e+00q, -1.76417240899572061607614159584045410e+05q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.38461078676413399080047383904457092e+04q, 0.00000000000000000000000000000000000e+00q, 1.82184375449728860985487699508666992e+05q, 0.00000000000000000000000000000000000e+00q, -1.11162023306700447574257850646972656e+06q, 0.00000000000000000000000000000000000e+00q, 4.16343497171014267951250076293945312e+06q, 0.00000000000000000000000000000000000e+00q, -1.06773431443374510854482650756835938e+07q, 0.00000000000000000000000000000000000e+00q, 1.97974161020501367747783660888671875e+07q, 0.00000000000000000000000000000000000e+00q, -2.73028532237646952271461486816406250e+07q, 0.00000000000000000000000000000000000e+00q, 2.83579011879410371184349060058593750e+07q, 0.00000000000000000000000000000000000e+00q, -2.21847279877497740089893341064453125e+07q, 0.00000000000000000000000000000000000e+00q, 1.29131291796417869627475738525390625e+07q, 0.00000000000000000000000000000000000e+00q, -5.43731032923756539821624755859375000e+06q, 0.00000000000000000000000000000000000e+00q, 1.56890482461021584458649158477783203e+06q, 0.00000000000000000000000000000000000e+00q, -2.78170794607148854993283748626708984e+05q, 0.00000000000000000000000000000000000e+00q, 2.29011801313864998519420623779296875e+04q, 0.00000000000000000000000000000000000e+00q, +1.93875897138525557238608598709106445e+05q, 0.00000000000000000000000000000000000e+00q, -2.23466958269416727125644683837890625e+06q, 0.00000000000000000000000000000000000e+00q, 1.20402110267533380538225173950195312e+07q, 0.00000000000000000000000000000000000e+00q, -4.00537655225732028484344482421875000e+07q, 0.00000000000000000000000000000000000e+00q, 9.16239538252201974391937255859375000e+07q, 0.00000000000000000000000000000000000e+00q, -1.51985213231815218925476074218750000e+08q, 0.00000000000000000000000000000000000e+00q, 1.87884797669122964143753051757812500e+08q, 0.00000000000000000000000000000000000e+00q, -1.75108654873948484659194946289062500e+08q, 0.00000000000000000000000000000000000e+00q, 1.22956706746985435485839843750000000e+08q, 0.00000000000000000000000000000000000e+00q, -6.42076070715375170111656188964843750e+07q, 0.00000000000000000000000000000000000e+00q, 2.42255336364213675260543823242187500e+07q, 0.00000000000000000000000000000000000e+00q, -6.25139666716876998543739318847656250e+06q, 0.00000000000000000000000000000000000e+00q, 9.88557218342568958178162574768066406e+05q, 0.00000000000000000000000000000000000e+00q, -7.23280704239714541472494602203369141e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -3.03974599460324134270194917917251587e+03q, 0.00000000000000000000000000000000000e+00q, 3.98490735694920294918119907379150391e+04q, 0.00000000000000000000000000000000000e+00q, -2.42316973593848262680694460868835449e+05q, 0.00000000000000000000000000000000000e+00q, 9.04706946988794370554387569427490234e+05q, 0.00000000000000000000000000000000000e+00q, -2.31336424051039991900324821472167969e+06q, 0.00000000000000000000000000000000000e+00q, 4.27758772470598109066486358642578125e+06q, 0.00000000000000000000000000000000000e+00q, -5.88414265097809582948684692382812500e+06q, 0.00000000000000000000000000000000000e+00q, 6.09677811937942449003458023071289062e+06q, 0.00000000000000000000000000000000000e+00q, -4.75871866943901218473911285400390625e+06q, 0.00000000000000000000000000000000000e+00q, 2.76393740754957171157002449035644531e+06q, 0.00000000000000000000000000000000000e+00q, -1.16141098242895049042999744415283203e+06q, 0.00000000000000000000000000000000000e+00q, 3.34457724899541586637496948242187500e+05q, 0.00000000000000000000000000000000000e+00q, -5.91875270648699224693700671195983887e+04q, 0.00000000000000000000000000000000000e+00q, 4.86379309389435093180509284138679504e+03q, 0.00000000000000000000000000000000000e+00q, +7.61001942566358629846945405006408691e+04q, 0.00000000000000000000000000000000000e+00q, -8.64539257196947932243347167968750000e+05q, 0.00000000000000000000000000000000000e+00q, 4.60568663022323790937662124633789062e+06q, 0.00000000000000000000000000000000000e+00q, -1.51834361676665488630533218383789062e+07q, 0.00000000000000000000000000000000000e+00q, 3.44762425876274406909942626953125000e+07q, 0.00000000000000000000000000000000000e+00q, -5.68380351678418591618537902832031250e+07q, 0.00000000000000000000000000000000000e+00q, 6.98999262067279368638992309570312500e+07q, 0.00000000000000000000000000000000000e+00q, -6.48594196932381540536880493164062500e+07q, 0.00000000000000000000000000000000000e+00q, 4.53698038612030670046806335449218750e+07q, 0.00000000000000000000000000000000000e+00q, -2.36141005705766081809997558593750000e+07q, 0.00000000000000000000000000000000000e+00q, 8.88409937179561890661716461181640625e+06q, 0.00000000000000000000000000000000000e+00q, -2.28680800872521754354238510131835938e+06q, 0.00000000000000000000000000000000000e+00q, 3.60830949023087858222424983978271484e+05q, 0.00000000000000000000000000000000000e+00q, -2.63499356382984042284078896045684814e+04q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.14043761191920111741637811064720154e+02q, 0.00000000000000000000000000000000000e+00q, 6.71372539088923531380714848637580872e+03q, 0.00000000000000000000000000000000000e+00q, -4.06842933349554732558317482471466064e+04q, 0.00000000000000000000000000000000000e+00q, 1.51408802754615928279235959053039551e+05q, 0.00000000000000000000000000000000000e+00q, -3.85992770466236805077642202377319336e+05q, 0.00000000000000000000000000000000000e+00q, 7.11718014186396263539791107177734375e+05q, 0.00000000000000000000000000000000000e+00q, -9.76425894839429878629744052886962891e+05q, 0.00000000000000000000000000000000000e+00q, 1.00918043837533798068761825561523438e+06q, 0.00000000000000000000000000000000000e+00q, -7.85830458179148728959262371063232422e+05q, 0.00000000000000000000000000000000000e+00q, 4.55395559479193470906466245651245117e+05q, 0.00000000000000000000000000000000000e+00q, -1.90947220350903720827773213386535645e+05q, 0.00000000000000000000000000000000000e+00q, 5.48749908658781641861423850059509277e+04q, 0.00000000000000000000000000000000000e+00q, -9.69175064648314946680329740047454834e+03q, 0.00000000000000000000000000000000000e+00q, 7.94900552646556548097578343003988266e+02q, 0.00000000000000000000000000000000000e+00q, +2.69758538394232746213674545288085938e+04q, 0.00000000000000000000000000000000000e+00q, -3.00429473256149212829768657684326172e+05q, 0.00000000000000000000000000000000000e+00q, 1.57651606519755301997065544128417969e+06q, 0.00000000000000000000000000000000000e+00q, -5.13611123006964288651943206787109375e+06q, 0.00000000000000000000000000000000000e+00q, 1.15518204300614148378372192382812500e+07q, 0.00000000000000000000000000000000000e+00q, -1.88962972895989380776882171630859375e+07q, 0.00000000000000000000000000000000000e+00q, 2.30878486419987678527832031250000000e+07q, 0.00000000000000000000000000000000000e+00q, -2.13051980091860517859458923339843750e+07q, 0.00000000000000000000000000000000000e+00q, 1.48330949216555692255496978759765625e+07q, 0.00000000000000000000000000000000000e+00q, -7.68898437951616384088993072509765625e+06q, 0.00000000000000000000000000000000000e+00q, 2.88253386234460165724158287048339844e+06q, 0.00000000000000000000000000000000000e+00q, -7.39685842853167909197509288787841797e+05q, 0.00000000000000000000000000000000000e+00q, 1.16397178392670844914391636848449707e+05q, 0.00000000000000000000000000000000000e+00q, -8.47972901281799749995116144418716431e+03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -6.40464660353874108977834112010896206e+01q, 0.00000000000000000000000000000000000e+00q, 8.33356234639602917013689875602722168e+02q, 0.00000000000000000000000000000000000e+00q, -5.03236836401571963506285101175308228e+03q, 0.00000000000000000000000000000000000e+00q, 1.86668611698738241102546453475952148e+04q, 0.00000000000000000000000000000000000e+00q, -4.74417211354366736486554145812988281e+04q, 0.00000000000000000000000000000000000e+00q, 8.72224721865193714620545506477355957e+04q, 0.00000000000000000000000000000000000e+00q, -1.19335393173610296798869967460632324e+05q, 0.00000000000000000000000000000000000e+00q, 1.23018861862941106664948165416717529e+05q, 0.00000000000000000000000000000000000e+00q, -9.55567832486973202321678400039672852e+04q, 0.00000000000000000000000000000000000e+00q, 5.52461577994976469199173152446746826e+04q, 0.00000000000000000000000000000000000e+00q, -2.31127896949154383037239313125610352e+04q, 0.00000000000000000000000000000000000e+00q, 6.62794358847311013960279524326324463e+03q, 0.00000000000000000000000000000000000e+00q, -1.16816980853095492420834489166736603e+03q, 0.00000000000000000000000000000000000e+00q, 9.56190522292218787470119423232972622e+01q, 0.00000000000000000000000000000000000e+00q, +8.55603114338721752574201673269271851e+03q, 0.00000000000000000000000000000000000e+00q, -9.26743183755214122356846928596496582e+04q, 0.00000000000000000000000000000000000e+00q, 4.76537459701202693395316600799560547e+05q, 0.00000000000000000000000000000000000e+00q, -1.52867882007417362183332443237304688e+06q, 0.00000000000000000000000000000000000e+00q, 3.39663298522649751976132392883300781e+06q, 0.00000000000000000000000000000000000e+00q, -5.50189848970832768827676773071289062e+06q, 0.00000000000000000000000000000000000e+00q, 6.66823140636234171688556671142578125e+06q, 0.00000000000000000000000000000000000e+00q, -6.11190246061920002102851867675781250e+06q, 0.00000000000000000000000000000000000e+00q, 4.23088682727172970771789550781250000e+06q, 0.00000000000000000000000000000000000e+00q, -2.18238247313608881086111068725585938e+06q, 0.00000000000000000000000000000000000e+00q, 8.14674966840219451114535331726074219e+05q, 0.00000000000000000000000000000000000e+00q, -2.08276511803176399553194642066955566e+05q, 0.00000000000000000000000000000000000e+00q, 3.26674087398223018681164830923080444e+04q, 0.00000000000000000000000000000000000e+00q, -2.37301156893402230707579292356967926e+03q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -5.51483378049253403219154279213398695e+00q, 0.00000000000000000000000000000000000e+00q, 7.14876141481358331475348677486181259e+01q, 0.00000000000000000000000000000000000e+00q, -4.30162781746586688313982449471950531e+02q, 0.00000000000000000000000000000000000e+00q, 1.59030607954802212589129339903593063e+03q, 0.00000000000000000000000000000000000e+00q, -4.02902213146202348070801235735416412e+03q, 0.00000000000000000000000000000000000e+00q, 7.38534757886501392931677401065826416e+03q, 0.00000000000000000000000000000000000e+00q, -1.00758580190831889922264963388442993e+04q, 0.00000000000000000000000000000000000e+00q, 1.03589434032487934018718078732490540e+04q, 0.00000000000000000000000000000000000e+00q, -8.02585513174843526940094307065010071e+03q, 0.00000000000000000000000000000000000e+00q, 4.62879124786438751470996066927909851e+03q, 0.00000000000000000000000000000000000e+00q, -1.93196009774521826329873874783515930e+03q, 0.00000000000000000000000000000000000e+00q, 5.52769930498720896139275282621383667e+02q, 0.00000000000000000000000000000000000e+00q, -9.72133672693191499547538114711642265e+01q, 0.00000000000000000000000000000000000e+00q, 7.94050888366471863122342256247065961e+00q, 0.00000000000000000000000000000000000e+00q, +2.37942110804217600161791779100894928e+03q, 0.00000000000000000000000000000000000e+00q, -2.47449434713480877690017223358154297e+04q, 0.00000000000000000000000000000000000e+00q, 1.23720091172264408669434487819671631e+05q, 0.00000000000000000000000000000000000e+00q, -3.88821404652114491909742355346679688e+05q, 0.00000000000000000000000000000000000e+00q, 8.50520371656281757168471813201904297e+05q, 0.00000000000000000000000000000000000e+00q, -1.36079318438109336420893669128417969e+06q, 0.00000000000000000000000000000000000e+00q, 1.63290715209589502774178981781005859e+06q, 0.00000000000000000000000000000000000e+00q, -1.48442212644083704799413681030273438e+06q, 0.00000000000000000000000000000000000e+00q, 1.02051417348119162488728761672973633e+06q, 0.00000000000000000000000000000000000e+00q, -5.23327400341133296024054288864135742e+05q, 0.00000000000000000000000000000000000e+00q, 1.94373819796619878616183996200561523e+05q, 0.00000000000000000000000000000000000e+00q, -4.94756889648802971350960433483123779e+04q, 0.00000000000000000000000000000000000e+00q, 7.73036749184153450187295675277709961e+03q, 0.00000000000000000000000000000000000e+00q, -5.59648550740099494760215748101472855e+02q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -2.97678486258726671120911078105564229e-01q, 0.00000000000000000000000000000000000e+00q, 3.84411462019563421321777241246309131e+00q, 0.00000000000000000000000000000000000e+00q, -2.30482009834207453025101131061092019e+01q, 0.00000000000000000000000000000000000e+00q, 8.49189637106199199934053467586636543e+01q, 0.00000000000000000000000000000000000e+00q, -2.14445993040965447562484769150614738e+02q, 0.00000000000000000000000000000000000e+00q, 3.91879040302399346273887204006314278e+02q, 0.00000000000000000000000000000000000e+00q, -5.33075624957025411276845261454582214e+02q, 0.00000000000000000000000000000000000e+00q, 5.46519372111237998979049734771251678e+02q, 0.00000000000000000000000000000000000e+00q, -4.22296435021413230970210861414670944e+02q, 0.00000000000000000000000000000000000e+00q, 2.42928055885872964836380560882389545e+02q, 0.00000000000000000000000000000000000e+00q, -1.01142960370805212733102962374687195e+02q, 0.00000000000000000000000000000000000e+00q, 2.88701039534477992276606528321281075e+01q, 0.00000000000000000000000000000000000e+00q, -5.06559998639433928246944560669362545e+00q, 0.00000000000000000000000000000000000e+00q, 4.12842272872327831212402315941289999e-01q, 0.00000000000000000000000000000000000e+00q, +5.59985005664054142471286468207836151e+02q, 0.00000000000000000000000000000000000e+00q, -5.45981686882553367468062788248062134e+03q, 0.00000000000000000000000000000000000e+00q, 2.62069620595635387871880084276199341e+04q, 0.00000000000000000000000000000000000e+00q, -8.00763869127825892064720392227172852e+04q, 0.00000000000000000000000000000000000e+00q, 1.71591384521574451355263590812683105e+05q, 0.00000000000000000000000000000000000e+00q, -2.70255143154440971557050943374633789e+05q, 0.00000000000000000000000000000000000e+00q, 3.20300942136119410861283540725708008e+05q, 0.00000000000000000000000000000000000e+00q, -2.88269589375542884226888418197631836e+05q, 0.00000000000000000000000000000000000e+00q, 1.96546606600718339905142784118652344e+05q, 0.00000000000000000000000000000000000e+00q, -1.00092753003757112310267984867095947e+05q, 0.00000000000000000000000000000000000e+00q, 3.69571648170870248577557504177093506e+04q, 0.00000000000000000000000000000000000e+00q, -9.35924041382883478945586830377578735e+03q, 0.00000000000000000000000000000000000e+00q, 1.45587505450032836051832418888807297e+03q, 0.00000000000000000000000000000000000e+00q, -1.04990466049500625445034529548138380e+02q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -8.56466625997167468886672736516629811e-03q, 0.00000000000000000000000000000000000e+00q, 1.10175874782449279010165810177568346e-01q, 0.00000000000000000000000000000000000e+00q, -6.58162882173091268178666268795495853e-01q, 0.00000000000000000000000000000000000e+00q, 2.41646544789416184428887390822637826e+00q, 0.00000000000000000000000000000000000e+00q, -6.08193112844205518996432147105224431e+00q, 0.00000000000000000000000000000000000e+00q, 1.10786392112497686923688888782635331e+01q, 0.00000000000000000000000000000000000e+00q, -1.50242408756902161570678799762390554e+01q, 0.00000000000000000000000000000000000e+00q, 1.53579308187567562526965048164129257e+01q, 0.00000000000000000000000000000000000e+00q, -1.18336276506316284695685681072063744e+01q, 0.00000000000000000000000000000000000e+00q, 6.78886795353508265549180578091181815e+00q, 0.00000000000000000000000000000000000e+00q, -2.81913888391011369094485417008399963e+00q, 0.00000000000000000000000000000000000e+00q, 8.02653853637811387500278215156868100e-01q, 0.00000000000000000000000000000000000e+00q, -1.40489553508888670441123736054578330e-01q, 0.00000000000000000000000000000000000e+00q, 1.14224810138785180801956897767013288e-02q, 0.00000000000000000000000000000000000e+00q, +1.04999847864860726076585706323385239e+02q, 0.00000000000000000000000000000000000e+00q, -9.09998137251934053892910014837980270e+02q, 0.00000000000000000000000000000000000e+00q, 4.09498941349496271868702024221420288e+03q, 0.00000000000000000000000000000000000e+00q, -1.20119630385543550801230594515800476e+04q, 0.00000000000000000000000000000000000e+00q, 2.50249115807559137465432286262512207e+04q, 0.00000000000000000000000000000000000e+00q, -3.86098469957869674544781446456909180e+04q, 0.00000000000000000000000000000000000e+00q, 4.50448029936897873994894325733184814e+04q, 0.00000000000000000000000000000000000e+00q, -4.00398089126345221302472054958343506e+04q, 0.00000000000000000000000000000000000e+00q, 2.70268603791425084637012332677841187e+04q, 0.00000000000000000000000000000000000e+00q, -1.36499240961747436813311651349067688e+04q, 0.00000000000000000000000000000000000e+00q, 5.00497015330886188166914507746696472e+03q, 0.00000000000000000000000000000000000e+00q, -1.25999195955850859718339052051305771e+03q, 0.00000000000000000000000000000000000e+00q, 1.94998669526874522262005484662950039e+02q, 0.00000000000000000000000000000000000e+00q, -1.39998978227361359216729397303424776e+01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -9.63008214260905817541771889445101351e-05q, 0.00000000000000000000000000000000000e+00q, 1.23390533544664332023244046609988800e-03q, 0.00000000000000000000000000000000000e+00q, -7.34302134644990080886151062600220030e-03q, 0.00000000000000000000000000000000000e+00q, 2.68617309615638288899930330444476567e-02q, 0.00000000000000000000000000000000000e+00q, -6.73703325969337712963991293690924067e-02q, 0.00000000000000000000000000000000000e+00q, 1.22305289816171655625787195731390966e-01q, 0.00000000000000000000000000000000000e+00q, -1.65324438898380166040880112632294185e-01q, 0.00000000000000000000000000000000000e+00q, 1.68466430838227682054153433455212507e-01q, 0.00000000000000000000000000000000000e+00q, -1.29414121421990185867301192956801970e-01q, 0.00000000000000000000000000000000000e+00q, 7.40265939094274794118888394223176874e-02q, 0.00000000000000000000000000000000000e+00q, -3.06530486826795192656369692940643290e-02q, 0.00000000000000000000000000000000000e+00q, 8.70340238924295628297755911262356676e-03q, 0.00000000000000000000000000000000000e+00q, -1.51929340893595986664021957324166578e-03q, 0.00000000000000000000000000000000000e+00q, 1.23203929079691035458968273452740050e-04q, 0.00000000000000000000000000000000000e+00q, +1.39999997241755078647429400007240474e+01q, 0.00000000000000000000000000000000000e+00q, -9.09999966114473721745525836013257504e+01q, 0.00000000000000000000000000000000000e+00q, 3.63999980672327922093245433643460274e+02q, 0.00000000000000000000000000000000000e+00q, -1.00099993225840842114848783239722252e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199983727683638790040276944637299e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299971717105518109747208654880524e+03q, 0.00000000000000000000000000000000000e+00q, 3.43199963411342741892440244555473328e+03q, 0.00000000000000000000000000000000000e+00q, -3.00299964331940054762526415288448334e+03q, 0.00000000000000000000000000000000000e+00q, 2.00199973798709834227338433265686035e+03q, 0.00000000000000000000000000000000000e+00q, -1.00099985674362051213392987847328186e+03q, 0.00000000000000000000000000000000000e+00q, 3.63999943325478511724213603883981705e+02q, 0.00000000000000000000000000000000000e+00q, -9.09999846330528754378974554128944874e+01q, 0.00000000000000000000000000000000000e+00q, 1.39999974395490944800712895812466741e+01q, 0.00000000000000000000000000000000000e+00q, -9.99999801908312280218638079531956464e-01q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, 0.00000000000000000000000000000000000e+00q, -1.93943668790726927895703719101350160e-07q, 0.00000000000000000000000000000000000e+00q, 2.47439956229840364682558660758271429e-06q, 0.00000000000000000000000000000000000e+00q, -1.46645280431395657564242612780347486e-05q, 0.00000000000000000000000000000000000e+00q, 5.34308673925060553799859519585879752e-05q, 0.00000000000000000000000000000000000e+00q, -1.33489855004123824907050210875070206e-04q, 0.00000000000000000000000000000000000e+00q, 2.41434572845234117792131978141867421e-04q, 0.00000000000000000000000000000000000e+00q, -3.25174308330365702257580551304272376e-04q, 0.00000000000000000000000000000000000e+00q, 3.30190714679572041179850261372052955e-04q, 0.00000000000000000000000000000000000e+00q, -2.52784211127092680541222913248589066e-04q, 0.00000000000000000000000000000000000e+00q, 1.44116748986332306224980581710326533e-04q, 0.00000000000000000000000000000000000e+00q, -5.94836372906812520309875746971073340e-05q, 0.00000000000000000000000000000000000e+00q, 1.68362688651716013439434138643235883e-05q, 0.00000000000000000000000000000000000e+00q, -2.92997636281264755932544040228915350e-06q, 0.00000000000000000000000000000000000e+00q, 2.36887499627690250865279242287186889e-07q, 0.00000000000000000000000000000000000e+00q, +}; +# else +# error: ERROR : Unsupported fixed size Gram extension --> consider switching to GRAMFE_SCHEME == GRAMFE_FFT !! +# endif // PATCH_SIZE, GRAMFE_ND, GRAMFE_NDELTA, GRAMFE_ORDER + + +#elif ( GRAMFE_SCHEME == GRAMFE_FFT ) + +# if ( GRAMFE_NDELTA == 14 && GRAMFE_ND == 24 ) + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fe[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{4.97245158090242000969993796388735063e-01, 5.63544508871983818032447288715047762e-01, 6.29843594261059958050452678435249254e-01, 6.96135381444431433628494687582133338e-01, 7.62324839176956037256616127706365660e-01, 8.27657077466223523032340381178073585e-01, 8.88282706752433481867115006025414914e-01, 9.30985331998894993787985185917932540e-01, 9.24772479122156321196257522387895733e-01, 8.21678992608439795475305800209753215e-01, 5.81271904446664988697079934354405850e-01, 2.11691649013410865265427673875819892e-01, -2.11691649013410310153915361297549680e-01, -5.81271904446664544607870084291789681e-01, -8.21678992608439573430700875178445131e-01, -9.24772479122156099151652597356587648e-01, -9.30985331998895215832590110949240625e-01, -8.88282706752433592889417468541068956e-01, -8.27657077466223634054642843693727627e-01, -7.62324839176956148278918590222019702e-01, -6.96135381444431211583889762550825253e-01, -6.29843594261059736005847753403941169e-01, -5.63544508871983929054749751230701804e-01, -4.97245158090242111992296258904389106e-01}, +{7.41249316660235524345523572264937684e-01, 1.03774904285370217493778000061865896e+00, 1.37131119249249788794031701399944723e+00, 1.74193440093128226742180686414940283e+00, 2.14959644231357538401994133892003447e+00, 2.59408374150183096418231798452325165e+00, 3.07406171929597382685983575356658548e+00, 3.58376851469672930150522915937472135e+00, 4.10536580046030152857383654918521643e+00, 4.59850230091144052124718655250035226e+00, 4.99658760334488594168078634538687766e+00, 5.22242425599244430856060716905631125e+00, 5.22242425599244430856060716905631125e+00, 4.99658760334488682985920604551210999e+00, 4.59850230091144140942560625262558460e+00, 4.10536580046030508128751534968614578e+00, 3.58376851469673329830811780993826687e+00, 3.07406171929597471503825545369181782e+00, 2.59408374150183185236073768464848399e+00, 2.14959644231357627219836103904526681e+00, 1.74193440093128093515417731396155432e+00, 1.37131119249249655567268746381159872e+00, 1.03774904285370261902698985068127513e+00, 7.41249316660236079457035884843207896e-01}, +{1.09032618437203887573616611916804686e+00, 1.96258703836301151568477507680654526e+00, 3.10742258849306018930747086415067315e+00, 4.55671960577367229916490032337605953e+00, 6.34008970540572036611592920962721109e+00, 8.47005900066034200790454633533954620e+00, 1.08788384351343303535486484179273248e+01, 1.32544857789136933945428609149530530e+01, 1.48173411902375473658821647404693067e+01, 1.43257448373187994405952849774621427e+01, 1.06856352554158284817731328075751662e+01, 3.99089082545688222936064448731485754e+00, -3.99089082545687379166565733612515032e+00, -1.06856352554158231527026146068237722e+01, -1.43257448373187994405952849774621427e+01, -1.48173411902375544713095223414711654e+01, -1.32544857789137111581112549174576998e+01, -1.08788384351343339062623272184282541e+01, -8.47005900066034556061822513584047556e+00, -6.34008970540572391882960801012814045e+00, -4.55671960577366608191596242249943316e+00, -3.10742258849305574841537236352451146e+00, -1.96258703836301351408621940208831802e+00, -1.09032618437204043004840059438720345e+00}, +{1.65868886506415713633089126233244315e+00, 3.87027399215242295937855487863998860e+00, 7.32587339146367000353166076820343733e+00, 1.23669052714843825668822319130413234e+01, 1.93715604044030733632553165080025792e+01, 2.87452173869701788078145909821614623e+01, 4.08680782373286248798649467062205076e+01, 5.59083333043297443509800359606742859e+01, 7.33871459190947206252531032077968121e+01, 9.15748682654812284908985020592808723e+01, 1.07240628363696458791309851221740246e+02, 1.16461100421558029438529047183692455e+02, 1.16461100421558043649383762385696173e+02, 1.07240628363696487213019281625747681e+02, 9.15748682654812569126079324632883072e+01, 7.33871459190948627338002552278339863e+01, 5.59083333043298651432451151777058840e+01, 4.08680782373286461961470195092260838e+01, 2.87452173869702001240966637851670384e+01, 1.93715604044030875741100317100062966e+01, 1.23669052714843612506001591100357473e+01, 7.32587339146365490449852586607448757e+00, 3.87027399215242828844907307939138263e+00, 1.65868886506416046699996513780206442e+00}, +{2.66437629966150391069845682068262249e+00, 7.99312631768922976505109545541927218e+00, 1.79843449889654749540568445809185505e+01, 3.48271804064500756226152589078992605e+01, 6.11959828949299549094575922936201096e+01, 9.98938631249804700473760021850466728e+01, 1.52129370680697945772408274933695793e+02, 2.12891162330075047748323413543403149e+02, 2.64330719086445697030285373330116272e+02, 2.74868433346896040347928646951913834e+02, 2.14425162169195516526087885722517967e+02, 8.17942553828927003678472829051315784e+01, -8.17942553828925724701548460870981216e+01, -2.14425162169195459682669024914503098e+02, -2.74868433346896097191347507759928703e+02, -2.64330719086446038090798538178205490e+02, -2.12891162330075530917383730411529541e+02, -1.52129370680698059459245996549725533e+02, -9.98938631249805553125042933970689774e+01, -6.11959828949300188583038107026368380e+01, -3.48271804064500045683416828978806734e+01, -1.79843449889654287687790201744064689e+01, -7.99312631768924397590581065742298961e+00, -2.66437629966151057203660457162186503e+00}, +{4.57974081736594573754928205744363368e+00, 1.74030139360986879637493984773755074e+01, 4.62552739220327140401423093862831593e+01, 1.02447754756321515401396027300506830e+02, 2.01953695009074010613403515890240669e+02, 3.66069590163902262247574981302022934e+02, 6.20252415081219737658102530986070633e+02, 9.86925230713506834945292212069034576e+02, 1.46677018131712429749313741922378540e+03, 2.01111949620787390813347883522510529e+03, 2.50746538143284124089404940605163574e+03, 2.80905895014421821542782709002494812e+03, 2.80905895014421867017517797648906708e+03, 2.50746538143284169564140029251575470e+03, 2.01111949620787481762818060815334320e+03, 1.46677018131712816284561995416879654e+03, 9.86925230713510018176748417317867279e+02, 6.20252415081220306092291139066219330e+02, 3.66069590163902660151507006958127022e+02, 2.01953695009074237987078959122300148e+02, 1.02447754756321245395156438462436199e+02, 4.62552739220325719315951573662459850e+01, 1.74030139360987270435998652828857303e+01, 4.57974081736595994840399725944735110e+00}, +{8.52070386988442685094469197792932391e+00, 4.03312537412888687526901776436716318e+01, 1.25816471616978589054269832558929920e+02, 3.17450552849139398858824279159307480e+02, 6.97930406107576459362462628632783890e+02, 1.37958997559606223148875869810581207e+03, 2.46362224716180026007350534200668335e+03, 3.90796297000720505820936523377895355e+03, 5.31940946961565532546956092119216919e+03, 5.88704934240061720629455521702766418e+03, 4.76964161455625890084775164723396301e+03, 1.85199404737454415226238779723644257e+03, -1.85199404737454278802033513784408569e+03, -4.76964161455625890084775164723396301e+03, -5.88704934240061993477866053581237793e+03, -5.31940946961566532991128042340278625e+03, -3.90796297000721688164048828184604645e+03, -2.46362224716180298855761066079139709e+03, -1.37958997559606405047816224396228790e+03, -6.97930406107577482544002123177051544e+02, -3.17450552849138432520703645423054695e+02, -1.25816471616978134306918946094810963e+02, -4.03312537412889682286731840576976538e+01, -8.52070386988445704901096178218722343e+00}, +{1.73696083245900396718752745073288679e+01, 1.00743676090786607346672099083662033e+02, 3.66493876470095528929959982633590698e+02, 1.05048869948773881333181634545326233e+03, 2.58291437416665758064482361078262329e+03, 5.67638267432056909456150606274604797e+03, 1.13630039990938603295944631099700928e+04, 2.07899662523569095355924218893051147e+04, 3.45031387101549989893101155757904053e+04, 5.12679255430856937891803681850433350e+04, 6.73130651934193156193941831588745117e+04, 7.73280077270046167541295289993286133e+04, 7.73280077270046313060447573661804199e+04, 6.73130651934193301713094115257263184e+04, 5.12679255430857301689684391021728516e+04, 3.45031387101551154046319425106048584e+04, 2.07899662523569968470837920904159546e+04, 1.13630039990938730625202879309654236e+04, 5.67638267432057728001382201910018921e+03, 2.58291437416666167337098158895969391e+03, 1.05048869948773517535300925374031067e+03, 3.66493876470094051001069601625204086e+02, 1.00743676090786891563766403123736382e+02, 1.73696083245901142788625293178483844e+01}, +{3.93841258175645236860873410478234291e+01, 2.75686098676461199374898569658398628e+02, 1.16161850139913985913153737783432007e+03, 3.76194170833764746930683031678199768e+03, 1.02302938811893727688584476709365845e+04, 2.41928853010489001462701708078384399e+04, 4.99434350877952674636617302894592285e+04, 8.84665505727885174565017223358154297e+04, 1.30279379105879022972658276557922363e+05, 1.51943859344299999065697193145751953e+05, 1.27056903463321970775723457336425781e+05, 5.00694125605016670306213200092315674e+04, -5.00694125605016743065789341926574707e+04, -1.27056903463322014431469142436981201e+05, -1.51943859344300115481019020080566406e+05, -1.30279379105879343114793300628662109e+05, -8.84665505727888521505519747734069824e+04, -4.99434350877953329472802579402923584e+04, -2.41928853010489401640370488166809082e+04, -1.02302938811893909587524831295013428e+04, -3.76194170833763246264425106346607208e+03, -1.16161850139913440216332674026489258e+03, -2.75686098676462052026181481778621674e+02, -3.93841258175647084271986386738717556e+01}, +{1.01421430963830559335292491596192122e+02, 8.45175842977806951239472255110740662e+02, 4.09885844200621068011969327926635742e+03, 1.49730734913012474862625822424888611e+04, 4.54188458816596394171938300132751465e+04, 1.19771630719252687413245439529418945e+05, 2.79826662022976961452513933181762695e+05, 5.80190453402941813692450523376464844e+05, 1.05897509820880414918065071105957031e+06, 1.68253875439968286082148551940917969e+06, 2.30400909310323046520352363586425781e+06, 2.70068839510678267106413841247558594e+06, 2.70068839510678267106413841247558594e+06, 2.30400909310323186218738555908203125e+06, 1.68253875439968402497470378875732422e+06, 1.05897509820880857296288013458251953e+06, 5.80190453402944724075496196746826172e+05, 2.79826662022977368906140327453613281e+05, 1.19771630719252891140058636665344238e+05, 4.54188458816597340046428143978118896e+04, 1.49730734913011820026440545916557312e+04, 4.09885844200618976174155250191688538e+03, 8.45175842977809907097253017127513885e+02, 1.01421430963831056715207523666322231e+02}, +{3.06402947022566877421922981739044189e+02, 3.00261198217878973082406446337699890e+03, 1.66423985761780350003391504287719727e+04, 6.80098239747572515625506639480590820e+04, 2.25421421454394556349143385887145996e+05, 6.27722731775218155235052108764648438e+05, 1.47276163909541163593530654907226562e+06, 2.86708204823112115263938903808593750e+06, 4.50990749578659981489181518554687500e+06, 5.49346464150784723460674285888671875e+06, 4.71518354339570645242929458618164062e+06, 1.88094019910265761427581310272216797e+06, -1.88094019910266017541289329528808594e+06, -4.71518354339571017771959304809570312e+06, -5.49346464150785189121961593627929688e+06, -4.50990749578661285340785980224609375e+06, -2.86708204823113419115543365478515625e+06, -1.47276163909541396424174308776855469e+06, -6.27722731775219319388270378112792969e+05, -2.25421421454395022010430693626403809e+05, -6.80098239747569314204156398773193359e+04, -1.66423985761779440508689731359481812e+04, -3.00261198217880109950783662497997284e+03, -3.06402947022568525881069945171475410e+02}, +{1.15178391763820854976074770092964172e+03, 1.31301147539565954502904787659645081e+04, 8.27346756414375995518639683723449707e+04, 3.78842992272405244875699281692504883e+05, 1.39895083020431967452168464660644531e+06, 4.36625037080054543912410736083984375e+06, 1.17203589399735573679208755493164062e+07, 2.70826074754665903747081756591796875e+07, 5.35317330174506828188896179199218750e+07, 8.98359791336292475461959838867187500e+07, 1.27247938051063761115074157714843750e+08, 1.51571893839508950710296630859375000e+08, 1.51571893839508980512619018554687500e+08, 1.27247938051063820719718933105468750e+08, 8.98359791336293220520019531250000000e+07, 5.35317330174509212374687194824218750e+07, 2.70826074754667431116104125976562500e+07, 1.17203589399735778570175170898437500e+07, 4.36625037080055475234985351562500000e+06, 1.39895083020432293415069580078125000e+06, 3.78842992272403324022889137268066406e+05, 8.27346756414371047867462038993835449e+04, 1.31301147539566482009831815958023071e+04, 1.15178391763821514359733555465936661e+03}, +{6.21960057166500973835354670882225037e+03, 8.16696085567081609042361378669738770e+04, 5.80500599187641288153827190399169922e+05, 2.93747994188321754336357116699218750e+06, 1.16547489402004685252904891967773438e+07, 3.74940031949838995933532714843750000e+07, 9.81360280356090962886810302734375000e+07, 2.06681177824372112751007080078125000e+08, 3.43196306745256781578063964843750000e+08, 4.33153794504396677017211914062500000e+08, 3.79804263707057714462280273437500000e+08, 1.53029941283611387014389038085937500e+08, -1.53029941283611834049224853515625000e+08, -3.79804263707058250904083251953125000e+08, -4.33153794504397213459014892578125000e+08, -3.43196306745258033275604248046875000e+08, -2.06681177824373155832290649414062500e+08, -9.81360280356092751026153564453125000e+07, -3.74940031949839815497398376464843750e+07, -1.16547489402004964649677276611328125e+07, -2.93747994188320171087980270385742188e+06, -5.80500599187637562863528728485107422e+05, -8.16696085567085101502016186714172363e+04, -6.21960057166504702763631939888000488e+03}, +}; + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fo[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241911588121045184607282862999e-01, 2.67261241484343048391281172371236607e-01, 2.67261205166960724710634167422540486e-01, 2.67260067835812020753394335770281032e-01, 2.67242057504473218276785928537719883e-01, 2.67071965245876341565889333651284687e-01, 2.66014913218750093104603138272068463e-01, 2.61409381570535503946928201912669465e-01, 2.46727717175354605005921371230215300e-01, 2.11464878661485389255147993026184849e-01, 1.46363689060662660601508378022117540e-01, 5.27726682834402313626576130900502903e-02, -5.27726682834400717680978232237976044e-02, -1.46363689060662549579205915506463498e-01, -2.11464878661485333743996761768357828e-01, -2.46727717175354438472467677456734236e-01, -2.61409381570535448435776970654842444e-01, -2.66014913218750093104603138272068463e-01, -2.67071965245876341565889333651284687e-01, -2.67242057504473218276785928537719883e-01, -2.67260067835812020753394335770281032e-01, -2.67261205166960724710634167422540486e-01, -2.67261241484343048391281172371236607e-01, -2.67261241911588121045184607282862999e-01}, +{4.97245158098810702274050754567724653e-01, 5.63544512488117987913938122801482677e-01, 6.29843864409018294736597454175353050e-01, 6.96143124955632575101560632901964709e-01, 7.62440708516628817825733221980044618e-01, 8.28720185458702518488394161977339536e-01, 8.94872243501531161591344698535976931e-01, 9.60399798263161463829362674005096778e-01, 1.02369737334686639051994916371768340e+00, 1.08100905012490033918481913133291528e+00, 1.12597591279379938278282224928261712e+00, 1.15109237635687500223014012590283528e+00, 1.15109237635687500223014012590283528e+00, 1.12597591279379938278282224928261712e+00, 1.08100905012490056122942405636422336e+00, 1.02369737334686683460915901378029957e+00, 9.60399798263162018940874986583366990e-01, 8.94872243501531383635949623567285016e-01, 8.28720185458702740532999087008647621e-01, 7.62440708516628928848035684495698661e-01, 6.96143124955632242034653245355002582e-01, 6.29843864409018072691992529144044966e-01, 5.63544512488118098936240585317136720e-01, 4.97245158098810813296353217083378695e-01}, +{7.41249316641337530064959082665154710e-01, 1.03774903320710465415288581425556913e+00, 1.37131036715724086150203220313414931e+00, 1.74190813377439979170446804346283898e+00, 2.14916930380262982680505956523120403e+00, 2.58989472685879373869966002530418336e+00, 3.04668606798531937940310854173731059e+00, 3.45646883258943971028998021211009473e+00, 3.66426428995213449013590434333309531e+00, 3.41965114440040141019494512875098735e+00, 2.49885545113157769847589406708721071e+00, 9.24730390944524693885853139363462105e-01, -9.24730390944522251395198964019073173e-01, -2.49885545113157592211905466683674604e+00, -3.41965114440040096610573527868837118e+00, -3.66426428995213493422511419339571148e+00, -3.45646883258944237482523931248579174e+00, -3.04668606798532026758152824186254293e+00, -2.58989472685879462687807972542941570e+00, -2.14916930380263071498347926535643637e+00, -1.74190813377439823739223356824368238e+00, -1.37131036715723952923440265294630080e+00, -1.03774903320710509824209566431818530e+00, -7.41249316641338085176471395243424922e-01}, +{1.09032618459089802875894292810698971e+00, 1.96258713026015341185370743914972991e+00, 3.10742941464074151625140984833706170e+00, 4.55691398226938915172468114178627729e+00, 6.34297594691430610680527024669572711e+00, 8.49630203509231307634763652458786964e+00, 1.10397635844306964969518958241678774e+01, 1.39635779099863945873494230909273028e+01, 1.71644977088033989787163591245189309e+01, 2.03574453361935034934049326693639159e+01, 2.30356543589440292407743982039391994e+01, 2.45900018132351121380452241282910109e+01, 2.45900018132351121380452241282910109e+01, 2.30356543589440327934880770044401288e+01, 2.03574453361935105988322902703657746e+01, 1.71644977088034238477121107280254364e+01, 1.39635779099864176799883352941833436e+01, 1.10397635844307000496655746246688068e+01, 8.49630203509231662906131532508879900e+00, 6.34297594691430965951894904719665647e+00, 4.55691398226938382265416294103488326e+00, 3.10742941464073663127010149764828384e+00, 1.96258713026015541025515176443150267e+00, 1.09032618459089958307117740332614630e+00}, +{1.65868886458108355519414089940255508e+00, 3.87027374626717657335461808543186635e+00, 7.32585242266538561040079002850688994e+00, 1.23662405098519769808262935839593410e+01, 1.93608016044344068973259709309786558e+01, 2.86403192324629358722631877753883600e+01, 4.01875494952727621011945302598178387e+01, 5.27729863402339276490238262340426445e+01, 6.26518176312149961404429632239043713e+01, 6.33294390452220383735948416870087385e+01, 4.86290199716537401286586828064173460e+01, 1.84226785676210553788223478477448225e+01, -1.84226785676210127462582022417336702e+01, -4.86290199716537188123766100034117699e+01, -6.33294390452220383735948416870087385e+01, -6.26518176312150529838618240319192410e+01, -5.27729863402340200195794750470668077e+01, -4.01875494952727905229039606638252735e+01, -2.86403192324629571885452605783939362e+01, -1.93608016044344211081806861329823732e+01, -1.23662405098519556645442207809537649e+01, -7.32585242266537051136765512637794018e+00, -3.87027374626718190242513628618326038e+00, -1.65868886458108688586321477487217635e+00}, +{2.66437630565286553974146954715251923e+00, 7.99312882124787105198038261733017862e+00, 1.79845299368572497655804909300059080e+01, 3.48324136577285372595724766142666340e+01, 6.12731213431840586736143450252711773e+01, 1.00589239595558780138162546791136265e+02, 1.56350426504587147746860864572227001e+02, 2.31266145421443951590845244936645031e+02, 3.24262967235168048318882938474416733e+02, 4.26095408244818599996506236493587494e+02, 5.17000294343580776512681040912866592e+02, 5.71640364811459335214749444276094437e+02, 5.71640364811459335214749444276094437e+02, 5.17000294343580890199518762528896332e+02, 4.26095408244818827370181679725646973e+02, 3.24262967235168787283328128978610039e+02, 2.31266145421444576868452713824808598e+02, 1.56350426504587261433698586188256741e+02, 1.00589239595558865403290838003158569e+02, 6.12731213431841155170332058332860470e+01, 3.48324136577284590998715430032461882e+01, 1.79845299368572000275889877229928970e+01, 7.99312882124788526283509781933389604e+00, 2.66437630565287264516882714815437794e+00}, +{4.57974080419516216267084018909372389e+00, 1.74030072506797388598442921647801995e+01, 4.62547055735424095246344222687184811e+01, 1.02429803201963053993495122995227575e+02, 2.01664453580989828651581774465739727e+02, 3.63264868139925454215699573978781700e+02, 6.02179633826070357827120460569858551e+02, 9.04365666760094654819113202393054962e+02, 1.18713891944831516411795746535062790e+03, 1.28565582589893824660975951701402664e+03, 1.02969526446707664035784546285867691e+03, 3.97881903527369615858333418145775795e+02, -3.97881903527368933737307088449597359e+02, -1.02969526446707641298417001962661743e+03, -1.28565582589893847398343496024608612e+03, -1.18713891944831698310736101120710373e+03, -9.04365666760097042242705356329679489e+02, -6.02179633826070926261309068650007248e+02, -3.63264868139925852119631599634885788e+02, -2.01664453580990056025257217697799206e+02, -1.02429803201962783987255534157156944e+02, -4.62547055735422674160872702486813068e+01, -1.74030072506797779396947589702904224e+01, -4.57974080419517726170397509122267365e+00}, +{8.52070404915897761100040952442213893e+00, 4.03313283038990846307569881901144981e+01, 1.25821950823742795932957960758358240e+02, 3.17604651398197120215627364814281464e+02, 7.00185878781805286052986048161983490e+02, 1.39975595994527452603506390005350113e+03, 2.58485762166479116785922087728977203e+03, 4.42970816540509895276045426726341248e+03, 6.99783181785889610182493925094604492e+03, 1.00512985314100133109604939818382263e+04, 1.29277172818742656090762466192245483e+04, 1.47091374166835030337097123265266418e+04, 1.47091374166835048526991158723831177e+04, 1.29277172818742710660444572567939758e+04, 1.00512985314100187679287046194076538e+04, 6.99783181785891702020308002829551697e+03, 4.42970816540511532366508617997169495e+03, 2.58485762166479435109067708253860474e+03, 1.39975595994527634502446744590997696e+03, 7.00185878781806309234525542706251144e+02, 3.17604651398196153877506731078028679e+02, 1.25821950823742341185607074294239283e+02, 4.03313283038991841067399946041405201e+01, 8.52070404915900958542351872893050313e+00}, +{1.73696079198413286803770461119711399e+01, 1.00743471193595794943576038349419832e+02, 3.66476509458005125452473293989896774e+02, 1.04994207426231082536105532199144363e+03, 2.57414392000490079226437956094741821e+03, 5.59177053663108927139546722173690796e+03, 1.08212024812059498799499124288558960e+04, 1.83341948286362385260872542858123779e+04, 2.62670084696860940312035381793975830e+04, 3.01687296873935702024027705192565918e+04, 2.50356408596541477891150861978530884e+04, 9.83584381446308907470665872097015381e+03, -9.83584381446307816077023744583129883e+03, -2.50356408596541477891150861978530884e+04, -3.01687296873935847543179988861083984e+04, -2.62670084696861522388644516468048096e+04, -1.83341948286363040097057819366455078e+04, -1.08212024812059626128757372498512268e+04, -5.59177053663109745684778317809104919e+03, -2.57414392000490488499053753912448883e+03, -1.04994207426230696000857278704643250e+03, -3.66476509458003590680164052173495293e+02, -1.00743471193596079160670342389494181e+02, -1.73696079198414032873643009224906564e+01}, +{3.93841321601920526518370024859905243e+01, 2.75688724851894448875100351870059967e+02, 1.16181050941349440108751878142356873e+03, 3.76731042598382691721781156957149506e+03, 1.03083460968814652005676180124282837e+04, 2.48853055491569575679022818803787231e+04, 5.40682753007304199854843318462371826e+04, 1.06027556147301336750388145446777344e+05, 1.86048946565740567166358232498168945e+05, 2.88168233324366679880768060684204102e+05, 3.88844521680899662896990776062011719e+05, 4.52781974814878776669502258300781250e+05, 4.52781974814878834877163171768188477e+05, 3.88844521680899837519973516464233398e+05, 2.88168233324366912711411714553833008e+05, 1.86048946565741265658289194107055664e+05, 1.06027556147301831515505909919738770e+05, 5.40682753007305000210180878639221191e+04, 2.48853055491569975856691598892211914e+04, 1.03083460968814833904616534709930420e+04, 3.76731042598381236530258320271968842e+03, 1.16181050941348894411930814385414124e+03, 2.75688724851895301526383263990283012e+02, 3.93841321601922302875209425110369921e+01}, +{1.01421415363674356058254488743841648e+02, 8.45167966192891299215261824429035187e+02, 4.09819270767706711922073736786842346e+03, 1.49521888483648708643158897757530212e+04, 4.50850751817461350583471357822418213e+04, 1.16566871516320752562023699283599854e+05, 2.59424004281327273929491639137268066e+05, 4.88371893403003399726003408432006836e+05, 7.53772942952329525724053382873535156e+05, 9.09475278064274578355252742767333984e+05, 7.77396848364594392478466033935546875e+05, 3.09666334016382112167775630950927734e+05, -3.09666334016381995752453804016113281e+05, -7.77396848364594625309109687805175781e+05, -9.09475278064275160431861877441406250e+05, -7.53772942952331621199846267700195312e+05, -4.88371893403005436994135379791259766e+05, -2.59424004281327652279287576675415039e+05, -1.16566871516320941736921668052673340e+05, -4.50850751817462223698385059833526611e+04, -1.49521888483648053806973621249198914e+04, -4.09819270767704620084259659051895142e+03, -8.45167966192894255073042586445808411e+02, -1.01421415363674867649024236015975475e+02}, +{3.06403255945313503616489470005035400e+02, 3.00273934645779854690772481262683868e+03, 1.66516657327725879440549761056900024e+04, 6.82675098260818631388247013092041016e+04, 2.29143862598239851649850606918334961e+05, 6.60501687251337803900241851806640625e+05, 1.66635307319572824053466320037841797e+06, 3.68297572647232562303543090820312500e+06, 7.07011024854806065559387207031250000e+06, 1.16577582574889175593852996826171875e+07, 1.63554121568341068923473358154296875e+07, 1.94017536343134455382823944091796875e+07, 1.94017536343134492635726928710937500e+07, 1.63554121568341143429279327392578125e+07, 1.16577582574889268726110458374023438e+07, 7.07011024854809138923883438110351562e+06, 3.68297572647234564647078514099121094e+06, 1.66635307319573103450238704681396484e+06, 6.60501687251339084468781948089599609e+05, 2.29143862598240346414968371391296387e+05, 6.82675098260815284447744488716125488e+04, 1.66516657327724969945847988128662109e+04, 3.00273934645780991559149697422981262e+03, 3.06403255945315152075636433437466621e+02}, +{1.15178296165467122591508086770772934e+03, 1.31296332755816820281324908137321472e+04, 8.26940917125166743062436580657958984e+04, 3.77573794809309591073542833328247070e+05, 1.37874128232439700514078140258789062e+06, 4.17305489022970478981733322143554688e+06, 1.04969223663130234926939010620117188e+07, 2.16123997940748482942581176757812500e+07, 3.54945340815214589238166809082031250e+07, 4.46069601036824434995651245117187500e+07, 3.90708917031151801347732543945312500e+07, 1.57418161075551081448793411254882812e+07, -1.57418161075551211833953857421875000e+07, -3.90708917031152099370956420898437500e+07, -4.46069601036824882030487060546875000e+07, -3.54945340815215706825256347656250000e+07, -2.16123997940749526023864746093750000e+07, -1.04969223663130421191453933715820312e+07, -4.17305489022971317172050476074218750e+06, -1.37874128232440026476979255676269531e+06, -3.77573794809307670220732688903808594e+05, -8.26940917125161795411258935928344727e+04, -1.31296332755817347788251936435699463e+04, -1.15178296165467781975166872143745422e+03}, +{6.21963286419091946299886330962181091e+03, 8.16828686014462582534179091453552246e+04, 5.81461023582518217153847217559814453e+05, 2.96404651616671634837985038757324219e+06, 1.20362149966898523271083831787109375e+07, 4.08297978460023328661918640136718750e+07, 1.17678602371498271822929382324218750e+08, 2.88270562566431283950805664062500000e+08, 5.96390552136085510253906250000000000e+08, 1.03478008463723564147949218750000000e+09, 1.49791983228327178955078125000000000e+09, 1.80346499158693051338195800781250000e+09, 1.80346499158693075180053710937500000e+09, 1.49791983228327250480651855468750000e+09, 1.03478008463723659515380859375000000e+09, 5.96390552136088371276855468750000000e+08, 2.88270562566433012485504150390625000e+08, 1.17678602371498495340347290039062500e+08, 4.08297978460024222731590270996093750e+07, 1.20362149966898821294307708740234375e+07, 2.96404651616670005023479461669921875e+06, 5.81461023582514491863548755645751953e+05, 8.16828686014466074993833899497985840e+04, 6.21963286419095675228163599967956543e+03}, +}; + + +# elif ( GRAMFE_NDELTA == 14 && GRAMFE_ND == 26 ) + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fe[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{4.97245158096957629023648905786103569e-01, 5.63544511660075131409541882021585479e-01, 6.29843798658497155962265878770267591e-01, 6.96141108464695124169452355999965221e-01, 7.62408171892405950309523632313357666e-01, 8.28395526130319859170469953824067488e-01, 8.92663936319095019378266897547291592e-01, 9.49482197614083478498514523380436003e-01, 9.82658446768036375473798216262366623e-01, 9.59736314071091389799050830333726481e-01, 8.36792404648824095225734254199778661e-01, 5.82357975971985797336571977211860940e-01, 2.10093457974564024048902410868322477e-01, -2.10093457974563219137209557629830670e-01, -5.82357975971985131202757202117936686e-01, -8.36792404648823651136524404137162492e-01, -9.59736314071091500821353292849380523e-01, -9.82658446768036153429193291231058538e-01, -9.49482197614083478498514523380436003e-01, -8.92663936319095019378266897547291592e-01, -8.28395526130319859170469953824067488e-01, -7.62408171892405950309523632313357666e-01, -6.96141108464695124169452355999965221e-01, -6.29843798658497155962265878770267591e-01, -5.63544511660074687320332031958969310e-01, -4.97245158096957184934439055723487400e-01}, +{7.41249316660912538345939992723288015e-01, 1.03774904321578054222641185333486646e+00, 1.37131122509605640757968103571329266e+00, 1.74193549865758945394134116213535890e+00, 2.14961544180620167665551889513153583e+00, 2.59428340669261414674906518484931439e+00, 3.07547013398488866542379582824651152e+00, 3.59089266018686403825199704442638904e+00, 4.13243739416147359833075825008563697e+00, 4.67850918134468063414033167646266520e+00, 5.18559686603089620149376059998758137e+00, 5.58778523472577237640734892920590937e+00, 5.81303425327621781093512254301458597e+00, 5.81303425327621781093512254301458597e+00, 5.58778523472577237640734892920590937e+00, 5.18559686603089620149376059998758137e+00, 4.67850918134467708142665287596173584e+00, 4.13243739416147004561707944958470762e+00, 3.59089266018686359416278719436377287e+00, 3.07547013398488822133458597818389535e+00, 2.59428340669261414674906518484931439e+00, 2.14961544180620123256630904506891966e+00, 1.74193549865758923189673623710405082e+00, 1.37131122509605618553507611068198457e+00, 1.03774904321577854382496752805309370e+00, 7.41249316660910650966798129957169294e-01}, +{1.09032618453951091197495770757086575e+00, 1.96258710771687394647244673251407221e+00, 3.10742765791285391330234233464580029e+00, 4.55686113557909600046968989772722125e+00, 6.34213984180118384159641209407709539e+00, 8.48812267513073237523713032715022564e+00, 1.09852197182305637568333622766658664e+01, 1.36992190951689103428634552983567119e+01, 1.61905787216733259015200019348412752e+01, 1.75391645411783265728900005342438817e+01, 1.64669074364882384031716355821117759e+01, 1.20065768633728904291047001606784761e+01, 4.42909813007330033229891341761685908e+00, -4.42909813007327546330316181411035359e+00, -1.20065768633728691128226273576729000e+01, -1.64669074364882241923169203801080585e+01, -1.75391645411783159147489641327410936e+01, -1.61905787216733081379516079323366284e+01, -1.36992190951689085665066158981062472e+01, -1.09852197182305619804765228764154017e+01, -8.48812267513073059888029092689976096e+00, -6.34213984180118206523957269382663071e+00, -4.55686113557909511229127019760198891e+00, -3.10742765791285346921313248458318412e+00, -1.96258710771686728513429898157482967e+00, -1.09032618453950602699364935688208789e+00}, +{1.65868886510082469420979123242432252e+00, 3.87027401174294771735162612458225340e+00, 7.32587515089918284161285555455833673e+00, 1.23669643240932867200854161637835205e+01, 1.93725785739901539272977970540523529e+01, 2.87558665856738286947802407667040825e+01, 4.09427507084613253596216964069753885e+01, 5.62832070336247980435473436955362558e+01, 7.47979027943507190911986981518566608e+01, 9.56917448697199972684757085517048836e+01, 1.16804631802727030276400910224765539e+02, 1.34536361034341553022386506199836731e+02, 1.44796504509730141307954909279942513e+02, 1.44796504509730141307954909279942513e+02, 1.34536361034341524600677075795829296e+02, 1.16804631802727016065546195022761822e+02, 9.56917448697198551599285565316677094e+01, 7.47979027943505769826515461318194866e+01, 5.62832070336247838326926284935325384e+01, 4.09427507084613182541943388059735298e+01, 2.87558665856738215893528831657022238e+01, 1.93725785739901468218704394530504942e+01, 1.23669643240932831673717373632825911e+01, 7.32587515089918017707759645418263972e+00, 3.87027401174292906560481242195237428e+00, 1.65868886510081359197954498085891828e+00}, +{2.66437630411942150132631468295585364e+00, 7.99312815937520237952185198082588613e+00, 1.79844792333874181622377363964915276e+01, 3.48309157077209903263792512007057667e+01, 6.12498659197744999005408317316323519e+01, 1.00366137839949701060504594352096319e+02, 1.54892001242756748524698195978999138e+02, 2.24338483353825125732328160665929317e+02, 2.99255648450445789876539492979645729e+02, 3.55225869781570168015605304390192032e+02, 3.55421490883335422950040083378553391e+02, 2.69569316124038437010312918573617935e+02, 1.01317924143573421247310761827975512e+02, -1.01317924143572611228591995313763618e+02, -2.69569316124037754889286588877439499e+02, -3.55421490883334911359270336106419563e+02, -3.55225869781569656424835557118058205e+02, -2.99255648450445221442350884899497032e+02, -2.24338483353825068888909299857914448e+02, -1.54892001242756691681279335170984268e+02, -1.00366137839949658427940448746085167e+02, -6.12498659197744785842587589286267757e+01, -3.48309157077209761155245359987020493e+01, -1.79844792333874110568103787954896688e+01, -7.99312815937515352970876847393810749e+00, -2.66437630411939752050898277957458049e+00}, +{4.57974081893740514459523183177225292e+00, 1.74030147739531138029178691795095801e+01, 4.62553489811654401364648947492241859e+01, 1.02450266459989180134471098426729441e+02, 2.01996843980741118684818502515554428e+02, 3.66518880281630458739527966827154160e+02, 6.23385406103670220545609481632709503e+02, 1.00254418087487420052639208734035492e+03, 1.52502848820357598924601916223764420e+03, 2.17918815279831324005499482154846191e+03, 2.89207588425526273567811585962772369e+03, 3.52152693419772049310267902910709381e+03, 3.89615680781349055905593559145927429e+03, 3.89615680781349010430858470499515533e+03, 3.52152693419772003835532814264297485e+03, 2.89207588425526228093076497316360474e+03, 2.17918815279830823783413507044315338e+03, 1.52502848820357212389353662729263306e+03, 1.00254418087487385946587892249226570e+03, 6.23385406103670106858771760016679764e+02, 3.66518880281630288209271384403109550e+02, 2.01996843980741033419690211303532124e+02, 1.02450266459989137501906952820718288e+02, 4.62553489811654117147554643452167511e+01, 1.74030147739529859052254323614761233e+01, 4.57974081893735451842530892463400960e+00}, +{8.52070399895679031487816246226429939e+00, 4.03313069406143114292717655189335346e+01, 1.25820339222838455839337257202714682e+02, 3.17557828242560958642570767551660538e+02, 6.99471899652331444485753308981657028e+02, 1.39303547321207656750630121678113937e+03, 2.54178846342096903754281811416149139e+03, 4.22925534926647651445819064974784851e+03, 6.28911490546032655402086675167083740e+03, 8.08485386710606053384253755211830139e+03, 8.54116964243643997178878635168075562e+03, 6.69739502761537369224242866039276123e+03, 2.55710566915061463078018277883529663e+03, -2.55710566915058598169707693159580231e+03, -6.69739502761535004538018256425857544e+03, -8.54116964243642360088415443897247314e+03, -8.08485386710604325344320386648178101e+03, -6.28911490546030927362153306603431702e+03, -4.22925534926647378597408533096313477e+03, -2.54178846342096767330076545476913452e+03, -1.39303547321207588538527488708496094e+03, -6.99471899652331103425240144133567810e+02, -3.17557828242560788112314185127615929e+02, -1.25820339222838384785063681192696095e+02, -4.03313069406139703687586006708443165e+01, -8.52070399895668195711095904698595405e+00}, +{1.73696083918603960682958131656050682e+01, 1.00743711881147916642476047854870558e+02, 3.66497075083226320657558972015976906e+02, 1.05059543286750567858689464628696442e+03, 2.58474173911289199168095365166664124e+03, 5.69533141022048675949918106198310852e+03, 1.14944633789373656327370554208755493e+04, 2.14411684317483122867997735738754272e+04, 3.69126523865199487772770226001739502e+04, 5.81480128534967298037372529506683350e+04, 8.28490888296702323714271187782287598e+04, 1.05607150905891321599483489990234375e+05, 1.19477971387453420902602374553680420e+05, 1.19477971387453420902602374553680420e+05, 1.05607150905891307047568261623382568e+05, 8.28490888296702032675966620445251465e+04, 5.81480128534965770086273550987243652e+04, 3.69126523865198250859975814819335938e+04, 2.14411684317483050108421593904495239e+04, 1.14944633789373601757688447833061218e+04, 5.69533141022048403101507574319839478e+03, 2.58474173911289062743890099227428436e+03, 1.05059543286750499646586831659078598e+03, 3.66497075083226036440464667975902557e+02, 1.00743711881146936093500698916614056e+02, 1.73696083918601438256246183300390840e+01}, +{3.93841302116098859187331981956958771e+01, 2.75687905695492872837348841130733490e+02, 1.16174954498172201056149788200855255e+03, 3.76556572235869771247962489724159241e+03, 1.02821820038063960964791476726531982e+04, 2.46434561258980793354567140340805054e+04, 5.25481092152850687853060662746429443e+04, 9.90949532243434659903869032859802246e+04, 1.62048136743075709091499447822570801e+05, 2.22989110481297626392915844917297363e+05, 2.46602113916598376818001270294189453e+05, 1.98828611573645612224936485290527344e+05, 7.69163880590298504102975130081176758e+04, -7.69163880590286862570792436599731445e+04, -1.98828611573644651798531413078308105e+05, -2.46602113916597707429900765419006348e+05, -2.22989110481296957004815340042114258e+05, -1.62048136743075127014890313148498535e+05, -9.90949532243433786788955330848693848e+04, -5.25481092152850396814756095409393311e+04, -2.46434561258980647835414856672286987e+04, -1.02821820038063888205215334892272949e+04, -3.76556572235869498399551957845687866e+03, -1.16174954498172110106679610908031464e+03, -2.75687905695489860136149218305945396e+02, -3.93841302116092535356983717065304518e+01}, +{1.01421434341690911651312489993870258e+02, 8.45177636425089531257981434464454651e+02, 4.09901836087362062244210392236709595e+03, 1.49783956601132031209999695420265198e+04, 4.55096781890181082417257130146026611e+04, 1.20709912176266807364299893379211426e+05, 2.86305713002418167889118194580078125e+05, 6.12100165238933870568871498107910156e+05, 1.17619349837733502499759197235107422e+06, 2.01419359865490789525210857391357422e+06, 3.04418632700195116922259330749511719e+06, 4.02756799990218412131071090698242188e+06, 4.63893450724286772310733795166015625e+06, 4.63893450724286772310733795166015625e+06, 4.02756799990218365564942359924316406e+06, 3.04418632700195070356130599975585938e+06, 2.01419359865490160882472991943359375e+06, 1.17619349837733036838471889495849609e+06, 6.12100165238933637738227844238281250e+05, 2.86305713002417993266135454177856445e+05, 1.20709912176266734604723751544952393e+05, 4.55096781890180718619376420974731445e+04, 1.49783956601131903880741447210311890e+04, 4.09901836087361607496859505772590637e+03, 8.45177636425079526816261932253837585e+02, 1.01421434341689149505327804945409298e+02}, +{3.06403151662780658170959213748574257e+02, 3.00269595711676447535865008831024170e+03, 1.66484740662979056651238352060317993e+04, 6.81773798257569724228233098983764648e+04, 2.27812505011203640606254339218139648e+05, 6.48401007082786993123590946197509766e+05, 1.59168832559466827660799026489257812e+06, 3.34919043382165767252445220947265625e+06, 5.93855651697500050067901611328125000e+06, 8.65080131294064782559871673583984375e+06, 9.93703749803515337407588958740234375e+06, 8.19878818352737836539745330810546875e+06, 3.20631213500292086973786354064941406e+06, -3.20631213500285614281892776489257812e+06, -8.19878818352732528001070022583007812e+06, -9.93703749803511612117290496826171875e+06, -8.65080131294061243534088134765625000e+06, -5.93855651697497349232435226440429688e+06, -3.34919043382165394723415374755859375e+06, -1.59168832559466664679348468780517578e+06, -6.48401007082786527462303638458251953e+05, -2.27812505011203465983271598815917969e+05, -6.81773798257569142151623964309692383e+04, -1.66484740662978874752297997474670410e+04, -3.00269595711672582183382473886013031e+03, -3.06403151662774973829073132947087288e+02}, +{1.15178417581229018651356454938650131e+03, 1.31302515570869963994482532143592834e+04, 8.27468480969360098242759704589843750e+04, 3.79247098343848483636975288391113281e+05, 1.40582749814006988890469074249267578e+06, 4.43703631561937369406223297119140625e+06, 1.22070754939040858298540115356445312e+07, 2.94672379526529014110565185546875000e+07, 6.22350873854225724935531616210937500e+07, 1.14262404451339244842529296875000000e+08, 1.81204792641046196222305297851562500e+08, 2.47027761167848914861679077148437500e+08, 2.88625723570557892322540283203125000e+08, 2.88625723570557892322540283203125000e+08, 2.47027761167848885059356689453125000e+08, 1.81204792641046136617660522460937500e+08, 1.14262404451338842511177062988281250e+08, 6.22350873854222893714904785156250000e+07, 2.94672379526528865098953247070312500e+07, 1.22070754939040765166282653808593750e+07, 4.43703631561937090009450912475585938e+06, 1.40582749814006872475147247314453125e+06, 3.79247098343848134391009807586669922e+05, 8.27468480969359225127846002578735352e+04, 1.31302515570868163194973021745681763e+04, 1.15178417581226767651969566941261292e+03}, +{6.21962088415824928233632817864418030e+03, 8.16779264997016580309718847274780273e+04, 5.81101064771225093863904476165771484e+05, 2.95399801080125523731112480163574219e+06, 1.18897512576719094067811965942382812e+07, 3.95187875101808533072471618652343750e+07, 1.09727515392804652452468872070312500e+08, 2.53396550628158599138259887695312500e+08, 4.80575121696470618247985839843750000e+08, 7.33626164899377465248107910156250000e+08, 8.69330118565513134002685546875000000e+08, 7.30943974723255515098571777343750000e+08, 2.88411327370240271091461181640625000e+08, -2.88411327370232641696929931640625000e+08, -7.30943974723249197006225585937500000e+08, -8.69330118565508842468261718750000000e+08, -7.33626164899373650550842285156250000e+08, -4.80575121696467995643615722656250000e+08, -2.53396550628158181905746459960937500e+08, -1.09727515392804518342018127441406250e+08, -3.95187875101808086037635803222656250e+07, -1.18897512576718982309103012084960938e+07, -2.95399801080125197768211364746093750e+06, -5.81101064771224395371973514556884766e+05, -8.16779264997004647739231586456298828e+04, -6.21962088415812104358337819576263428e+03}, +}; + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fo[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912258418196302045544143766e-01, 2.67261241821684147890181293405476026e-01, 2.67261233560618038929135309444973245e-01, 2.67260953908735332529289507874636911e-01, 2.67256124495150959585743066782015376e-01, 2.67205891599919143075680949550587684e-01, 2.66858313136248304076048043498303741e-01, 2.65151933924067106929101100831758231e-01, 2.58941430517732718019630056005553342e-01, 2.41660565895323586893539413722464815e-01, 2.04091900080052707222577623724646401e-01, 1.39307707377439721208034484334348235e-01, 4.98086717813286602996036833701509750e-02, -4.98086717813285076439377974111266667e-02, -1.39307707377439582430156406189780682e-01, -2.04091900080052623955850776837905869e-01, -2.41660565895323697915841876238118857e-01, -2.58941430517732773530781287263380364e-01, -2.65151933924067106929101100831758231e-01, -2.66858313136248304076048043498303741e-01, -2.67205891599919143075680949550587684e-01, -2.67256124495150959585743066782015376e-01, -2.67260953908735332529289507874636911e-01, -2.67261233560618038929135309444973245e-01, -2.67261241821684147890181293405476026e-01, -2.67261241912258418196302045544143766e-01}, +{4.97245158098840012161900858700391836e-01, 5.63544512506989891953423921222565696e-01, 6.29843866359780846231330997397890314e-01, 6.96143198106641603040145582781406119e-01, 7.62442089931654520817971842916449532e-01, 8.28735782944252319381917004648130387e-01, 8.94989020815047831014510393288219348e-01, 9.61020533810521437878549022570950910e-01, 1.02615574752539173708498765336116776e+00, 1.08853019794689309662771847797557712e+00, 1.14427252285752811822305829991819337e+00, 1.18738186396585887472099329897901043e+00, 1.21119294801864962884963006217731163e+00, 1.21119294801864962884963006217731163e+00, 1.18738186396585887472099329897901043e+00, 1.14427252285752811822305829991819337e+00, 1.08853019794689265253850862791296095e+00, 1.02615574752539129299577780329855159e+00, 9.61020533810521437878549022570950910e-01, 8.94989020815047719992207930772565305e-01, 8.28735782944252208359614542132476345e-01, 7.62442089931654520817971842916449532e-01, 6.96143198106641492017843120265752077e-01, 6.29843866359780735209028534882236272e-01, 5.63544512506989447864214071159949526e-01, 4.97245158098839568072691008637775667e-01}, +{7.41249316656737322617232166521716863e-01, 1.03774904093847109010084750480018556e+00, 1.37131101608804861768931004917249084e+00, 1.74192831563149996831896260118810460e+00, 2.14948833167415287448420713189989328e+00, 2.59291544609178536973104201024398208e+00, 3.06557338113932420498031206079758704e+00, 3.53948345206172110266606978257186711e+00, 3.93164354702067431190926072304137051e+00, 4.06840737974932853404652632889337838e+00, 3.70482659894172616787955121253617108e+00, 2.65338952422789819962645196937955916e+00, 9.70913502073839973505187117552850395e-01, -9.70913502073835532613088616926688701e-01, -2.65338952422789464691277316887862980e+00, -3.70482659894172350334429211216047406e+00, -4.06840737974932764586810662876814604e+00, -3.93164354702067164737400162266567349e+00, -3.53948345206172021448765008244663477e+00, -3.06557338113932376089110221073497087e+00, -2.59291544609178536973104201024398208e+00, -2.14948833167415287448420713189989328e+00, -1.74192831563149974627435767615679651e+00, -1.37131101608804839564470512414118275e+00, -1.03774904093846886965479825448710471e+00, -7.41249316656735435238090303755598143e-01}, +{1.09032618459327723670071463857311755e+00, 1.96258713179898092171526968741090968e+00, 3.10742957331093672124211479967925698e+00, 4.55691991430364939930086620734073222e+00, 6.34308755609170660250129003543406725e+00, 8.49755641379191040130081091774627566e+00, 1.10491006336682033861507079564034939e+01, 1.40128426234361462832112010801210999e+01, 1.73577406199506150130673631792888045e+01, 2.09412249008640465319786017062142491e+01, 2.44320136006154022823011473519727588e+01, 2.72967915226108672754889994394034147e+01, 2.89340961789454205188576452201232314e+01, 2.89340961789454205188576452201232314e+01, 2.72967915226108637227753206389024854e+01, 2.44320136006154022823011473519727588e+01, 2.09412249008640216629828501027077436e+01, 1.73577406199505901440716115757822990e+01, 1.40128426234361445068543616798706353e+01, 1.10491006336682016097938685561530292e+01, 8.49755641379190862494397151749581099e+00, 6.34308755609170571432287033530883491e+00, 4.55691991430364851112244650721549988e+00, 3.10742957331093583306369509955402464e+00, 1.96258713179897426037712193647166714e+00, 1.09032618459327235171940628788433969e+00}, +{1.65868886498164713749758902849862352e+00, 3.87027394690240056362995346717070788e+00, 7.32586921678579283678800493362359703e+00, 1.23667610665518026280551566742360592e+01, 1.93689961765082863109910249477252364e+01, 2.87175005258203341895750781986862421e+01, 4.06668425081660913633641030173748732e+01, 5.48606042816334920075860281940549612e+01, 6.92931960578177665865950984880328178e+01, 7.91640767377706993102037813514471054e+01, 7.73044962374628141787979984655976295e+01, 5.78318399150142710141153656877577305e+01, 2.16047599600869268954284052597358823e+01, -2.16047599600867847868812532396987081e+01, -5.78318399150141502218502864707261324e+01, -7.73044962374627289136697072535753250e+01, -7.91640767377706282559302053414285183e+01, -6.92931960578176671106120920740067959e+01, -5.48606042816334706913039553910493851e+01, -4.06668425081660842579367454163730145e+01, -2.87175005258203270841477205976843834e+01, -1.93689961765082792055636673467233777e+01, -1.23667610665517990753414778737351298e+01, -7.32586921678579017225274583324790001e+00, -3.87027394690238191188313976454082876e+00, -1.65868886498163581322273785190191120e+00}, +{2.66437630576287576289473690849263221e+00, 7.99312889231805723255774864810518920e+00, 1.79845372468577480162821302656084299e+01, 3.48326861386419395216762495692819357e+01, 6.12782294200583379506497294642031193e+01, 1.00646392529262257653499545995146036e+02, 1.56773467602363780315499752759933472e+02, 2.33482410205302102212954196147620678e+02, 3.32877357833313851642742520198225975e+02, 4.51811335776713690393080469220876694e+02, 5.77549531028914202579471748322248459e+02, 6.86552679411649364737968426197767258e+02, 7.50813438210815320417168550193309784e+02, 7.50813438210815206730330828577280045e+02, 6.86552679411649251051130704581737518e+02, 5.77549531028914088892634026706218719e+02, 4.51811335776712837741797557100653648e+02, 3.32877357833313112678297329694032669e+02, 2.33482410205302045369535335339605808e+02, 1.56773467602363723472080891951918602e+02, 1.00646392529262215020935400389134884e+02, 6.12782294200583166343676566611975431e+01, 3.48326861386419253108215343672782183e+01, 1.79845372468577373581410938641056418e+01, 7.99312889231800838274466514121741056e+00, 2.66437630576285178207740500511135906e+00}, +{4.57974081531280674539630126673728228e+00, 1.74030128067366902655521698761731386e+01, 4.62551694337842320692288922145962715e+01, 1.02444136110662270766624715179204941e+02, 2.01889207185618232642809743992984295e+02, 3.65371408291706188720127101987600327e+02, 6.15179383806107693999365437775850296e+02, 9.60523401371365139311819802969694138e+02, 1.36381808952281107849557884037494659e+03, 1.70036757108420010808913502842187881e+03, 1.76346811307942584789998363703489304e+03, 1.36904807000434880137618165463209152e+03, 5.20479538745856643799925222992897034e+02, -5.20479538745851755265903193503618240e+02, -1.36904807000434493602369911968708038e+03, -1.76346811307942311941587831825017929e+03, -1.70036757108419715223135426640510559e+03, -1.36381808952280766789044719189405441e+03, -9.60523401371364684564468916505575180e+02, -6.15179383806107466625689994543790817e+02, -3.65371408291706075033289380371570587e+02, -2.01889207185618147377681452780961990e+02, -1.02444136110662213923205854371190071e+02, -4.62551694337842036475194618105888367e+01, -1.74030128067365623678597330581396818e+01, -4.57974081531275611922637835959903896e+00}, +{8.52070405380874440481875353725627065e+00, 4.03313313018297563417036144528537989e+01, 1.25822258450833871279428421985358000e+02, 3.17616086038116918643936514854431152e+02, 7.00399509590721891072462312877178192e+02, 1.40213624030116397989331744611263275e+03, 2.60238498137319447778281755745410919e+03, 4.52093494297303095663664862513542175e+03, 7.34948999061598715343279764056205750e+03, 1.10898973192664798261830583214759827e+04, 1.53390837818662166682770475745201111e+04, 1.92009234264679980697110295295715332e+04, 2.15386428531068704614881426095962524e+04, 2.15386428531068704614881426095962524e+04, 1.92009234264679980697110295295715332e+04, 1.53390837818662130302982404828071594e+04, 1.10898973192664525413420051336288452e+04, 7.34948999061596441606525331735610962e+03, 4.52093494297302913764724507927894592e+03, 2.60238498137319311354076489806175232e+03, 1.40213624030116329777229111641645432e+03, 7.00399509590721550011949148029088974e+02, 3.17616086038116748113679932430386543e+02, 1.25822258450833786014300130773335695e+02, 4.03313313018294081757630920037627220e+01, 8.52070405380863604705155012197792530e+00}, +{1.73696082677644341174527653492987156e+01, 1.00743644688829306232946692034602165e+02, 3.66490958456832743195263901725411415e+02, 1.05038722353355410632502753287553787e+03, 2.58109911223542394509422592818737030e+03, 5.65666570788211720355320721864700317e+03, 1.12193861288390453410102054476737976e+04, 2.00415053556506027234718203544616699e+04, 3.15849347677107398340012878179550171e+04, 4.24784653850379545474424958229064941e+04, 4.63718740942535296198911964893341064e+04, 3.71428909658429474802687764167785645e+04, 1.43301210481797897955402731895446777e+04, -1.43301210481796078965999186038970947e+04, -3.71428909658428019611164927482604980e+04, -4.63718740942534277564845979213714600e+04, -4.24784653850378454080782830715179443e+04, -3.15849347677106379705946892499923706e+04, -2.00415053556505881715565919876098633e+04, -1.12193861288390398840419948101043701e+04, -5.65666570788211447506910189986228943e+03, -2.58109911223542212610482238233089447e+03, -1.05038722353355342420400120317935944e+03, -3.66490958456832458978169597685337067e+02, -1.00743644688828325683971343096345663e+02, -1.73696082677641818747815705137327313e+01}, +{3.93841323730723971152656304184347391e+01, 2.75688861831283588799124117940664291e+02, 1.16182453378704371971252840012311935e+03, 3.76783034253000005264766514301300049e+03, 1.03180287483716219867346808314323425e+04, 2.49927727655523485736921429634094238e+04, 5.48558499066070799017325043678283691e+04, 1.10102446923184121260419487953186035e+05, 2.01639456084065925097092986106872559e+05, 3.33775223416743392590433359146118164e+05, 4.93427848716640844941139221191406250e+05, 6.44444219368133926764130592346191406e+05, 7.37917688899225788190960884094238281e+05, 7.37917688899225788190960884094238281e+05, 6.44444219368133926764130592346191406e+05, 4.93427848716640728525817394256591797e+05, 3.33775223416742403060197830200195312e+05, 2.01639456084065168397501111030578613e+05, 1.10102446923184077604673802852630615e+05, 5.48558499066070507979020476341247559e+04, 2.49927727655523340217769145965576172e+04, 1.03180287483716165297664701938629150e+04, 3.76783034252999732416355982422828674e+03, 1.16182453378704281021782662719488144e+03, 2.75688861831280632941343355923891068e+02, 3.93841323730717647322308039292693138e+01}, +{1.01421429022739772562999860383570194e+02, 8.45174763087212340906262397766113281e+02, 4.09875744934018985077273100614547729e+03, 1.49695397760488249332411214709281921e+04, 4.53552676138174792868085205554962158e+04, 1.19077461679875137633644044399261475e+05, 2.74748067171323869843035936355590820e+05, 5.53635466718561714515089988708496094e+05, 9.55242457693602191284298896789550781e+05, 1.37009379296700120903551578521728516e+06, 1.56140016840998851694166660308837891e+06, 1.28370394313056953251361846923828125e+06, 5.01379990354880399536341428756713867e+05, -5.01379990354871901217848062515258789e+05, -1.28370394313056254759430885314941406e+06, -1.56140016840998386032879352569580078e+06, -1.37009379296699655242264270782470703e+06, -9.55242457693598349578678607940673828e+05, -5.53635466718561132438480854034423828e+05, -2.74748067171323695220053195953369141e+05, -1.19077461679875064874067902565002441e+05, -4.53552676138174429070204496383666992e+04, -1.49695397760488122003152966499328613e+04, -4.09875744934018621279392391443252563e+03, -8.45174763087202336464542895555496216e+02, -1.01421429022738010417015175335109234e+02}, +{3.06403268672358933599753072485327721e+02, 3.00274751989905325899599120020866394e+03, 1.66525007815735043550375849008560181e+04, 6.82983906370679760584607720375061035e+04, 2.29717277169496781425550580024719238e+05, 6.66843328308181022293865680694580078e+05, 1.71262569866381771862506866455078125e+06, 3.92110335830924892798066139221191406e+06, 7.97507746131553500890731811523437500e+06, 1.42826398790540322661399841308593750e+07, 2.23093707125788033008575439453125000e+07, 3.01595362203305363655090332031250000e+07, 3.51093931680562496185302734375000000e+07, 3.51093931680562496185302734375000000e+07, 3.01595362203305326402187347412109375e+07, 2.23093707125787995755672454833984375e+07, 1.42826398790539838373661041259765625e+07, 7.97507746131550054997205734252929688e+06, 3.92110335830924706533551216125488281e+06, 1.71262569866381678730249404907226562e+06, 6.66843328308180556632578372955322266e+05, 2.29717277169496606802567839622497559e+05, 6.82983906370679178507998585700988770e+04, 1.66525007815734861651435494422912598e+04, 3.00274751989901506021851673722267151e+03, 3.06403268672353249257866991683840752e+02}, +{1.15178381428656552998290862888097763e+03, 1.31300566948457017133478075265884399e+04, 8.27291958811360673280432820320129395e+04, 3.78649569306933612097054719924926758e+05, 1.39544196682824171148240566253662109e+06, 4.32764906177156791090965270996093750e+06, 1.14360683071228340268135070800781250e+07, 2.55879509696277342736721038818359375e+07, 4.76696388415511623024940490722656250e+07, 7.21405518989614099264144897460937500e+07, 8.51942736277741640806198120117187500e+07, 7.15697974245781451463699340820312500e+07, 2.82384262421846874058246612548828125e+07, -2.82384262421840541064739227294921875e+07, -7.15697974245776236057281494140625000e+07, -8.51942736277738213539123535156250000e+07, -7.21405518989610970020294189453125000e+07, -4.76696388415509238839149475097656250e+07, -2.55879509696277007460594177246093750e+07, -1.14360683071228209882974624633789062e+07, -4.32764906177156418561935424804687500e+06, -1.39544196682824054732918739318847656e+06, -3.78649569306933262851089239120483398e+05, -8.27291958811359800165519118309020996e+04, -1.31300566948455216333968564867973328e+04, -1.15178381428654301998903974890708923e+03}, +{6.21963443950599867093842476606369019e+03, 8.16838783978936844505369663238525391e+04, 5.81563984766666311770677566528320312e+05, 2.96784536868772562593221664428710938e+06, 1.21065630964438952505588531494140625e+07, 4.16052754606077894568443298339843750e+07, 1.23314642665293499827384948730468750e+08, 3.17134468746343612670898437500000000e+08, 7.05427098990171551704406738281250000e+08, 1.34867536737992691993713378906250000e+09, 2.20316575912304306030273437500000000e+09, 3.06219815217481136322021484375000000e+09, 3.61220520464519596099853515625000000e+09, 3.61220520464519596099853515625000000e+09, 3.06219815217481088638305664062500000e+09, 2.20316575912304210662841796875000000e+09, 1.34867536737992167472839355468750000e+09, 7.05427098990168094635009765625000000e+08, 3.17134468746343433856964111328125000e+08, 1.23314642665293425321578979492187500e+08, 4.16052754606077596545219421386718750e+07, 1.21065630964438840746879577636718750e+07, 2.96784536868772236630320549011230469e+06, 5.81563984766665613278746604919433594e+05, 8.16838783978924911934882402420043945e+04, 6.21963443950586952269077301025390625e+03}, +}; + + +# elif ( GRAMFE_NDELTA == 14 && GRAMFE_ND == 28 ) + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fe[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{4.97245158098400918955661609288654290e-01, 5.63544512299873234795200005464721471e-01, 6.29843848922057469863489131967071444e-01, 6.96142628155761222785713471239432693e-01, 7.62432230546888245470427136751823127e-01, 8.28629631596214166755487440241267905e-01, 8.94204708326055586198322089330758899e-01, 9.56779450584545498870170376903843135e-01, 1.00859805910193411904174354276619852e+00, 1.03100272833012018836029710655566305e+00, 9.91232609298476563530755356623558328e-01, 8.49904559915575452677671819401439279e-01, 5.83231003705284245519635533128166571e-01, 2.08736366670878970008828900972730480e-01, -2.08736366670878137341560432105325162e-01, -5.83231003705283579385820758034242317e-01, -8.49904559915575008588461969338823110e-01, -9.91232609298476341486150431592250243e-01, -1.03100272833012018836029710655566305e+00, -1.00859805910193411904174354276619852e+00, -9.56779450584545609892472839419497177e-01, -8.94204708326055697220624551846412942e-01, -8.28629631596214277777789902756921947e-01, -7.62432230546888356492729599267477170e-01, -6.96142628155761777897225783817702904e-01, -6.29843848922057580885791594482725486e-01, -5.63544512299872901728292617917759344e-01, -4.97245158098401474067173921866924502e-01}, +{7.41249316661055202004604325338732451e-01, 1.03774904329834782856778474524617195e+00, 1.37131123302045132561488571809604764e+00, 1.74193578470148291437169518758310005e+00, 2.14962078581938076382584767998196185e+00, 2.59434447114252808574974551447667181e+00, 3.07594207402968766729145499994046986e+00, 3.59352858692335308532506132905837148e+00, 4.14358311129482004275814688298851252e+00, 4.71543288949689642919338439241982996e+00, 5.28401239122658417102229577722027898e+00, 5.80347164608236187888223867048509419e+00, 6.20917498991817318199082365026697516e+00, 6.43391215418786011071006214478984475e+00, 6.43391215418786011071006214478984475e+00, 6.20917498991817407016924335039220750e+00, 5.80347164608236276706065837061032653e+00, 5.28401239122658505920071547734551132e+00, 4.71543288949689820555022379267029464e+00, 4.14358311129482093093656658311374485e+00, 3.59352858692335397350348102918360382e+00, 3.07594207402968855546987470006570220e+00, 2.59434447114252897392816521460190415e+00, 2.14962078581938120791505753004457802e+00, 1.74193578470148602299616413802141324e+00, 1.37131123302045199174870049318997189e+00, 1.03774904329834627425555027002701536e+00, 7.41249316661057533472956038167467341e-01}, +{1.09032618457968677461167317233048379e+00, 1.96258712548136560194222965947119519e+00, 3.10742904988412194100533270102459937e+00, 4.55690308932365972793832042952999473e+00, 6.34280147524666038094665054813958704e+00, 8.49453005291382545749456767225638032e+00, 1.10271359181874935018186079105362296e+01, 1.38962003389898391958467982476577163e+01, 1.68836615628429385083109082188457251e+01, 1.94171690689735711998764600139111280e+01, 2.04585420392998749150592630030587316e+01, 1.87274451676436513025691965594887733e+01, 1.33937799141884106290945055661723018e+01, 4.88967502833114942006886849412694573e+00, -4.88967502833112899196521539124660194e+00, -1.33937799141883964182397903641685843e+01, -1.87274451676436441971418389584869146e+01, -2.04585420392998749150592630030587316e+01, -1.94171690689735747525901388144120574e+01, -1.68836615628429456137382658198475838e+01, -1.38962003389898463012741558486595750e+01, -1.10271359181874988308891261112876236e+01, -8.49453005291383078656508587300777435e+00, -6.34280147524666393366032934864051640e+00, -4.55690308932367305061461593140847981e+00, -3.10742904988412416145138195133768022e+00, -1.96258712548136116105013115884503350e+00, -1.09032618457969299186061107320711017e+00}, +{1.65868886510956836666252911527408287e+00, 3.87027401671543902494931899127550423e+00, 7.32587562702678329884520280756987631e+00, 1.23669814633304007145397918066009879e+01, 1.93728977149214252051478979410603642e+01, 2.87594985837558390073809277964755893e+01, 4.09706815080855903943302109837532043e+01, 5.64382482557765783326431119348853827e+01, 7.54484120299935909770283615216612816e+01, 9.78256189931504991363908629864454269e+01, 1.22420421532509479334294155705720186e+02, 1.46641376532136206378709175623953342e+02, 1.66546418693038077663004514761269093e+02, 1.77898768366113358752045314759016037e+02, 1.77898768366113358752045314759016037e+02, 1.66546418693038106084713945165276527e+02, 1.46641376532136263222128036431968212e+02, 1.22420421532509521966858301311731339e+02, 9.78256189931505417689550085924565792e+01, 7.54484120299936336095925071276724339e+01, 5.64382482557766067543525423388928175e+01, 4.09706815080856188160396413877606392e+01, 2.87594985837558603236630005994811654e+01, 1.93728977149214394160026131430640817e+01, 1.23669814633304486761744556133635342e+01, 7.32587562702679040427256040857173502e+00, 3.87027401671542659045144318952225149e+00, 1.65868886510958235547263939224649221e+00}, +{2.66437630531109093112718255724757910e+00, 7.99312868507584983746028228779323399e+00, 1.79845203241191029519541189074516296e+01, 3.48321505352060540872116689570248127e+01, 6.12692701923989346823873347602784634e+01, 1.00553222520868914102720736991614103e+02, 1.56109109728601737288045114837586880e+02, 2.30017797636984340670096571557223797e+02, 3.19054694773081337189069017767906189e+02, 4.08213786788331105981342261657118797e+02, 4.66121892239242185951297869905829430e+02, 4.51317627390905215634120395407080650e+02, 3.34269856632343362434767186641693115e+02, 1.24084071426813636662700446322560310e+02, -1.24084071426813096650221268646419048e+02, -3.34269856632342964530835160985589027e+02, -4.51317627390905045103863812983036041e+02, -4.66121892239242185951297869905829430e+02, -4.08213786788331276511598844081163406e+02, -3.19054694773081507719325600191950798e+02, -2.30017797636984482778643723577260971e+02, -1.56109109728601850974882836453616619e+02, -1.00553222520868999367849028203636408e+02, -6.12692701923989915258061955682933331e+01, -3.48321505352062317228956089820712805e+01, -1.79845203241191278209498705109581351e+01, -7.99312868507581608668033368303440511e+00, -2.66437630531112068510424251144286245e+00}, +{4.57974081935526200481945124920457602e+00, 1.74030150107466212716644804459065199e+01, 4.62553716038594444626141921617090702e+01, 1.02451078665141452006537292618304491e+02, 2.02011919919315971583273494616150856e+02, 3.66689798178026478581159608438611031e+02, 6.24693681587442142699728719890117645e+02, 1.00976466673679374252969864755868912e+03, 1.55510753187907721439842134714126587e+03, 2.27697114619678040980943478643894196e+03, 3.14647134151688760539400391280651093e+03, 4.06178820137395359779475256800651550e+03, 4.84814045682567393669160082936286926e+03, 5.30802836028403362433891743421554565e+03, 5.30802836028403453383361920714378357e+03, 4.84814045682567575568100437521934509e+03, 4.06178820137395496203680522739887238e+03, 3.14647134151688896963605657219886780e+03, 2.27697114619678177405148744583129883e+03, 1.55510753187907857864047400653362274e+03, 1.00976466673679465202440042048692703e+03, 6.24693681587442711133917327970266342e+02, 3.66689798178026819641672773286700249e+02, 2.02011919919316198956948937848210335e+02, 1.02451078665142077284144761506468058e+02, 4.62553716038595226223151257727295160e+01, 1.74030150107465360065361892338842154e+01, 4.57974081935532506548724995809607208e+00}, +{8.52070403735592130090026330435648561e+00, 4.03313238442611279310767713468521833e+01, 1.25821657372522011542059772182255983e+02, 3.17597330409781591242790454998612404e+02, 7.00090563387788733962224796414375305e+02, 1.39897576583310501519008539617061615e+03, 2.58023645007299001008505001664161682e+03, 4.40750261436913842771900817751884460e+03, 6.90532416368197937117656692862510681e+03, 9.71571998359387725940905511379241943e+03, 1.18962744373153600463410839438438416e+04, 1.20835385756670657428912818431854248e+04, 9.21820847813902219058945775032043457e+03, 3.47024808933049007464433088898658752e+03, -3.47024808933047415848704986274242401e+03, -9.21820847813901127665303647518157959e+03, -1.20835385756670621049124747514724731e+04, -1.18962744373153618653304874897003174e+04, -9.71571998359388271637726575136184692e+03, -6.90532416368198391865007579326629639e+03, -4.40750261436914206569781526923179626e+03, -2.58023645007299273856915533542633057e+03, -1.39897576583310683417948894202709198e+03, -7.00090563387789643456926569342613220e+02, -3.17597330409783808136126026511192322e+02, -1.25821657372522253126589930616319180e+02, -4.03313238442608934519739705137908459e+01, -8.52070403735605808037689712364226580e+00}, +{1.73696084117586408979150291997939348e+01, 1.00743723133755935350563959218561649e+02, 3.66498147828450157703628065064549446e+02, 1.05063385064912813504633959382772446e+03, 2.58545272439233121986035257577896118e+03, 5.70336322508178909629350528120994568e+03, 1.15556767905174656334565952420234680e+04, 2.17772280292676987301092594861984253e+04, 3.83034914956044667633250355720520020e+04, 6.26327283783011735067702829837799072e+04, 9.43971071410328004276379942893981934e+04, 1.29810630626848462270572781562805176e+05, 1.61403688327574083814397454261779785e+05, 1.80276611211925250245258212089538574e+05, 1.80276611211925279349088668823242188e+05, 1.61403688327574112918227910995483398e+05, 1.29810630626848520478233695030212402e+05, 9.43971071410328731872141361236572266e+04, 6.26327283783012317144311964511871338e+04, 3.83034914956045031431131064891815186e+04, 2.17772280292677241959609091281890869e+04, 1.15556767905174801853718236088752747e+04, 5.70336322508179728174582123756408691e+03, 2.58545272439233485783915966749191284e+03, 1.05063385064913654787233099341392517e+03, 3.66498147828450953511492116376757622e+02, 1.00743723133755267440392344724386930e+02, 1.73696084117589535367187636438757181e+01}, +{3.93841316641337684245627315249294043e+01, 2.75688543807857854517351370304822922e+02, 1.16179919401526694855419918894767761e+03, 3.76704971530900365905836224555969238e+03, 1.03053508747548348765121772885322571e+04, 2.48650721185887850879225879907608032e+04, 5.39757521981113968649879097938537598e+04, 1.05674520595931157004088163375854492e+05, 1.84621963317290152190253138542175293e+05, 2.82138391223745653405785560607910156e+05, 3.66630825271690206136554479598999023e+05, 3.87721495237737370189279317855834961e+05, 3.03193361676897795405238866806030273e+05, 1.15485540649554823176003992557525635e+05, -1.15485540649554270203225314617156982e+05, -3.03193361676897446159273386001586914e+05, -3.87721495237737253773957490921020508e+05, -3.66630825271690264344215393066406250e+05, -2.82138391223745769821107387542724609e+05, -1.84621963317290326813235878944396973e+05, -1.05674520595931273419409990310668945e+05, -5.39757521981114696245640516281127930e+04, -2.48650721185888214677106589078903198e+04, -1.03053508747548530664062127470970154e+04, -3.76704971530903776510967873036861420e+03, -1.16179919401526967703830450773239136e+03, -2.75688543807855808154272381216287613e+02, -3.93841316641345571269994252361357212e+01}, +{1.01421435451283613815576245542615652e+02, 8.45178262723411080514779314398765564e+02, 4.09907794610485052544390782713890076e+03, 1.49805245406794601876754313707351685e+04, 4.55489673689949995605275034904479980e+04, 1.21152282953288624412380158901214600e+05, 2.89663759449417935684323310852050781e+05, 6.30446675301187671720981597900390625e+05, 1.25167463017455837689340114593505859e+06, 2.25580086829012073576450347900390625e+06, 3.66063434946956066414713859558105469e+06, 5.30465172848234418779611587524414062e+06, 6.81838782589279394596815109252929688e+06, 7.73882172533018048852682113647460938e+06, 7.73882172533018141984939575195312500e+06, 6.81838782589279673993587493896484375e+06, 5.30465172848234791308641433715820312e+06, 3.66063434946956345811486244201660156e+06, 2.25580086829012259840965270996093750e+06, 1.25167463017456000670790672302246094e+06, 6.30446675301188486628234386444091797e+05, 2.89663759449418343137949705123901367e+05, 1.21152282953288842691108584403991699e+05, 4.55489673689950868720188736915588379e+04, 1.49805245406796093448065221309661865e+04, 4.09907794610486143938032910227775574e+03, 8.45178262723404259304516017436981201e+02, 1.01421435451285802287202386651188135e+02}, +{3.06403226659083998129062820225954056e+02, 3.00272883909955999115481972694396973e+03, 1.66510270693130514700897037982940674e+04, 6.82535015509113291045650839805603027e+04, 2.28997502522121852962300181388854980e+05, 6.59695996706234174780547618865966797e+05, 1.66413704624709486961364746093750000e+06, 3.68129376488943863660097122192382812e+06, 7.07020395107174105942249298095703125e+06, 1.15896303156718611717224121093750000e+07, 1.58286806334820147603750228881835938e+07, 1.73094576742801927030086517333984375e+07, 1.38164594246176667511463165283203125e+07, 5.31410116161733772605657577514648438e+06, -5.31410116161730885505676269531250000e+06, -1.38164594246176481246948242187500000e+07, -1.73094576742801889777183532714843750e+07, -1.58286806334820184856653213500976562e+07, -1.15896303156718686223030090332031250e+07, -7.07020395107174851000308990478515625e+06, -3.68129376488944375887513160705566406e+06, -1.66413704624709743075072765350341797e+06, -6.59695996706235338933765888214111328e+05, -2.28997502522122347727417945861816406e+05, -6.82535015509120567003265023231506348e+04, -1.66510270693130987638141959905624390e+04, -3.00272883909953361580846831202507019e+03, -3.06403226659091103556420421227812767e+02}, +{1.15178426977705112221883609890937805e+03, 1.31303044982699975662399083375930786e+04, 8.27518751180889667011797428131103516e+04, 3.79426309096754470374435186386108398e+05, 1.40912635507756890729069709777832031e+06, 4.47406579760842397809028625488281250e+06, 1.24871407922963444143533706665039062e+07, 3.09906314886545017361640930175781250e+07, 6.84691545023082047700881958007812500e+07, 1.34086388215168491005897521972656250e+08, 2.31374686572717398405075073242187500e+08, 3.49909097891364872455596923828125000e+08, 4.61944087327554702758789062500000000e+08, 5.31074115056651115417480468750000000e+08, 5.31074115056651175022125244140625000e+08, 4.61944087327554881572723388671875000e+08, 3.49909097891365110874176025390625000e+08, 2.31374686572717607021331787109375000e+08, 1.34086388215168640017509460449218750e+08, 6.84691545023082941770553588867187500e+07, 3.09906314886545501649379730224609375e+07, 1.24871407922963667660951614379882812e+07, 4.47406579760843329131603240966796875e+06, 1.40912635507757216691970825195312500e+06, 3.79426309096758894156664609909057617e+05, 8.27518751180892286356538534164428711e+04, 1.31303044982698738749604672193527222e+04, 1.15178426977707931655459105968475342e+03}, +{6.21962911124591300904285162687301636e+03, 8.16815267685322760371491312980651855e+04, 5.81380035414741025306284427642822266e+05, 2.96229698215715447440743446350097656e+06, 1.20185957632350903004407882690429688e+07, 4.07429385031435415148735046386718750e+07, 1.17548777173415243625640869140625000e+08, 2.89075580735280692577362060546875000e+08, 6.01410371619817018508911132812500000e+08, 1.04495042465338551998138427734375000e+09, 1.48682396271595597267150878906250000e+09, 1.67127097012967944145202636718750000e+09, 1.35670886834072804450988769531250000e+09, 5.26014281477182328701019287109375000e+08, -5.26014281477179288864135742187500000e+08, -1.35670886834072589874267578125000000e+09, -1.67127097012967872619628906250000000e+09, -1.48682396271595621109008789062500000e+09, -1.04495042465338623523712158203125000e+09, -6.01410371619817614555358886718750000e+08, -2.89075580735281109809875488281250000e+08, -1.17548777173415452241897583007812500e+08, -4.07429385031436234712600708007812500e+07, -1.20185957632351201027631759643554688e+07, -2.96229698215719126164913177490234375e+06, -5.81380035414742887951433658599853516e+05, -8.16815267685314611298963427543640137e+04, -6.21962911124607308011036366224288940e+03}, +}; + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fo[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912388869401695501437643543e-01, 2.67261241891868006614885189264896326e-01, 2.67261239904692693425403149376506917e-01, 2.67261168042617902607105406787013635e-01, 2.67259832592489032787597125206957571e-01, 2.67244763187539036142226223091711290e-01, 2.67130637559131078884178123189485632e-01, 2.66511459719930843270674358791438863e-01, 2.63994698082270662364834379332023673e-01, 2.56083182850730117774418204135145061e-01, 2.36403493815128623589671974514203612e-01, 1.97021651653880247589967211752082221e-01, 1.32876620538880024779970767667691689e-01, 4.71736761022014325361872977282473585e-02, -4.71736761022012382471579883258527843e-02, -1.32876620538879858246517073894210625e-01, -1.97021651653880136567664749236428179e-01, -2.36403493815128568078520743256376591e-01, -2.56083182850730117774418204135145061e-01, -2.63994698082270662364834379332023673e-01, -2.66511459719930843270674358791438863e-01, -2.67130637559131078884178123189485632e-01, -2.67244763187539036142226223091711290e-01, -2.67259832592489032787597125206957571e-01, -2.67261168042617902607105406787013635e-01, -2.67261239904692693425403149376506917e-01, -2.67261241891868006614885189264896326e-01, -2.67261241912388869401695501437643543e-01}, +{4.97245158098845063676662903162650764e-01, 5.63544512510891548728864108852576464e-01, 6.29843866790556705659298586397198960e-01, 6.96143215465395370777912376070162281e-01, 7.62442444671245111997848198370775208e-01, 8.28740149941968651248203059367369860e-01, 8.95024946779465313539958515320904553e-01, 9.61232027158474555683653761661844328e-01, 1.02709057005678250362734615919180214e+00, 1.09174516204587357393052116094622761e+00, 1.15311765273987565372237895644502714e+00, 1.20730234368341293738069452956551686e+00, 1.24867815419483085825902435317402706e+00, 1.27131417014144276755871487694093958e+00, 1.27131417014144276755871487694093958e+00, 1.24867815419483085825902435317402706e+00, 1.20730234368341293738069452956551686e+00, 1.15311765273987587576698388147633523e+00, 1.09174516204587379597512608597753569e+00, 1.02709057005678272567195108422311023e+00, 9.61232027158474666705956224177498370e-01, 8.95024946779465535584563440352212638e-01, 8.28740149941968762270505521883023903e-01, 7.62442444671245223020150660886429250e-01, 6.96143215465395925889424688648432493e-01, 6.29843866790556816681601048912853003e-01, 5.63544512510891215661956721305614337e-01, 4.97245158098845618788175215740920976e-01}, +{7.41249316660065327155848535767290741e-01, 1.03774904272707546581955284636933357e+00, 1.37131117736468155499096610583364964e+00, 1.74193374302674586218131480563897640e+00, 2.14958197123635219583093203254975379e+00, 2.59389255368357396491774125024676323e+00, 3.07237885210662353685506786860059947e+00, 3.57320238696238812181604771467391402e+00, 4.05572600609259659165672928793355823e+00, 4.41775999561380139368793606990948319e+00, 4.47260578809313624759624872240237892e+00, 3.98648561558644942692808399442583323e+00, 2.80655184855856631997994554694741964e+00, 1.01724908761838284121381548175122589e+00, -1.01724908761837862236632190615637228e+00, -2.80655184855856276726626674644649029e+00, -3.98648561558644765057124459417536855e+00, -4.47260578809313535941782902227714658e+00, -4.41775999561380228186635577003471553e+00, -4.05572600609259747983514898805879056e+00, -3.57320238696238900999446741479914635e+00, -3.07237885210662442503348756872583181e+00, -2.59389255368357485309616095037199557e+00, -2.14958197123635308400935173267498612e+00, -1.74193374302674919285038868110859767e+00, -1.37131117736468222112478088092757389e+00, -1.03774904272707413355192329618148506e+00, -7.41249316660067658624200248596025631e-01}, +{1.09032618459378283226612893486162648e+00, 1.96258713215203139945685961720300838e+00, 3.10742961220517921461237165203783661e+00, 4.55692147745409315007236727979034185e+00, 6.34311939789036749459683051100000739e+00, 8.49794686315694569600509566953405738e+00, 1.10522971835618566416314934031106532e+01, 1.40315466718994610317849947023205459e+01, 1.74397830329522598447056225268170238e+01, 2.12206217408631196974511112784966826e+01, 2.51909632226155260070754593471065164e+01, 2.89775961896028846354056440759450197e+01, 3.20268776335750402495250455103814602e+01, 3.37470055344992090340383583679795265e+01, 3.37470055344992090340383583679795265e+01, 3.20268776335750473549524031113833189e+01, 2.89775961896028917408330016769468784e+01, 2.51909632226155331125028169481083751e+01, 2.12206217408631268028784688794985414e+01, 1.74397830329522669501329801278188825e+01, 1.40315466718994681372123523033224046e+01, 1.10522971835618619707020116038620472e+01, 8.49794686315695102507561387028545141e+00, 6.34311939789037104731050931150093675e+00, 4.55692147745410647274866278166882694e+00, 3.10742961220518143505842090235091746e+00, 1.96258713215202673652015619154553860e+00, 1.09032618459378904951506683573825285e+00}, +{1.65868886507821078346580634388374165e+00, 3.87027399865923005251033828244544566e+00, 7.32587387229758757456465900759212673e+00, 1.23669172803023137419131671776995063e+01, 1.93716817383832911048102687345817685e+01, 2.87453996163587781609294324880465865e+01, 4.08600719943481962559417297597974539e+01, 5.58111319504840466265704890247434378e+01, 7.27581584340940423771826317533850670e+01, 8.87959552877303934792507789097726345e+01, 9.80976546850866100157873006537556648e+01, 9.29973010673049458318928373046219349e+01, 6.80526985891085303137515438720583916e+01, 2.51260564294461374856837210245430470e+01, -2.51260564294460237988459994085133076e+01, -6.80526985891084450486232526600360870e+01, -9.29973010673049174101834069006145000e+01, -9.80976546850866100157873006537556648e+01, -8.87959552877304219009602093137800694e+01, -7.27581584340940707988920621573925018e+01, -5.58111319504840750482799194287508726e+01, -4.08600719943482175722238025628030300e+01, -2.87453996163587994772115052910521626e+01, -1.93716817383833053156649839365854859e+01, -1.23669172803023634799046703847125173e+01, -7.32587387229759556817043630871921778e+00, -3.87027399865921717392325263062957674e+00, -1.65868886507822499432052154588745907e+00}, +{2.66437630578923823065906617557629943e+00, 7.99312891047605056371594400843605399e+00, 1.79845392428471768653253093361854553e+01, 3.48327661475793490808428032323718071e+01, 6.12798541055555219259076693560928106e+01, 1.00666238624893651376623893156647682e+02, 1.56935183206837763236762839369475842e+02, 2.34423164004564966944599291309714317e+02, 3.36973788371584305423311889171600342e+02, 4.65632969994968277660518651828169823e+02, 6.14648805621268138565937988460063934e+02, 7.67444006336643838039890397340059280e+02, 8.96620428049448946694610640406608582e+02, 9.71533809302961230969231110066175461e+02, 9.71533809302961344656068831682205200e+02, 8.96620428049449174068286083638668060e+02, 7.67444006336644065413565840572118759e+02, 6.14648805621268479626451153308153152e+02, 4.65632969994968561877612955868244171e+02, 3.36973788371584532796987332403659821e+02, 2.34423164004565137474855873733758926e+02, 1.56935183206837876923600560985505581e+02, 1.00666238624893736641752184368669987e+02, 6.12798541055555787693265301641076803e+01, 3.48327661475795196110993856564164162e+01, 1.79845392428472017343210609396919608e+01, 7.99312891047601681293599540367722511e+00, 2.66437630578926798463612612977158278e+00}, +{4.57974081829780743646551854908466339e+00, 1.74030144031627216349988884758204222e+01, 4.62553126994844490127434255555272102e+01, 1.02448930100606617088487837463617325e+02, 2.01971347911460981094933231361210346e+02, 3.66221212913048418613470857962965965e+02, 6.21034769294207535494933836162090302e+02, 9.89137742202660433576966170221567154e+02, 1.46723451251314804721914697438478470e+03, 1.98455845211685732465412002056837082e+03, 2.36724813999209891335340216755867004e+03, 2.36649890314030017179902642965316772e+03, 1.78960755688169933819153811782598495e+03, 6.71151482314043505539302714169025421e+02, -6.71151482314040322307846508920192719e+02, -1.78960755688169706445478368550539017e+03, -2.36649890314029926230432465672492981e+03, -2.36724813999209936810075305402278900e+03, -1.98455845211685800677514635026454926e+03, -1.46723451251314895671384874731302261e+03, -9.89137742202661229384830221533775330e+02, -6.21034769294208103929122444242238998e+02, -3.66221212913048759673984022811055183e+02, -2.01971347911461208468608674593269825e+02, -1.02448930100607242366095306351780891e+02, -4.62553126994845271724443591665476561e+01, -1.74030144031626328171569184632971883e+01, -4.57974081829787049713331725797615945e+00}, +{8.52070405505024375258926738752052188e+00, 4.03313321544058780432351341005414724e+01, 1.25822351970888334449227841105312109e+02, 3.17619825474924880381877301260828972e+02, 7.00475218579424904419283848255872726e+02, 1.40305773976127147761872038245201111e+03, 2.60986102666228271118598058819770813e+03, 4.56419201190562489500734955072402954e+03, 7.53659158044460855307988822460174561e+03, 1.17158918617914987407857552170753479e+04, 1.70013910873637578333728015422821045e+04, 2.27754716647905552235897630453109741e+04, 2.78657243739175210066605359315872192e+04, 3.08882004028775554616004228591918945e+04, 3.08882004028775590995792299509048462e+04, 2.78657243739175282826181501150131226e+04, 2.27754716647905661375261843204498291e+04, 1.70013910873637687473092228174209595e+04, 1.17158918617915078357327729463577271e+04, 7.53659158044461582903750240802764893e+03, 4.56419201190562853298615664243698120e+03, 2.60986102666228543967008590698242188e+03, 1.40305773976127329660812392830848694e+03, 7.00475218579425927600823342800140381e+02, 3.17619825474927097275212872773408890e+02, 1.25822351970888576033757999539375305e+02, 4.03313321544056364587049756664782763e+01, 8.52070405505038053206590120680630207e+00}, +{1.73696083716575984112751029897481203e+01, 1.00743700141436647754744626581668854e+02, 3.66495923895807607095775892958045006e+02, 1.05055294693329233268741518259048462e+03, 2.58392974680269890086492523550987244e+03, 5.68583840879711078741820529103279114e+03, 1.14194367372853921551723033189773560e+04, 2.10132385473335125425364822149276733e+04, 3.50696577521332292235456407070159912e+04, 5.19560013147153294994495809078216553e+04, 6.62220530685537523822858929634094238e+04, 6.92588500036057084798812866210937500e+04, 5.38488443713810775079764425754547119e+04, 2.04619448515964177204295992851257324e+04, -2.04619448515963158570230007171630859e+04, -5.38488443713810047484003007411956787e+04, -6.92588500036056793760508298873901367e+04, -6.62220530685537523822858929634094238e+04, -5.19560013147153586032800376415252686e+04, -3.50696577521332583273760974407196045e+04, -2.10132385473335307324305176734924316e+04, -1.14194367372854067070875316858291626e+04, -5.68583840879711897287052124738693237e+03, -2.58392974680270299359108321368694305e+03, -1.05055294693330074551340658217668533e+03, -3.66495923895808346060221083462238312e+02, -1.00743700141435979844573012087494135e+02, -1.73696083716579146027925162343308330e+01}, +{3.93841324362586888696569076273590326e+01, 2.75688905139382427478267345577478409e+02, 1.16182927473104746241006068885326385e+03, 3.76801946672008898531203158199787140e+03, 1.03218471236496297933626919984817505e+04, 2.50390933786628083907999098300933838e+04, 5.52301265975142523529939353466033936e+04, 1.12257358532538346480578184127807617e+05, 2.10903468598108243895694613456726074e+05, 3.64535232074014144018292427062988281e+05, 5.74329088149211718700826168060302734e+05, 8.16286953571340884082019329071044922e+05, 1.03728273501126538030803203582763672e+06, 1.17113817911608750000596046447753906e+06, 1.17113817911608773283660411834716797e+06, 1.03728273501126572955399751663208008e+06, 8.16286953571341349743306636810302734e+05, 5.74329088149212067946791648864746094e+05, 3.64535232074014493264257907867431641e+05, 2.10903468598108476726338267326354980e+05, 1.12257358532538491999730467796325684e+05, 5.52301265975143323885276913642883301e+04, 2.50390933786628484085667878389358521e+04, 1.03218471236496479832567274570465088e+04, 3.76801946672012263661599718034267426e+03, 1.16182927473105019089416600763797760e+03, 2.75688905139380381115188356488943100e+02, 3.93841324362594704666662437375634909e+01}, +{1.01421433550463063966162735596299171e+02, 8.45177175110481357478420250117778778e+02, 4.09897297945771970262285321950912476e+03, 1.49767156322647879278520122170448303e+04, 4.54774770406032039318233728408813477e+04, 1.20332492179580163792707026004791260e+05, 2.83316729404912912286818027496337891e+05, 5.95028840103672468103468418121337891e+05, 1.10264055756718479096889495849609375e+06, 1.76727664335839194245636463165283203e+06, 2.38278180210714554414153099060058594e+06, 2.58833061132523324340581893920898438e+06, 2.05966128153134160675108432769775391e+06, 7.91287011203389149159193038940429688e+05, -7.91287011203384608961641788482666016e+05, -2.05966128153133857995271682739257812e+06, -2.58833061132523184642195701599121094e+06, -2.38278180210714600980281829833984375e+06, -1.76727664335839310660958290100097656e+06, -1.10264055756718595512211322784423828e+06, -5.95028840103673166595399379730224609e+05, -2.83316729404913319740444421768188477e+05, -1.20332492179580367519520223140716553e+05, -4.54774770406032912433147430419921875e+04, -1.49767156322649370849831029772758484e+04, -4.09897297945772970706457272171974182e+03, -8.45177175110474536268156953155994415e+02, -1.01421433550465266648643591906875372e+02}, +{3.06403272863466781927854754030704498e+02, 3.00275038738698776796809397637844086e+03, 1.66528140851490134082268923521041870e+04, 6.83108612911332311341539025306701660e+04, 2.29968403246460860827937722206115723e+05, 6.69880307037182268686592578887939453e+05, 1.73707360508153052069246768951416016e+06, 4.06122818444323772564530372619628906e+06, 8.57415319893565028905868530273437500e+06, 1.62582361617032270878553390502929688e+07, 2.74611006210218034684658050537109375e+07, 4.09845787002751827239990234375000000e+07, 5.37077600461358651518821716308593750e+07, 6.15428849338586404919624328613281250e+07, 6.15428849338586479425430297851562500e+07, 5.37077600461358800530433654785156250e+07, 4.09845787002752125263214111328125000e+07, 2.74611006210218258202075958251953125e+07, 1.62582361617032457143068313598632812e+07, 8.57415319893566146492958068847656250e+06, 4.06122818444324331358075141906738281e+06, 1.73707360508153331466019153594970703e+06, 6.69880307037183549255132675170898438e+05, 2.29968403246461355593055486679077148e+05, 6.83108612911339732818305492401123047e+04, 1.66528140851490607019513845443725586e+04, 3.00275038738696139262174256145954132e+03, 3.06403272863473830511793494224548340e+02}, +{1.15178412721497170423390343785285950e+03, 1.31302230903559047874296084046363831e+04, 8.27440349834994412958621978759765625e+04, 3.79142495419318613130599260330200195e+05, 1.40381410577371856197714805603027344e+06, 4.41334615406864508986473083496093750e+06, 1.20188224441757518798112869262695312e+07, 2.83891074011313989758491516113281250e+07, 5.75813069287760108709335327148437500e+07, 9.86287769957597702741622924804687500e+07, 1.39360506723252594470977783203125000e+08, 1.56217973962884545326232910156250000e+08, 1.26723332343883365392684936523437500e+08, 4.91302001484216451644897460937500000e+07, -4.91302001484213396906852722167968750e+07, -1.26723332343883156776428222656250000e+08, -1.56217973962884455919265747070312500e+08, -1.39360506723252624273300170898437500e+08, -9.86287769957598298788070678710937500e+07, -5.75813069287760704755783081054687500e+07, -2.83891074011314362287521362304687500e+07, -1.20188224441757723689079284667968750e+07, -4.41334615406865347176790237426757812e+06, -1.40381410577372182160615921020507812e+06, -3.79142495419323036912828683853149414e+05, -8.27440349834997032303363084793090820e+04, -1.31302230903557810961501672863960266e+04, -1.15178412721499989856965839862823486e+03}, +{6.21963501352869661786826327443122864e+03, 8.16842704630265216110274195671081543e+04, 5.81606744451822713017463684082031250e+05, 2.96954385387601610273122787475585938e+06, 1.21406837139193806797266006469726562e+07, 4.20167349559040814638137817382812500e+07, 1.26615648294974327087402343750000000e+08, 3.35976878444526553153991699218750000e+08, 7.85583318449314117431640625000000000e+08, 1.61139863315245890617370605468750000e+09, 2.88309653210173082351684570312500000e+09, 4.47740908344285106658935546875000000e+09, 6.01457979429927635192871093750000000e+09, 6.97426460547156524658203125000000000e+09, 6.97426460547156620025634765625000000e+09, 6.01457979429927921295166015625000000e+09, 4.47740908344285392761230468750000000e+09, 2.88309653210173368453979492187500000e+09, 1.61139863315246081352233886718750000e+09, 7.85583318449315190315246582031250000e+08, 3.35976878444527089595794677734375000e+08, 1.26615648294974565505981445312500000e+08, 4.20167349559041708707809448242187500e+07, 1.21406837139194104820489883422851562e+07, 2.96954385387605335563421249389648438e+06, 5.81606744451824575662612915039062500e+05, 8.16842704630257067037746310234069824e+04, 6.21963501352885668893577530980110168e+03}, +}; + + +# elif ( GRAMFE_NDELTA == 14 && GRAMFE_ND == 30 ) + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fe[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{4.97245158098734651996863931344705634e-01, 5.63544512456065294081497540901182219e-01, 6.29843861936813964597092763142427430e-01, 6.96143047917691770720693966723047197e-01, 7.62439368077306944826432300033047795e-01, 8.28704796008999600154254494555061683e-01, 8.94744548403508255240978996880585328e-01, 9.59594859663370880475952162669273093e-01, 1.01972841107797429494041807629400864e+00, 1.06538744188061862416816438781097531e+00, 1.07606264189852818269343970314366743e+00, 1.01961628300213447140265543566783890e+00, 8.61343546807277871124597368179820478e-01, 5.83942342387909429923809057072503492e-01, 2.07573487462774819434230266779195517e-01, -2.07573487462772432454727322692633606e-01, -5.83942342387907431522364731790730730e-01, -8.61343546807276649879270280507626012e-01, -1.01961628300213380526884066057391465e+00, -1.07606264189852796064883477811235934e+00, -1.06538744188061862416816438781097531e+00, -1.01972841107797451698502300132531673e+00, -9.59594859663371546609766937763197348e-01, -8.94744548403508033196374071849277243e-01, -8.28704796008999378109649569523753598e-01, -7.62439368077307277893339687580009922e-01, -6.96143047917692103787601354270009324e-01, -6.29843861936814186641697688173735514e-01, -5.63544512456065516126102465932490304e-01, -4.97245158098734929552620087633840740e-01}, +{7.41249316661089729940670167707139626e-01, 1.03774904331839801230330522230360657e+00, 1.37131123505254781669293606682913378e+00, 1.74193586253659460361120636662235484e+00, 2.14962233770705379853893646213691682e+00, 2.59436351291387667927779148158151656e+00, 3.07610112298144144915568176656961441e+00, 3.59449503022079097647178969054948539e+00, 4.14805866266246603402123582782223821e+00, 4.73177783772736049172635830473154783e+00, 5.33233591328143408105688649811781943e+00, 5.92157595892132082582293151062913239e+00, 6.45203477536109026857502612983807921e+00, 6.86077177097092150148682776489295065e+00, 7.08506085602359192421317857224494219e+00, 7.08506085602359281239159827237017453e+00, 6.86077177097092238966524746501818299e+00, 6.45203477536109293311028523021377623e+00, 5.92157595892132260217977091087959707e+00, 5.33233591328143585741372589836828411e+00, 4.73177783772736226808319770498201251e+00, 4.14805866266246781037807522807270288e+00, 3.59449503022079674963151774136349559e+00, 3.07610112298143967279884236631914973e+00, 2.59436351291387534701016193139366806e+00, 2.14962233770705557489577586238738149e+00, 1.74193586253659615792344084184151143e+00, 1.37131123505254914896056561701698229e+00, 1.03774904331839934457093477249145508e+00, 7.41249316661090729141392330348026007e-01}, +{1.09032618458998165067441732389852405e+00, 1.96258713029227083168848366767633706e+00, 3.10742944982179025714685849379748106e+00, 4.55691595283345662892315885983407497e+00, 6.34301947446723346502039930783212185e+00, 8.49681642152161309411440015537664294e+00, 1.10434740891443574639652069890871644e+01, 1.39808688353350021316146012395620346e+01, 1.72156821158569073304533958435058594e+01, 2.04320651366852423791442561196163297e+01, 2.29270844313837365291419700952246785e+01, 2.35697885595152030191457015462219715e+01, 2.11059850260735899496467027347534895e+01, 1.48474279371523785187036992283537984e+01, 5.37263547456971490845489825005643070e+00, -5.37263547456964563053816164028830826e+00, -1.48474279371523234516416778205893934e+01, -2.11059850260735579752235935302451253e+01, -2.35697885595151923610046651447191834e+01, -2.29270844313837400818556488957256079e+01, -2.04320651366852494845716137206181884e+01, -1.72156821158569179885944322450086474e+01, -1.39808688353350358823945498443208635e+01, -1.10434740891443485821810099878348410e+01, -8.49681642152160776504388195462524891e+00, -6.34301947446724145862617660895921290e+00, -4.55691595283346284617209676071070135e+00, -3.10742944982179514212816684448625892e+00, -1.96258713029227482849137231823988259e+00, -1.09032618458998475929888627433683723e+00}, +{1.65868886511180968490464238129789010e+00, 3.87027401805185444771950642461888492e+00, 7.32587576217950164902958931634202600e+00, 1.23669866273958071190008922712877393e+01, 1.93730003769575560568227956537157297e+01, 2.87607538500753285859445895766839385e+01, 4.09811219389346135244522884022444487e+01, 5.65013610792169842511611932422965765e+01, 7.57388286365595888582902261987328529e+01, 9.88778635849312621530771139077842236e+01, 1.25500494311471939568036759737879038e+02, 1.54074176279045502724329708144068718e+02, 1.81582334221806235063922940753400326e+02, 2.03767762731595809100326732732355595e+02, 2.16264963486533332570616039447486401e+02, 2.16264963486533360992325469851493835e+02, 2.03767762731595865943745593540370464e+02, 1.81582334221806320329051231965422630e+02, 1.54074176279045616411167429760098457e+02, 1.25500494311472053254874481353908777e+02, 9.88778635849313616290601203218102455e+01, 7.57388286365596741234185174107551575e+01, 5.65013610792171689922724908683449030e+01, 4.09811219389345708918881427962332964e+01, 2.87607538500752966115214803721755743e+01, 1.93730003769575880312459048582240939e+01, 1.23669866273958302116398044745437801e+01, 7.32587576217951763624114391859620810e+00, 3.87027401805186554994975267618428916e+00, 1.65868886511181634624279013223713264e+00}, +{2.66437630564917249387235642643645406e+00, 7.99312884278627855394461221294477582e+00, 1.79845334058475856409131665714085102e+01, 3.48325701988164553313254145905375481e+01, 6.12763600807442330165031307842582464e+01, 1.00627299122759254146330931689590216e+02, 1.56635986654496321079932386055588722e+02, 2.32732345761250115856455522589385509e+02, 3.29621241764673470697744050994515419e+02, 4.40205504308202080210321582853794098e+02, 5.42952817839081376405374612659215927e+02, 5.99414760175676974540692754089832306e+02, 5.64238137476501606215606443583965302e+02, 4.09534865325552061676717130467295647e+02, 1.50428955418962630119494860991835594e+02, -1.50428955418960441647868719883263111e+02, -4.09534865325550356374151306226849556e+02, -5.64238137476500696720904670655727386e+02, -5.99414760175676633480179589241743088e+02, -5.42952817839081603779050055891275406e+02, -4.40205504308202478114253608509898186e+02, -3.29621241764673868601676076650619507e+02, -2.32732345761251025351157295517623425e+02, -1.56635986654496122127966373227536678e+02, -1.00627299122759112037783779669553041e+02, -6.12763600807443609141955676022917032e+01, -3.48325701988165334910263482015579939e+01, -1.79845334058476353789046697784215212e+01, -7.99312884278630697565404261695221066e+00, -2.66437630564918670472707162844017148e+00}, +{4.57974081947333910846964499796740711e+00, 1.74030150811965285129190306179225445e+01, 4.62553787140706873515227925963699818e+01, 1.02451349702282868747715838253498077e+02, 2.02017293199958345439881668426096439e+02, 3.66755280504824725085200043395161629e+02, 6.25236148122334839172253850847482681e+02, 1.01302807083642176166904391720890999e+03, 1.57003568726540902389388065785169601e+03, 2.33066586352495232858927920460700989e+03, 3.30221922092969725781586021184921265e+03, 4.43334471316116832895204424858093262e+03, 5.58882046701110448339022696018218994e+03, 6.55841071789832312788348644971847534e+03, 7.11704980444011926010716706514358521e+03, 7.11704980444012107909657061100006104e+03, 6.55841071789832676586229354143142700e+03, 5.58882046701110812136903405189514160e+03, 4.43334471316117378592025488615036011e+03, 3.30221922092970135054201819002628326e+03, 2.33066586352495596656808629631996155e+03, 1.57003568726541152500431053340435028e+03, 1.01302807083642676388990366831421852e+03, 6.25236148122333929677552077919244766e+02, 3.66755280504824099807592574506998062e+02, 2.02017293199958857030651415698230267e+02, 1.02451349702283167175664857495576143e+02, 4.62553787140708436709246598184108734e+01, 1.74030150811966066726199642289429903e+01, 4.57974081947336930653591480222530663e+00}, +{8.52070404940937109472542942967265844e+00, 4.03313294564858040303079178556799889e+01, 1.25822121911195836219121702015399933e+02, 3.17612196142436289392207982018589973e+02, 7.00340970621331621259741950780153275e+02, 1.40158279535571659835113678127527237e+03, 2.59869890246354543705820105969905853e+03, 4.50211423705382367188576608896255493e+03, 7.27112490733607410220429301261901855e+03, 1.08136629419188539031893014907836914e+04, 1.45030690419899401604197919368743896e+04, 1.70302358928598841885104775428771973e+04, 1.67278818345430081535596400499343872e+04, 1.24667320984029829560313373804092407e+04, 4.63737577923499884491320699453353882e+03, -4.63737577923492062836885452270507812e+03, -1.24667320984029229293810203671455383e+04, -1.67278818345429717737715691328048706e+04, -1.70302358928598732745740562677383423e+04, -1.45030690419899456173880025744438171e+04, -1.08136629419188648171257227659225464e+04, -7.27112490733608592563541606068611145e+03, -4.50211423705384822824271395802497864e+03, -2.59869890246354088958469219505786896e+03, -1.40158279535571386986703146249055862e+03, -7.00340970621333667622820939868688583e+02, -3.17612196142437369417166337370872498e+02, -1.25822121911196333599036734085530043e+02, -4.03313294564860100877012882847338915e+01, -8.52070404940943681992848723893985152e+00}, +{1.73696084179749838938278116984292865e+01, 1.00743726836915271860561915673315525e+02, 3.66498520850022373451793100684881210e+02, 1.05064803829688230507599655538797379e+03, 2.58573325558438909865799359977245331e+03, 5.70677133147777476551709696650505066e+03, 1.15838052108424381003715097904205322e+04, 2.19456881131360096333082765340805054e+04, 3.90699184530152560910210013389587402e+04, 6.53711813883966533467173576354980469e+04, 1.02275212597704070503823459148406982e+05, 1.48412535514010465703904628753662109e+05, 1.98006487159626994980499148368835449e+05, 2.41047623373879177961498498916625977e+05, 2.66323302649839664809405803680419922e+05, 2.66323302649839723017066717147827148e+05, 2.41047623373879323480650782585144043e+05, 1.98006487159627169603481888771057129e+05, 1.48412535514010669430717825889587402e+05, 1.02275212597704245126806199550628662e+05, 6.53711813883967770379967987537384033e+04, 3.90699184530153361265547573566436768e+04, 2.19456881131361515144817531108856201e+04, 1.15838052108424162724986672401428223e+04, 5.70677133147776203259127214550971985e+03, 2.58573325558439728411030955612659454e+03, 1.05064803829688639780215453356504440e+03, 3.66498520850024078754358924925327301e+02, 1.00743726836915854505605238955467939e+02, 1.73696084179751331078023213194683194e+01}, +{3.93841321679546823020245938096195459e+01, 2.75688777959233277670136885717511177e+02, 1.16181853629361012281151488423347473e+03, 3.76766724665201081734267063438892365e+03, 1.03157242654582150862552225589752197e+04, 2.49727141458070946100633591413497925e+04, 5.47349941131806699559092521667480469e+04, 1.09546116182090278016403317451477051e+05, 1.99498827579570701345801353454589844e+05, 3.26441512247665377799421548843383789e+05, 4.70741842366606404539197683334350586e+05, 5.82544143806789186783134937286376953e+05, 5.93075968298964900895953178405761719e+05, 4.51902818048691609874367713928222656e+05, 1.69882779743162478553131222724914551e+05, -1.69882779743159131612628698348999023e+05, -4.51902818048688990529626607894897461e+05, -5.93075968298963503912091255187988281e+05, -5.82544143806788721121847629547119141e+05, -4.70741842366606579162180423736572266e+05, -3.26441512247665785253047943115234375e+05, -1.99498827579571079695597290992736816e+05, -1.09546116182091034715995192527770996e+05, -5.47349941131805462646298110485076904e+04, -2.49727141458070327644236385822296143e+04, -1.03157242654582532850326970219612122e+04, -3.76766724665202673349995166063308716e+03, -1.16181853629361603452707640826702118e+03, -2.75688777959235039816121570765972137e+02, -3.93841321679550588896745466627180576e+01}, +{1.01421435834131315800732409115880728e+02, 8.45178490405347702107974328100681305e+02, 4.09910083832170494133606553077697754e+03, 1.49813933942291423591086640954017639e+04, 4.55661048170893118367530405521392822e+04, 1.21359877108810353092849254608154297e+05, 2.91371206428476842120289802551269531e+05, 6.40630360811730264686048030853271484e+05, 1.29777641027314355596899986267089844e+06, 2.41953061222947016358375549316406250e+06, 4.12818331875369325280189514160156250e+06, 6.39855642515486385673284530639648438e+06, 8.94627928881918638944625854492187500e+06, 1.12207085736640878021717071533203125e+07, 1.25778113346129469573497772216796875e+07, 1.25778113346129488199949264526367188e+07, 1.12207085736640952527523040771484375e+07, 8.94627928881919570267200469970703125e+06, 6.39855642515487316995859146118164062e+06, 4.12818331875370116904377937316894531e+06, 2.41953061222947575151920318603515625e+06, 1.29777641027314704842865467071533203e+06, 6.40630360811735386960208415985107422e+05, 2.91371206428476143628358840942382812e+05, 1.21359877108810032950714230537414551e+05, 4.55661048170895010116510093212127686e+04, 1.49813933942292132996954023838043213e+04, 4.09910083832172767870360985398292542e+03, 8.45178490405353613823535852134227753e+02, 1.01421435834132353193126618862152100e+02}, +{3.06403255348531672552780946716666222e+02, 3.00274214857092101738089695572853088e+03, 1.66521244002271305362228304147720337e+04, 6.82884586120821186341345310211181641e+04, 2.29583204390886239707469940185546875e+05, 6.65755033348681055940687656402587891e+05, 1.70671586467201355844736099243164062e+06, 3.89743623949697380885481834411621094e+06, 7.89610532521288655698299407958984375e+06, 1.40317981267737671732902526855468750e+07, 2.15151875021395646035671234130859375e+07, 2.78194718071560263633728027343750000e+07, 2.91793822391990795731544494628906250e+07, 2.26467011492344141006469726562500000e+07, 8.58852173818210326135158538818359375e+06, -8.58852173818190209567546844482421875e+06, -2.26467011492342576384544372558593750e+07, -2.91793822391989901661872863769531250e+07, -2.78194718071559928357601165771484375e+07, -2.15151875021395683288574218750000000e+07, -1.40317981267737857997417449951171875e+07, -7.89610532521290332078933715820312500e+06, -3.89743623949700500816106796264648438e+06, -1.70671586467200890183448791503906250e+06, -6.65755033348679076880216598510742188e+05, -2.29583204390887258341535925865173340e+05, -6.82884586120824678801000118255615234e+04, -1.66521244002272323996294289827346802e+04, -3.00274214857094375474844127893447876e+03, -3.06403255348535026314493734389543533e+02}, +{1.15178430551518931679311208426952362e+03, 1.31303257167058527556946501135826111e+04, 8.27540047696090186946094036102294922e+04, 3.79506977327031025197356939315795898e+05, 1.41071380657743662595748901367187500e+06, 4.49324348260186612606048583984375000e+06, 1.26443737760137021541595458984375000e+07, 3.19248671821881048381328582763671875e+07, 7.26793427950186431407928466796875000e+07, 1.48957379964070498943328857421875000e+08, 2.73559590332467257976531982421875000e+08, 4.47806902388246417045593261718750000e+08, 6.50464663145844101905822753906250000e+08, 8.35672697058209538459777832031250000e+08, 9.47652756575142502784729003906250000e+08, 9.47652756575142741203308105468750000e+08, 8.35672697058210134506225585937500000e+08, 6.50464663145844936370849609375000000e+08, 4.47806902388247191905975341796875000e+08, 2.73559590332467854022979736328125000e+08, 1.48957379964070886373519897460937500e+08, 7.26793427950188666582107543945312500e+07, 3.19248671821884065866470336914062500e+07, 1.26443737760136649012565612792968750e+07, 4.49324348260185122489929199218750000e+06, 1.41071380657744337804615497589111328e+06, 3.79506977327033120673149824142456055e+05, 8.27540047696095571154728531837463379e+04, 1.31303257167059582570800557732582092e+04, 1.15178430551520273183996323496103287e+03}, +{6.21963257298012285900767892599105835e+03, 8.16831299066207720898091793060302734e+04, 5.81511969024526420980691909790039062e+05, 2.96649127151014609262347221374511719e+06, 1.20887024683167170733213424682617188e+07, 4.14661347931556552648544311523437500e+07, 1.22613705363694369792938232421875000e+08, 3.14681136585795402526855468750000000e+08, 6.98757960886501312255859375000000000e+08, 1.33098377564556026458740234375000000e+09, 2.14742210877460455894470214843750000e+09, 2.87892378211081171035766601562500000e+09, 3.09465762968425035476684570312500000e+09, 2.43852512228771495819091796875000000e+09, 9.31500288315577268600463867187500000e+08, -9.31500288315550923347473144531250000e+08, -2.43852512228769445419311523437500000e+09, -3.09465762968423795700073242187500000e+09, -2.87892378211080694198608398437500000e+09, -2.14742210877460432052612304687500000e+09, -1.33098377564556169509887695312500000e+09, -6.98757960886502861976623535156250000e+08, -3.14681136585798203945159912109375000e+08, -1.22613705363693982362747192382812500e+08, -4.14661347931555137038230895996093750e+07, -1.20887024683167804032564163208007812e+07, -2.96649127151016378775238990783691406e+06, -5.81511969024530495516955852508544922e+05, -8.16831299066214851336553692817687988e+04, -6.21963257298019834706792607903480530e+03}, +}; + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fo[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912416236399252511546364985e-01, 2.67261241907471247536420833057491109e-01, 2.67261241403367877378371986196725629e-01, 2.67261222112841312359421408473281190e-01, 2.67260840441931490918392455569119193e-01, 2.67256223960103955761269389768131077e-01, 2.67218472160860975872509470718796365e-01, 2.66995551898953187297536260302877054e-01, 2.66000891721989873861531350485165603e-01, 2.62536507389202755646806508593726903e-01, 2.52891102158309899472499182593310252e-01, 2.31045327944049250223912395085790195e-01, 1.90274515466083621317849861043214332e-01, 1.26995761266803008915360351238632575e-01, 4.48141521706771905897426222509238869e-02, -4.48141521706767187449571565593942069e-02, -1.26995761266802620337301732433843426e-01, -1.90274515466083343762093704754079226e-01, -2.31045327944049083690458701312309131e-01, -2.52891102158309843961347951335483231e-01, -2.62536507389202700135655277335899882e-01, -2.66000891721989873861531350485165603e-01, -2.66995551898953187297536260302877054e-01, -2.67218472160860975872509470718796365e-01, -2.67256223960103955761269389768131077e-01, -2.67260840441931490918392455569119193e-01, -2.67261222112841312359421408473281190e-01, -2.67261241403367877378371986196725629e-01, -2.67261241907471247536420833057491109e-01, -2.67261241912416236399252511546364985e-01}, +{4.97245158098846506966594915866153315e-01, 5.63544512511753969974392930453177541e-01, 6.29843866891334869251295458525419235e-01, 6.96143219783191158356316918798256665e-01, 7.62442539042919587011226667527807876e-01, 8.28741400353877888385056849074317142e-01, 8.95036091826682644878587780112866312e-01, 9.61303591983326488623617933626519516e-01, 1.02743793454476572968303571542492136e+00, 1.09306559570638972544998068769928068e+00, 1.15715714179460071875382709549739957e+00, 1.21746836588431861514436604920774698e+00, 1.27012242236122174787738003942649812e+00, 1.30988086802411096698506298707798123e+00, 1.33145347418002590877961210935609415e+00, 1.33145347418002590877961210935609415e+00, 1.30988086802411096698506298707798123e+00, 1.27012242236122196992198496445780620e+00, 1.21746836588431883718897097423905507e+00, 1.15715714179460094079843202052870765e+00, 1.09306559570639016953919053776189685e+00, 1.02743793454476595172764064045622945e+00, 9.61303591983327154757432708720443770e-01, 8.95036091826682533856285317597212270e-01, 8.28741400353877666340451924043009058e-01, 7.62442539042919809055831592559115961e-01, 6.96143219783191380400921843829564750e-01, 6.29843866891335091295900383556727320e-01, 5.63544512511754303041300318000139669e-01, 4.97245158098846729011199840897461399e-01}, +{7.41249316660839374648617194907274097e-01, 1.03774904316675709026185359107330441e+00, 1.37131121950253342944847645412664860e+00, 1.74193525929909065474987528432393447e+00, 2.14961014368302372190555615816265345e+00, 2.59421165966857580897908519546035677e+00, 3.07481252277807914907725717057473958e+00, 3.58653273847933196094572849688120186e+00, 4.11053343818126570852200529770925641e+00, 4.59223157499416156923643939080648124e+00, 4.91214462766106496616203003213740885e+00, 4.87592428705585501091945843654684722e+00, 4.26491277033724180967055872315540910e+00, 2.95856802300173482578315997670870274e+00, 1.06371108175504036630343307479051873e+00, -1.06371108175502815385016219806857407e+00, -2.95856802300172505582054327533114702e+00, -4.26491277033723559242162082227878273e+00, -4.87592428705585323456261903629638255e+00, -4.91214462766106496616203003213740885e+00, -4.59223157499416334559327879105694592e+00, -4.11053343818126748487884469795972109e+00, -3.58653273847933773410545654769521207e+00, -3.07481252277807781680962762038689107e+00, -2.59421165966857447671145564527250826e+00, -2.14961014368302505417318570835050195e+00, -1.74193525929909220906210975954309106e+00, -1.37131121950253476171610600431449711e+00, -1.03774904316675820048487821622984484e+00, -7.41249316660840484871641820063814521e-01}, +{1.09032618459390406862041800195584074e+00, 1.96258713223821357196641201880993322e+00, 3.10742962225155405775467443163506687e+00, 4.55692190687178388941447337856516242e+00, 6.34312875700625511399266542866826057e+00, 8.49807044905235464682391466340050101e+00, 1.10533941693764194980076354113407433e+01, 1.40385550026363663533857106813229620e+01, 1.74735871896191845564771938370540738e+01, 2.13481135565616426674750982783734798e+01, 2.55771163419395648475074267480522394e+01, 2.99370500938594013007332250708714128e+01, 3.40173589401063551918014127295464277e+01, 3.72493430753241270281250763218849897e+01, 3.90521899318787077959314046893268824e+01, 3.90521899318787077959314046893268824e+01, 3.72493430753241412389797915238887072e+01, 3.40173589401063694026561279315501451e+01, 2.99370500938594190643016190733760595e+01, 2.55771163419395826110758207505568862e+01, 2.13481135565616568783298134803771973e+01, 1.74735871896191987673319090390577912e+01, 1.40385550026364018805224986863322556e+01, 1.10533941693764106162234384100884199e+01, 8.49807044905234754139655706239864230e+00, 6.34312875700626310759844272979535162e+00, 4.55692190687179099484183097956702113e+00, 3.10742962225155938682519263238646090e+00, 1.96258713223821734672469574434217066e+00, 1.09032618459390695520028202736284584e+00}, +{1.65868886510305757475691734725842252e+00, 3.87027401276060167845116666285321116e+00, 7.32587522078890707177833974128589034e+00, 1.23669656788721198381608701311051846e+01, 1.93725781936166576713276299415156245e+01, 2.87555151490341351916413259459659457e+01, 4.09368568094688498604227788746356964e+01, 5.62292479761730916720807726960629225e+01, 7.44643640474359358449873980134725571e+01, 9.41744961083988698646862758323550224e+01, 1.11471145062198900177463656291365623e+02, 1.19572169702117776068917009979486465e+02, 1.10489881284679441364460217300802469e+02, 7.93425227875782894670919631607830524e+01, 2.90035944797529978700367792043834925e+01, -2.90035944797526283878141839522868395e+01, -7.93425227875780052499976591207087040e+01, -1.10489881284679285045058350078761578e+02, -1.19572169702117719225498149171471596e+02, -1.11471145062198928599173086695373058e+02, -9.41744961083989267081051366403698921e+01, -7.44643640474360068992609740234911442e+01, -5.62292479761732693077647127211093903e+01, -4.09368568094688072278586332686245441e+01, -2.87555151490341067699318955419585109e+01, -1.93725781936166896457507391460239887e+01, -1.23669656788721429307997823343612254e+01, -7.32587522078892394716831404366530478e+00, -3.87027401276061233659220306435599923e+00, -1.65868886510306423609506509819766507e+00}, +{2.66437630579601281155532888078596443e+00, 7.99312891538362890742064337246119976e+00, 1.79845398137633765145437791943550110e+01, 3.48327904939119861182916793040931225e+01, 6.12803832675283217668038560077548027e+01, 1.00673203019092014187663153279572725e+02, 1.56996754063008239654664066620171070e+02, 2.34814606076506947829329874366521835e+02, 3.38850569859475456269137794151902199e+02, 4.72658568595311407989356666803359985e+02, 6.35729512064245909641613252460956573e+02, 8.19200466608357714903831947594881058e+02, 1.00235504289652362786000594496726990e+03, 1.15388162946499551253509707748889923e+03, 1.24053144612406981650565285235643387e+03, 1.24053144612407004387932829558849335e+03, 1.15388162946499596728244796395301819e+03, 1.00235504289652430998103227466344833e+03, 8.19200466608358397024858277291059494e+02, 6.35729512064246591762639582157135010e+02, 4.72658568595312033266964135691523552e+02, 3.38850569859475911016488680616021156e+02, 2.34814606076507914167450508102774620e+02, 1.56996754063008069124407484196126461e+02, 1.00673203019091886289970716461539268e+02, 6.12803832675284496644962928257882595e+01, 3.48327904939120713834199705161154270e+01, 1.79845398137634262525352824013680220e+01, 7.99312891538365732913007377646863461e+00, 2.66437630579602657832083423272706568e+00}, +{4.57974081914782793489848700119182467e+00, 1.74030148847838717074409942142665386e+01, 4.62553586603594268922279297839850187e+01, 1.02450575649565763569626142270863056e+02, 2.02001738180746116313457605428993702e+02, 3.66562917364811369225208181887865067e+02, 6.23617272058605408346920739859342575e+02, 1.00312398912760636449092999100685120e+03, 1.52391676416475092992186546325683594e+03, 2.16165794660859273790265433490276337e+03, 2.80242687496793314494425430893898010e+03, 3.21730079977868717833189293742179871e+03, 3.11656169339960933939437381923198700e+03, 2.30475885840912087587639689445495605e+03, 8.54410302491708762318012304604053497e+02, -8.54410302491696484139538370072841644e+02, -2.30475885840911178092937916517257690e+03, -3.11656169339960433717351406812667847e+03, -3.21730079977868626883719116449356079e+03, -2.80242687496793450918630696833133698e+03, -2.16165794660859501163940876722335815e+03, -1.52391676416475320365861989557743073e+03, -1.00312398912761113933811429888010025e+03, -6.23617272058604498852218966931104660e+02, -3.66562917364810800791019573807716370e+02, -2.02001738180746627904227352701127529e+02, -1.02450575649566047786720446310937405e+02, -4.62553586603595832116297970060259104e+01, -1.74030148847839463144282490247860551e+01, -4.57974081914785724478633710532449186e+00}, +{8.52070405540225017659849982010200620e+00, 4.03313324094137115594094211701303720e+01, 1.25822381580128791256356635130941868e+02, 3.17621085346167433272057678550481796e+02, 7.00502529997207261658331844955682755e+02, 1.40341606961658749241905752569437027e+03, 2.61301708840133642297587357461452484e+03, 4.58416600635831036925083026289939880e+03, 7.63182778231350857822690159082412720e+03, 1.20699723027022464520996436476707458e+04, 1.80548166379094473086297512054443359e+04, 2.53341746907508968433830887079238892e+04, 3.30218314888184249866753816604614258e+04, 3.96242817879171125241555273532867432e+04, 4.34807164049771090503782033920288086e+04, 4.34807164049771163263358175754547119e+04, 3.96242817879171270760707557201385498e+04, 3.30218314888184540905058383941650391e+04, 2.53341746907509259472135454416275024e+04, 1.80548166379094764124602079391479492e+04, 1.20699723027022664609830826520919800e+04, 7.63182778231352313014212995767593384e+03, 4.58416600635833674459718167781829834e+03, 2.61301708840133187550236470997333527e+03, 1.40341606961658476393495220690965652e+03, 7.00502529997209308021410834044218063e+02, 3.17621085346168456453597173094749451e+02, 1.25822381580129302847126382403075695e+02, 4.03313324094139176168027915991842747e+01, 8.52070405540231590180155762936919928e+00}, +{1.73696084043730749613132502418011427e+01, 1.00743718645112778631300898268818855e+02, 3.66497686186246767192642437294125557e+02, 1.05061589674409037797886412590742111e+03, 2.58508911516815760478493757545948029e+03, 5.69883096165913229924626648426055908e+03, 1.15172333645246508240234106779098511e+04, 2.15402345931696763727813959121704102e+04, 3.71920143087210890371352434158325195e+04, 5.85338165153409718186594545841217041e+04, 8.22143873045307555003091692924499512e+04, 1.00073220279174172901548445224761963e+05, 1.00908018192362127592787146568298340e+05, 7.64991813019296678248792886734008789e+04, 2.86966511220652646443340927362442017e+04, -2.86966511220647917070891708135604858e+04, -7.64991813019293185789138078689575195e+04, -1.00908018192361938417889177799224854e+05, -1.00073220279174129245802760124206543e+05, -8.22143873045307991560548543930053711e+04, -5.85338165153410518541932106018066406e+04, -3.71920143087211545207537710666656494e+04, -2.15402345931698109779972583055496216e+04, -1.15172333645246271771611645817756653e+04, -5.69883096165912047581514343619346619e+03, -2.58508911516816624498460441827774048e+03, -1.05061589674409424333134666085243225e+03, -3.66497686186248472495208261534571648e+02, -1.00743718645113361276344221550971270e+02, -1.73696084043732241752877598628401756e+01}, +{3.93841324560563421641745662782341242e+01, 2.75688919459839667069900315254926682e+02, 1.16183093446353973376972135156393051e+03, 3.76808993996443723517586477100849152e+03, 1.03233710742532603035215288400650024e+04, 2.50590294474983566033188253641128540e+04, 5.54051053116892071557231247425079346e+04, 1.13360116329059019335545599460601807e+05, 2.16134717024789744755253195762634277e+05, 3.83863811626891780178993940353393555e+05, 6.31392858475874061696231365203857422e+05, 9.53566005014961003325879573822021484e+05, 1.31057983659966220147907733917236328e+06, 1.62705699999101459980010986328125000e+06, 1.81523906778703886084258556365966797e+06, 1.81523906778703932650387287139892578e+06, 1.62705699999101553112268447875976562e+06, 1.31057983659966359846293926239013672e+06, 9.53566005014962283894419670104980469e+05, 6.31392858475875109434127807617187500e+05, 3.83863811626892595086246728897094727e+05, 2.16134717024790239520370960235595703e+05, 1.13360116329059848794713616371154785e+05, 5.54051053116890834644436836242675781e+04, 2.50590294474982947576791048049926758e+04, 1.03233710742533003212884068489074707e+04, 3.76808993996445360608049668371677399e+03, 1.16183093446354564548528287559747696e+03, 2.75688919459841429215885000303387642e+02, 3.93841324560567116463971615303307772e+01}, +{1.01421435124648667169822147116065025e+02, 8.45178063906545276040560565888881683e+02, 4.09905746817630551959155127406120300e+03, 1.49797270184656281344359740614891052e+04, 4.55327957555629400303587317466735840e+04, 1.20950511138884627143852412700653076e+05, 2.87951228487014886923134326934814453e+05, 6.19888024431859725154936313629150391e+05, 1.20218211045612976886332035064697266e+06, 2.07354020915138931013643741607666016e+06, 3.12031090404247120022773742675781250e+06, 3.99111128818639041855931282043457031e+06, 4.16233416377901658415794372558593750e+06, 3.22176507714584935456514358520507812e+06, 1.22056908479975559748709201812744141e+06, -1.22056908479973231442272663116455078e+06, -3.22176507714583119377493858337402344e+06, -4.16233416377900680527091026306152344e+06, -3.99111128818638809025287628173828125e+06, -3.12031090404247306287288665771484375e+06, -2.07354020915139233693480491638183594e+06, -1.20218211045613233000040054321289062e+06, -6.19888024431864498183131217956542969e+05, -2.87951228487014188431203365325927734e+05, -1.20950511138884292449802160263061523e+05, -4.55327957555631219292990863323211670e+04, -1.49797270184656990750227123498916626e+04, -4.09905746817632825695909559726715088e+03, -8.45178063906551187756122089922428131e+02, -1.01421435124649704562216356862336397e+02}, +{3.06403274312607607043901225551962852e+02, 3.00275143392975769529584795236587524e+03, 1.66529351680255495011806488037109375e+04, 6.83159923466148320585489273071289062e+04, 2.30079103417689766502007842063903809e+05, 6.71324525720138102769851684570312500e+05, 1.74970855310261854901909828186035156e+06, 4.14054934555894322693347930908203125e+06, 8.94868840040684863924980163574218750e+06, 1.76342843985955119132995605468750000e+07, 3.14955949691073447465896606445312500e+07, 5.06076767286169305443763732910156250e+07, 7.26614727365603446960449218750000000e+07, 9.27359793354628980159759521484375000e+07, 1.04851998875973016023635864257812500e+08, 1.04851998875973045825958251953125000e+08, 9.27359793354629576206207275390625000e+07, 7.26614727365604341030120849609375000e+07, 5.06076767286170125007629394531250000e+07, 3.14955949691074118018150329589843750e+07, 1.76342843985955566167831420898437500e+07, 8.94868840040687471628189086914062500e+06, 4.14054934555898001417517662048339844e+06, 1.74970855310261389240622520446777344e+06, 6.71324525720136123709380626678466797e+05, 2.30079103417690785136073827743530273e+05, 6.83159923466151813045144081115722656e+04, 1.66529351680256477266084402799606323e+04, 3.00275143392978043266339227557182312e+03, 3.06403274312610960805614013224840164e+02}, +{1.15178424707276963090407662093639374e+03, 1.31302906480177171033574268221855164e+04, 8.27504454374870838364586234092712402e+04, 3.79370510836685833055526018142700195e+05, 1.40799264186337566934525966644287109e+06, 4.45989509839300625026226043701171875e+06, 1.23666890924312919378280639648437500e+07, 3.02472113441008105874061584472656250e+07, 6.49829077367100492119789123535156250e+07, 1.21252325361192911863327026367187500e+08, 1.93378822631982028484344482421875000e+08, 2.57786362753798305988311767578125000e+08, 2.76478576919868052005767822265625000e+08, 2.17727157108049184083938598632812500e+08, 8.31665621986724287271499633789062500e+07, -8.31665621986705362796783447265625000e+07, -2.17727157108047723770141601562500000e+08, -2.76478576919867217540740966796875000e+08, -2.57786362753798067569732666015625000e+08, -1.93378822631982088088989257812500000e+08, -1.21252325361193090677261352539062500e+08, -6.49829077367102056741714477539062500e+07, -3.02472113441010788083076477050781250e+07, -1.23666890924312565475702285766601562e+07, -4.45989509839299134910106658935546875e+06, -1.40799264186338242143392562866210938e+06, -3.79370510836687928531318902969360352e+05, -8.27504454374876222573220729827880859e+04, -1.31302906480178226047428324818611145e+04, -1.15178424707278304595092777162790298e+03}, +{6.21963523206644731544656679034233093e+03, 8.16844280393663502763956785202026367e+04, 5.81624945584246423095464706420898438e+05, 2.97031371355282468721270561218261719e+06, 1.21572572551430910825729370117187500e+07, 4.22324112438904643058776855468750000e+07, 1.28496906365456581115722656250000000e+08, 3.47745533899343669414520263671875000e+08, 8.40917388901152372360229492187500000e+08, 1.81366315709482693672180175781250000e+09, 3.47246329117176151275634765625000000e+09, 5.87253466354980373382568359375000000e+09, 8.73669264289517974853515625000000000e+09, 1.14016739517724819183349609375000000e+10, 1.30301511015021572113037109375000000e+10, 1.30301511015021591186523437500000000e+10, 1.14016739517724914550781250000000000e+10, 8.73669264289519119262695312500000000e+09, 5.87253466354981422424316406250000000e+09, 3.47246329117176914215087890625000000e+09, 1.81366315709483194351196289062500000e+09, 8.40917388901155114173889160156250000e+08, 3.47745533899347186088562011718750000e+08, 1.28496906365456178784370422363281250e+08, 4.22324112438903227448463439941406250e+07, 1.21572572551431544125080108642578125e+07, 2.97031371355284238234162330627441406e+06, 5.81624945584250497631728649139404297e+05, 8.16844280393670487683266401290893555e+04, 6.21963523206652280350681394338607788e+03}, +}; + + +# elif ( GRAMFE_NDELTA == 14 && GRAMFE_ND == 32 ) + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fe[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{4.97245158098816864011837424186524004e-01, 5.63544512496454541583545960747869685e-01, 6.29843865476742759135220239841146395e-01, 6.96143168592719852050265672005480155e-01, 7.62441549321803302419198189454618841e-01, 8.28729369113150204917417340766405687e-01, 8.94934651586861695804486771521624178e-01, 9.60670759423399522880515633005416021e-01, 1.02438158594234396403521714091766626e+00, 1.08125263428354423389521343779051676e+00, 1.11968420653919431551059915364021435e+00, 1.11794797436811643720488973485771567e+00, 1.04522072194610982087681350094499066e+00, 8.71375645994358904999899095855653286e-01, 5.84529012223806154757710373814916238e-01, 2.06568946417807181026304874649213161e-01, -2.06568946417805099358133702480699867e-01, -5.84529012223804378400870973564451560e-01, -8.71375645994357794776874470699112862e-01, -1.04522072194610915474299872585106641e+00, -1.11794797436811621516028480982640758e+00, -1.11968420653919431551059915364021435e+00, -1.08125263428354445593981836282182485e+00, -1.02438158594234329790140236582374200e+00, -9.60670759423399411858213170489761978e-01, -8.94934651586861584782184309005970135e-01, -8.28729369113149982872812415735097602e-01, -7.62441549321803635486105577001580968e-01, -6.96143168592720185117173059552442282e-01, -6.29843865476743092202127627388108522e-01, -5.63544512496454874650453348294831812e-01, -4.97245158098817197078744811733486131e-01}, +{7.41249316661097945591052393865538761e-01, 1.03774904332356054936781220021657646e+00, 1.37131123560079482004425699415151030e+00, 1.74193588463457960102687138714827597e+00, 2.14962280361201152345529408194124699e+00, 2.59436958980273058017473886138759553e+00, 3.07615537627740209813964611385017633e+00, 3.59484939533835179403808979259338230e+00, 4.14983284705913124668086311430670321e+00, 4.73882328741473557442986930254846811e+00, 5.35511226661490802314347092760726810e+00, 5.98276194543167694206431406200863421e+00, 6.59094813294907311274073435924947262e+00, 7.13121451397016858919641890679486096e+00, 7.54258763846607660497056713211350143e+00, 7.76648256896838340423983026994392276e+00, 7.76648256896838340423983026994392276e+00, 7.54258763846607838132740653236396611e+00, 7.13121451397017125373167800717055798e+00, 6.59094813294907577727599345962516963e+00, 5.98276194543167960659957316238433123e+00, 5.35511226661491157585714972810819745e+00, 4.73882328741473823896512840292416513e+00, 4.14983284705912502943192521343007684e+00, 3.59484939533835046177046024240553379e+00, 3.07615537627740076587201656366232783e+00, 2.59436958980272924790710931119974703e+00, 2.14962280361201329981213348219171166e+00, 1.74193588463458159942831571243004873e+00, 1.37131123560079659640109639440197498e+00, 1.03774904332356210368004667543573305e+00, 7.41249316661099277858681944053387269e-01}, +{1.09032618459278074496410226856824011e+00, 1.96258713166474740852152081060921773e+00, 3.10742956986133123109539155848324299e+00, 4.55692003489501207269540827837772667e+00, 6.34309304303475141040280504967086017e+00, 8.49764229063059595148388325469568372e+00, 1.10498357216937801439371469314210117e+01, 1.40166821651410309357288497267290950e+01, 1.73695479450742951144093240145593882e+01, 2.09522785007080294406023313058540225e+01, 2.43418973615075238114968669833615422e+01, 2.67131388876848454572154878405854106e+01, 2.68680748020966895239780569681897759e+01, 2.36014667116856138306957291206344962e+01, 1.63676676970339407546362053835764527e+01, 5.87799032991310355100722517818212509e+00, -5.87799032991304493123152496991679072e+00, -1.63676676970338945693583809770643711e+01, -2.36014667116855854089862987166270614e+01, -2.68680748020966788658370205666869879e+01, -2.67131388876848525626428454415872693e+01, -2.43418973615075380223515821853652596e+01, -2.09522785007080472041707253083586693e+01, -1.73695479450742595872725360095500946e+01, -1.40166821651410238303014921257272363e+01, -1.10498357216937730385097893304191530e+01, -8.49764229063059062241336505394428968e+00, -6.34309304303476118036542175104841590e+00, -4.55692003489502006630118557950481772e+00, -3.10742956986133789243353930942248553e+00, -1.96258713166475229350282916129799560e+00, -1.09032618459278429767778106906916946e+00}, +{1.65868886511241564463148279173765332e+00, 3.87027401843067675457632503821514547e+00, 7.32587580233323354406138605554588139e+00, 1.23669882423096915147198160411790013e+01, 1.93730343372336051288584712892770767e+01, 2.87611954429797194165985274594277143e+01, 4.09850499625449202767413225956261158e+01, 5.65269047371725150696875061839818954e+01, 7.58660351358935969301455770619213581e+01, 9.93797230237129838315013330429792404e+01, 1.27109869278619598276236501988023520e+02, 1.58354349632163234673498664051294327e+02, 1.91177512754149887541643693111836910e+02, 2.22148932931539093260653316974639893e+02, 2.46721625910176413754015811719000340e+02, 2.60416407605341532871534582227468491e+02, 2.60416407605341589714953443035483360e+02, 2.46721625910176499019144102931022644e+02, 2.22148932931539235369200468994677067e+02, 1.91177512754150058071900275535881519e+02, 1.58354349632163405203755246475338936e+02, 1.27109869278619740384783654008060694e+02, 9.93797230237131117291937698610126972e+01, 7.58660351358933979781795642338693142e+01, 5.65269047371724724371233605779707432e+01, 4.09850499625448847496045345906168222e+01, 2.87611954429796945476027758559212089e+01, 1.93730343372336477614226168952882290e+01, 1.23669882423097199364292464451864362e+01, 7.32587580233325397216503915842622519e+00, 3.87027401843069052134183039015624672e+00, 1.65868886511242408232646994292736053e+00}, +{2.66437630575045636405207005736883730e+00, 7.99312889236313850460646790452301502e+00, 1.79845377332973370698709913995116949e+01, 3.48327170161178685248160036280751228e+01, 6.12789987916413778634705522563308477e+01, 1.00656823047022342620948620606213808e+02, 1.56862499082656512428002315573394299e+02, 2.34001280481035109914955683052539825e+02, 3.35039966666353507207531947642564774e+02, 4.58386196731237305357353761792182922e+02, 5.91913967840578720824851188808679581e+02, 7.06789712545725819836661685258150101e+02, 7.57607030937105605516990181058645248e+02, 6.95946123562916682203649543225765228e+02, 4.96421767398504471202613785862922668e+02, 1.80705227268557507613877533003687859e+02, -1.80705227268555688624473987147212029e+02, -4.96421767398503106960561126470565796e+02, -6.95946123562915886395785491913557053e+02, -7.57607030937105491830152459442615509e+02, -7.06789712545726274584012571722269058e+02, -5.91913967840579402945877518504858017e+02, -4.58386196731237930634961230680346489e+02, -3.35039966666352370339154731482267380e+02, -2.34001280481034882541280239820480347e+02, -1.56862499082656370319455163553357124e+02, -1.00656823047022228934110898990184069e+02, -6.12789987916415341828724194783717394e+01, -3.48327170161179680007990100421011448e+01, -1.79845377332974010187172098085284233e+01, -7.99312889236317403174325590953230858e+00, -2.66437630575047412762046405987348408e+00}, +{4.57974081950857847544966716668568552e+00, 1.74030151031876911815743369515985250e+01, 4.62553810407961165651613555382937193e+01, 1.02451443082058034406145452521741390e+02, 2.02019252052312992873339680954813957e+02, 3.66780677686155229366704588755965233e+02, 6.25461277437543913038098253309726715e+02, 1.01448601603153304040461080148816109e+03, 1.57726006998534421654767356812953949e+03, 2.35899574803904488362604752182960510e+03, 3.39239757157216308769420720636844635e+03, 4.67098994540028616029303520917892456e+03, 6.11550696751258783478988334536552429e+03, 7.55289110228103891131468117237091064e+03, 8.73472134953324894013348966836929321e+03, 9.40693822881259075074922293424606323e+03, 9.40693822881259256973862648010253906e+03, 8.73472134953325439710170030593872070e+03, 7.55289110228104618727229535579681396e+03, 6.11550696751259511074749752879142761e+03, 4.67098994540029343625064939260482788e+03, 3.39239757157216854466241784393787384e+03, 2.35899574803904897635220550000667572e+03, 1.57726006998533762271108571439981461e+03, 1.01448601603153190353623358532786369e+03, 6.25461277437543117230234201997518539e+02, 3.66780677686154774619353702291846275e+02, 2.02019252052313618150947149842977524e+02, 1.02451443082058403888368047773838043e+02, 4.62553810407963155171273683663457632e+01, 1.74030151031877871048436645651236176e+01, 4.57974081950861577894329457194544375e+00}, +{8.52070405338455927335417072754353285e+00, 4.03313313988891479766607517376542091e+01, 1.25822291135247695592624950222671032e+02, 3.17617924722123120773176196962594986e+02, 7.00443660926694974477868527173995972e+02, 1.40272820883750796383537817746400833e+03, 2.60745390479499701541499234735965729e+03, 4.55093770519069948932155966758728027e+03, 7.47845130970981517748441547155380249e+03, 1.15044216506770226260414347052574158e+04, 1.63467548173943705478450283408164978e+04, 2.10265157669483305653557181358337402e+04, 2.38112767926607193658128380775451660e+04, 2.27229485505881639255676418542861938e+04, 1.65989457422758605389390140771865845e+04, 6.11160531362906749563990160822868347e+03, -6.11160531362900474050547927618026733e+03, -1.65989457422758132452145218849182129e+04, -2.27229485505881457356736063957214355e+04, -2.38112767926607230037916451692581177e+04, -2.10265157669483487552497535943984985e+04, -1.63467548173943941947072744369506836e+04, -1.15044216506770444539142772555351257e+04, -7.47845130970978152618044987320899963e+03, -4.55093770519069403235334903001785278e+03, -2.60745390479499337743618525564670563e+03, -1.40272820883750569009862374514341354e+03, -7.00443660926697475588298402726650238e+02, -3.17617924722124428171809995546936989e+02, -1.25822291135248320870232419110834599e+02, -4.03313313988894037720456253737211227e+01, -8.52070405338464098576878313906490803e+00}, +{1.73696084200167817357396415900439024e+01, 1.00743728109050834973459132015705109e+02, 3.66498655209468950033624423667788506e+02, 1.05065341979306458597420714795589447e+03, 2.58584588072366159394732676446437836e+03, 5.70822754597434959578095003962516785e+03, 1.15966717412422622146550565958023071e+04, 2.20286912518389217439107596874237061e+04, 3.94793200961729744449257850646972656e+04, 6.69677187547629291657358407974243164e+04, 1.07323036758216461748816072940826416e+05, 1.61605342272817186312749981880187988e+05, 2.26947351129950344329699873924255371e+05, 2.94997358507206779904663562774658203e+05, 3.52669325723575660958886146545410156e+05, 3.86042611883804202079772949218750000e+05, 3.86042611883804318495094776153564453e+05, 3.52669325723575893789529800415039062e+05, 2.94997358507207070942968130111694336e+05, 2.26947351129950693575665354728698730e+05, 1.61605342272817477351054549217224121e+05, 1.07323036758216694579459726810455322e+05, 6.69677187547630892368033528327941895e+04, 3.94793200961727561661973595619201660e+04, 2.20286912518388890021014958620071411e+04, 1.15966717412422422057716175913810730e+04, 5.70822754597433868184452876448631287e+03, 2.58584588072367205313639715313911438e+03, 1.05065341979306936082139145582914352e+03, 3.66498655209471053240122273564338684e+02, 1.00743728109051559727049607317894697e+02, 1.73696084200169664768509392160922289e+01}, +{3.93841323506540916810081398580223322e+01, 2.75688867080745467319502495229244232e+02, 1.16182628644584201538236811757087708e+03, 3.76792905529433437550324015319347382e+03, 1.03204059230616294371429830789566040e+04, 2.50247818671002787596080452203750610e+04, 5.51315922246232512407004833221435547e+04, 1.11748515304992048186250030994415283e+05, 2.08803209309553814819082617759704590e+05, 3.57243926250676333438605070114135742e+05, 5.52293373031904804520308971405029297e+05, 7.57462071299316245131194591522216797e+05, 8.98751307338571059517562389373779297e+05, 8.85638090591338812373578548431396484e+05, 6.60001564769049873575568199157714844e+05, 2.45340981200013484340161085128784180e+05, -2.45340981200010923203080892562866211e+05, -6.60001564769048010930418968200683594e+05, -8.85638090591337997466325759887695312e+05, -8.98751307338571292348206043243408203e+05, -7.57462071299317060038447380065917969e+05, -5.52293373031905852258205413818359375e+05, -3.57243926250677206553518772125244141e+05, -2.08803209309552621562033891677856445e+05, -1.11748515304991873563267290592193604e+05, -5.51315922246231493772938847541809082e+04, -2.50247818671002278279047459363937378e+04, -1.03204059230616767308674752712249756e+04, -3.76792905529435438438667915761470795e+03, -1.16182628644584929133998230099678040e+03, -2.75688867080747684212838066741824150e+02, -3.93841323506545535337863839231431484e+01}, +{1.01421435972343104481296904850751162e+02, 8.45178576382812821066181641072034836e+02, 4.09910990377067264489596709609031677e+03, 1.49817558001408651762176305055618286e+04, 4.55736725967859092634171247482299805e+04, 1.21457474600404544617049396038055420e+05, 2.92230930808041535783559083938598633e+05, 6.46156709988097078166902065277099609e+05, 1.32491872262096195481717586517333984e+06, 2.52484012239021807909011840820312500e+06, 4.45910925431002397090196609497070312e+06, 7.25703323788370843976736068725585938e+06, 1.08123753251392561942338943481445312e+07, 1.46601933108061514794826507568359375e+07, 1.80051361064570806920528411865234375e+07, 1.99688804627807699143886566162109375e+07, 1.99688804627807773649692535400390625e+07, 1.80051361064570918679237365722656250e+07, 1.46601933108061701059341430664062500e+07, 1.08123753251392748206853866577148438e+07, 7.25703323788372427225112915039062500e+06, 4.45910925431003514677286148071289062e+06, 2.52484012239022552967071533203125000e+06, 1.32491872262095334008336067199707031e+06, 6.46156709988095914013683795928955078e+05, 2.92230930808040895499289035797119141e+05, 1.21457474600404268130660057067871094e+05, 4.55736725967861420940607786178588867e+04, 1.49817558001409524877090007066726685e+04, 4.09910990377070083923172205686569214e+03, 8.45178576382820097023795824497938156e+02, 1.01421435972344397669075988233089447e+02}, +{3.06403266768790615515172248706221581e+02, 3.00274771022137883846880868077278137e+03, 1.66526072049617832817602902650833130e+04, 6.83047359582601638976484537124633789e+04, 2.29873605244698032038286328315734863e+05, 6.68976012876294436864554882049560547e+05, 1.73117091245609684847295284271240234e+06, 4.03271541281636618077754974365234375e+06, 8.46492912149285897612571716308593750e+06, 1.59040062455074936151504516601562500e+07, 2.64359592786025479435920715332031250e+07, 3.82750390197164490818977355957031250e+07, 4.72218500599275156855583190917968750e+07, 4.77930601670813858509063720703125000e+07, 3.62133374238204509019851684570312500e+07, 1.35689742256679274141788482666015625e+07, -1.35689742256677821278572082519531250e+07, -3.62133374238203465938568115234375000e+07, -4.77930601670813485980033874511718750e+07, -4.72218500599275380373001098632812500e+07, -3.82750390197165012359619140625000000e+07, -2.64359592786026038229465484619140625e+07, -1.59040062455075383186340332031250000e+07, -8.46492912149280309677124023437500000e+06, -4.03271541281635826453566551208496094e+06, -1.73117091245609312318265438079833984e+06, -6.68976012876292807050049304962158203e+05, -2.29873605244699312606826424598693848e+05, -6.83047359582605859031900763511657715e+04, -1.66526072049619069730397313833236694e+04, -3.00274771022140703280456364154815674e+03, -3.06403266768794821928167948499321938e+02}, +{1.15178431967152368997631128877401352e+03, 1.31303345094965716270962730050086975e+04, 8.27549303911599854473024606704711914e+04, 3.79543913781134120654314756393432617e+05, 1.41148351724861818365752696990966797e+06, 4.50314614951938949525356292724609375e+06, 1.27313602345652747899293899536132812e+07, 3.24821771230255588889122009277343750e+07, 7.54058843206322640180587768554687500e+07, 1.59487208746114850044250488281250000e+08, 3.06465829080585241317749023437500000e+08, 5.32602859812881946563720703125000000e+08, 8.33297044119223117828369140625000000e+08, 1.16931587265879082679748535156250000e+09, 1.46765405977133154869079589843750000e+09, 1.64491261462399339675903320312500000e+09, 1.64491261462399387359619140625000000e+09, 1.46765405977133274078369140625000000e+09, 1.16931587265879225730895996093750000e+09, 8.33297044119224667549133300781250000e+08, 5.32602859812883257865905761718750000e+08, 3.06465829080586135387420654296875000e+08, 1.59487208746115386486053466796875000e+08, 7.54058843206316679716110229492187500e+07, 3.24821771230254918336868286132812500e+07, 1.27313602345652431249618530273437500e+07, 4.50314614951937738806009292602539062e+06, 1.41148351724862679839134216308593750e+06, 3.79543913781136739999055862426757812e+05, 8.27549303911606548354029655456542969e+04, 1.31303345094967044133227318525314331e+04, 1.15178431967154028825461864471435547e+03}, +{6.21963408212959893717197701334953308e+03, 8.16838636746142437914386391639709473e+04, 5.81575560913870227523148059844970703e+05, 2.96863121452060900628566741943359375e+06, 1.21267986361967753618955612182617188e+07, 4.18876157425941303372383117675781250e+07, 1.25804263981687799096107482910156250e+08, 3.32267972715571999549865722656250000e+08, 7.72391222132326364517211914062500000e+08, 1.57207004231479096412658691406250000e+09, 2.77694193161543750762939453125000000e+09, 4.20535145440211915969848632812500000e+09, 5.35818683240351009368896484375000000e+09, 5.54382406500014305114746093750000000e+09, 4.25861931871935749053955078125000000e+09, 1.60620669616002202033996582031250000e+09, -1.60620669616000390052795410156250000e+09, -4.25861931871934509277343750000000000e+09, -5.54382406500013828277587890625000000e+09, -5.35818683240351200103759765625000000e+09, -4.20535145440212535858154296875000000e+09, -2.77694193161544370651245117187500000e+09, -1.57207004231479597091674804687500000e+09, -7.72391222132320523262023925781250000e+08, -3.32267972715571224689483642578125000e+08, -1.25804263981687471270561218261718750e+08, -4.18876157425940111279487609863281250e+07, -1.21267986361968535929918289184570312e+07, -2.96863121452063089236617088317871094e+06, -5.81575560913875233381986618041992188e+05, -8.16838636746151169063523411750793457e+04, -6.21963408212969352462096139788627625e+03}, +}; + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Fo[GRAMFE_NDELTA][GRAMFE_ND] = { +{2.67261241912422398137039181165164337e-01, 2.67261241911160574158401459499145858e-01, 2.67261241776685198878737992345122620e-01, 2.67261236373199317917226380814099684e-01, 2.67261123529498767492640354248578660e-01, 2.67259674638741118180007561022648588e-01, 2.67247019358784032583287171291885898e-01, 2.67166673840942059392489227320766076e-01, 2.66778484878430199866983230094774626e-01, 2.65303240301507925469337578761042096e-01, 2.60784581619793509599247727237525396e-01, 2.49424009369076854492064398982620332e-01, 2.25656566062515495652007757598767057e-01, 1.83856424009262719998503143870038912e-01, 1.21600687863137907340771448616578709e-01, 4.26878256011648735124275333419063827e-02, -4.26878256011644433010054910937469685e-02, -1.21600687863137546518288445440703072e-01, -1.83856424009262442442746987580903806e-01, -2.25656566062515356874129679454199504e-01, -2.49424009369076771225337552095879801e-01, -2.60784581619793509599247727237525396e-01, -2.65303240301507925469337578761042096e-01, -2.66778484878430199866983230094774626e-01, -2.67166673840942059392489227320766076e-01, -2.67247019358784032583287171291885898e-01, -2.67259674638741118180007561022648588e-01, -2.67261123529498767492640354248578660e-01, -2.67261236373199317917226380814099684e-01, -2.67261241776685198878737992345122620e-01, -2.67261241911160574158401459499145858e-01, -2.67261241912422398137039181165164337e-01}, +{4.97245158098846784522351072155288421e-01, 5.63544512511957140787899334100075066e-01, 6.29843866916234618180681081867078319e-01, 6.96143220907736282043742903624661267e-01, 7.62442565081862921871902472048532218e-01, 8.28741767842410936850683356169611216e-01, 8.95039600372990462595623739616712555e-01, 9.61327864242384477755365423945477232e-01, 1.02756560717064404641973851539660245e+00, 1.09359457679803684371222516347188503e+00, 1.15893077652906839603019761852920055e+00, 1.22238511627046397833851187897380441e+00, 1.28159315901351011923736677999841049e+00, 1.33275415711422029474420014594215900e+00, 1.37100309118265384356050162750761956e+00, 1.39160868218370170623643389262724668e+00, 1.39160868218370170623643389262724668e+00, 1.37100309118265406560510655253892764e+00, 1.33275415711422051678880507097346708e+00, 1.28159315901351034128197170502971858e+00, 1.22238511627046420038311680400511250e+00, 1.15893077652906861807480254356050864e+00, 1.09359457679803728780143501353450119e+00, 1.02756560717064338028592374030267820e+00, 9.61327864242384366733062961429823190e-01, 8.95039600372990351573321277101058513e-01, 8.28741767842410825828380893653957173e-01, 7.62442565081863254938809859595494345e-01, 6.96143220907736615110650291171623394e-01, 6.29843866916234951247588469414040446e-01, 5.63544512511957473854806721647037193e-01, 4.97245158098847062078107228444423527e-01}, +{7.41249316661030777098062571894843131e-01, 1.03774904328113359852636676805559546e+00, 1.37131123105303687204070683947065845e+00, 1.74193569948020554605250254098791629e+00, 2.14961885728157664487980582634918392e+00, 2.59431751165390478419681130617391318e+00, 3.07568457972313691328736240393482149e+00, 3.59173321576728765691655098635237664e+00, 4.13401213699369307619235769379884005e+00, 4.67508197800116764852873529889620841e+00, 5.14598110283762011363251076545566320e+00, 5.41258215341048298796522431075572968e+00, 5.27772460342878346750694618094712496e+00, 4.54038701097059238520614599110558629e+00, 3.10961648174169580371994925371836871e+00, 1.11027916226222900242248670110711828e+00, -1.11027916226221790019224044954171404e+00, -3.10961648174168647784654240240342915e+00, -4.54038701097058705613562779035419226e+00, -5.27772460342878169115010678069666028e+00, -5.41258215341048298796522431075572968e+00, -5.14598110283762188998935016570612788e+00, -4.67508197800116942488557469914667308e+00, -4.13401213699368774712183949304744601e+00, -3.59173321576728632464892143616452813e+00, -3.07568457972313558101973285374697298e+00, -2.59431751165390389601839160604868084e+00, -2.14961885728157886532585507666226476e+00, -1.74193569948020732240934194123838097e+00, -1.37131123105303864839754623972112313e+00, -1.03774904328113515283860124327475205e+00, -7.41249316661032109365692122082691640e-01}, +{1.09032618459393337850826810608850792e+00, 1.96258713226050285349799651157809421e+00, 3.10742962497894525952801814128179103e+00, 4.55692202978825289250153218745253980e+00, 6.34313159603374643324968928936868906e+00, 8.49811039699022963134211750002577901e+00, 1.10537742038538713273965186090208590e+01, 1.40411727461703197405995524604804814e+01, 1.74872842084222561709339061053469777e+01, 2.14044975021090095879117143340408802e+01, 2.57646534406341984890786989126354456e+01, 3.04517068934000540991746674990281463e+01, 3.52027598648735136066534323617815971e+01, 3.95745131312048030736150394659489393e+01, 4.29876232281352557151876681018620729e+01, 4.48731066637672668662162323016673326e+01, 4.48731066637672739716435899026691914e+01, 4.29876232281352699260423833038657904e+01, 3.95745131312048243898971122689545155e+01, 3.52027598648735349229355051647871733e+01, 3.04517068934000754154567403020337224e+01, 2.57646534406342198053607717156410217e+01, 2.14044975021090309041937871370464563e+01, 1.74872842084222206437971181003376842e+01, 1.40411727461703126351721948594786227e+01, 1.10537742038538659983260004082694650e+01, 8.49811039699022430227159929927438498e+00, 6.34313159603375620321230599074624479e+00, 4.55692202978826088610730948857963085e+00, 3.10742962497895147677695604215841740e+00, 1.96258713226050773847930486226687208e+00, 1.09032618459393693122194690658943728e+00}, +{1.65868886510983681858988347812555730e+00, 3.87027401680439409048517518385779113e+00, 7.32587562835634553692898407462053001e+00, 1.23669811752662468506969162262976170e+01, 1.93728841123627404385842964984476566e+01, 2.87592191719511340863846271531656384e+01, 4.09672499453982226214066031388938427e+01, 5.64096032420115065519894415047019720e+01, 7.52736194060236982750211609527468681e+01, 9.70079558600526468126190593466162682e+01, 1.19387948769178692032255639787763357e+02, 1.37499369084463126000628108158707619e+02, 1.43705819541148002826957963407039642e+02, 1.29864758858024629262217786163091660e+02, 9.17522578676396420860328362323343754e+01, 3.32543901785339386378836934454739094e+01, -3.32543901785336046827978861983865499e+01, -9.17522578676393720797932473942637444e+01, -1.29864758858024487153670634143054485e+02, -1.43705819541147974405248533003032207e+02, -1.37499369084463182844046968966722488e+02, -1.19387948769178791508238646201789379e+02, -9.70079558600527604994567809626460075e+01, -7.52736194060234993230551481246948242e+01, -5.64096032420114639194252958986908197e+01, -4.09672499453981870942698151338845491e+01, -2.87592191719511092173888755496591330e+01, -1.93728841123627830711484421044588089e+01, -1.23669811752662752724063466303050518e+01, -7.32587562835636596503263717750087380e+00, -3.87027401680440741316147068573627621e+00, -1.65868886510984503424026570428395644e+00}, +{2.66437630579785178497331799007952213e+00, 7.99312891678144143980944136274047196e+00, 1.79845399844970117442244372796267271e+01, 3.48327981724222581760841421782970428e+01, 6.12805601853938668455157312564551830e+01, 1.00675685200644480232767818961292505e+02, 1.57020285838829835256547085009515285e+02, 2.34976022424269444854871835559606552e+02, 3.39690907880279951314150821417570114e+02, 4.76096578901374755332653876394033432e+02, 6.47078079951777453970862552523612976e+02, 8.50051175580364770212327130138874054e+02, 1.07257198166740636224858462810516357e+03, 1.28953944431316017471544910222291946e+03, 1.46569528470646196183224674314260483e+03, 1.56521718900396535900654271245002747e+03, 1.56521718900396558638021815568208694e+03, 1.46569528470646264395327307283878326e+03, 1.28953944431316108421015087515115738e+03, 1.07257198166740749911696184426546097e+03, 8.50051175580365793393866624683141708e+02, 6.47078079951778363465564325451850891e+02, 4.76096578901375494297099066898226738e+02, 3.39690907880278757602354744449257851e+02, 2.34976022424269217481196392327547073e+02, 1.57020285838829693147999932989478111e+02, 1.00675685200644352335075382143259048e+02, 6.12805601853940231649175984784960747e+01, 3.48327981724223647574945061933249235e+01, 1.79845399844970756930706556886434555e+01, 7.99312891678147696694622936774976552e+00, 2.66437630579786954854171199258416891e+00}, +{4.57974081940330091100577192264609039e+00, 1.74030150369142759814167220611125231e+01, 4.62553739645286654535993875470012426e+01, 1.02451156267745616901265748310834169e+02, 2.02013170661903785685353795997798443e+02, 3.66700911409751824976410716772079468e+02, 6.24745333363378449575975537300109863e+02, 1.00978736854315172877250006422400475e+03, 1.55364613867154275794746354222297668e+03, 2.26500913407795496823382563889026642e+03, 3.08855863790920193423517048358917236e+03, 3.85744767912923134645097889006137848e+03, 4.28322674908106364455306902527809143e+03, 4.03774293429598355942289344966411591e+03, 2.92925220744545504203415475785732269e+03, 1.07522351023606324815773405134677887e+03, -1.07522351023605210684763733297586441e+03, -2.92925220744544685658183880150318146e+03, -4.03774293429597992144408635795116425e+03, -4.28322674908106455404777079820632935e+03, -3.85744767912923407493508420884609222e+03, -3.08855863790920602696132846176624298e+03, -2.26500913407795860621263273060321808e+03, -1.55364613867153661885822657495737076e+03, -1.00978736854315059190412284806370735e+03, -6.24745333363377767454949207603931427e+02, -3.66700911409751313385640969499945641e+02, -2.02013170661904410962961264885962009e+02, -1.02451156267745972172633628360927105e+02, -4.62553739645288644055654003750532866e+01, -1.74030150369143683519723708741366863e+01, -4.57974081940333821449939932790584862e+00}, +{8.52070405550762544066856207791715860e+00, 4.03313324893799034498442779295146465e+01, 1.25822391330600964920449769124388695e+02, 3.17621522987671369264717213809490204e+02, 7.00512590065946824324782937765121460e+02, 1.40355682616308786236913874745368958e+03, 2.61434715132488781819120049476623535e+03, 4.59325408029611935489811003208160400e+03, 7.67891924559567723918007686734199524e+03, 1.22615423455092150106793269515037537e+04, 1.86827944322609364462550729513168335e+04, 2.70267311318222346017137169837951660e+04, 3.68331154397322316071949899196624756e+04, 4.68888168284352359478361904621124268e+04, 5.53322334081224980764091014862060547e+04, 6.01946693208121796487830579280853271e+04, 6.01946693208121942006982862949371338e+04, 5.53322334081225344561971724033355713e+04, 4.68888168284352868795394897460937500e+04, 3.68331154397322752629406750202178955e+04, 2.70267311318222818954382091760635376e+04, 1.86827944322609728260431438684463501e+04, 1.22615423455092404765309765934944153e+04, 7.67891924559563994989730417728424072e+03, 4.59325408029611389792989939451217651e+03, 2.61434715132488372546504251658916473e+03, 1.40355682616308558863238431513309479e+03, 7.00512590065949325435212813317775726e+02, 3.17621522987672676663351012393832207e+02, 1.25822391330601590198057238012552261e+02, 4.03313324893801592452291515655815601e+01, 8.52070405550770537672633508918806911e+00}, +{1.73696084151919833971078332979232073e+01, 1.00743725076985157329545472748577595e+02, 3.66498332061218263788759941235184669e+02, 1.05064034940891860969713889062404633e+03, 2.58556941572459891176549717783927917e+03, 5.70461149040868622250854969024658203e+03, 1.15643223146088330395286902785301208e+04, 2.18172051975810936710331588983535767e+04, 3.84213016963906120508909225463867188e+04, 6.27794854107597566326148808002471924e+04, 9.38712573484112654114142060279846191e+04, 1.25870046592112339567393064498901367e+05, 1.47232953893656813306733965873718262e+05, 1.43869836350548226619139313697814941e+05, 1.06732977594818119541741907596588135e+05, 3.95990636528912873473018407821655273e+04, -3.95990636528908653417602181434631348e+04, -1.06732977594817813951522111892700195e+05, -1.43869836350548081099987030029296875e+05, -1.47232953893656842410564422607421875e+05, -1.25870046592112470534630119800567627e+05, -9.38712573484114254824817180633544922e+04, -6.27794854107598948758095502853393555e+04, -3.84213016963904083240777254104614258e+04, -2.18172051975810645672027021646499634e+04, -1.15643223146088148496346548199653625e+04, -5.70461149040867621806683018803596497e+03, -2.58556941572460982570191845297813416e+03, -1.05064034940892361191799864172935486e+03, -3.66498332061220310151838930323719978e+02, -1.00743725076985882083135948050767183e+02, -1.73696084151921716909328097244724631e+01}, +{3.93841324625754651833631214685738087e+01, 2.75688924399492350403306772932410240e+02, 1.16183153576934751072258222848176956e+03, 3.76811687794455247058067470788955688e+03, 1.03239889340111440105829387903213501e+04, 2.50676519656961063446942716836929321e+04, 5.54863343873788471682928502559661865e+04, 1.13913130782449195976369082927703857e+05, 2.18987870852515363367274403572082520e+05, 3.95410197582910477649420499801635742e+05, 6.69003889245699625462293624877929688e+05, 1.05415492413413082249462604522705078e+06, 1.53492574682065425440669059753417969e+06, 2.04958383851741906255483627319335938e+06, 2.49420273383063031360507011413574219e+06, 2.75441962367760669440031051635742188e+06, 2.75441962367760716006159782409667969e+06, 2.49420273383063217625021934509277344e+06, 2.04958383851742139086127281188964844e+06, 1.53492574682065681554377079010009766e+06, 1.05415492413413291797041893005371094e+06, 6.69003889245701255276799201965332031e+05, 3.95410197582911583594977855682373047e+05, 2.18987870852514024591073393821716309e+05, 1.13913130782449006801471114158630371e+05, 5.54863343873787453048862516880035400e+04, 2.50676519656960554129909723997116089e+04, 1.03239889340111913043074309825897217e+04, 3.76811687794457247946411371231079102e+03, 1.16183153576935478668019641190767288e+03, 2.75688924399494510453223483636975288e+02, 3.93841324625759270361413655336946249e+01}, +{1.01421435696649751889708568342030048e+02, 8.45178403417426125088240951299667358e+02, 4.09909150241272891435073688626289368e+03, 1.49810130092849976790603250265121460e+04, 4.55579971324445141362957656383514404e+04, 1.21252989912162098335102200508117676e+05, 2.90407248235234408639371395111083984e+05, 6.34277309619435807690024375915527344e+05, 1.26574056577314529567956924438476562e+06, 2.29175268168676039204001426696777344e+06, 3.71493758881804393604397773742675781e+06, 5.29422116401273291558027267456054688e+06, 6.47174999197862017899751663208007812e+06, 6.51769976462929323315620422363281250e+06, 4.92676224709866940975189208984375000e+06, 1.84432529961469746194779872894287109e+06, -1.84432529961467720568180084228515625e+06, -4.92676224709865543991327285766601562e+06, -6.51769976462928857654333114624023438e+06, -6.47174999197862297296524047851562500e+06, -5.29422116401273943483829498291015625e+06, -3.71493758881805138662457466125488281e+06, -2.29175268168676644563674926757812500e+06, -1.26574056577313714660704135894775391e+06, -6.34277309619434643536806106567382812e+05, -2.90407248235233826562762260437011719e+05, -1.21252989912161821848712861537933350e+05, -4.55579971324447469669394195079803467e+04, -1.49810130092850849905516952276229858e+04, -4.09909150241275710868649184703826904e+03, -8.45178403417433514732692856341600418e+02, -1.01421435696651045077487651724368334e+02}, +{3.06403274836715013407228980213403702e+02, 3.00275183046477104653604328632354736e+03, 1.66529833618406264577060937881469727e+04, 6.83181475105366989737376570701599121e+04, 2.30128432509408739861100912094116211e+05, 6.72011269982382771559059619903564453e+05, 1.75615970366808609105646610260009766e+06, 4.18432210888613294810056686401367188e+06, 9.17362552523498795926570892333984375e+06, 1.85402512681118324398994445800781250e+07, 3.44297903628919124603271484375000000e+07, 5.84005407136798426508903503417968750e+07, 8.98942346657222658395767211914062500e+07, 1.24850148833952635526657104492187500e+08, 1.55777817047467291355133056640625000e+08, 1.74124632904565125703811645507812500e+08, 1.74124632904565155506134033203125000e+08, 1.55777817047467410564422607421875000e+08, 1.24850148833952814340591430664062500e+08, 8.98942346657224297523498535156250000e+07, 5.84005407136799767613410949707031250e+07, 3.44297903628920093178749084472656250e+07, 1.85402512681118920445442199707031250e+07, 9.17362552523492090404033660888671875e+06, 4.18432210888612456619739532470703125e+06, 1.75615970366808213293552398681640625e+06, 6.72011269982381141744554042816162109e+05, 2.30128432509410049533471465110778809e+05, 6.83181475105371355311945080757141113e+04, 1.66529833618407537869643419981002808e+04, 3.00275183046479924087179824709892273e+03, 3.06403274836719219820224680006504059e+02}, +{1.15178429483472200445248745381832123e+03, 1.31303189528035763942170888185501099e+04, 8.27532781820556119782850146293640137e+04, 3.79477347692179260775446891784667969e+05, 1.41008179328574845567345619201660156e+06, 4.48490650926641654223203659057617188e+06, 1.25691615413249637931585311889648438e+07, 3.14291713228509016335010528564453125e+07, 7.01808417627102434635162353515625000e+07, 1.39001962703960180282592773437500000e+08, 2.41419277153979629278182983398437500e+08, 3.62148919009435534477233886718750000e+08, 4.59278903756289541721343994140625000e+08, 4.74300505910671889781951904296875000e+08, 3.64157479466005504131317138671875000e+08, 1.37341576429051727056503295898437500e+08, -1.37341576429050177335739135742187500e+08, -3.64157479466004431247711181640625000e+08, -4.74300505910671532154083251953125000e+08, -4.59278903756289780139923095703125000e+08, -3.62148919009436070919036865234375000e+08, -2.41419277153980195522308349609375000e+08, -1.39001962703960597515106201171875000e+08, -7.01808417627097368240356445312500000e+07, -3.14291713228508345782756805419921875e+07, -1.25691615413249339908361434936523438e+07, -4.48490650926640443503856658935546875e+06, -1.41008179328575707040727138519287109e+06, -3.79477347692181880120187997817993164e+05, -8.27532781820562959183007478713989258e+04, -1.31303189528037091804435476660728455e+04, -1.15178429483473860273079480975866318e+03}, +{6.21963531870533279288792982697486877e+03, 8.16844934947053261566907167434692383e+04, 5.81632888809501309879124164581298828e+05, 2.97066832157143764197826385498046875e+06, 1.21653580109994895756244659423828125e+07, 4.23449330679178237915039062500000000e+07, 1.29551133622574791312217712402343750e+08, 3.54876651412315905094146728515625000e+08, 8.77428853612760066986083984375000000e+08, 1.96008227289522242546081542968750000e+09, 3.94422603088374185562133789062500000e+09, 7.11767918348130893707275390625000000e+09, 1.14693286194277858734130859375000000e+10, 1.64468937700797958374023437500000000e+10, 2.09389295169664001464843750000000000e+10, 2.36337463713169097900390625000000000e+10, 2.36337463713169136047363281250000000e+10, 2.09389295169664192199707031250000000e+10, 1.64468937700798206329345703125000000e+10, 1.14693286194278087615966796875000000e+10, 7.11767918348132705688476562500000000e+09, 3.94422603088375425338745117187500000e+09, 1.96008227289522981643676757812500000e+09, 8.77428853612752676010131835937500000e+08, 3.54876651412315070629119873046875000e+08, 1.29551133622574463486671447753906250e+08, 4.23449330679177045822143554687500000e+07, 1.21653580109995678067207336425781250e+07, 2.97066832157145952805876731872558594e+06, 5.81632888809506315737962722778320312e+05, 8.16844934947062138235196471214294434e+04, 6.21963531870542738033691421151161194e+03}, +}; + +# else +# error: ERROR : Unsupported Gram Fourier extension !! +# endif // GRAMFE_NDELTA, GRAMFE_ND + + +# if ( GRAMFE_NDELTA == 14 && GRAMFE_ORDER == 14 ) + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Pl[GRAMFE_ORDER][GRAMFE_NDELTA] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{-4.30945803685667316873519894215860404e-01, -3.64646449272487738202386253760778345e-01, -2.98347094859308159531252613305696286e-01, -2.32047740446128553104543357221700717e-01, -1.65748386032948974433409716766618658e-01, -9.94490316197693818844882684970798437e-02, -3.31496772065897962744607241347694071e-02, 3.31496772065897962744607241347694071e-02, 9.94490316197693818844882684970798437e-02, 1.65748386032948974433409716766618658e-01, 2.32047740446128553104543357221700717e-01, 2.98347094859308159531252613305696286e-01, 3.64646449272487738202386253760778345e-01, 4.30945803685667316873519894215860404e-01}, +{4.81812055829715757404585474432678893e-01, 2.59437260831385407833238332386827096e-01, 7.41249316661101165237823806819505990e-02, -7.41249316661101165237823806819505990e-02, -1.85312329165275291309455951704876497e-01, -2.59437260831385407833238332386827096e-01, -2.96499726664440466095129522727802396e-01, -2.96499726664440466095129522727802396e-01, -2.59437260831385407833238332386827096e-01, -1.85312329165275291309455951704876497e-01, -7.41249316661101165237823806819505990e-02, 7.41249316661101165237823806819505990e-02, 2.59437260831385407833238332386827096e-01, 4.81812055829715757404585474432678893e-01}, +{-4.58578365873335558333678818598855287e-01, -3.52752589133335028859228543751669349e-02, 2.11651553480001031193324934065458365e-01, 3.14270488500607569903877447359263897e-01, 3.04649963342425722512274433029233478e-01, 2.14858395199394980323859272175468504e-01, 7.69642012654549179107021927848109044e-02, -7.69642012654549179107021927848109044e-02, -2.14858395199394980323859272175468504e-01, -3.04649963342425722512274433029233478e-01, -3.14270488500607569903877447359263897e-01, -2.11651553480001031193324934065458365e-01, 3.52752589133335028859228543751669349e-02, 4.58578365873335558333678818598855287e-01}, +{3.87569457044299903181183708511525765e-01, -2.08691246100776883753979973334935494e-01, -3.57756421887046094365558701611007564e-01, -2.49345384951577569987435367693251465e-01, -3.52335870040272683412219123511022190e-02, 1.70747383173362909936088271933840588e-01, 2.92709799725764996392030070637702011e-01, 2.92709799725764996392030070637702011e-01, 1.70747383173362909936088271933840588e-01, -3.52335870040272683412219123511022190e-02, -2.49345384951577569987435367693251465e-01, -3.57756421887046094365558701611007564e-01, -2.08691246100776883753979973334935494e-01, 3.87569457044299903181183708511525765e-01}, +{-2.94896139109289912028089020168408751e-01, 3.85633412681379128539305156664340757e-01, 2.72211820716267649533648409487796016e-01, -5.77419013640567690970328840194270015e-02, -2.86647296057281841807906630492652766e-01, -2.99020560635293974893755830635200255e-01, -1.23732645780121650047611581157980254e-01, 1.23732645780121650047611581157980254e-01, 2.99020560635293974893755830635200255e-01, 2.86647296057281841807906630492652766e-01, 5.77419013640567690970328840194270015e-02, -2.72211820716267649533648409487796016e-01, -3.85633412681379128539305156664340757e-01, 2.94896139109289912028089020168408751e-01}, +{2.02756327304059846827755109188728966e-01, -4.52302576293671987350819563289405778e-01, -1.55966405618507587826915283812923008e-02, 3.21857946140011119684487539416295476e-01, 2.62307136722035483256121324302512221e-01, -3.54469103678426294967707121941202786e-02, -2.83575282942741035974165697552962229e-01, -2.83575282942741035974165697552962229e-01, -3.54469103678426294967707121941202786e-02, 2.62307136722035483256121324302512221e-01, 3.21857946140011119684487539416295476e-01, -1.55966405618507587826915283812923008e-02, -4.52302576293671987350819563289405778e-01, 2.02756327304059846827755109188728966e-01}, +{-1.25744136217208729577876624716736842e-01, 4.15922912103074970957550249295309186e-01, -2.61160898297279675528415054941433482e-01, -3.10403357235487231680082231832784601e-01, 8.35363142701736199891016099172702525e-02, 3.29748608961211664425405842848704197e-01, 1.75865924779312898795780029104207642e-01, -1.75865924779312898795780029104207642e-01, -3.29748608961211664425405842848704197e-01, -8.35363142701736199891016099172702525e-02, 3.10403357235487231680082231832784601e-01, 2.61160898297279675528415054941433482e-01, -4.15922912103074970957550249295309186e-01, 1.25744136217208729577876624716736842e-01}, +{6.99086407042275592704783093722653575e-02, -3.17277677042263506201891232194611803e-01, 4.24829431971844362347923151901341043e-01, 3.76431142253532968755536103344638832e-02, -3.49543203521137768596815931232413277e-01, -1.34439693661976084060327707447868306e-01, 2.68879387323952168120655414895736612e-01, 2.68879387323952168120655414895736612e-01, -1.34439693661976084060327707447868306e-01, -3.49543203521137768596815931232413277e-01, 3.76431142253532968755536103344638832e-02, 4.24829431971844362347923151901341043e-01, -3.17277677042263506201891232194611803e-01, 6.99086407042275592704783093722653575e-02}, +{-3.44591278812576007339885109104216099e-02, 2.04104065142833496215857280731142964e-01, -4.32064449588076104902256702189333737e-01, 2.83625129484197213702856288364273496e-01, 2.35912490879378988761772006910177879e-01, -2.78323725194772941815557487643673085e-01, -2.38563193024091096949845791641564574e-01, 2.38563193024091096949845791641564574e-01, 2.78323725194772941815557487643673085e-01, -2.35912490879378988761772006910177879e-01, -2.83625129484197213702856288364273496e-01, 4.32064449588076104902256702189333737e-01, -2.04104065142833496215857280731142964e-01, 3.44591278812576007339885109104216099e-02}, +{1.47897728358395794817647939112248423e-02, -1.10354458852033793236913084001571406e-01, 3.27650352055523008676374274728004821e-01, -4.45968534742239630652704818203346804e-01, 1.42209354190765191461309768783394247e-01, 3.17411278553787923328854958526790142e-01, -2.45737764041642242629492898231546860e-01, -2.45737764041642242629492898231546860e-01, 3.17411278553787923328854958526790142e-01, 1.42209354190765191461309768783394247e-01, -4.45968534742239630652704818203346804e-01, 3.27650352055523008676374274728004821e-01, -1.10354458852033793236913084001571406e-01, 1.47897728358395794817647939112248423e-02}, +{-5.36174798380527166397069294134780648e-03, 4.90806161594482537324779514165129513e-02, -1.91373158806588145042226756231684703e-01, 3.99244003717192541547120754330535419e-01, -4.31002049467423764550488840541220270e-01, 9.52741372506936690101042586320545524e-02, 3.26654184859521135031457106379093602e-01, -3.26654184859521135031457106379093602e-01, -9.52741372506936690101042586320545524e-02, 4.31002049467423764550488840541220270e-01, -3.99244003717192541547120754330535419e-01, 1.91373158806588145042226756231684703e-01, -4.90806161594482537324779514165129513e-02, 5.36174798380527166397069294134780648e-03}, +{1.55038946023723558237383812752341328e-03, -1.70542840626095905387504814143539988e-02, 8.37210308528107266523576868166856002e-02, -2.38759976876534274481400643708184361e-01, 4.26357101565239815510466314663062803e-01, -4.60465669690458989649073373584542423e-01, 2.04651408751315100342793584786704741e-01, 2.04651408751315100342793584786704741e-01, -4.60465669690458989649073373584542423e-01, 4.26357101565239815510466314663062803e-01, -2.38759976876534274481400643708184361e-01, 8.37210308528107266523576868166856002e-02, -1.70542840626095905387504814143539988e-02, 1.55038946023723558237383812752341328e-03}, +{-3.10077892047447105632745900649638315e-04, 4.03101259661681286111667432692229340e-03, -2.41860755797008754319765699847266660e-02, 8.86822771255698777403964072618691716e-02, -2.21705692813924687412097114247444551e-01, 3.99070247065064442892889928771182895e-01, -5.32093662753419294197954059200128540e-01, 5.32093662753419294197954059200128540e-01, -3.99070247065064442892889928771182895e-01, 2.21705692813924687412097114247444551e-01, -8.86822771255698777403964072618691716e-02, 2.41860755797008754319765699847266660e-02, -4.03101259661681286111667432692229340e-03, 3.10077892047447105632745900649638315e-04}, +}; + +GPU_DEVICE_VARIABLE const static gramfe_fft_float Pr[GRAMFE_ORDER][GRAMFE_NDELTA] = { +{2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01, 2.67261241912424396538483506446937099e-01}, +{-4.30945803685667316873519894215860404e-01, -3.64646449272487738202386253760778345e-01, -2.98347094859308159531252613305696286e-01, -2.32047740446128553104543357221700717e-01, -1.65748386032948974433409716766618658e-01, -9.94490316197693818844882684970798437e-02, -3.31496772065897962744607241347694071e-02, 3.31496772065897962744607241347694071e-02, 9.94490316197693818844882684970798437e-02, 1.65748386032948974433409716766618658e-01, 2.32047740446128553104543357221700717e-01, 2.98347094859308159531252613305696286e-01, 3.64646449272487738202386253760778345e-01, 4.30945803685667316873519894215860404e-01}, +{4.81812055829715757404585474432678893e-01, 2.59437260831385407833238332386827096e-01, 7.41249316661101165237823806819505990e-02, -7.41249316661101165237823806819505990e-02, -1.85312329165275291309455951704876497e-01, -2.59437260831385407833238332386827096e-01, -2.96499726664440466095129522727802396e-01, -2.96499726664440466095129522727802396e-01, -2.59437260831385407833238332386827096e-01, -1.85312329165275291309455951704876497e-01, -7.41249316661101165237823806819505990e-02, 7.41249316661101165237823806819505990e-02, 2.59437260831385407833238332386827096e-01, 4.81812055829715757404585474432678893e-01}, +{-4.58578365873335558333678818598855287e-01, -3.52752589133335028859228543751669349e-02, 2.11651553480001031193324934065458365e-01, 3.14270488500607569903877447359263897e-01, 3.04649963342425722512274433029233478e-01, 2.14858395199394980323859272175468504e-01, 7.69642012654549179107021927848109044e-02, -7.69642012654549179107021927848109044e-02, -2.14858395199394980323859272175468504e-01, -3.04649963342425722512274433029233478e-01, -3.14270488500607569903877447359263897e-01, -2.11651553480001031193324934065458365e-01, 3.52752589133335028859228543751669349e-02, 4.58578365873335558333678818598855287e-01}, +{3.87569457044299903181183708511525765e-01, -2.08691246100776883753979973334935494e-01, -3.57756421887046094365558701611007564e-01, -2.49345384951577569987435367693251465e-01, -3.52335870040272683412219123511022190e-02, 1.70747383173362909936088271933840588e-01, 2.92709799725764996392030070637702011e-01, 2.92709799725764996392030070637702011e-01, 1.70747383173362909936088271933840588e-01, -3.52335870040272683412219123511022190e-02, -2.49345384951577569987435367693251465e-01, -3.57756421887046094365558701611007564e-01, -2.08691246100776883753979973334935494e-01, 3.87569457044299903181183708511525765e-01}, +{-2.94896139109289912028089020168408751e-01, 3.85633412681379128539305156664340757e-01, 2.72211820716267649533648409487796016e-01, -5.77419013640567690970328840194270015e-02, -2.86647296057281841807906630492652766e-01, -2.99020560635293974893755830635200255e-01, -1.23732645780121650047611581157980254e-01, 1.23732645780121650047611581157980254e-01, 2.99020560635293974893755830635200255e-01, 2.86647296057281841807906630492652766e-01, 5.77419013640567690970328840194270015e-02, -2.72211820716267649533648409487796016e-01, -3.85633412681379128539305156664340757e-01, 2.94896139109289912028089020168408751e-01}, +{2.02756327304059846827755109188728966e-01, -4.52302576293671987350819563289405778e-01, -1.55966405618507587826915283812923008e-02, 3.21857946140011119684487539416295476e-01, 2.62307136722035483256121324302512221e-01, -3.54469103678426294967707121941202786e-02, -2.83575282942741035974165697552962229e-01, -2.83575282942741035974165697552962229e-01, -3.54469103678426294967707121941202786e-02, 2.62307136722035483256121324302512221e-01, 3.21857946140011119684487539416295476e-01, -1.55966405618507587826915283812923008e-02, -4.52302576293671987350819563289405778e-01, 2.02756327304059846827755109188728966e-01}, +{-1.25744136217208729577876624716736842e-01, 4.15922912103074970957550249295309186e-01, -2.61160898297279675528415054941433482e-01, -3.10403357235487231680082231832784601e-01, 8.35363142701736199891016099172702525e-02, 3.29748608961211664425405842848704197e-01, 1.75865924779312898795780029104207642e-01, -1.75865924779312898795780029104207642e-01, -3.29748608961211664425405842848704197e-01, -8.35363142701736199891016099172702525e-02, 3.10403357235487231680082231832784601e-01, 2.61160898297279675528415054941433482e-01, -4.15922912103074970957550249295309186e-01, 1.25744136217208729577876624716736842e-01}, +{6.99086407042275592704783093722653575e-02, -3.17277677042263506201891232194611803e-01, 4.24829431971844362347923151901341043e-01, 3.76431142253532968755536103344638832e-02, -3.49543203521137768596815931232413277e-01, -1.34439693661976084060327707447868306e-01, 2.68879387323952168120655414895736612e-01, 2.68879387323952168120655414895736612e-01, -1.34439693661976084060327707447868306e-01, -3.49543203521137768596815931232413277e-01, 3.76431142253532968755536103344638832e-02, 4.24829431971844362347923151901341043e-01, -3.17277677042263506201891232194611803e-01, 6.99086407042275592704783093722653575e-02}, +{-3.44591278812576007339885109104216099e-02, 2.04104065142833496215857280731142964e-01, -4.32064449588076104902256702189333737e-01, 2.83625129484197213702856288364273496e-01, 2.35912490879378988761772006910177879e-01, -2.78323725194772941815557487643673085e-01, -2.38563193024091096949845791641564574e-01, 2.38563193024091096949845791641564574e-01, 2.78323725194772941815557487643673085e-01, -2.35912490879378988761772006910177879e-01, -2.83625129484197213702856288364273496e-01, 4.32064449588076104902256702189333737e-01, -2.04104065142833496215857280731142964e-01, 3.44591278812576007339885109104216099e-02}, +{1.47897728358395794817647939112248423e-02, -1.10354458852033793236913084001571406e-01, 3.27650352055523008676374274728004821e-01, -4.45968534742239630652704818203346804e-01, 1.42209354190765191461309768783394247e-01, 3.17411278553787923328854958526790142e-01, -2.45737764041642242629492898231546860e-01, -2.45737764041642242629492898231546860e-01, 3.17411278553787923328854958526790142e-01, 1.42209354190765191461309768783394247e-01, -4.45968534742239630652704818203346804e-01, 3.27650352055523008676374274728004821e-01, -1.10354458852033793236913084001571406e-01, 1.47897728358395794817647939112248423e-02}, +{-5.36174798380527166397069294134780648e-03, 4.90806161594482537324779514165129513e-02, -1.91373158806588145042226756231684703e-01, 3.99244003717192541547120754330535419e-01, -4.31002049467423764550488840541220270e-01, 9.52741372506936690101042586320545524e-02, 3.26654184859521135031457106379093602e-01, -3.26654184859521135031457106379093602e-01, -9.52741372506936690101042586320545524e-02, 4.31002049467423764550488840541220270e-01, -3.99244003717192541547120754330535419e-01, 1.91373158806588145042226756231684703e-01, -4.90806161594482537324779514165129513e-02, 5.36174798380527166397069294134780648e-03}, +{1.55038946023723558237383812752341328e-03, -1.70542840626095905387504814143539988e-02, 8.37210308528107266523576868166856002e-02, -2.38759976876534274481400643708184361e-01, 4.26357101565239815510466314663062803e-01, -4.60465669690458989649073373584542423e-01, 2.04651408751315100342793584786704741e-01, 2.04651408751315100342793584786704741e-01, -4.60465669690458989649073373584542423e-01, 4.26357101565239815510466314663062803e-01, -2.38759976876534274481400643708184361e-01, 8.37210308528107266523576868166856002e-02, -1.70542840626095905387504814143539988e-02, 1.55038946023723558237383812752341328e-03}, +{-3.10077892047447105632745900649638315e-04, 4.03101259661681286111667432692229340e-03, -2.41860755797008754319765699847266660e-02, 8.86822771255698777403964072618691716e-02, -2.21705692813924687412097114247444551e-01, 3.99070247065064442892889928771182895e-01, -5.32093662753419294197954059200128540e-01, 5.32093662753419294197954059200128540e-01, -3.99070247065064442892889928771182895e-01, 2.21705692813924687412097114247444551e-01, -8.86822771255698777403964072618691716e-02, 2.41860755797008754319765699847266660e-02, -4.03101259661681286111667432692229340e-03, 3.10077892047447105632745900649638315e-04}, +}; +# else +# error: ERROR : Unsupported Gram polynomial +# endif // GRAMFE_NDELTA, GRAMFE_ORDER + +# else +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // # GRAMFE_SCHEME + + + +#endif // #if ( MODEL == ELBDM && WAVE_SCHEME == WAVE_GRAMFE ) + +#endif // # ifndef __GRAM_EXTENSION_TABLES_H__ diff --git a/include/GramFE_Interpolation.h b/include/GramFE_Interpolation.h new file mode 100644 index 0000000000..92aa2a92df --- /dev/null +++ b/include/GramFE_Interpolation.h @@ -0,0 +1,216 @@ +#ifndef __SPECTRAL_INT_H__ +#define __SPECTRAL_INT_H__ + +#ifdef SUPPORT_SPECTRAL_INT + + + +// **************************************************************************** +// ** This header declares the classes used for spectral interpolation. ** +// ** They are defined in Interpolation/Int_Spectral.cpp ** +// **************************************************************************** + +#include "GSL.h" +#include "FFTW.h" +#include +#include + + +#define GFEI_GSL_FLOAT8 +// accuracy for matrix multiplication in Gram-FE extension interpolation (GFEI) +#ifdef GFEI_GSL_FLOAT8 +namespace gfei_gsl = gsl_double_precision; +#else +namespace gfei_gsl = gsl_single_precision; +#endif + +// accuracy for matrix multiplication in precomputed interpolation (PI) +#ifdef FLOAT8 +namespace pi_gsl = gsl_double_precision; +#else +namespace pi_gsl = gsl_single_precision; +#endif + + + +//------------------------------------------------------------------------------------------------------- +// Class : InterpolationContext +// Description : Base class for interpolation contexts +// +// Data Member : nInput : Size of input array +// nGhostBoundary : Size of ghost boundary +// nInterpolated : Size of interpolated input data +// +// Method : InterpolationContext : Constructor +// ~InterpolationContext : Destructor +// Preprocess : Prepare input array by unwrapping phase etc. +// Postprocess : Postprocess interpolation results by enforcing monotonicity etc. +// ReadBinaryFile : Read "size" doubles from binary file "filename" into double array "array" +// GetWorkspaceSize : Purely virtual; Return size of interpolation workspace in bytes +// InterpolateReal : Purely virtual; Interpolate input array of size nInput and store interpolation results +// of size 2*(nInput - nGhostBoundary) in output array +//------------------------------------------------------------------------------------------------------- +class InterpolationContext { +public: + InterpolationContext( size_t nInput, size_t nGhostBoundary ); + virtual void Preprocess( real* input, const bool UnwrapPhase ) const; + virtual void Postprocess( const real* input, real* output, const bool Monotonic, const real MonoCoeff, const bool OppSign0thOrder ) const; + void ReadBinaryFile( const char* filename, double* array, const int size ) const; + + virtual size_t GetWorkspaceSize() const = 0; + virtual void InterpolateReal( const real* input, real *output, char* workspace ) const = 0; + + const size_t nInput; + const size_t nGhostBoundary; + const size_t nInterpolated; +}; // CLASS : InterpolationContext + + + +//------------------------------------------------------------------------------------------------------- +// Class : GramFEInterpolationContext +// Description : Data structure of the Gram-Fourier extension interpolation implementation derived from InterpolationContext +// +// Data Member : nInput : Size of input array +// nGhostBoundary : Size of ghost boundary +// nInterpolated : Size of interpolated input data +// nExtension : Size of extension region +// nExtended : Size of domain after extension +// nExtendedPadded : Complex size of domain after extension with padding for real FFT +// nDelta : Size of boundary domain +// r2cPlan : Real-To-Complex FFT plan +// c2rPlan : Complex-To-Real FFT plan +// translationCoeffL : Array of nExtendedPadded complex coefficients for translation to left by dx/4 in k-space +// translationCoeffR : Array of nExtendedPadded complex coefficients for translation to right by dx/4 in k-space +// extensionMatrix : GSL matrix of size 2*nDelta*nExtension to store Gram-Fourier table +// +// Method : GramFEInterpolationContext : Constructor +// ~GramFEInterpolationContext : Destructor +// GetWorkspaceSize : Return size of interpolation workspace in bytes +// InterpolateReal : Interpolate input array of size nInput and store interpolation results +// of size 2*(nInput - nGhostBoundary) in output array +//------------------------------------------------------------------------------------------------------- +class GramFEInterpolationContext : public InterpolationContext +{ +public: + GramFEInterpolationContext( size_t nInput, size_t nGhostBoundary, size_t nExtension, size_t nDelta ); + ~GramFEInterpolationContext(); + size_t GetWorkspaceSize() const; + void InterpolateReal( const real* input, real *output, char* workspace ) const; + +private: + const size_t nExtension; + const size_t nExtended; + const size_t nExtendedPadded; + const size_t nDelta; + gfei_fftw::real_plan_1d r2cPlan; + gfei_fftw::real_plan_1d c2rPlan; + gfei_fftw::fft_complex* translationCoeffL; + gfei_fftw::fft_complex* translationCoeffR; + gfei_gsl::matrix* extensionMatrix; +}; // CLASS : GramFEInterpolationContext + + + +//------------------------------------------------------------------------------------------------------- +// Structure : PrecomputedInterpolationContext +// Description : Data structure of the precomputed Gram-Fourier extension interpolation implementation derived from InterpolationContext +// +// Data Member : interpolationMatrix : GSL matrix of size nInterpolated x nInput +// +// Method : PrecomputedInterpolationContext : Constructor +// ~PrecomputedInterpolationContext : Destructor +// GetWorkspaceSize : Return size of interpolation workspace in bytes +// InterpolateReal : Interpolate input array of size nInput and store interpolation results +// of size 2*(nInput - nGhostBoundary) in output array +//------------------------------------------------------------------------------------------------------- +struct PrecomputedInterpolationContext : public InterpolationContext +{ +public: + PrecomputedInterpolationContext( size_t nInput, size_t nGhostBoundary ); + ~PrecomputedInterpolationContext(); + size_t GetWorkspaceSize() const; + void InterpolateReal( const real *input, real *output, char* workspace ) const; + +private: + pi_gsl::matrix* interpolationMatrix; +}; // CLASS : PrecomputedInterpolationContext + + + +//------------------------------------------------------------------------------------------------------- +// Structure : QuarticInterpolationContext +// Description : Data structure of quartic interpolator derived from InterpolationContext +// +// Data Member : QuarticR : Quartic right interpolation coefficients +// QuarticL : Quartic left interpolation coefficients +// +// Method : GetWorkspaceSize : Return size of interpolation workspace in bytes +// InterpolateReal : Interpolate input array of size nInput and store interpolation results +// of size 2*(nInput - nGhostBoundary) in output array +//------------------------------------------------------------------------------------------------------- +struct QuarticInterpolationContext : public InterpolationContext +{ +public: + static const real QuarticR[5]; + static const real QuarticL[5]; + + QuarticInterpolationContext( size_t nInput, size_t nGhostBoundary ); + size_t GetWorkspaceSize() const; + void InterpolateReal( const real *input, real *output, char* workspace ) const; +}; // CLASS : QuarticInterpolationContext + + + +//------------------------------------------------------------------------------------------------------- +// Structure : CQuarticInterpolationContext +// Description : Data structure of quartic interpolator derived from InterpolationContext +// +// Data Member : QuarticR : Quartic right interpolation coefficients +// QuarticL : Quartic left interpolation coefficients +// +// Method : GetWorkspaceSize : Return size of interpolation workspace in bytes +// InterpolateReal : Interpolate input array of size nInput and store interpolation results +// of size 2*(nInput - nGhostBoundary) in output array +//------------------------------------------------------------------------------------------------------- +struct CQuarticInterpolationContext : public InterpolationContext +{ +public: + static const real CQuartic[5]; + + CQuarticInterpolationContext( size_t nInput, size_t nGhostBoundary ); + size_t GetWorkspaceSize() const; + void InterpolateReal( const real *input, real *output, char* workspace ) const; +}; // CLASS : CQuarticInterpolationContext + + + +//------------------------------------------------------------------------------------------------------- +// Class : InterpolationHandler +// Description : Data structure to switch between spectral interpolation schemes depending on the input size +// +// Data Member : contexts : Unordered map that holds interpolation contexts for different interpolations sizes +// +// Method : GramFEInterpolationContext : Constructor +// ~GramFEInterpolationContext : Destructor +// AddInterpolationContext : Add new interpolation context of size nInput with nGhostBoundary to contexts map +// GetWorkspaceSize : Return size of interpolation workspace in bytes +// InterpolateReal : Interpolate input array of size nInput and store interpolation results +// of size 2*(nInput - nGhostBoundary) in output array +//------------------------------------------------------------------------------------------------------- +class InterpolationHandler { +public: + void AddInterpolationContext( size_t nInput, size_t nGhostBoundary ); + size_t GetWorkspaceSize( size_t nInput, size_t nGhostBoundary ) const; + void InterpolateReal( real* input, real* output, size_t nInput, size_t nGhostBoundary, char* workspace, + const bool Monotonic, const real MonoCoeff, const bool OppSign0thOrder ) const; + +private: + std::unordered_map< size_t, std::shared_ptr > contexts; +}; // CLASS : InterpolationHandler + + + +#endif // #ifdef SUPPORT_SPECTRAL_INT + +#endif // #ifdef __SPECTRAL_INT_H__ diff --git a/include/HDF5_Typedef.h b/include/HDF5_Typedef.h index 0cc948664d..aa326b00bd 100644 --- a/include/HDF5_Typedef.h +++ b/include/HDF5_Typedef.h @@ -30,6 +30,12 @@ datatypes in the HDF5 format # else # define H5T_GAMER_REAL_PAR H5T_NATIVE_FLOAT # endif + +# ifdef INT8_PAR +# define H5T_GAMER_LONG_PAR H5T_NATIVE_LONG +# else +# define H5T_GAMER_LONG_PAR H5T_NATIVE_INT +# endif #endif // #ifdef PARTICLE @@ -74,8 +80,10 @@ struct KeyInfo_t int NMagStored; // NCOMP_MAG (declare it even when MHD is off) # ifdef PARTICLE long Par_NPar; // amr->Par->NPar_Active_AllRank - int Par_NAttStored; // PAR_NATT_STORED + int Par_NAttFltStored; // PAR_NATT_FLT_STORED + int Par_NAttIntStored; // PAR_NATT_INT_STORED int Float8_Par; + int Int8_Par; # endif # ifdef COSMIC_RAY int CR_Diffusion; @@ -88,6 +96,9 @@ struct KeyInfo_t # ifdef GRAVITY double AveDens_Init; // AveDensity_Init # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + int UseWaveScheme[NLEVEL]; // AMR levels where wave solver is used +# endif char *CodeVersion; char *DumpWallTime; @@ -129,6 +140,7 @@ struct Makefile_t int Laohu; int SupportHDF5; int SupportGSL; + int SupportSpectralInt; int SupportFFTW; int SupportLibYT; # ifdef SUPPORT_LIBYT @@ -162,6 +174,8 @@ struct Makefile_t int BarotropicEoS; # elif ( MODEL == ELBDM ) + int ELBDMScheme; + int WaveScheme; int ConserveMass; int Laplacian4th; int SelfInteraction4; @@ -176,8 +190,10 @@ struct Makefile_t int StoreParAcc; int StarFormation; int Feedback; - int Par_NAttUser; + int Par_NAttFltUser; + int Par_NAttIntUser; int Float8_Par; + int Int8_Par; # endif # ifdef COSMIC_RAY @@ -258,7 +274,8 @@ struct SymConst_t # ifdef PARTICLE - int Par_NAttStored; + int Par_NAttFltStored; + int Par_NAttIntStored; int Par_NType; # ifdef GRAVITY int RhoExt_GhostSize; @@ -310,6 +327,18 @@ struct SymConst_t # elif ( MODEL == ELBDM ) int Flu_BlockSize_x; int Flu_BlockSize_y; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + int Flu_HJ_BlockSize_y; +# endif +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + int GramFEScheme; + int GramFEGamma; + int GramFEG; + int GramFENDelta; + int GramFEOrder; + int GramFEND; + int GramFEFluNxt; +# endif # else # error : ERROR : unsupported MODEL !! @@ -326,9 +355,11 @@ struct SymConst_t int Src_BlockSize; int Src_GhostSize; int Src_Nxt; +# if ( MODEL == HYDRO ) int Src_NAuxDlep; int Src_DlepProfNVar; int Src_DlepProfNBinMax; +# endif int Src_NAuxUser; int Der_GhostSize; @@ -395,6 +426,7 @@ struct InputPara_t double Par_ICMass; int Par_ICType; int Par_ICFloat8; + int Par_ICInt8; int Par_Interp; int Par_InterpTracer; int Par_Integ; @@ -406,7 +438,8 @@ struct InputPara_t int Par_GhostSize; int Par_GhostSizeTracer; int Par_TracerVelCorr; - char *ParAttLabel[PAR_NATT_TOTAL]; + char *ParAttFltLabel[PAR_NATT_FLT_TOTAL]; + char *ParAttIntLabel[PAR_NATT_INT_TOTAL]; # endif // cosmology @@ -425,7 +458,13 @@ struct InputPara_t # endif # if ( MODEL == ELBDM ) double Dt__Phase; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + double Dt__HybridCFL; + double Dt__HybridCFLInit; + double Dt__HybridVelocity; + double Dt__HybridVelocityInit; # endif +# endif // #if ( MODEL == ELBDM ) # ifdef PARTICLE double Dt__ParVel; double Dt__ParVelMax; @@ -464,6 +503,14 @@ struct InputPara_t int MaxLevel; int Opt__Flag_Rho; int Opt__Flag_RhoGradient; + int Opt__Flag_Angular; + double FlagAngular_CenX; + double FlagAngular_CenY; + double FlagAngular_CenZ; + int Opt__Flag_Radial; + double FlagRadial_CenX; + double FlagRadial_CenY; + double FlagRadial_CenZ; # if ( MODEL == HYDRO ) int Opt__Flag_PresGradient; int Opt__Flag_Vorticity; @@ -477,10 +524,15 @@ struct InputPara_t # ifdef COSMIC_RAY int Opt__Flag_CRay; # endif -# endif +# endif // #if ( MODEL == HYDRO ) # if ( MODEL == ELBDM ) int Opt__Flag_EngyDensity; + int Opt__Flag_Spectral; + int Opt__Flag_Spectral_N; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + int Opt__Flag_Interference; # endif +# endif // #if ( MODEL == ELBDM ) int Opt__Flag_LohnerDens; # if ( MODEL == HYDRO ) int Opt__Flag_LohnerEngy; @@ -515,6 +567,7 @@ struct InputPara_t double LB_Par_Weight; # endif int Opt__RecordLoadBalance; + int Opt__LB_ExchangeFather; # endif int Opt__MinimizeMPIBarrier; @@ -546,6 +599,11 @@ struct InputPara_t # endif double ELBDM_Taylor3_Coeff; int ELBDM_Taylor3_Auto; + int ELBDM_RemoveMotionCM; + int ELBDM_BaseSpectral; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + int ELBDM_FirstWaveLevel; +# endif # endif // ELBDM // fluid solvers in different models @@ -700,7 +758,11 @@ struct InputPara_t # endif # if ( MODEL == ELBDM ) int Opt__Int_Phase; + int Opt__Res_Phase; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + int Opt__Hybrid_Match_Phase; # endif +# endif // #if ( MODEL == ELBDM ) int Opt__Flu_IntScheme; int Opt__RefFlu_IntScheme; # ifdef MHD @@ -719,6 +781,14 @@ struct InputPara_t # endif int Mono_MaxIter; int IntOppSign0thOrder; +# ifdef SUPPORT_SPECTRAL_INT + char *SpecInt_TablePath; + int SpecInt_GhostBoundary; +# if ( MODEL == ELBDM ) + int SpecInt_XY_Instead_DePha; + double SpecInt_VortexThreshold; +# endif +# endif // data dump int Opt__Output_Total; @@ -726,6 +796,7 @@ struct InputPara_t int Opt__Output_User; # ifdef PARTICLE int Opt__Output_Par_Mode; + int Opt__Output_Par_Mesh; # endif int Opt__Output_BasePS; int Opt__Output_Base; @@ -760,6 +831,7 @@ struct InputPara_t int Opt__Output_Step; double Opt__Output_Dt; char *Opt__Output_Text_Format_Flt; + int Opt__Output_Text_Length_Int; double Output_PartX; double Output_PartY; double Output_PartZ; @@ -821,6 +893,8 @@ struct InputPara_t double FlagTable_Rho [NLEVEL-1]; double FlagTable_RhoGradient [NLEVEL-1]; double FlagTable_Lohner [NLEVEL-1][5]; + double FlagTable_Angular [NLEVEL-1][3]; + double FlagTable_Radial [NLEVEL-1]; hvl_t FlagTable_User [NLEVEL-1]; # if ( MODEL == HYDRO ) double FlagTable_PresGradient[NLEVEL-1]; @@ -837,7 +911,11 @@ struct InputPara_t # endif # elif ( MODEL == ELBDM ) double FlagTable_EngyDensity [NLEVEL-1][2]; + double FlagTable_Spectral [NLEVEL-1][2]; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + double FlagTable_Interference[NLEVEL-1][4]; # endif +# endif // MODEL # ifdef PARTICLE int FlagTable_NParPatch [NLEVEL-1]; int FlagTable_NParCell [NLEVEL-1]; diff --git a/include/Macro.h b/include/Macro.h index df1f57eb8e..96467d293c 100644 --- a/include/Macro.h +++ b/include/Macro.h @@ -30,6 +30,8 @@ #define VOLTA 5 #define TURING 6 #define AMPERE 7 +#define ADA_LOVELACE 8 +#define HOPPER 9 #ifdef GPU #if ( GPU_COMPUTE_CAPABILITY >= 200 && GPU_COMPUTE_CAPABILITY < 300 ) @@ -46,6 +48,10 @@ # define GPU_ARCH TURING #elif ( GPU_COMPUTE_CAPABILITY >= 800 && GPU_COMPUTE_CAPABILITY < 890 ) # define GPU_ARCH AMPERE +#elif ( GPU_COMPUTE_CAPABILITY >= 890 && GPU_COMPUTE_CAPABILITY < 900 ) +# define GPU_ARCH ADA_LOVELACE +#elif ( GPU_COMPUTE_CAPABILITY >= 900 && GPU_COMPUTE_CAPABILITY < 1000 ) +# define GPU_ARCH HOPPER #else # error : ERROR : Unknown GPU_COMPUTE_CAPABILITY !! #endif // GPU_COMPUTE_CAPABILITY @@ -101,6 +107,27 @@ #define EOS_USER 7 +// ELBDM schemes +#define ELBDM_WAVE 1 +#define ELBDM_HYBRID 2 + + +// ELBDM wave schemes +#define WAVE_FD 1 +#define WAVE_GRAMFE 2 + + +// ELBDM hybrid schemes +#define HYBRID_UPWIND 1 +#define HYBRID_MUSCL 2 +#define HYBRID_FROMM 3 + + +// ELBDM gramfe schemes +#define GRAMFE_FFT 1 +#define GRAMFE_MATMUL 2 + + // Poisson solvers #define SOR 1 #define MG 2 @@ -135,10 +162,14 @@ #elif ( MODEL == ELBDM ) # define NCOMP_FLUID 3 # define NFLUX_FLUID 1 +# define NCOMP_MAG 0 +# define NCOMP_ELE 0 #elif ( MODEL == PAR_ONLY ) # define NCOMP_FLUID 0 # define NFLUX_FLUID 0 +# define NCOMP_MAG 0 +# define NCOMP_ELE 0 #else # error : ERROR : unsupported MODEL (please edit NCOMP_FLUID and NFLUX_FLUID for the new MODEL) !! @@ -196,10 +227,15 @@ # define FLU_NIN NCOMP_TOTAL # define FLU_NOUT NCOMP_TOTAL -// for ELBDM, we do not need to transfer the density component into GPU + +// for ELBDM, we do not need to transfer the density component into GPU; +// also exclude passive scalars for now since it is not supported yet +// --> consistent with excluding _PASSIVE when calling Prepare_PatchData() in Flu_Prepare.cpp #elif ( MODEL == ELBDM ) -# define FLU_NIN ( NCOMP_TOTAL - 1 ) -# define FLU_NOUT ( NCOMP_TOTAL - 0 ) +//# define FLU_NIN ( NCOMP_TOTAL - 1 ) +//# define FLU_NOUT ( NCOMP_TOTAL - 0 ) +# define FLU_NIN ( NCOMP_FLUID - 1 ) +# define FLU_NOUT ( NCOMP_FLUID - 0 ) #elif ( MODEL == PAR_ONLY ) # define FLU_NIN 0 @@ -383,10 +419,16 @@ #elif ( MODEL == ELBDM ) // field indices of fluid[] --> element of [0 ... NCOMP_FLUID-1] +// --> must NOT modify their values # define DENS 0 # define REAL 1 # define IMAG 2 +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# define PHAS 1 +# define STUB 2 +# endif + // field indices of passive[] --> element of [NCOMP_FLUID ... NCOMP_TOTAL-1] // none for ELBDM @@ -397,8 +439,15 @@ # define _DENS ( 1L << DENS ) # define _REAL ( 1L << REAL ) # define _IMAG ( 1L << IMAG ) +# define _MAG 0 +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# define _PHAS ( 1L << PHAS ) +# define _STUB ( 1L << STUB ) +# endif + // bitwise flux indices +// for the hybrid scheme, we also only need the density flux # define _FLUX_DENS ( 1L << FLUX_DENS ) // bitwise indices of derived fields @@ -407,6 +456,7 @@ #elif ( MODEL == PAR_ONLY ) +# define _MAG 0 # define _DERIVED 0 # define NDERIVE 0 @@ -435,43 +485,52 @@ #ifdef PARTICLE // number of built-in particle attributes -// (1) mass, position*3, velocity*3, time, and type -# define PAR_NATT_BUILTIN0 9 +// floating-point: mass, position*3, velocity*3, and time +// integer: type +# define PAR_NATT_FLT_BUILTIN0 8 +# define PAR_NATT_INT_BUILTIN0 1 // acceleration*3 when STORE_PAR_ACC is adopted # if ( defined STORE_PAR_ACC && defined GRAVITY ) -# define PAR_NATT_BUILTIN1 3 +# define PAR_NATT_FLT_BUILTIN1 3 # else -# define PAR_NATT_BUILTIN1 0 +# define PAR_NATT_FLT_BUILTIN1 0 # endif // particle creation time when STAR_FORMATION is adopted # ifdef STAR_FORMATION -# define PAR_NATT_BUILTIN2 1 +# define PAR_NATT_FLT_BUILTIN2 1 # else -# define PAR_NATT_BUILTIN2 0 +# define PAR_NATT_FLT_BUILTIN2 0 # endif // **total** number of built-in particle attributes -# define PAR_NATT_BUILTIN ( PAR_NATT_BUILTIN0 + PAR_NATT_BUILTIN1 + PAR_NATT_BUILTIN2 ) +# define PAR_NATT_FLT_BUILTIN ( PAR_NATT_FLT_BUILTIN0 + PAR_NATT_FLT_BUILTIN1 + PAR_NATT_FLT_BUILTIN2 ) +# define PAR_NATT_INT_BUILTIN ( PAR_NATT_INT_BUILTIN0 ) // number of particle attributes that we do not want to store on disk (currently time + acceleration*3) -# define PAR_NATT_UNSTORED ( 1 + PAR_NATT_BUILTIN1 ) -# define PAR_NATT_STORED ( PAR_NATT_TOTAL - PAR_NATT_UNSTORED ) +# define PAR_NATT_FLT_UNSTORED ( 1 + PAR_NATT_FLT_BUILTIN1 ) +# define PAR_NATT_FLT_STORED ( PAR_NATT_FLT_TOTAL - PAR_NATT_FLT_UNSTORED ) +# define PAR_NATT_INT_UNSTORED ( 0 ) +# define PAR_NATT_INT_STORED ( PAR_NATT_INT_TOTAL - PAR_NATT_INT_UNSTORED ) -// define PAR_NATT_USER if not set in the Makefile -# ifndef PAR_NATT_USER -# define PAR_NATT_USER 0 +// define PAR_NATT_FLT/INT_USER if not set in the Makefile +# ifndef PAR_NATT_FLT_USER +# define PAR_NATT_FLT_USER 0 +# endif +# ifndef PAR_NATT_INT_USER +# define PAR_NATT_INT_USER 0 # endif // total number of particle attributes (built-in + user-defined) -# define PAR_NATT_TOTAL ( PAR_NATT_BUILTIN + PAR_NATT_USER ) +# define PAR_NATT_FLT_TOTAL ( PAR_NATT_FLT_BUILTIN + PAR_NATT_FLT_USER ) +# define PAR_NATT_INT_TOTAL ( PAR_NATT_INT_BUILTIN + PAR_NATT_INT_USER ) -// indices of built-in particle attributes in Par->Attribute[] +// indices of built-in particle floating-point attributes in Par->AttributeFlt[] // --> must NOT modify their values # define PAR_MASS 0 # define PAR_POSX 1 @@ -480,16 +539,19 @@ # define PAR_VELX 4 # define PAR_VELY 5 # define PAR_VELZ 6 -# define PAR_TYPE 7 + +// indices of built-in particle integer attributes in Par->AttributeInt[] +// --> must NOT modify their values +# define PAR_TYPE 0 // always put acceleration and time at the END of the particle attribute list // --> make it easier to discard them when storing data on disk (see Output_DumpData_Total(_HDF5).cpp) # if ( defined STORE_PAR_ACC && defined GRAVITY ) -# define PAR_ACCX ( PAR_NATT_TOTAL - 4 ) -# define PAR_ACCY ( PAR_NATT_TOTAL - 3 ) -# define PAR_ACCZ ( PAR_NATT_TOTAL - 2 ) +# define PAR_ACCX ( PAR_NATT_FLT_TOTAL - 4 ) +# define PAR_ACCY ( PAR_NATT_FLT_TOTAL - 3 ) +# define PAR_ACCZ ( PAR_NATT_FLT_TOTAL - 2 ) # endif -# define PAR_TIME ( PAR_NATT_TOTAL - 1 ) +# define PAR_TIME ( PAR_NATT_FLT_TOTAL - 1 ) // bitwise indices of particles @@ -501,7 +563,6 @@ # define _PAR_VELX ( 1L << PAR_VELX ) # define _PAR_VELY ( 1L << PAR_VELY ) # define _PAR_VELZ ( 1L << PAR_VELZ ) -# define _PAR_TYPE ( 1L << PAR_TYPE ) # if ( defined STORE_PAR_ACC && defined GRAVITY ) # define _PAR_ACCX ( 1L << PAR_ACCX ) # define _PAR_ACCY ( 1L << PAR_ACCY ) @@ -513,7 +574,10 @@ # if ( defined STORE_PAR_ACC && defined GRAVITY ) # define _PAR_ACC ( _PAR_ACCX | _PAR_ACCY | _PAR_ACCZ ) # endif -# define _PAR_TOTAL ( ( 1L << PAR_NATT_TOTAL ) - 1L ) +# define _PAR_FLT_TOTAL ( ( 1L << PAR_NATT_FLT_TOTAL ) - 1L ) + +# define _PAR_TYPE ( 1L << PAR_TYPE ) +# define _PAR_INT_TOTAL ( ( 1L << PAR_NATT_INT_TOTAL ) - 1L ) // grid fields related to particles // --> note that _POTE = ( 1L << (NCOMP_TOTAL+NDERIVE) ) @@ -531,10 +595,10 @@ # define PAR_NTYPE 4 // particle type indices (must be in the range 0<=index= HYB_GHOST_SIZE (6) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# define FLU_GHOST_SIZE 6 +# else +# define FLU_GHOST_SIZE 3 +# endif +# endif // LAPLACIAN_4TH +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) +// the accuracy of the local spectral method increases with larger FLU_GHOST_SIZE. +// a minimum of FLU_GHOST_SIZE 6 has been found to be stable with the filter options alpha = 100 and beta = 32 * log(10) +// larger ghost zones should increase stability and accuracy and allow for larger timesteps, but have not extensively tested +// for smaller ghost zones, GRAMFE_ORDER should be decreased to values between 6 and 12 and the filter parameters should be adapted +# define FLU_GHOST_SIZE 8 +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME #else # error : ERROR : unsupported MODEL !! #endif // MODEL +// define fluid ghost boundary size for hybrid scheme +// --> it must be smaller than or equal to FLU_GHOST_SIZE because the same fluid arrays are used for both the wave and fluid solvers +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# define HYB_GHOST_SIZE 6 +# endif + +# if ( WAVE_SCHEME == WAVE_GRAMFE || SUPPORT_SPECTRAL_INT ) +// number of evaluation points of Gram polynomials for computing FC(SVD) continuation +# define GRAMFE_GAMMA 150 +// number of Fourier modes used in the FC(SVD) continuation +// roughly GRAMFE_G = GRAMFE_GAMMA/2 +# define GRAMFE_G 63 +# endif + +// set default parameters of gram extension scheme +# if ( MODEL == ELBDM && WAVE_SCHEME == WAVE_GRAMFE ) +// number of boundary points used for Gram polynomial space on boundary +# define GRAMFE_NDELTA 14 +// maximum order of Gram polynomials on boundary +// for GRAMFE_ORDER < GRAMFE_NDELTA, the boundary information is projected +// onto a lower-dimensional polynomial space +// this increases the stability but decreases the accuracy of the algorithm +# define GRAMFE_ORDER 14 + +// a boundary of size GRAMFE_NDELTA can only support polynomials of degree up to GRAMFE_ORDER +# if ( GRAMFE_ORDER > GRAMFE_NDELTA ) +# error : ERROR : Gram Fourier extension order must not be higher than NDELTA !! +# endif + +// size of the extension region +// --> total size of extended region = GRAMFE_FLU_NXT = FLU_NXT + GRAMFE_ND +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) +// default values in order for GRAMFE_FLU_NXT to have small prime factorisations +// --> this is important for the FFT to be fast +# if ( PATCH_SIZE == 8 ) +# define GRAMFE_ND 32 // GRAMFE_FLU_NXT = 2^6 +# elif ( PATCH_SIZE == 16 ) +# define GRAMFE_ND 24 // GRAMFE_FLU_NXT = 2^3 * 3^2 +# elif ( PATCH_SIZE == 32 ) +# define GRAMFE_ND 28 // GRAMFE_FLU_NXT = 2^2 * 3^3 +# elif ( PATCH_SIZE == 64 ) +# define GRAMFE_ND 24 // GRAMFE_FLU_NXT = 2^3 * 3 * 7 +# elif ( PATCH_SIZE == 128 ) +# define GRAMFE_ND 28 // GRAMFE_FLU_NXT = 2^2 * 3 * 5^2 +# else +# error : ERROR : Unsupported PATCH_SIZE for GRAMFE_FFT!! +# endif // PATCH_SIZE + +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +// for GRAMFE_MATMUL extension size is irrelevant since matrix multiplication works for all sizes +# define GRAMFE_ND 32 // GRAMFE_FLU_NXT = 2^6 + +# if ( PATCH_SIZE != 8 && PATCH_SIZE != 16 ) +# error : ERROR : Unsupported PATCH_SIZE for GRAMFE_MATMUL (only support 8 and 16) !! Consider switching to GRAMFE_FFT. +# endif + +# else +# error : ERROR : Unsupported GRAMFE_SCHEME!! +# endif + +// total size of extended region +# define GRAMFE_FLU_NXT ( FLU_NXT + GRAMFE_ND ) + +# endif // # if ( MODEL == ELBDM && WAVE_SCHEME == WAVE_GRAMFE ) // self-gravity constants @@ -593,9 +739,10 @@ // number of input and output variables in the gravity solver # if ( MODEL == HYDRO ) -# define GRA_NIN NCOMP_FLUID +# define GRA_NIN ( NCOMP_FLUID ) // for ELBDM, we do not need to transfer the density component +// --> this remains valid for hybrid solver that also has 2 components # elif ( MODEL == ELBDM ) # define GRA_NIN ( NCOMP_FLUID - 1 ) @@ -715,19 +862,27 @@ #else # define GRA_NXT ( 1 ) // still define GRA_NXT ... # define USG_NXT_F ( 1 ) // still define USG_NXT_F ... -#endif +#endif // GRAVITY # define SRC_NXT ( PS1 + 2*SRC_GHOST_SIZE ) // use patch as the unit # define SRC_NXT_P1 ( SRC_NXT + 1 ) # define DER_NXT ( PS1 + 2*DER_GHOST_SIZE ) // use patch as the unit #ifdef FEEDBACK # define FB_NXT ( PS2 + 2*FB_GHOST_SIZE ) // use patch group as the unit #endif +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# define HYB_NXT ( PS2 + 2*HYB_GHOST_SIZE ) +#else +# define HYB_NXT ( 1 ) +#endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) // size of auxiliary arrays and EoS tables #if ( MODEL == HYDRO ) # define EOS_NAUX_MAX 20 // EoS_AuxArray_Flt/Int[] # define EOS_NTABLE_MAX 20 // *_EoS_Table[] +#else +# define EOS_NAUX_MAX 0 +# define EOS_NTABLE_MAX 0 #endif #ifdef GRAVITY @@ -776,6 +931,17 @@ #endif +// precision for FFT in GRAMFE_FFT and matrix multiplication in GRAMFE_MATMUL +// --> enable double precision for GRAMFE_FFT by default since it is less stable compared to GRAMFE_MATMUL +#if ( GRAMFE_SCHEME == GRAMFE_FFT ) +# define GRAMFE_FFT_FLOAT8 +#endif + +#if ( ( GRAMFE_SCHEME == GRAMFE_MATMUL ) && defined( FLOAT8 ) ) +# define GRAMFE_MATMUL_FLOAT8 +#endif + + // extreme values #ifndef __INT_MAX__ # define __INT_MAX__ 2147483647 @@ -936,6 +1102,12 @@ # define MPI_GAMER_REAL_PAR MPI_FLOAT #endif +#ifdef INT8_PAR +# define MPI_GAMER_LONG_PAR MPI_LONG +#else +# define MPI_GAMER_LONG_PAR MPI_INT +#endif + // ############ @@ -952,6 +1124,7 @@ # define EXP( a ) exp( a ) # define ATAN( a ) atan( a ) # define FLOOR( a ) floor( a ) +# define ROUND( a ) round( a ) # define FMAX( a, b ) fmax( a, b ) # define FMIN( a, b ) fmin( a, b ) # define POW( a, b ) pow( a, b ) @@ -966,6 +1139,7 @@ # define EXP( a ) expf( a ) # define ATAN( a ) atanf( a ) # define FLOOR( a ) floorf( a ) +# define ROUND( a ) roundf( a ) # define FMAX( a, b ) fmaxf( a, b ) # define FMIN( a, b ) fminf( a, b ) # define POW( a, b ) powf( a, b ) @@ -987,9 +1161,10 @@ #define SATAN2( a, b ) ( ( (a) == (real)0.0 && (b) == (real)0.0 ) ? (real)0.0 : ATAN2( (a), (b) ) ) -// square/cube function +// power functions #define SQR( a ) ( (a)*(a) ) #define CUBE( a ) ( (a)*(a)*(a) ) +#define POW4( a ) ( (a)*(a)*(a)*(a) ) // 3D to 1D array indices transformation @@ -1081,4 +1256,5 @@ #endif + #endif // #ifndef __MACRO_H__ diff --git a/include/Particle.h b/include/Particle.h index 57c5476066..3643a85487 100644 --- a/include/Particle.h +++ b/include/Particle.h @@ -51,9 +51,15 @@ void Aux_Error( const char *File, const int Line, const char *Func, const char * // the velocity gradient is large // RemoveCell : remove particles RemoveCell-base-level-cells away from the boundary // (for non-periodic BC only) -// GhostSize : Number of ghost zones required for interpolation scheme -// Attribute : Pointer arrays to different particle attributes (Mass, Pos, Vel, ...) +// GhostSize : Number of ghost zones required for the interpolation scheme of massive particles +// GhostSizeTracer : Number of ghost zones required for the interpolation scheme of tracer particles +// AttributeFlt : Pointer arrays to different particle floating-point attributes (Mass, Pos, Vel, ...) +// AttributeInt : Pointer arrays to different particle integer attributes (Type) // InactiveParList : List of inactive particle IDs +// Mesh_Attr : Pointer arrays to different mesh quantities mapped onto tracer particles +// Mesh_Attr_Num : Number of mesh quantities mapped onto tracer particles +// Mesh_Attr_Idx : Field indices of mesh quantities mapped onto tracer particles +// Mesh_Attr_Label : Field labels of mesh quantities mapped onto tracer particles // R2B_Real_NPatchTotal : see R2B_Buff_NPatchTotal // R2B_Real_NPatchEachRank : see R2B_Buff_NPatchEachRank // R2B_Real_PIDList : see R2B_Buff_PIDList @@ -129,8 +135,13 @@ struct Particle_t double RemoveCell; int GhostSize; int GhostSizeTracer; - real_par *Attribute[PAR_NATT_TOTAL]; + real_par *AttributeFlt[PAR_NATT_FLT_TOTAL]; + long_par *AttributeInt[PAR_NATT_INT_TOTAL]; long *InactiveParList; + real_par **Mesh_Attr; + int Mesh_Attr_Num; + long *Mesh_Attr_Idx; + char **Mesh_Attr_Label; # ifdef LOAD_BALANCE int R2B_Real_NPatchTotal [NLEVEL][2]; @@ -163,12 +174,12 @@ struct Particle_t real_par *VelY; real_par *VelZ; real_par *Time; - real_par *Type; # ifdef STORE_PAR_ACC real_par *AccX; real_par *AccY; real_par *AccZ; # endif + long_par *Type; //=================================================================================== @@ -201,9 +212,15 @@ struct Particle_t for (int lv=0; lv free memory first since other functions (e.g., LB_Init_LoadBalance()) will call InitRepo() again - for (int v=0; v= (real_par)PAR_NTYPE ) - Aux_Error( ERROR_INFO, "Incorrect particle type (%d) !!\n", (int)NewAtt[PAR_TYPE] ); + if ( NewAttInt[PAR_TYPE] < (long_par)0 || NewAttInt[PAR_TYPE] >= (long_par)PAR_NTYPE ) + Aux_Error( ERROR_INFO, "Incorrect particle type (%ld) !!\n", (long)NewAttInt[PAR_TYPE] ); # endif @@ -448,22 +486,23 @@ struct Particle_t { ParListSize = (int)ceil( PARLIST_GROWTH_FACTOR*(ParListSize+1) ); - for (int v=0; v Including passively advected variables (e.g., metal density) -// magnetic : Magnetic field (Bx, By, Bz) -// pot : Potential -// pot_ext : Potential with GRA_GHOST_SIZE ghost cells on each side -// --> Allocated only if STORE_POT_GHOST is on -// --> Ghost-zone potential are obtained from the Poisson solver directly -// (not from exchanging potential between sibling patches) -// --> Currently it is used for Par->ImproveAcc and SF_CreateStar_AGORA() only -// --> Currently it's useless for buffer patches -// de_status : Assigned to (DE_UPDATED_BY_ETOT / DE_UPDATED_BY_DUAL / DE_UPDATED_BY_MIN_PRES / -// DE_UPDATED_BY_ETOT_GRA) -// to indicate whether each cell is updated by the total energy, dual energy variable, -// or minimum allowed pressure -// --> DE_UPDATED_BY_XXX are defined in Macro.h -// --> It's a character array with the size PS1^3 -// --> Currently it's only allocated for Sg=0 -// rho_ext : Density with RHOEXT_GHOST_SIZE (typically 2) ghost cells on each side -// --> Only allocated **temporarily** in the function Prepare_PatchData for storing -// particle mass density -// --> Also note that this array does NOT necessary store the correct particle mass density -// (especially for cells adjacent to the C-C and C-F boundaries) and thus should -// NOT be used outside Prepare_PatchData) -// --> Note that even with NGP mass assignment which requires no ghost zone we -// still allocate rho_ext as (PS1+RHOEXT_GHOST_SIZE)^3 -// flux[6] : Fluid flux (for the flux-correction operation) -// --> Including passively advected flux (for the flux-correction operation) -// flux_tmp[6] : Temporary fluid flux for the option "AUTO_REDUCE_DT" -// flux_bitrep[6] : Fluid flux for achieving bitwise reproducibility (i.e., ensuring that the round-off errors are -// exactly the same in different parallelization parameters/strategies) -// electric : Electric field for the MHD fix-up operation -/// --> Array structure = [sibling index][E field index][cell index] -// --> For sibling indices 0-5, there are two E fields on each face -// --> E field index on x faces: [0/1] = Ey/Ez -// y faces: [0/1] = Ez/Ex -// z faces: [0/1] = Ex/Ey -// Cell index dimension on x faces: [Nz][Ny] (= [PS1-1][PS1] for Ey and [PS1][PS1-1] for Ez) -// dimension on y faces: [Nx][Nz] (= [PS1-1][PS1] for Ez and [PS1][PS1-1] for Ex) -// dimension on z faces: [Ny][Nx] (= [PS1-1][PS1] for Ex and [PS1][PS1-1] for Ey) -// --> For sibling indices 6-17, there is only one E field on each edge -// --> E field index is always 0 (6-9->Ez, 10-13->Ex, 14-17->Ey) -// Cell index dimension is always [PS1] -// --> To unify the array structure of sibling indices 0-5 and 6-17, we actually convert the -// 2D array [E field index][cell index] into a 1D array -// electric_tmp : Temporary electric field for the option "AUTO_REDUCE_DT" -// electric_bitrep : Electric field for achieving bitwise reproducibility in MHD (i.e., ensuring that the -// round-off errors are exactly the same in different parallelization parameters/strategies) -// ele_corrected : Array recording whether each component in electric[] has been corrected by the fix-up operation -// corner[3] : Grid indices of the cell at patch corner -// --> Note that for an external patch its recorded "corner" will lie outside -// the simulation domain. In other words, periodicity is NOT used to -// convert corner to that of the corresponding real patch -// --> For example, external patches can have corner < 0 -// --> Different from EdgeL/R, which always assume periodicity -// sibling[26] : Patch IDs of the 26 sibling patches (-1->no sibling; -1XX->external) +// Data Member : fluid : Fluid variables (mass density, momentum density x, y ,z, energy density) +// --> Including passively advected variables (e.g., metal density) +// magnetic : Magnetic field (Bx, By, Bz) +// pot : Potential +// pot_ext : Potential with GRA_GHOST_SIZE ghost cells on each side +// --> Allocated only if STORE_POT_GHOST is on +// --> Ghost-zone potential are obtained from the Poisson solver directly +// (not from exchanging potential between sibling patches) +// --> Currently it is used for Par->ImproveAcc and SF_CreateStar_AGORA() only +// --> Currently it's useless for buffer patches +// de_status : Assigned to (DE_UPDATED_BY_ETOT / DE_UPDATED_BY_DUAL / DE_UPDATED_BY_MIN_PRES / +// DE_UPDATED_BY_ETOT_GRA) +// to indicate whether each cell is updated by the total energy, dual energy variable, +// or minimum allowed pressure +// --> DE_UPDATED_BY_XXX are defined in Macro.h +// --> It's a character array with the size PS1^3 +// --> Currently it's only allocated for Sg=0 +// rho_ext : Density with RHOEXT_GHOST_SIZE (typically 2) ghost cells on each side +// --> Only allocated **temporarily** in the function Prepare_PatchData for storing +// particle mass density +// --> Also note that this array does NOT necessary store the correct particle mass density +// (especially for cells adjacent to the C-C and C-F boundaries) and thus should +// NOT be used outside Prepare_PatchData) +// --> Note that even with NGP mass assignment which requires no ghost zone we +// still allocate rho_ext as (PS1+RHOEXT_GHOST_SIZE)^3 +// flux[6] : Fluid flux (for the flux-correction operation) +// --> Including passively advected flux (for the flux-correction operation) +// flux_tmp[6] : Temporary fluid flux for the option "AUTO_REDUCE_DT" +// flux_bitrep[6] : Fluid flux for achieving bitwise reproducibility (i.e., ensuring that the round-off errors are +// exactly the same in different parallelization parameters/strategies) +// electric : Electric field for the MHD fix-up operation +/// --> Array structure = [sibling index][E field index][cell index] +// --> For sibling indices 0-5, there are two E fields on each face +// --> E field index on x faces: [0/1] = Ey/Ez +// y faces: [0/1] = Ez/Ex +// z faces: [0/1] = Ex/Ey +// Cell index dimension on x faces: [Nz][Ny] (= [PS1-1][PS1] for Ey and [PS1][PS1-1] for Ez) +// dimension on y faces: [Nx][Nz] (= [PS1-1][PS1] for Ez and [PS1][PS1-1] for Ex) +// dimension on z faces: [Ny][Nx] (= [PS1-1][PS1] for Ex and [PS1][PS1-1] for Ey) +// --> For sibling indices 6-17, there is only one E field on each edge +// --> E field index is always 0 (6-9->Ez, 10-13->Ex, 14-17->Ey) +// Cell index dimension is always [PS1] +// --> To unify the array structure of sibling indices 0-5 and 6-17, we actually convert the +// 2D array [E field index][cell index] into a 1D array +// electric_tmp : Temporary electric field for the option "AUTO_REDUCE_DT" +// electric_bitrep : Electric field for achieving bitwise reproducibility in MHD (i.e., ensuring that the +// round-off errors are exactly the same in different parallelization parameters/strategies) +// ele_corrected : Array recording whether each component in electric[] has been corrected by the fix-up operation +// corner[3] : Grid indices of the cell at patch corner +// --> Note that for an external patch its recorded "corner" will lie outside +// the simulation domain. In other words, periodicity is NOT used to +// convert corner to that of the corresponding real patch +// --> For example, external patches can have corner < 0 +// --> Different from EdgeL/R, which always assume periodicity +// sibling[26] : Patch IDs of the 26 sibling patches (-1->no sibling; -1XX->external) // -// NOTE FOR NON-PERIODIC BOUNDARY CONDITIONS: -// If a target sibling patch is an external patch (which lies outside the simulation domain), -// the corresponding sibling index is set to "SIB_OFFSET_NONPERIODIC-Sibling", where Sibling -// represents the sibling direction of the boundary region. -// (e.g., if amr->sibling[XX] lies outside the -y boundary (boundary sibling = 2), we set -// amr->sibling[XX] = SIB_OFFSET_NONPERIODIC-2 = -102 for SIB_OFFSET_NONPERIODIC==-100) -// --> All patches without sibling patches along the XX direction will have -// "amr->sibling[XX] < 0" +// NOTE FOR NON-PERIODIC BOUNDARY CONDITIONS: +// If a target sibling patch is an external patch (which lies outside the simulation domain), +// the corresponding sibling index is set to "SIB_OFFSET_NONPERIODIC-Sibling", where Sibling +// represents the sibling direction of the boundary region. +// (e.g., if amr->sibling[XX] lies outside the -y boundary (boundary sibling = 2), we set +// amr->sibling[XX] = SIB_OFFSET_NONPERIODIC-2 = -102 for SIB_OFFSET_NONPERIODIC==-100) +// --> All patches without sibling patches along the XX direction will have +// "amr->sibling[XX] < 0" // -// father : Patch ID of the father patch -// son : Patch ID of the child patch (-1->no son) +// father : Patch ID of the father patch +// son : Patch ID of the child patch (-1->no son) // -// LOAD_BALANCE NOTE: -// For patches with sons living abroad (not at the same rank as iteself), their son indices -// are set to "SON_OFFSET_LB-SonRank", where SonRank represents the MPI rank where their -// sons live. (e.g., if the real son at rank 123, the son index is set to -// SON_OFFSET_LB-123=-1123 for SON_OFFSET_LB==-1000) -// --> All patches (i.e., both real and buffer patches) with sons will have SonPID != -1 +// LOAD_BALANCE NOTE: +// For patches with sons living abroad (not at the same rank as iteself), their son indices +// are set to "SON_OFFSET_LB-SonRank", where SonRank represents the MPI rank where their +// sons live. (e.g., if the real son at rank 123, the son index is set to +// SON_OFFSET_LB-123=-1123 for SON_OFFSET_LB==-1000) +// --> All patches (i.e., both real and buffer patches) with sons will have SonPID != -1 // -// flag : Refinement flag (true/false) -// Active : Used by OPT__REUSE_MEMORY to indicate whether this patch is active or inactive -// --> active: patch has been allocated and activated (included in num[lv]) -// inactive: patch has been allocated but deactivated (excluded from num[lv]) -// --> Note that active/inactive have nothing to do with the allocation of field arrays (e.g., fluid) -// --> For both active and inactive patches, field arrays may be allocated or == NULL -// --> However, currently the flux arrays (i.e., flux, flux_tmp, and flux_bitrep) are guaranteed -// to be NULL for inactive patches -// EdgeL/R : Left and right edge of the patch -// --> Note that we always apply periodicity to EdgeL/R. So for an external patch its -// recorded "EdgeL/R" will still lie inside the simulation domain and will be -// exactly the same as the EdgeL/R of the corresponding real patches. -// --> For example, the external patches just outside the simulation left edge will have -// EdgeL = BoxEdgeR-PatchSize*dh[lv] and EdgeR = BoxEdgeR, and for those just outside -// the simulation right edge will have EdgeL = BoxEdgeL and EdgeR = BoxEdgeL+PatchSize*dh[lv] -// --> Different from corner[3], which do NOT assume periodicity -// PaddedCr1D : 1D corner coordiniate padded with two base-level patches on each side -// in each direction, normalized to the finest-level patch scale (PATCH_SIZE) -// --> Each PaddedCr1D defines a unique 3D position -// --> Patches at different levels with the same PaddedCr1D have the same -// 3D corner coordinates -// --> This number is independent of periodicity (because of the padded patches) -// LB_Idx : Space-filling-curve index for load balance -// NPar : Number of particles belonging to this leaf patch -// NPar_Type : Number of different types of particles belonging to this leaf patch -// ParListSize : Size of the array ParList (ParListSize can be >= NPar) -// ParList : List recording the IDs of all particles belonging to this leaf real patch -// NPar_Copy : Number of particles collected from other patches. There are three kinds of patches that -// can have NPar_Copy != -1 -// --> (1) Non-leaf real patches (both SERIAL and LOAD_BALANCE) -// --> Particles collected from the descendants (sons, grandsons, ...) of this patch -// (2) Non-leaf buffer patches (LOAD_BALANCE only) -// --> Particles collected from the corresponding non-leaf real patches in (1) -// (3) Leaf buffer patches (LOAD_BALANCE only) -// --> Particles collected from the corresponding leaf real patches -// (those with NPar and ParList property set) -// --> **Leaf real** patches will always have NPar_Copy == -1 -// --> In SERIAL mode, these non-leaf real patches will have their particle -// IDs stored in ParList_Copy, which points to the same particle repository -// (i.e., the amr->Par->Attribute[]). In comparison, in LOAD_BALANCE mode, -// since particles corresponding to NPar_Copy may be collected from other ranks, -// these patches will allocate a local particle attribute array called ParAtt_Copy -// --> Note that non-leaf patches may have NPar>0 temporarily after updating particle position. -// It's because particles travelling from coarse to fine grids will stay in coarse grids -// temporarily until the velocity correction is done. -// --> For these patches, NPar_Copy will be **the sum of NPar and the number of particles -// collected from other patches**, and ParList_Copy (or ParAtt_Copy) will contain -// information of particles belonging to NPar as well. -// --> It makes implementation simplier. For leaf real patches, one only needs to consider -// NPar and ParList. While for all other patches, one only needs to consider NPar_Copy -// and ParList_Copy (or ParAtt_Copy). One never needs to consider both. -// ParList_Copy : List recording the IDs of all particles belonging to the descendants of this patch -// (and particles temporarily locate in this patch waiting for the velocity correction, see -// discussion above) -// --> for SERIAL only -// ParAtt_Copy : Pointer arrays storing the data of NPar_Copy particles collected from other patches -// --> for LOAD_BALANCE only -// NPar_Escp : Number of particles escaping from this patch -// ParList_Escp : List recording the IDs of all particles escaping from this patch +// flag : Refinement flag (true/false) +// Active : Used by OPT__REUSE_MEMORY to indicate whether this patch is active or inactive +// --> active: patch has been allocated and activated (included in num[lv]) +// inactive: patch has been allocated but deactivated (excluded from num[lv]) +// --> Note that active/inactive have nothing to do with the allocation of field arrays (e.g., fluid) +// --> For both active and inactive patches, field arrays may be allocated or == NULL +// --> However, currently the flux arrays (i.e., flux, flux_tmp, and flux_bitrep) are guaranteed +// to be NULL for inactive patches +// EdgeL/R : Left and right edge of the patch +// --> Note that we always apply periodicity to EdgeL/R. So for an external patch its +// recorded "EdgeL/R" will still lie inside the simulation domain and will be +// exactly the same as the EdgeL/R of the corresponding real patches. +// --> For example, the external patches just outside the simulation left edge will have +// EdgeL = BoxEdgeR-PatchSize*dh[lv] and EdgeR = BoxEdgeR, and for those just outside +// the simulation right edge will have EdgeL = BoxEdgeL and EdgeR = BoxEdgeL+PatchSize*dh[lv] +// --> Different from corner[3], which do NOT assume periodicity +// PaddedCr1D : 1D corner coordiniate padded with two base-level patches on each side +// in each direction, normalized to the finest-level patch scale (PATCH_SIZE) +// --> Each PaddedCr1D defines a unique 3D position +// --> Patches at different levels with the same PaddedCr1D have the same +// 3D corner coordinates +// --> This number is independent of periodicity (because of the padded patches) +// LB_Idx : Space-filling-curve index for load balance +// NPar : Number of particles belonging to this leaf patch +// NParType : Number of different types of particles belonging to this leaf patch +// ParListSize : Size of the array ParList (ParListSize can be >= NPar) +// ParList : List recording the IDs of all particles belonging to this leaf real patch +// NPar_Copy : Number of particles collected from other patches. There are three kinds of patches that +// can have NPar_Copy != -1 +// --> (1) Non-leaf real patches (both SERIAL and LOAD_BALANCE) +// --> Particles collected from the descendants (sons, grandsons, ...) of this patch +// (2) Non-leaf buffer patches (LOAD_BALANCE only) +// --> Particles collected from the corresponding non-leaf real patches in (1) +// (3) Leaf buffer patches (LOAD_BALANCE only) +// --> Particles collected from the corresponding leaf real patches +// (those with NPar and ParList property set) +// --> **Leaf real** patches will always have NPar_Copy == -1 +// --> In SERIAL mode, these non-leaf real patches will have their particle +// IDs stored in ParList_Copy, which points to the same particle repository +// (i.e., the amr->Par->Attribute[]). In comparison, in LOAD_BALANCE mode, +// since particles corresponding to NPar_Copy may be collected from other ranks, +// these patches will allocate local particle attribute arrays called ParAttFlt_Copy and ParAttInt_Copy +// --> Note that non-leaf patches may have NPar>0 temporarily after updating particle position. +// It's because particles travelling from coarse to fine grids will stay in coarse grids +// temporarily until the velocity correction is done. +// --> For these patches, NPar_Copy will be **the sum of NPar and the number of particles +// collected from other patches**, and ParList_Copy (or ParAttFlt_Copy and ParAttInt_Copy) +// will contain information of particles belonging to NPar as well. +// --> It makes implementation simplier. For leaf real patches, one only needs to consider +// NPar and ParList. While for all other patches, one only needs to consider NPar_Copy +// and ParList_Copy (or ParAttFlt_Copy and ParAttInt_Copy). One never needs to consider both. +// ParList_Copy : List recording the IDs of all particles belonging to the descendants of this patch +// (and particles temporarily locate in this patch waiting for the velocity correction, see +// discussion above) +// --> for SERIAL only +// ParAttFlt_Copy : Pointer arrays storing the floating-point data of NPar_Copy particles collected from other patches +// --> for LOAD_BALANCE only +// ParAttInt_Copy : Pointer arrays storing the integer data of NPar_Copy particles collected from other patches +// --> for LOAD_BALANCE only +// NPar_Escp : Number of particles escaping from this patch +// ParList_Escp : List recording the IDs of all particles escaping from this patch +// switch_to_wave_flag : Determine whether an ELBDM patch using fluid scheme is converted to wave patch after refinement +// --> Set in Flag_Check() and Flag_Real() // -// Method : patch_t : Constructor -// ~patch_t : Destructor -// Activate : Activate patch -// fnew : Allocate flux[] -// fdelete : Deallocate flux[] -// enew : Allocate electric[] -// edelete : Deallocate electric[] -// hnew : Allocate fluid[] -// hdelete : Deallocate fluid[] -// mnew : Allocate magnetic[] -// mdelete : Deallocate magnetic[] -// gnew : Allocate pot[] -// gdelete : Deallocate pot[] -// snew : Allocate de_status[] -// sdelete : Deallocate de_status[] -// dnew : Allocate rho_ext[] -// ddelete : Deallocate rho_ext[] -// AddParticle : Add particles to the particle list -// RemoveParticle : Remove particles from the particle list +// Method : patch_t : Constructor +// ~patch_t : Destructor +// Activate : Activate patch +// fnew : Allocate flux[] +// fdelete : Deallocate flux[] +// enew : Allocate electric[] +// edelete : Deallocate electric[] +// hnew : Allocate fluid[] +// hdelete : Deallocate fluid[] +// mnew : Allocate magnetic[] +// mdelete : Deallocate magnetic[] +// gnew : Allocate pot[] +// gdelete : Deallocate pot[] +// snew : Allocate de_status[] +// sdelete : Deallocate de_status[] +// dnew : Allocate rho_ext[] +// ddelete : Deallocate rho_ext[] +// AddParticle : Add particles to the particle list +// RemoveParticle : Remove particles from the particle list //------------------------------------------------------------------------------------------------------- struct patch_t { @@ -240,7 +244,8 @@ struct patch_t int NPar_Copy; # ifdef LOAD_BALANCE - real_par *ParAtt_Copy[PAR_NATT_TOTAL]; + real_par *ParAttFlt_Copy[PAR_NATT_FLT_TOTAL]; + long_par *ParAttInt_Copy[PAR_NATT_INT_TOTAL]; # else long *ParList_Copy; # endif @@ -250,6 +255,9 @@ struct patch_t # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + bool switch_to_wave_flag; +# endif //=================================================================================== // Constructor : patch_t @@ -332,6 +340,11 @@ struct patch_t flag = false; Active = true; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// do not switch to fluid scheme by default + switch_to_wave_flag = false; +# endif + for (int s=0; s<26; s++ ) sibling[s] = -1; // -1 <--> NO sibling const int Padded = 1< +#if defined GRACKLE_FLOAT_8 +typedef double real_che; +#elif defined GRACKLE_FLOAT_4 +typedef float real_che; +#else +#error : ERROR : GRACKLE_FLOAT_8 and GRACKLE_FLOAT_4 are not defined in Grackle library !! +#endif +#endif // #ifdef SUPPORT_GRACKLE + +#if ( GRAMFE_SCHEME == GRAMFE_FFT ) +#ifdef GRAMFE_FFT_FLOAT8 +typedef double gramfe_fft_float; +#else +typedef float gramfe_fft_float; +#endif +#endif // #if ( GRAMFE_SCHEME == GRAMFE_FFT ) + +#ifdef GRAMFE_MATMUL_FLOAT8 +typedef double gramfe_matmul_float; +#else +typedef float gramfe_matmul_float; +#endif + + // short names for unsigned type typedef unsigned short ushort; typedef unsigned int uint; @@ -65,8 +97,20 @@ const TestProbID_t TESTPROB_HYDRO_JET_ICM_WALL = 52, TESTPROB_HYDRO_CDM_LSS = 100, TESTPROB_HYDRO_ZELDOVICH = 101, - TESTPROB_ELBDM_EXTPOT = 1000; - + TESTPROB_ELBDM_EXTPOT = 1000, + TESTPROB_ELBDM_JEANS_INSTABILITY_COMOVING = 1001, + TESTPROB_ELBDM_JEANS_INSTABILITY_PHYSICAL = 1002, + TESTPROB_ELBDM_SOLITON = 1003, + TESTPROB_ELBDM_SELF_SIMILAR_HALO = 1004, + TESTPROB_ELBDM_VORTEX_PAIR_ROTATING = 1005, + TESTPROB_ELBDM_VORTEX_PAIR_LINEAR = 1006, + TESTPROB_ELBDM_ISOLATED_HALO = 1007, + TESTPROB_ELBDM_GAUSSIAN_WAVE_PACKET = 1008, + TESTPROB_ELBDM_LSS = 1009, + TESTPROB_ELBDM_PLANE_WAVE = 1010, + TESTPROB_ELBDM_PERTURBATION = 1011, + TESTPROB_ELBDM_HALO_MERGER = 1012, + TESTPROB_ELBDM_DISK_HEATING = 1013; // program initialization options typedef int OptInit_t; @@ -127,7 +171,8 @@ const IntScheme_t INT_CQUAD = 4, INT_QUAD = 5, INT_CQUAR = 6, - INT_QUAR = 7; + INT_QUAR = 7, + INT_SPECTRAL = 8; // data reconstruction TVD limiters @@ -170,7 +215,8 @@ const OptOutputPart_t OUTPUT_X = 4, OUTPUT_Y = 5, OUTPUT_Z = 6, - OUTPUT_DIAG = 7; + OUTPUT_DIAG = 7, + OUTPUT_BOX = 8; // OPT_OUTPUT_PAR_MODE options @@ -298,7 +344,7 @@ const OptFluBC_t BC_FLU_DIODE = 5; -// the gravity boundary conditions +// gravity boundary conditions typedef int OptPotBC_t; const OptPotBC_t #ifdef GRAVITY @@ -483,6 +529,16 @@ const SF_CreateStarScheme_t #endif +// ELBDM_REMOVE_MOTION_CM options +#if ( MODEL == ELBDM ) +typedef int ELBDMRemoveMotionCM_t; +const ELBDMRemoveMotionCM_t + ELBDM_REMOVE_MOTION_CM_NONE = 0, + ELBDM_REMOVE_MOTION_CM_INIT = 1, + ELBDM_REMOVE_MOTION_CM_EVERY_STEP = 2; +#endif + + // options in Aux_ComputeProfile() and Aux_FindExtrema() typedef int PatchType_t; const PatchType_t diff --git a/src/Auxiliary/Aux_CheckFileExist.cpp b/src/Auxiliary/Aux_CheckFileExist.cpp index de3551b56d..a92f549802 100644 --- a/src/Auxiliary/Aux_CheckFileExist.cpp +++ b/src/Auxiliary/Aux_CheckFileExist.cpp @@ -1,5 +1,7 @@ #include "GAMER.h" #include +#include +#include @@ -21,3 +23,67 @@ bool Aux_CheckFileExist( const char *FileName ) return ( stat(FileName,&Buf) == 0 ); } // FUNCTION : Aux_CheckFileExist + + + +//------------------------------------------------------------------------------------------------------- +// Function : Aux_CheckFolderExist +// Description : Check whether or not the target folder exists +// +// Note : Use the "stat" function to query the existence of the target folder +// +// Parameter : FolderName : Name of the target folder +// +// Return : true/false <-> folder exists/not exists +//------------------------------------------------------------------------------------------------------- +bool Aux_CheckFolderExist( const char *FolderName ) +{ + + struct stat Buf; + + if ( stat(FolderName, &Buf) != 0 ) return false; // not exist + else if ( !(Buf.st_mode & S_IFDIR) ) return false; // not a directoy + + return true; + +} // FUNCTION : Aux_CheckFolderExist + + + +//------------------------------------------------------------------------------------------------------- +// Function : Aux_CheckPermission +// Description : Check whether or not the target file has requested permissions +// +// Note : Use the "stat" function to query the permission of the target file +// +// Parameter : FileName : Name of the target file +// : perms : Permissions code of the target file (sum of 4->read, 2->write, 1->execute) +// --> Examples: 1. read and write permissions => 6 (4+2) +// 2. read and execute permissions => 5 (4+1) +// +// Return : true/false <-> you does/does not have the file permissions +//------------------------------------------------------------------------------------------------------- +bool Aux_CheckPermission( const char *FileName, const int perms ) +{ + + if ( perms < 0 || perms > 7 ) Aux_Error( ERROR_INFO, "Incorrect file permission code %d (0~7) !!\n", perms ); + + const uid_t curUserId = getuid(); // get user id + const gid_t curGroupId = getgid(); // get group id + + struct stat Buf; + + if ( stat(FileName, &Buf) != 0 ) Aux_Error( ERROR_INFO, "file \"%s\" does not exist !!\n", FileName ); + + int perm_r, perm_w, perm_x; + if ( Buf.st_uid == curUserId ) { perm_r = S_IRUSR; perm_w = S_IWUSR; perm_x = S_IXUSR; } // user + else if ( Buf.st_gid == curGroupId ) { perm_r = S_IRGRP; perm_w = S_IWGRP; perm_x = S_IXGRP; } // group + else { perm_r = S_IROTH; perm_w = S_IWOTH; perm_x = S_IXOTH; } // other + + if ( (perms & 4) && !(Buf.st_mode & perm_r) ) return false; + if ( (perms & 2) && !(Buf.st_mode & perm_w) ) return false; + if ( (perms & 1) && !(Buf.st_mode & perm_x) ) return false; + + return true; + +} // FUNCTION : Aux_CheckPermission diff --git a/src/Auxiliary/Aux_Check_Conservation.cpp b/src/Auxiliary/Aux_Check_Conservation.cpp index acd6a46e51..b70c5a6674 100644 --- a/src/Auxiliary/Aux_Check_Conservation.cpp +++ b/src/Auxiliary/Aux_Check_Conservation.cpp @@ -33,7 +33,8 @@ void Aux_Check_Conservation( const char *comment ) { static bool FirstTime = true; - const char *FileName = "Record__Conservation"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Conservation", OUTPUT_DIR ); # if ( MODEL != HYDRO && MODEL != ELBDM && MODEL != PAR_ONLY ) diff --git a/src/Auxiliary/Aux_Check_Finite.cpp b/src/Auxiliary/Aux_Check_Finite.cpp index bfc415efed..70b88ad104 100644 --- a/src/Auxiliary/Aux_Check_Finite.cpp +++ b/src/Auxiliary/Aux_Check_Finite.cpp @@ -42,8 +42,15 @@ void Aux_Check_Finite( const int lv, const char *comment ) { NextIdx = 0; - for (int v=0; vpatch[ amr->FluSg[lv] ][lv][PID]->fluid[v][k][j][i]; + for (int v=0; vuse_wave_flag[lv] && v == STUB ) + Data[ NextIdx ++ ] = 0.0; + else +# endif + Data[ NextIdx ++ ] = amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[v][k][j][i]; + } # ifdef GRAVITY Data[ NextIdx ++ ] = amr->patch[ amr->PotSg[lv] ][lv][PID]->pot[k][j][i]; diff --git a/src/Auxiliary/Aux_Check_MemFree.cpp b/src/Auxiliary/Aux_Check_MemFree.cpp index bfbe6b431d..d9bc640915 100644 --- a/src/Auxiliary/Aux_Check_MemFree.cpp +++ b/src/Auxiliary/Aux_Check_MemFree.cpp @@ -18,6 +18,12 @@ void Aux_Check_MemFree( const double MinMemFree_Total, const char *comment ) { +// memory reporting is not currently supported on macOS +# ifdef __APPLE__ + return; +# endif + + const int StrSize = 128; const char FileName_Mem[StrSize] = "/proc/meminfo"; diff --git a/src/Auxiliary/Aux_Check_Parameter.cpp b/src/Auxiliary/Aux_Check_Parameter.cpp index 612a7083a0..62bb242ec6 100644 --- a/src/Auxiliary/Aux_Check_Parameter.cpp +++ b/src/Auxiliary/Aux_Check_Parameter.cpp @@ -47,6 +47,20 @@ void Aux_Check_Parameter() # error : ERROR : incorrect number of NCOMP_PASSIVE !! # endif +# ifdef SUPPORT_SPECTRAL_INT +# ifndef SUPPORT_GSL +# error : ERROR : SUPPORT_SPECTRAL_INT requires SUPPORT_GSL !! +# endif + +# ifndef SUPPORT_FFTW +# error : ERROR : SUPPORT_SPECTRAL_INT requires SUPPORT_FFTW !! +# endif + +# if ( SUPPORT_FFTW == FFTW2 && !defined FLOAT8 ) +# error : ERROR : SUPPORT_SPECTRAL_INT with SUPPORT_FFTW=FFTW2 requires FLOAT8 !! +# endif +# endif // #ifdef SUPPORT_SPECTRAL_INT + # ifdef SERIAL int NRank = 1; # else @@ -229,6 +243,11 @@ void Aux_Check_Parameter() if ( OPT__MEMORY_POOL && !OPT__REUSE_MEMORY ) Aux_Error( ERROR_INFO, "please turn on OPT__REUSE_MEMORY for OPT__MEMORY_POOL !!\n" ); +# ifdef __APPLE__ + if ( OPT__RECORD_MEMORY ) + Aux_Message( stderr, "WARNING : memory reporting is not currently supported on macOS !!\n" ); +# endif + if ( OPT__CORR_AFTER_ALL_SYNC != CORR_AFTER_SYNC_NONE && OPT__CORR_AFTER_ALL_SYNC != CORR_AFTER_SYNC_EVERY_STEP && OPT__CORR_AFTER_ALL_SYNC != CORR_AFTER_SYNC_BEFORE_DUMP ) Aux_Error( ERROR_INFO, "incorrect option \"OPT__CORR_AFTER_ALL_SYNC = %d\" [0/1/2] !!\n", OPT__CORR_AFTER_ALL_SYNC ); @@ -318,6 +337,17 @@ void Aux_Check_Parameter() # endif // #if ( MODEL == HYDRO ) + if ( strlen(OUTPUT_DIR) > MAX_STRING-100-1 ) + Aux_Error( ERROR_INFO, "Length of OUTPUT_DIR (%d) should be smaller than MAX_STRING-100-1 (%d) !!\n", + strlen(OUTPUT_DIR), MAX_STRING-100-1 ); + + if ( ! Aux_CheckFolderExist( OUTPUT_DIR ) ) + Aux_Error( ERROR_INFO, "\"%s\" folder set by OUTPUT_DIR does not exist !!\n", OUTPUT_DIR ); + + if ( ! Aux_CheckPermission( OUTPUT_DIR, 2+1 ) ) + Aux_Error( ERROR_INFO, "You do not have write and execute permissions for the \"%s\" folder set by OUTPUT_DIR !!\n", OUTPUT_DIR ); + + // general warnings // ======================================================================================= @@ -350,12 +380,7 @@ void Aux_Check_Parameter() # endif if ( OPT__OUTPUT_TOTAL == OUTPUT_FORMAT_CBINARY ) - { Aux_Message( stderr, "WARNING : OPT__OUTPUT_TOTAL = 2 (C-binary) is deprecated !!\n" ); -# if ( ( defined PARTICLE ) && ( (defined FLOAT8 && !defined FLOAT8_PAR) || (!defined FLOAT8 && defined FLOAT8_PAR) ) ) - Aux_Error( ERROR_INFO, "Must adopt FLOAT8_PAR=FLOAT8 for OPT__OUTPUT_TOTAL=2 (C-binary) !!\n" ); -# endif - } if ( !OPT__OUTPUT_TOTAL && !OPT__OUTPUT_PART && !OPT__OUTPUT_USER && !OPT__OUTPUT_BASEPS ) # ifdef PARTICLE @@ -363,6 +388,11 @@ void Aux_Check_Parameter() # endif Aux_Message( stderr, "WARNING : all output options are turned off --> no data will be output !!\n" ); +# ifdef PARTICLE + if ( OPT__OUTPUT_PAR_MESH && OPT__OUTPUT_TOTAL != OUTPUT_FORMAT_HDF5 ) + Aux_Message( stderr, "WARNING : OPT__OUTPUT_PAR_MESH currently only supports OPT__OUTPUT_TOTAL=%d !!\n", OUTPUT_FORMAT_HDF5 ); +# endif + if ( StrLen_Flt <= 0 ) Aux_Message( stderr, "WARNING : StrLen_Flt (%d) <= 0 (OPT__OUTPUT_TEXT_FORMAT_FLT=%s) --> text output might be misaligned !!\n", StrLen_Flt, OPT__OUTPUT_TEXT_FORMAT_FLT ); @@ -405,7 +435,11 @@ void Aux_Check_Parameter() # endif # if ( MODEL == ELBDM ) Flag |= OPT__FLAG_ENGY_DENSITY; + Flag |= OPT__FLAG_SPECTRAL; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + Flag |= OPT__FLAG_INTERFERENCE; # endif +# endif // #if ( MODEL == ELBDM ) # ifdef PARTICLE Flag |= OPT__FLAG_NPAR_PATCH; Flag |= OPT__FLAG_NPAR_CELL; @@ -500,6 +534,11 @@ void Aux_Check_Parameter() Aux_Message( stderr, "WARNING : INT_OPP_SIGN_0TH_ORDER is not recommended for ELBDM !!\n" ); # endif +# if ( defined SUPPORT_SPECTRAL_INT && MODEL != ELBDM ) +# warning : WARNING : SUPPORT_SPECTRAL_INT has not been well tested for MODEL != ELBDM !! + Aux_Message( stderr, "WARNING : SUPPORT_SPECTRAL_INT has not been well tested for MODEL != ELBDM !!\n" ); +# endif + } // if ( MPI_Rank == 0 ) @@ -518,11 +557,6 @@ void Aux_Check_Parameter() # error : ERROR : currently GAMER only supports "LOAD_BALANCE == HILBERT" !! # endif -// for sending fluid data fixed by coarse-fine fluxes correctly - if ( OPT__FIXUP_FLUX && Flu_ParaBuf >= PATCH_SIZE ) - Aux_Error( ERROR_INFO, "\"%s\" is required for \"%s\" in LOAD_BALANCE --> check LB_RecordExchangeFixUpDataPatchID() !!\n", - "Flu_ParaBuf < PATCH_SIZE", "OPT__FIXUP_FLUX" ); - // ensure that the variable "PaddedCr1D" will not overflow const int Padded = 1<BoxScale[0]/PATCH_SIZE + 2*Padded, @@ -944,6 +978,9 @@ void Aux_Check_Parameter() else Aux_Message( stderr, "WARNING : MIN_DENS (%13.7e) is on --> please ensure that this value is reasonable !!\n", MIN_DENS ); + if ( OPT__OPTIMIZE_AGGRESSIVE ) + Aux_Message( stderr, "WARNING : input density for fluid solvers does not respect MIN_DENS when OPT__OPTIMIZE_AGGRESSIVE is on!!\n" ); + if ( MIN_PRES == 0.0 ) Aux_Message( stderr, "WARNING : MIN_PRES == 0.0 could be dangerous and is mainly for debugging only !!\n" ); else @@ -1178,6 +1215,20 @@ void Aux_Check_Parameter() // errors // ------------------------------ +# if ( !defined( ELBDM_SCHEME ) || ( ELBDM_SCHEME != ELBDM_WAVE && ELBDM_SCHEME != ELBDM_HYBRID ) ) +# error : ERROR : ELBDM_SCHEME not defined or unsupported in ELBDM !! +# endif + +# if ( !defined( WAVE_SCHEME ) || ( WAVE_SCHEME != WAVE_FD && WAVE_SCHEME != WAVE_GRAMFE ) ) +# error : ERROR : WAVE_SCHEME not defined or unsupported in ELBDM !! +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# if ( !defined( HYBRID_SCHEME ) || ( HYBRID_SCHEME != HYBRID_UPWIND && HYBRID_SCHEME != HYBRID_FROMM && HYBRID_SCHEME != HYBRID_MUSCL ) ) +# error : ERROR : HYBRID_SCHEME not defined or unsupported in ELBDM_HYBRID !! +# endif +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + # if ( NCOMP_FLUID != 3 ) # error : ERROR : NCOMP_FLUID != 3 in ELBDM !! # endif @@ -1200,6 +1251,10 @@ void Aux_Check_Parameter() # endif # endif // ifdef QUARTIC_SELF_INTERACTION +# ifdef TRACER +# error : ERROR : ELBDM does not support TRACER yet !! +# endif + if ( ELBDM_PLANCK_CONST <= 0.0 ) Aux_Error( ERROR_INFO, "%s (%14.7e) <= 0.0 !!\n", "ELBDM_PLANCK_CONST", ELBDM_PLANCK_CONST ); @@ -1209,25 +1264,89 @@ void Aux_Check_Parameter() if ( OPT__INT_PHASE && OPT__FLU_INT_SCHEME == INT_MINMOD1D ) Aux_Error( ERROR_INFO, "unsupported interpolation scheme \"%s = %d\" when OPT__INT_PHASE is on !!\n", "OPT__FLU_INT_SCHEME", OPT__FLU_INT_SCHEME ); + if ( ELBDM_REMOVE_MOTION_CM != ELBDM_REMOVE_MOTION_CM_NONE && !OPT__CK_CONSERVATION ) + Aux_Error( ERROR_INFO, "\"%s\" must work with \"%s\" !!\n", "ELBDM_REMOVE_MOTION_CM", "OPT__CK_CONSERVATION" ); - if ( MIN_DENS == 0.0 && MPI_Rank == 0 ) - Aux_Message( stderr, "WARNING : MIN_DENS == 0.0 could be dangerous and is mainly for debugging only !!\n" ); - else if ( MPI_Rank == 0 ) - Aux_Message( stderr, "WARNING : MIN_DENS (%13.7e) is on --> please ensure that this value is reasonable !!\n", MIN_DENS ); +# ifdef BITWISE_REPRODUCIBILITY + if ( ELBDM_REMOVE_MOTION_CM != ELBDM_REMOVE_MOTION_CM_NONE ) + Aux_Error( ERROR_INFO, "\"%s\" does NOT support \"%s\" !!\n", "ELBDM_REMOVE_MOTION_CM", "BITWISE_REPRODUCIBILITY" ); +# endif + for (int f=0; f<6; f++) + if ( ELBDM_BASE_SPECTRAL && OPT__BC_FLU[f] != BC_FLU_PERIODIC ) + Aux_Error( ERROR_INFO, "ELBDM_BASE_SPECTRAL only works with periodic boundary condition (OPT__BC_FLU=1) !!\n" ); -// warnings -// ------------------------------ - if ( MPI_Rank == 0 ) { +# ifndef SUPPORT_FFTW + if ( ELBDM_BASE_SPECTRAL ) + Aux_Error( ERROR_INFO, "ELBDM_BASE_SPECTRAL must work with SUPPORT_FFTW !!\n" ); +# endif -# if ( NCOMP_PASSIVE > 0 ) - Aux_Message( stderr, "WARNING : NCOMP_PASSIVE (%d) > 0 but ELBDM does not really support passive scalars !!\n", - NCOMP_PASSIVE ); +// check hybrid scheme parameters for errors +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( OPT__INIT == INIT_BY_FILE && OPT__UM_IC_LEVEL >= ELBDM_FIRST_WAVE_LEVEL && ELBDM_MATCH_PHASE ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID currently does not support OPT__UM_IC_LEVEL (%d) >= ELBDM_FIRST_WAVE_LEVEL (%d)\n" + " from UM_IC because of phase matching (ELBDM_MATCH_PHASE) !!\n", + OPT__UM_IC_LEVEL, ELBDM_FIRST_WAVE_LEVEL ); + + if ( INIT_SUBSAMPLING_NCELL > 1 ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID currently does not support INIT_SUBSAMPLING_NCELL > 1 !!\n" ); + + if ( OPT__OUTPUT_TOTAL == 2 ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID currently does not support OPT__OUTPUT_TOTAL == 2 !!\n" ); + +# if ( FLU_GHOST_SIZE < HYB_GHOST_SIZE ) +# error : ERROR : FLU_GHOST_SIZE needs to be bigger than HYB_GHOST_SIZE !! # endif + if ( ELBDM_BASE_SPECTRAL ) + Aux_Error( ERROR_INFO, "ELBDM_BASE_SPECTRAL is incompatible with ELBDM_SCHEME == ELBDM_HYBRID !!\n" ); + +// for stability of hybrid scheme with wave levels, all fluid levels require that the flag buffer >= PATCH_SIZE +// furthermore, the restriction operation needs to be enabled + if ( MAX_LEVEL > 0 && ELBDM_FIRST_WAVE_LEVEL > 0 && ELBDM_FIRST_WAVE_LEVEL <= MAX_LEVEL ) + { + if ( FLAG_BUFFER_SIZE < PATCH_SIZE ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID with AMR requires that FLAG_BUFFER_SIZE (%d) is equal to or greater than\n" + " PATCH_SIZE (%d) on fluid levels to enforce refinement !!\n", + FLAG_BUFFER_SIZE, PATCH_SIZE ); + + if ( !OPT__FIXUP_RESTRICT ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID with AMR requires the option OPT__FIXUP_RESTRICT !!\n"); + + if ( !OPT__INIT_RESTRICT ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID with AMR requires the option OPT__INIT_RESTRICT !!\n"); + } + +# ifdef LOAD_BALANCE + if ( !OPT__LB_EXCHANGE_FATHER ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID requires the option OPT__LB_EXCHANGE_FATHER for load balancing !!\n"); +# endif + + const double dt_hybrid_max = 0.49; + const double dt_velocity_max = 3.50; + + if ( DT__HYBRID_CFL > dt_hybrid_max ) + Aux_Error( ERROR_INFO, "DT__HYBRID_CFL (%13.7e) > %13.7e is unstable !!\n", + DT__HYBRID_CFL, dt_hybrid_max ); + + if ( DT__HYBRID_CFL_INIT > dt_hybrid_max ) + Aux_Error( ERROR_INFO, "DT__HYBRID_CFL_INIT (%13.7e) > %13.7e is unstable !!\n", + DT__HYBRID_CFL_INIT, dt_hybrid_max ); + + if ( DT__HYBRID_VELOCITY > dt_velocity_max ) + Aux_Error( ERROR_INFO, "DT__HYBRID_VELOCITY (%13.7e) > %13.7e is unstable !!\n", + DT__HYBRID_VELOCITY, dt_velocity_max ); + + if ( DT__HYBRID_VELOCITY_INIT > dt_velocity_max ) + Aux_Error( ERROR_INFO, "DT__HYBRID_VELOCITY_INIT (%13.7e) > %13.7e is unstable !!\n", + DT__HYBRID_VELOCITY_INIT, dt_velocity_max ); +# endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +// check finite-difference scheme for errors +# if ( WAVE_SCHEME == WAVE_FD ) if ( !ELBDM_TAYLOR3_AUTO && ELBDM_TAYLOR3_COEFF < 1.0/8.0 ) - Aux_Message( stderr, "WARNING : ELBDM_TAYLOR3_COEFF (%13.7e) < 0.125 is unconditionally unstable !!\n", - ELBDM_TAYLOR3_COEFF ); + Aux_Error( ERROR_INFO, "ELBDM_TAYLOR3_COEFF (%13.7e) < 0.125 is unconditionally unstable !!\n", + ELBDM_TAYLOR3_COEFF ); # ifdef LAPLACIAN_4TH const double dt_fluid_max = 3.0*M_PI/16.0; @@ -1235,12 +1354,12 @@ void Aux_Check_Parameter() const double dt_fluid_max = 0.25*M_PI; # endif if ( DT__FLUID > dt_fluid_max ) - Aux_Message( stderr, "WARNING : DT__FLUID (%13.7e) > %13.7e is unconditionally unstable (even with %s) !!\n", - DT__FLUID, dt_fluid_max, "ELBDM_TAYLOR3_AUTO" ); + Aux_Error( ERROR_INFO, "DT__FLUID (%13.7e) > %13.7e is unconditionally unstable (even with %s) !!\n", + DT__FLUID, dt_fluid_max, "ELBDM_TAYLOR3_AUTO" ); if ( DT__FLUID_INIT > dt_fluid_max ) - Aux_Message( stderr, "WARNING : DT__FLUID_INIT (%13.7e) > %13.7e is unconditionally unstable (even with %s) !!\n", - DT__FLUID_INIT, dt_fluid_max, "ELBDM_TAYLOR3_AUTO" ); + Aux_Error( ERROR_INFO, "DT__FLUID_INIT (%13.7e) > %13.7e is unconditionally unstable (even with %s) !!\n", + DT__FLUID_INIT, dt_fluid_max, "ELBDM_TAYLOR3_AUTO" ); if ( !ELBDM_TAYLOR3_AUTO ) { @@ -1253,23 +1372,71 @@ void Aux_Check_Parameter() if ( DT__FLUID > dt_fluid_max_normal && ELBDM_TAYLOR3_COEFF <= 1.0/6.0 ) { - Aux_Message( stderr, "WARNING : DT__FLUID (%13.7e) > stability limit (%13.7e) for ELBDM_TAYLOR3_COEFF <= 1/6\n", - DT__FLUID, dt_fluid_max_normal ); - Aux_Message( stderr, " --> Please either (a) set ELBDM_TAYLOR3_COEFF (%13.7e) > 1/6\n", - ELBDM_TAYLOR3_COEFF ); - Aux_Message( stderr, " (b) set DT__FLUID smaller (c) turn on ELBDM_TAYLOR3_AUTO\n" ); + Aux_Error( ERROR_INFO, "DT__FLUID (%13.7e) > stability limit (%13.7e) for ELBDM_TAYLOR3_COEFF <= 1/6\n" + " --> Please set ELBDM_TAYLOR3_COEFF (%13.7e) > 1/6, reduce DT__FLUID, or enable ELBDM_TAYLOR3_AUTO\n", + DT__FLUID, dt_fluid_max_normal, ELBDM_TAYLOR3_COEFF ); } if ( DT__FLUID_INIT > dt_fluid_max_normal && ELBDM_TAYLOR3_COEFF <= 1.0/6.0 ) { - Aux_Message( stderr, "WARNING : DT__FLUID_INIT (%13.7e) > stability limit (%13.7e) for ELBDM_TAYLOR3_COEFF <= 1/6\n", - DT__FLUID_INIT, dt_fluid_max_normal ); - Aux_Message( stderr, " --> Please either (a) set ELBDM_TAYLOR3_COEFF (%13.7e) > 1/6\n", - ELBDM_TAYLOR3_COEFF ); - Aux_Message( stderr, " (b) set DT__FLUID_INIT smaller (c) turn on ELBDM_TAYLOR3_AUTO\n" ); + Aux_Error( ERROR_INFO, "DT__FLUID_INIT (%13.7e) > stability limit (%13.7e) for ELBDM_TAYLOR3_COEFF <= 1/6\n" + " --> Please set ELBDM_TAYLOR3_COEFF (%13.7e) > 1/6, reduce DT__FLUID_INIT, or enable ELBDM_TAYLOR3_AUTO\n", + DT__FLUID_INIT, dt_fluid_max_normal, ELBDM_TAYLOR3_COEFF ); } } +// check local spectral scheme for errors +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) + + const double dt_fluid_max = 0.35; + + if ( DT__FLUID > dt_fluid_max ) + Aux_Error( ERROR_INFO, "%s solver with DT__FLUID (%13.7e) > %13.7e is unstable !!\n", + "WAVE_GRAMFE", DT__FLUID, dt_fluid_max ); + +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) + +# if ( FLU_GHOST_SIZE < 6 ) +# error : ERROR : WAVE_GRAMFE is only stable (empirically) for FLU_GHOST_SIZE >= 6 !! +# endif + +# ifndef GRAMFE_FFT_FLOAT8 +# error : ERROR : WAVE_GRAMFE solver requires GRAMFE_FFT_FLOAT8 for stability !! +# endif + + +# if ( !defined(GPU) && !defined(SUPPORT_FFTW) ) +# error : ERROR : CPU && GRAMFE_SCHEME == GRAMFE_FFT require SUPPORT_FFTW flag !! +# endif + +# if ( !defined(GPU) && SUPPORT_FFTW == FFTW2 && !defined(FLOAT8) ) +# error : ERROR : CPU && GRAMFE_SCHEME == GRAMFE_FFT && SUPPORT_FFTW = FFTW2 require FLOAT8 !! +# endif + +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + +# ifndef SUPPORT_GSL +# error : ERROR : GRAMFE_SCHEME == GRAMFE_MATMUL requires SUPPORT_GSL !! +# endif + +# else // GRAMFE_SCHEME +# error : ERROR : Unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME + +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME + + +// warnings +// ------------------------------ + if ( MPI_Rank == 0 ) { + +# if ( NCOMP_PASSIVE > 0 ) + Aux_Message( stderr, "WARNING : NCOMP_PASSIVE (%d) > 0 but ELBDM does not really support passive scalars !!\n", + NCOMP_PASSIVE ); +# endif + if ( DT__PHASE > 1.0 ) Aux_Message( stderr, "WARNING : DT__PHASE (%13.7e) is not within the normal range [0...1] !!\n", DT__PHASE ); @@ -1281,6 +1448,12 @@ void Aux_Check_Parameter() if ( !OPT__FIXUP_FLUX ) Aux_Message( stderr, "WARNING : %s is disabled in ELBDM even though CONSERVE_MASS is on !!\n", "OPT__FIXUP_FLUX" ); + if ( ELBDM_BASE_SPECTRAL ) + Aux_Message( stderr, "WARNING : mass may not conserve with the %s solver even though CONSERVE_MASS is on !!\n", + "ELBDM_BASE_SPECTRAL" ); + if ( ELBDM_BASE_SPECTRAL && OPT__FIXUP_FLUX ) + Aux_Message( stderr, "WARNING : OPT__FIXUP_FLUX will not be applied to the base level when %s is on !!\n", + "ELBDM_BASE_SPECTRAL" ); # else if ( OPT__FIXUP_FLUX ) Aux_Message( stderr, "WARNING : %s is useless in ELBDM when CONSERVE_MASS is off !!\n", "OPT__FIXUP_FLUX" ); @@ -1289,6 +1462,46 @@ void Aux_Check_Parameter() if ( OPT__INIT == INIT_BY_FILE ) Aux_Message( stderr, "WARNING : currently we don't check MIN_DENS for the initial data loaded from UM_IC !!\n" ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// bitwise reproducibility currently fails in hybrid scheme because of conversion from RE/IM to DENS/PHAS when storing fields in HDF5 +// --> possible solution could be to converting RE/IM <-> DENS/PHAS using high-precision routines to ensure bitwise identity for significant digits +# ifdef BITWISE_REPRODUCIBILITY + Aux_Message( stderr, "WARNING : BITWISE_REPRODUCIBILITY is currently not unsupported for ELBDM_HYBRID during restart !!\n" ); +# endif + + if ( ! OPT__FLAG_INTERFERENCE ) + Aux_Message( stderr, "WARNING : OPT__FLAG_INTERFERENCE is off for ELBDM_HYBRID so simulations will never switch to the wave scheme !!\n" ); + + if ( OPT__INIT == INIT_BY_FILE && ( !OPT__UM_IC_DOWNGRADE || !OPT__UM_IC_REFINE ) ) + Aux_Message( stderr, "WARNING : consider enabling both OPT__UM_IC_DOWNGRADE and OPT__UM_IC_REFINE to properly switch to\n" + " the wave scheme during initialization !!\n" ); +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +# if ( WAVE_SCHEME == WAVE_FD ) + +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) + + if ( OPT__FIXUP_FLUX ) + Aux_Message( stderr, "WARNING : OPT__FIXUP_FLUX will not be applied on wave levels when %s is on !!\n", + "WAVE_SCHEME == WAVE_GRAMFE" ); + +# ifdef CONSERVE_MASS + Aux_Message( stderr, "WARNING : mass is not conserved with the %s solver even though CONSERVE_MASS is on !!\n", + "WAVE_GRAMFE" ); +# endif // # ifdef CONSERVE_MASS + +# else +# error : ERROR : unsupported WAVE_SCHEME +# endif // WAVE_SCHEME + + if ( MIN_DENS == 0.0 ) + Aux_Message( stderr, "WARNING : MIN_DENS == 0.0 could be dangerous and is mainly for debugging only !!\n" ); + else + Aux_Message( stderr, "WARNING : MIN_DENS (%13.7e) is on --> please ensure that this value is reasonable !!\n", MIN_DENS ); + + if ( OPT__OPTIMIZE_AGGRESSIVE ) + Aux_Message( stderr, "WARNING : input density for fluid solvers does not respect MIN_DENS when OPT__OPTIMIZE_AGGRESSIVE is on!!\n" ); + } // if ( MPI_Rank == 0 ) # else diff --git a/src/Auxiliary/Aux_Check_Restrict.cpp b/src/Auxiliary/Aux_Check_Restrict.cpp index e85bac3ff1..0dd84f7fcc 100644 --- a/src/Auxiliary/Aux_Check_Restrict.cpp +++ b/src/Auxiliary/Aux_Check_Restrict.cpp @@ -45,6 +45,11 @@ void Aux_Check_Restrict( const int lv, const char *comment ) # endif int Pass = true; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// convert between phase/dens and re/im + const bool ConvertWaveToFluid = ( !amr->use_wave_flag[lv] && amr->use_wave_flag[lv+1] ); +# endif + int SonPID0, SonPID, ii0, jj0, kk0, ii, jj, kk; double ResData[NCOMP_TOTAL][PATCH_SIZE][PATCH_SIZE][PATCH_SIZE]; @@ -95,8 +100,23 @@ void Aux_Check_Restrict( const int lv, const char *comment ) { u = amr->patch[CSg][lv][PID]->fluid[v][k][j][i]; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// to convert from wave to fluid, store the phase in the REAL component and ignore the imaginary part + if ( ConvertWaveToFluid && v == REAL && v == PHAS ) { + ResData[v][k][j][i] = ELBDM_UnwrapPhase( u, SATAN2(ResData[IMAG][k][j][i], ResData[REAL][k][j][i]) ); + } +# endif + Err = fabs( ( u - ResData[v][k][j][i] ) / ResData[v][k][j][i] ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// skip stub component + if ( ConvertWaveToFluid && v == IMAG && v == STUB ) + { + Err = 0.0; + } +# endif + if ( Err > TolErr ) { if ( Pass ) diff --git a/src/Auxiliary/Aux_ComputeProfile.cpp b/src/Auxiliary/Aux_ComputeProfile.cpp index 1903a9d49f..b408e6a61e 100644 --- a/src/Auxiliary/Aux_ComputeProfile.cpp +++ b/src/Auxiliary/Aux_ComputeProfile.cpp @@ -47,10 +47,11 @@ extern void SetTempIntPara( const int lv, const int Sg0, const double PrepTime, // Data[empty_bin]=Weight[empty_bin]=NCell[empty_bin]=0 // TVarBitIdx : Bitwise indices of target variables for computing the profiles // --> Supported indices (defined in Macro.h): -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY, _VELX, _VELY, _VELZ, _VELR, -// _PRES, _TEMP, _ENTR, _EINT -// [, _DUAL, _CRAY, _POTE, __MAGX_CC, _MAGY_CC, _MAGZ_CC, _MAGE_CC] -// ELBDM : _DENS, _REAL, _IMAG [, _POTE] +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY, _VELX, _VELY, _VELZ, _VELR, +// _PRES, _TEMP, _ENTR, _EINT +// [, _DUAL, _CRAY, _POTE, __MAGX_CC, _MAGY_CC, _MAGZ_CC, _MAGE_CC] +// ELBDM_WAVE : _DENS, _REAL, _IMAG [, _POTE] +// ELBDM_HYBRID : _DENS, _PHAS [, _POTE] // --> All fields supported by Prepare_PatchData() are also supported here // --> For a passive scalar with an integer field index FieldIdx returned by AddField(), // one can convert it to a bitwise field index by BIDX(FieldIdx) @@ -144,7 +145,7 @@ void Aux_ComputeProfile( Profile_t *Prof[], const double Center[], const double # ifdef GRAVITY SupportedFields |= _POTE; # endif -# ifdef PARTICLE +# ifdef MASSIVE_PARTICLES SupportedFields |= _PAR_DENS; SupportedFields |= _TOTAL_DENS; # endif @@ -156,7 +157,7 @@ void Aux_ComputeProfile( Profile_t *Prof[], const double Center[], const double // record whether particle density is requested -# ifdef PARTICLE +# ifdef MASSIVE_PARTICLES bool NeedPar = false; for (int p=0; p these two routines should NOT be put inside an OpenMP parallel region -# ifdef PARTICLE +# ifdef MASSIVE_PARTICLES if ( NeedPar ) { Par_CollectParticle2OneLevel_FreeMemory( lv, SibBufPatch, FaSibBufPatch ); diff --git a/src/Auxiliary/Aux_FindExtrema.cpp b/src/Auxiliary/Aux_FindExtrema.cpp index 21ff112879..e34fd3a19f 100644 --- a/src/Auxiliary/Aux_FindExtrema.cpp +++ b/src/Auxiliary/Aux_FindExtrema.cpp @@ -169,7 +169,7 @@ void Aux_FindExtrema( Extrema_t *Extrema, const ExtremaMode_t Mode, const int Mi const real MinTemp_No = -1.0; const real MinEntr_No = -1.0; const bool DE_Consistency_No = false; -# ifdef PARTICLE +# ifdef MASSIVE_PARTICLES const bool TimingSendPar_No = false; const bool JustCountNPar_No = false; # ifdef LOAD_BALANCE @@ -181,7 +181,7 @@ void Aux_FindExtrema( Extrema_t *Extrema, const ExtremaMode_t Mode, const int Mi const bool SibBufPatch = NULL_BOOL; const bool FaSibBufPatch = NULL_BOOL; # endif -# endif // #ifdef PARTICLE +# endif // #ifdef MASSIVE_PARTICLES // initialize the extrema @@ -205,10 +205,10 @@ void Aux_FindExtrema( Extrema_t *Extrema, const ExtremaMode_t Mode, const int Mi for (int t=0; tField & _PAR_DENS || Extrema->Field & _TOTAL_DENS ) { - Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ|_PAR_TYPE, PredictPos, Time[lv], + Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ, _PAR_TYPE, PredictPos, Time[lv], SibBufPatch, FaSibBufPatch, JustCountNPar_No, TimingSendPar_No ); Prepare_PatchData_InitParticleDensityArray( lv, Time[lv] ); @@ -324,7 +324,7 @@ void Aux_FindExtrema( Extrema_t *Extrema, const ExtremaMode_t Mode, const int Mi } // for (int Disp=0; DispField & _PAR_DENS || Extrema->Field & _TOTAL_DENS ) { Par_CollectParticle2OneLevel_FreeMemory( lv, SibBufPatch, FaSibBufPatch ); diff --git a/src/Auxiliary/Aux_FindWeightedAverageCenter.cpp b/src/Auxiliary/Aux_FindWeightedAverageCenter.cpp index ef558abf98..07d4310bc6 100644 --- a/src/Auxiliary/Aux_FindWeightedAverageCenter.cpp +++ b/src/Auxiliary/Aux_FindWeightedAverageCenter.cpp @@ -115,7 +115,7 @@ void Aux_FindWeightedAverageCenter( double WeightedAverageCenter[], const double const real MinTemp_No = -1.0; const real MinEntr_No = -1.0; const bool DE_Consistency_No = false; -# ifdef PARTICLE +# ifdef MASSIVE_PARTICLES const bool TimingSendPar_No = false; const bool JustCountNPar_No = false; # ifdef LOAD_BALANCE @@ -127,7 +127,7 @@ void Aux_FindWeightedAverageCenter( double WeightedAverageCenter[], const double const bool SibBufPatch = NULL_BOOL; const bool FaSibBufPatch = NULL_BOOL; # endif -# endif // #ifdef PARTICLE +# endif // #ifdef MASSIVE_PARTICLES // initialize the referenced center in the first iteration as the input Center_ref const double MaxR2 = SQR( MaxR ); @@ -183,10 +183,10 @@ void Aux_FindWeightedAverageCenter( double WeightedAverageCenter[], const double for (int t=0; t -#ifdef __APPLE__ -#include -#endif #include "time.h" static int get_cpuid(); @@ -25,8 +22,10 @@ void Aux_TakeNote() if ( MPI_Rank == 0 ) Aux_Message( stdout, "Aux_TakeNote ...\n" ); - const char FileName[] = "Record__Note"; FILE *Note; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Note", OUTPUT_DIR ); + if ( MPI_Rank == 0 ) { @@ -39,11 +38,13 @@ void Aux_TakeNote() fprintf( Note, "***********************************************************************************\n" ); fclose( Note ); - system( "cat ./Input__Note >> Record__Note" ); + char Command[MAX_STRING]; + sprintf( Command, "cat ./Input__Note >> %s/Record__Note", OUTPUT_DIR ); + system( Command ); Note = fopen( FileName, "a" ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the simulation options in the Makefile (numerical schemes) @@ -212,11 +213,43 @@ void Aux_TakeNote() // c. options in ELBDM # elif ( MODEL == ELBDM ) -# ifdef CONSERVE_MASS - fprintf( Note, "CONSERVE_MASS ON\n" ); +// c1. options in ELBDM_HYBRID +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "ELBDM_SCHEME ELBDM_HYBRID\n" ); +# elif ( ELBDM_SCHEME == ELBDM_WAVE ) + fprintf( Note, "ELBDM_SCHEME ELBDM_WAVE\n" ); # else - fprintf( Note, "CONSERVE_MASS OFF\n" ); +# error : ERROR : unsupported ELBDM_SCHEME !! +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# if ( HYBRID_SCHEME == HYBRID_UPWIND ) + fprintf( Note, "HYBRID_SCHEME UPWIND\n" ); +# elif ( HYBRID_SCHEME == HYBRID_FROMM ) + fprintf( Note, "HYBRID_SCHEME FROMM\n" ); +# elif ( HYBRID_SCHEME == HYBRID_MUSCL ) + fprintf( Note, "HYBRID_SCHEME MUSCL\n" ); +# else +# error : ERROR : unsupported HYBRID_SCHEME !! # endif +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +// c2. options in WAVE_GRAMFE +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + fprintf( Note, "WAVE_SCHEME GRAM FE\n" ); + +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) + fprintf( Note, "GRAMFE_SCHEME FFT\n" ); + +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + fprintf( Note, "GRAMFE_SCHEME MATMUL\n" ); +# else +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME + +// c3. options in WAVE_FD +# elif ( WAVE_SCHEME == WAVE_FD ) + fprintf( Note, "WAVE_SCHEME FD\n" ); # ifdef LAPLACIAN_4TH fprintf( Note, "LAPLACIAN_4TH ON\n" ); @@ -224,6 +257,18 @@ void Aux_TakeNote() fprintf( Note, "LAPLACIAN_4TH OFF\n" ); # endif +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME + +// c4. general ELBDM options +# ifdef CONSERVE_MASS + fprintf( Note, "CONSERVE_MASS ON\n" ); +# else + fprintf( Note, "CONSERVE_MASS OFF\n" ); +# endif + + # ifdef QUARTIC_SELF_INTERACTION fprintf( Note, "QUARTIC_SELF_INTERACTION ON\n" ); # else @@ -270,7 +315,7 @@ void Aux_TakeNote() # endif // #ifdef PARTICLE fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the simulation options in the Makefile (optimization and compilation) @@ -319,6 +364,12 @@ void Aux_TakeNote() fprintf( Note, "FLOAT8_PAR OFF\n" ); # endif +# ifdef INT8_PAR + fprintf( Note, "INT8_PAR ON\n" ); +# else + fprintf( Note, "INT8_PAR OFF\n" ); +# endif + # ifdef SERIAL fprintf( Note, "SERIAL ON\n" ); # else @@ -362,6 +413,10 @@ void Aux_TakeNote() fprintf( Note, "GPU_ARCH TURING\n" ); # elif ( GPU_ARCH == AMPERE ) fprintf( Note, "GPU_ARCH AMPERE\n" ); +# elif ( GPU_ARCH == ADA_LOVELACE ) + fprintf( Note, "GPU_ARCH ADA_LOVELACE\n" ); +# elif ( GPU_ARCH == HOPPER ) + fprintf( Note, "GPU_ARCH HOPPER\n" ); # else fprintf( Note, "GPU_ARCH UNKNOWN\n" ); # endif @@ -433,8 +488,14 @@ void Aux_TakeNote() fprintf( Note, "RANDOM_NUMBER UNKNOWN\n" ); # endif +# ifdef SUPPORT_SPECTRAL_INT + fprintf( Note, "SUPPORT_SPECTRAL_INT ON\n" ); +# else + fprintf( Note, "SUPPORT_SPECTRAL_INT OFF\n" ); +# endif + fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the simulation options in Macro.h, CUFLU.h and CUPOT.h @@ -548,6 +609,31 @@ void Aux_TakeNote() # elif ( MODEL == ELBDM ) +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + fprintf( Note, "GRAMFE_GAMMA % d\n", GRAMFE_GAMMA ); + fprintf( Note, "GRAMFE_G % d\n", GRAMFE_G ); + fprintf( Note, "GRAMFE_NDELTA % d\n", GRAMFE_NDELTA ); + fprintf( Note, "GRAMFE_ND % d\n", GRAMFE_ND ); + fprintf( Note, "GRAMFE_ORDER % d\n", GRAMFE_ORDER ); + fprintf( Note, "GRAMFE_FLU_NXT % d\n", GRAMFE_FLU_NXT ); + +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) +# ifdef GRAMFE_FFT_FLOAT8 + fprintf( Note, "GRAMFE_FFT_FLOAT8 ON\n" ); +# else + fprintf( Note, "GRAMFE_FFT_FLOAT8 OFF\n" ); +# endif +# endif // #if ( GRAMFE_SCHEME == GRAMFE_FFT ) + +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +# ifdef GRAMFE_MATMUL_FLOAT8 + fprintf( Note, "GRAMFE_MATMUL_FLOAT8 ON\n" ); +# else + fprintf( Note, "GRAMFE_MATMUL_FLOAT8 OFF\n" ); +# endif +# endif // #if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +# endif // #if ( WAVE_SCHEME == WAVE_GRAMFE ) + # else # error : ERROR : unsupported MODEL !! # endif // MODEL @@ -577,7 +663,7 @@ void Aux_TakeNote() fprintf( Note, "SOR_USE_PADDING OFF\n" ); # endif - fprintf( Note, "SOR_MOD_REDUCTION % d\n", SOR_MOD_REDUCTION ); + fprintf( Note, "SOR_MOD_REDUCTION % d\n", SOR_MOD_REDUCTION ); # endif // #if ( defined GRAVITY && POT_SCHEME == SOR && defined GPU ) # ifdef GPU @@ -596,7 +682,7 @@ void Aux_TakeNote() # endif // #ifdef GPU fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the symbolic constants @@ -645,6 +731,9 @@ void Aux_TakeNote() fprintf( Note, "#define DER_GHOST_SIZE % d\n", DER_GHOST_SIZE ); # ifdef FEEDBACK fprintf( Note, "#define FB_GHOST_SIZE % d\n", FB_GHOST_SIZE ); +# endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "#define HYB_GHOST_SIZE % d\n", HYB_GHOST_SIZE ); # endif fprintf( Note, "#define FLU_NXT % d\n", FLU_NXT ); # ifdef GRAVITY @@ -657,13 +746,16 @@ void Aux_TakeNote() # endif # endif // #ifdef GRAVITY # ifdef MASSIVE_PARTICLES - fprintf( Note, "#define RHOEXT_NXT % d\n", RHOEXT_NXT ); + fprintf( Note, "#define RHOEXT_NXT % d\n", RHOEXT_NXT ); # endif fprintf( Note, "#define SRC_NXT % d\n", SRC_NXT ); fprintf( Note, "#define DER_NXT % d\n", DER_NXT ); # ifdef FEEDBACK fprintf( Note, "#define FB_NXT % d\n", FB_NXT ); # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "#define HYB_NXT % d\n", HYB_NXT ); +# endif # if ( MODEL == HYDRO ) fprintf( Note, "#define EOS_NAUX_MAX % d\n", EOS_NAUX_MAX ); fprintf( Note, "#define EOS_NTABLE_MAX % d\n", EOS_NTABLE_MAX ); @@ -673,13 +765,18 @@ void Aux_TakeNote() fprintf( Note, "#define EXT_ACC_NAUX_MAX % d\n", EXT_ACC_NAUX_MAX ); fprintf( Note, "#define EXT_POT_NGENE_MAX % d\n", EXT_POT_NGENE_MAX ); # endif +# if ( MODEL == HYDRO ) fprintf( Note, "#define SRC_NAUX_DLEP % d\n", SRC_NAUX_DLEP ); fprintf( Note, "#define SRC_DLEP_PROF_NVAR % d\n", SRC_DLEP_PROF_NVAR ); fprintf( Note, "#define SRC_DLEP_PROF_NBINMAX % d\n", SRC_DLEP_PROF_NBINMAX ); +# endif fprintf( Note, "#define SRC_NAUX_USER % d\n", SRC_NAUX_USER ); # ifdef GPU fprintf( Note, "#define FLU_BLOCK_SIZE_X % d\n", FLU_BLOCK_SIZE_X ); fprintf( Note, "#define FLU_BLOCK_SIZE_Y % d\n", FLU_BLOCK_SIZE_Y ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "#define FLU_HJ_BLOCK_SIZE_Y % d\n", FLU_HJ_BLOCK_SIZE_Y ); +# endif # ifdef GRAVITY # if ( POT_SCHEME == SOR ) fprintf( Note, "#define POT_BLOCK_SIZE_Z % d\n", POT_BLOCK_SIZE_Z ); @@ -696,9 +793,12 @@ void Aux_TakeNote() fprintf( Note, "#define SRC_BLOCK_SIZE % d\n", SRC_BLOCK_SIZE ); # endif // #ifdef GPU # ifdef PARTICLE - fprintf( Note, "#define PAR_NATT_TOTAL % d\n", PAR_NATT_TOTAL ); - fprintf( Note, "#define PAR_NATT_USER % d\n", PAR_NATT_USER ); - fprintf( Note, "#define PAR_NATT_STORED % d\n", PAR_NATT_STORED ); + fprintf( Note, "#define PAR_NATT_FLT_TOTAL % d\n", PAR_NATT_FLT_TOTAL ); + fprintf( Note, "#define PAR_NATT_FLT_USER % d\n", PAR_NATT_FLT_USER ); + fprintf( Note, "#define PAR_NATT_FLT_STORED % d\n", PAR_NATT_FLT_STORED ); + fprintf( Note, "#define PAR_NATT_INT_TOTAL % d\n", PAR_NATT_INT_TOTAL ); + fprintf( Note, "#define PAR_NATT_INT_USER % d\n", PAR_NATT_INT_USER ); + fprintf( Note, "#define PAR_NATT_INT_STORED % d\n", PAR_NATT_INT_STORED ); fprintf( Note, "#define PAR_NTYPE % d\n", PAR_NTYPE ); # endif fprintf( Note, "#define MAX_STRING % d\n", MAX_STRING ); @@ -706,7 +806,7 @@ void Aux_TakeNote() fprintf( Note, "#define HUGE_NUMBER % 21.14e\n", HUGE_NUMBER ); fprintf( Note, "#define MAX_ERROR % 21.14e\n", MAX_ERROR ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of simulation scale @@ -730,7 +830,7 @@ void Aux_TakeNote() fprintf( Note, "END_T % 21.14e\n", END_T ); fprintf( Note, "END_STEP % ld\n", END_STEP ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of test problems @@ -738,7 +838,7 @@ void Aux_TakeNote() fprintf( Note, "***********************************************************************************\n" ); fprintf( Note, "TESTPROB_ID % d\n", TESTPROB_ID ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of code units @@ -785,7 +885,7 @@ void Aux_TakeNote() } fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of boundary condition @@ -802,7 +902,7 @@ void Aux_TakeNote() fprintf( Note, "GFUNC_COEFF0 % 14.7e\n", GFUNC_COEFF0 ); # endif fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of particle @@ -818,6 +918,7 @@ void Aux_TakeNote() fprintf( Note, "Par->Init % d\n", amr->Par->Init ); fprintf( Note, "Par->ParICFormat % d\n", amr->Par->ParICFormat ); fprintf( Note, "PAR_IC_FLOAT8 % d\n", PAR_IC_FLOAT8 ); + fprintf( Note, "PAR_IC_INT8 % d\n", PAR_IC_INT8 ); fprintf( Note, "Par->ParICMass % 14.7e\n", amr->Par->ParICMass ); fprintf( Note, "Par->ParICType % d\n", amr->Par->ParICType ); fprintf( Note, "Par->Interp % d\n", amr->Par->Interp ); @@ -832,7 +933,7 @@ void Aux_TakeNote() fprintf( Note, "Par->TracerVelCorr % d\n", amr->Par->TracerVelCorr ); fprintf( Note, "OPT__FREEZE_PAR % d\n", OPT__FREEZE_PAR ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif @@ -844,7 +945,7 @@ void Aux_TakeNote() fprintf( Note, "OMEGA_M0 % 14.7e\n", OMEGA_M0 ); fprintf( Note, "HUBBLE0 (h) % 14.7e\n", HUBBLE0 ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif @@ -862,7 +963,13 @@ void Aux_TakeNote() # endif # if ( MODEL == ELBDM ) fprintf( Note, "DT__PHASE % 14.7e\n", DT__PHASE ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "DT__HYBRID_CFL % 14.7e\n", DT__HYBRID_CFL ); + fprintf( Note, "DT__HYBRID_CFL_INIT % 14.7e\n", DT__HYBRID_CFL_INIT ); + fprintf( Note, "DT__HYBRID_VELOCITY % 14.7e\n", DT__HYBRID_VELOCITY ); + fprintf( Note, "DT__HYBRID_VELOCITY_INIT % 14.7e\n", DT__HYBRID_VELOCITY_INIT ); # endif +# endif // #if ( MODEL == ELBDM ) # ifdef PARTICLE fprintf( Note, "DT__PARVEL % 14.7e\n", DT__PARVEL ); fprintf( Note, "DT__PARVEL_MAX % 14.7e\n", DT__PARVEL_MAX ); @@ -889,7 +996,7 @@ void Aux_TakeNote() fprintf( Note, "AUTO_REDUCE_INT_MONO_MIN % 14.7e\n", AUTO_REDUCE_INT_MONO_MIN ); fprintf( Note, "OPT__RECORD_DT % d\n", OPT__RECORD_DT ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of domain refinement @@ -916,7 +1023,12 @@ void Aux_TakeNote() # endif # if ( MODEL == ELBDM ) fprintf( Note, "OPT__FLAG_ENGY_DENSITY % d\n", OPT__FLAG_ENGY_DENSITY ); + fprintf( Note, "OPT__FLAG_SPECTRAL % d\n", OPT__FLAG_SPECTRAL ); + fprintf( Note, "OPT__FLAG_SPECTRAL_N % d\n", OPT__FLAG_SPECTRAL_N ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "OPT__FLAG_INTERFERENCE % d\n", OPT__FLAG_INTERFERENCE ); # endif +# endif // #if ( MODEL == ELBDM ) fprintf( Note, "OPT__FLAG_LOHNER_DENS % d\n", OPT__FLAG_LOHNER_DENS ); # if ( MODEL == HYDRO ) fprintf( Note, "OPT__FLAG_LOHNER_ENGY % d\n", OPT__FLAG_LOHNER_ENGY ); @@ -935,6 +1047,20 @@ void Aux_TakeNote() fprintf( Note, "OPT__FLAG_USER % d\n", OPT__FLAG_USER ); fprintf( Note, "OPT__FLAG_USER_NUM % d\n", OPT__FLAG_USER_NUM ); fprintf( Note, "OPT__FLAG_REGION % d\n", OPT__FLAG_REGION ); + fprintf( Note, "OPT__FLAG_ANGULAR % d\n", OPT__FLAG_ANGULAR ); + if ( OPT__FLAG_ANGULAR ) + { + fprintf( Note, " FLAG_ANGULAR_CEN_X % 14.7e\n", FLAG_ANGULAR_CEN_X ); + fprintf( Note, " FLAG_ANGULAR_CEN_Y % 14.7e\n", FLAG_ANGULAR_CEN_Y ); + fprintf( Note, " FLAG_ANGULAR_CEN_Z % 14.7e\n", FLAG_ANGULAR_CEN_Z ); + } + fprintf( Note, "OPT__FLAG_RADIAL % d\n", OPT__FLAG_RADIAL ); + if ( OPT__FLAG_RADIAL ) + { + fprintf( Note, " FLAG_RADIAL_CEN_X % 14.7e\n", FLAG_RADIAL_CEN_X ); + fprintf( Note, " FLAG_RADIAL_CEN_Y % 14.7e\n", FLAG_RADIAL_CEN_Y ); + fprintf( Note, " FLAG_RADIAL_CEN_Z % 14.7e\n", FLAG_RADIAL_CEN_Z ); + } # ifdef PARTICLE fprintf( Note, "OPT__FLAG_NPAR_PATCH % d\n", OPT__FLAG_NPAR_PATCH ); fprintf( Note, "OPT__FLAG_NPAR_CELL % d\n", OPT__FLAG_NPAR_CELL ); @@ -951,7 +1077,7 @@ void Aux_TakeNote() fprintf( Note, "OPT__REUSE_MEMORY % d\n", OPT__REUSE_MEMORY ); fprintf( Note, "OPT__MEMORY_POOL % d\n", OPT__MEMORY_POOL ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of parallelization @@ -972,10 +1098,11 @@ void Aux_TakeNote() fprintf( Note, "LB_PAR_WEIGHT % 14.7e\n", amr->LB->Par_Weight ); # endif fprintf( Note, "OPT__RECORD_LOAD_BALANCE % d\n", OPT__RECORD_LOAD_BALANCE ); + fprintf( Note, "OPT__LB_EXCHANGE_FATHER % d\n", OPT__LB_EXCHANGE_FATHER ); # endif // #ifdef LOAD_BALANCE fprintf( Note, "OPT__MINIMIZE_MPI_BARRIER % d\n", OPT__MINIMIZE_MPI_BARRIER ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif // #ifndef SERIAL @@ -987,7 +1114,7 @@ void Aux_TakeNote() fprintf( Note, "SRC_USER % d\n", SrcTerms.User ); fprintf( Note, "SRC_GPU_NPGROUP % d\n", SRC_GPU_NPGROUP ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of Grackle @@ -1010,7 +1137,7 @@ void Aux_TakeNote() fprintf( Note, "GRACKLE_H2_OPA_APPROX % d\n", GRACKLE_H2_OPA_APPROX ); fprintf( Note, "CHE_GPU_NPGROUP % d\n", CHE_GPU_NPGROUP ); } fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif // #ifdef SUPPORT_GRACKLE @@ -1030,7 +1157,7 @@ void Aux_TakeNote() fprintf( Note, " =% 14.7e Msun\n", SF_CREATE_STAR_MIN_STAR_MASS*UNIT_M/Const_Msun ); fprintf( Note, "SF_CREATE_STAR_MAX_STAR_MFRAC % 14.7e\n", SF_CREATE_STAR_MAX_STAR_MFRAC ); } fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif // #ifdef STAR_FORMATION @@ -1043,7 +1170,7 @@ void Aux_TakeNote() fprintf( Note, "FB_SNE % d\n", FB_SNE ); fprintf( Note, "FB_USER % d\n", FB_USER ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif // #ifdef FEEDBACK @@ -1117,21 +1244,28 @@ void Aux_TakeNote() fprintf( Note, "ELBDM_MASS % 14.7e %s\n", ELBDM_MASS*UNIT_M/(Const_eV/SQR(Const_c)), "ev/c^2" ); # endif } - else - fprintf( Note, "ELBDM_MASS % 14.7e\n", ELBDM_MASS ); - fprintf( Note, "ELBDM_PLANCK_CONST % 14.7e\n", ELBDM_PLANCK_CONST ); - fprintf( Note, "ELBDM_ETA % 14.7e\n", ELBDM_ETA ); + else { + fprintf( Note, "ELBDM_MASS % 14.7e\n", ELBDM_MASS ); + } + fprintf( Note, "ELBDM_PLANCK_CONST % 14.7e\n", ELBDM_PLANCK_CONST ); + fprintf( Note, "ELBDM_ETA % 14.7e\n", ELBDM_ETA ); # ifdef QUARTIC_SELF_INTERACTION - fprintf( Note, "ELBDM_LAMBDA % 14.7e\n", ELBDM_LAMBDA ); + fprintf( Note, "ELBDM_LAMBDA % 14.7e\n", ELBDM_LAMBDA ); +# endif + fprintf( Note, "ELBDM_TAYLOR3_COEFF % 14.7e\n", ELBDM_TAYLOR3_COEFF ); + fprintf( Note, "ELBDM_TAYLOR3_AUTO % d\n", ELBDM_TAYLOR3_AUTO ); + fprintf( Note, "ELBDM_REMOVE_MOTION_CM % d\n", ELBDM_REMOVE_MOTION_CM ); + fprintf( Note, "ELBDM_BASE_SPECTRAL % d\n", ELBDM_BASE_SPECTRAL ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + fprintf( Note, "ELBDM_MATCH_PHASE % d\n", ELBDM_MATCH_PHASE ); + fprintf( Note, "ELBDM_FIRST_WAVE_LEVEL % d\n", ELBDM_FIRST_WAVE_LEVEL ); # endif - fprintf( Note, "ELBDM_TAYLOR3_COEFF % 14.7e\n", ELBDM_TAYLOR3_COEFF ); - fprintf( Note, "ELBDM_TAYLOR3_AUTO % d\n", ELBDM_TAYLOR3_AUTO ); # else # error : ERROR : unsupported MODEL !! # endif // MODEL fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of Fluid solver in different models @@ -1236,7 +1370,7 @@ void Aux_TakeNote() fprintf( Note, "FFTW3_Single_OMP_Enabled % d\n", FFTW3_Single_OMP_Enabled ); # endif // # if ( SUPPORT_FFTW == FFTW3 ) fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of Poisson and Gravity solvers @@ -1274,7 +1408,7 @@ void Aux_TakeNote() fprintf( Note, "OPT__GRAVITY_EXTRA_MASS % d\n", OPT__GRAVITY_EXTRA_MASS ); fprintf( Note, "AveDensity_Init % 14.7e\n", AveDensity_Init ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif // #ifdef GRAVITY @@ -1330,18 +1464,19 @@ void Aux_TakeNote() fprintf( Note, "\n" ); } fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of interpolation schemes fprintf( Note, "Parameters of Interpolation Schemes\n" ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "OPT__INT_TIME % d\n", OPT__INT_TIME ); + fprintf( Note, "OPT__INT_TIME % d\n", OPT__INT_TIME ); # if ( MODEL == HYDRO ) - fprintf( Note, "OPT__INT_PRIM % d\n", OPT__INT_PRIM ); + fprintf( Note, "OPT__INT_PRIM % d\n", OPT__INT_PRIM ); # endif # if ( MODEL == ELBDM ) - fprintf( Note, "OPT__INT_PHASE % d\n", OPT__INT_PHASE ); + fprintf( Note, "OPT__INT_PHASE % d\n", OPT__INT_PHASE ); + fprintf( Note, "OPT__RES_PHASE % d\n", OPT__RES_PHASE ); # endif fprintf( Note, "OPT__FLU_INT_SCHEME %s\n", ( OPT__FLU_INT_SCHEME == INT_MINMOD3D ) ? "MINMOD3D" : ( OPT__FLU_INT_SCHEME == INT_MINMOD1D ) ? "MINMOD1D" : @@ -1350,6 +1485,7 @@ void Aux_TakeNote() ( OPT__FLU_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__FLU_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__FLU_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__FLU_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); # ifdef MHD fprintf( Note, "OPT__MAG_INT_SCHEME %s\n", ( OPT__MAG_INT_SCHEME == INT_MINMOD3D ) ? "MINMOD3D" : @@ -1359,6 +1495,7 @@ void Aux_TakeNote() ( OPT__MAG_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__MAG_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__MAG_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__MAG_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); # endif # ifdef GRAVITY @@ -1369,6 +1506,7 @@ void Aux_TakeNote() ( OPT__POT_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__POT_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__POT_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__POT_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); fprintf( Note, "OPT__RHO_INT_SCHEME %s\n", ( OPT__RHO_INT_SCHEME == INT_MINMOD3D ) ? "MINMOD3D" : ( OPT__RHO_INT_SCHEME == INT_MINMOD1D ) ? "MINMOD1D" : @@ -1377,6 +1515,7 @@ void Aux_TakeNote() ( OPT__RHO_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__RHO_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__RHO_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__RHO_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); fprintf( Note, "OPT__GRA_INT_SCHEME %s\n", ( OPT__GRA_INT_SCHEME == INT_MINMOD3D ) ? "MINMOD3D" : ( OPT__GRA_INT_SCHEME == INT_MINMOD1D ) ? "MINMOD1D" : @@ -1385,6 +1524,7 @@ void Aux_TakeNote() ( OPT__GRA_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__GRA_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__GRA_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__GRA_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); # endif fprintf( Note, "OPT__REF_FLU_INT_SCHEME %s\n", ( OPT__REF_FLU_INT_SCHEME == INT_MINMOD3D ) ? "MINMOD3D" : @@ -1394,6 +1534,7 @@ void Aux_TakeNote() ( OPT__REF_FLU_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__REF_FLU_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__REF_FLU_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__REF_FLU_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); # ifdef MHD fprintf( Note, "OPT__REF_MAG_INT_SCHEME %s\n", ( OPT__REF_MAG_INT_SCHEME == INT_MINMOD3D ) ? "MINMOD3D" : @@ -1403,6 +1544,7 @@ void Aux_TakeNote() ( OPT__REF_MAG_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__REF_MAG_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__REF_MAG_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__REF_MAG_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); # endif # ifdef GRAVITY @@ -1413,16 +1555,25 @@ void Aux_TakeNote() ( OPT__REF_POT_INT_SCHEME == INT_QUAD ) ? "QUAD" : ( OPT__REF_POT_INT_SCHEME == INT_CQUAR ) ? "CQUAR" : ( OPT__REF_POT_INT_SCHEME == INT_QUAR ) ? "QUAR" : + ( OPT__REF_POT_INT_SCHEME == INT_SPECTRAL ) ? "SPECTRAL" : "UNKNOWN" ); # endif - fprintf( Note, "INT_MONO_COEFF % 14.7e\n", INT_MONO_COEFF ); + fprintf( Note, "INT_MONO_COEFF % 14.7e\n", INT_MONO_COEFF ); # ifdef MHD - fprintf( Note, "INT_MONO_COEFF_B % 14.7e\n", INT_MONO_COEFF_B ); + fprintf( Note, "INT_MONO_COEFF_B % 14.7e\n", INT_MONO_COEFF_B ); # endif - fprintf( Note, "MONO_MAX_ITER % d\n", MONO_MAX_ITER ); - fprintf( Note, "INT_OPP_SIGN_0TH_ORDER % d\n", INT_OPP_SIGN_0TH_ORDER ); + fprintf( Note, "MONO_MAX_ITER % d\n", MONO_MAX_ITER ); + fprintf( Note, "INT_OPP_SIGN_0TH_ORDER % d\n", INT_OPP_SIGN_0TH_ORDER ); +# ifdef SUPPORT_SPECTRAL_INT + fprintf( Note, "SPEC_INT_TABLE_PATH %s\n", SPEC_INT_TABLE_PATH ); + fprintf( Note, "SPEC_INT_GHOST_BOUNDARY % d\n", SPEC_INT_GHOST_BOUNDARY ); +# if ( MODEL == ELBDM ) + fprintf( Note, "SPEC_INT_XY_INSTEAD_DEPHA % d\n", SPEC_INT_XY_INSTEAD_DEPHA ); + fprintf( Note, "SPEC_INT_VORTEX_THRESHOLD % 14.7e\n", SPEC_INT_VORTEX_THRESHOLD ); +# endif +# endif // #ifdef SUPPORT_SPECTRAL_INT fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of data dump @@ -1432,8 +1583,12 @@ void Aux_TakeNote() fprintf( Note, "OPT__OUTPUT_PART % d\n", OPT__OUTPUT_PART ); fprintf( Note, "OPT__OUTPUT_USER % d\n", OPT__OUTPUT_USER ); fprintf( Note, "OPT__OUTPUT_TEXT_FORMAT_FLT %s\n", OPT__OUTPUT_TEXT_FORMAT_FLT ); + fprintf( Note, "OPT__OUTPUT_TEXT_LENGTH_INT % d\n", OPT__OUTPUT_TEXT_LENGTH_INT ); # ifdef PARTICLE fprintf( Note, "OPT__OUTPUT_PAR_MODE % d\n", OPT__OUTPUT_PAR_MODE ); +# ifdef TRACER + fprintf( Note, "OPT__OUTPUT_PAR_MESH % d\n", OPT__OUTPUT_PAR_MESH ); +# endif # endif fprintf( Note, "OPT__OUTPUT_BASEPS % d\n", OPT__OUTPUT_BASEPS ); fprintf( Note, "OPT__OUTPUT_BASE % d\n", OPT__OUTPUT_BASE ); @@ -1487,8 +1642,9 @@ void Aux_TakeNote() fprintf( Note, "OUTPUT_PART_Y % 21.14e\n", OUTPUT_PART_Y ); fprintf( Note, "OUTPUT_PART_Z % 21.14e\n", OUTPUT_PART_Z ); fprintf( Note, "INIT_DUMPID % d\n", INIT_DUMPID ); + fprintf( Note, "OUTPUT_DIR %s\n", OUTPUT_DIR ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of yt inline analysis @@ -1502,7 +1658,7 @@ void Aux_TakeNote() fprintf( Note, "YT_JUPYTER_USE_CONNECTION_FILE % d\n", YT_JUPYTER_USE_CONNECTION_FILE ); # endif fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); # endif @@ -1533,7 +1689,7 @@ void Aux_TakeNote() fprintf( Note, "OPT__OPTIMIZE_AGGRESSIVE % d\n", OPT__OPTIMIZE_AGGRESSIVE ); fprintf( Note, "OPT__SORT_PATCH_BY_LBIDX % d\n", OPT__SORT_PATCH_BY_LBIDX ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the parameters of simulation checks @@ -1566,7 +1722,7 @@ void Aux_TakeNote() # endif fprintf( Note, "OPT__CK_INPUT_FLUID % d\n", OPT__CK_INPUT_FLUID ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the flag criterion (density/density gradient/pressure gradient/user-defined) @@ -1577,7 +1733,7 @@ void Aux_TakeNote() fprintf( Note, " Level Density\n" ); for (int lv=0; lv0.5) ); + fprintf( Note, "***********************************************************************************\n" ); + fprintf( Note, "\n\n" ); } # endif +# endif // #if ( MODEL == ELBDM ) # if ( MODEL == HYDRO ) # ifndef COSMIC_RAY @@ -1688,7 +1892,7 @@ void Aux_TakeNote() fprintf( Note, "%7d%20.7e%20.7e%20.7e%20.7e%20.7e\n", lv, FlagTable_Lohner[lv][0], FlagTable_Lohner[lv][1], FlagTable_Lohner[lv][2], FlagTable_Lohner[lv][3], FlagTable_Lohner[lv][4] ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); } if ( OPT__FLAG_USER ) @@ -1703,7 +1907,7 @@ void Aux_TakeNote() fprintf( Note, "\n" ); } fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); } # ifdef PARTICLE @@ -1714,7 +1918,7 @@ void Aux_TakeNote() fprintf( Note, " Level # of Particles\n" ); for (int lv=0; lvdh[lv], 10, ' ', amr->scale[lv] ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the compilation time of the file Aux_TakeNote.cpp @@ -1754,7 +1958,7 @@ void Aux_TakeNote() fprintf( Note, "***********************************************************************************\n" ); fprintf( Note, "%s %s\n", __DATE__, __TIME__ ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the current time when running GAMER @@ -1763,7 +1967,7 @@ void Aux_TakeNote() fprintf( Note, "***********************************************************************************\n" ); fprintf( Note, "%s", ctime( &t ) ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); // record the git information @@ -1815,7 +2019,7 @@ void Aux_TakeNote() { Note = fopen( FileName, "a" ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); fclose( Note ); } # endif // #ifndef GPU @@ -1884,7 +2088,7 @@ void Aux_TakeNote() { Note = fopen( FileName, "a" ); fprintf( Note, "***********************************************************************************\n" ); - fprintf( Note, "\n\n"); + fprintf( Note, "\n\n" ); fclose( Note ); } # endif // #ifdef OPENMP @@ -1900,23 +2104,16 @@ void Aux_TakeNote() // Function : get_cpuid // Description : Get the CPU ID // -// Note : Work on both macOS and Linux systems +// Note : Works only on Linux systems; macOS is ignored //------------------------------------------------------------------------------------------------------- int get_cpuid() { -// See https://stackoverflow.com/questions/33745364/sched-getcpu-equivalent-for-os-x int CPU; # ifdef __APPLE__ - uint32_t CPUInfo[4]; - __cpuid_count(1, 0, CPUInfo[0], CPUInfo[1], CPUInfo[2], CPUInfo[3]); - if ((CPUInfo[3] & (1 << 9)) == 0) { - CPU = -1; /* no APIC on chip */ - } else { - CPU = (unsigned)CPUInfo[1] >> 24; - } - if (CPU < 0) CPU = 0; +// macOS does not have an implementation of sched_getcpu that works cross-arch + CPU = -1; # else CPU = sched_getcpu(); # endif diff --git a/src/Auxiliary/Aux_Timing.cpp b/src/Auxiliary/Aux_Timing.cpp index 18eb4574df..a348aa170d 100644 --- a/src/Auxiliary/Aux_Timing.cpp +++ b/src/Auxiliary/Aux_Timing.cpp @@ -226,9 +226,9 @@ void Aux_ResetTimer() void Aux_Record_Timing() { - const char FileName[] = "Record__Timing"; - FILE *File = NULL; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Timing", OUTPUT_DIR ); const char Comment_LB[][4] = { "Max", "Min", "Ave" }; const int NLB = 8; @@ -986,9 +986,10 @@ void Timing__Solver( const char FileName[] ) void Aux_AccumulatedTiming( const double TotalT, double InitT, double OtherT ) { - const char FileName[] = "Record__Timing"; const char Comment_LB[][4] = { "Max", "Min", "Ave" }; const int NNewTimer = 2; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Timing", OUTPUT_DIR ); double dt_P, Flu_P, Gra_P, Src_P, Che_P, SF_P, FB_P, FixUp_P, Flag_P, Refine_P, Sum_P, MPI_Grid_P; double Aux_P, Corr_P, Output_P, LB_P, Par_P, MPI_Par_P, libyt_P, Init_P, Other_P; diff --git a/src/Buffer/Buf_GetBufferData.cpp b/src/Buffer/Buf_GetBufferData.cpp index ed1b8078bf..e5096b8083 100644 --- a/src/Buffer/Buf_GetBufferData.cpp +++ b/src/Buffer/Buf_GetBufferData.cpp @@ -32,8 +32,9 @@ // COARSE_FINE_ELECTRIC : electric field across the coarse-fine boundaries (MHD ONLY) // TVarCC : Target cell-centered variables to exchange // --> Supported variables in different models: -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, _POTE] -// ELBDM : _DENS, _REAL, _IMAG [, _POTE] +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, _POTE] +// ELBDM_WAVE : _DENS, _REAL, _IMAG [, _POTE] +// ELBDM_HYBRID : _DENS, _PHAS [, _POTE] // --> _FLUID, _PASSIVE, and _TOTAL apply to all models // --> In addition, the flux variables (e.g., _FLUX_DENS) are also supported // Restrictions : diff --git a/src/Buffer/Buf_RecordBoundaryPatch.cpp b/src/Buffer/Buf_RecordBoundaryPatch.cpp index 0df249af26..4371aa653a 100644 --- a/src/Buffer/Buf_RecordBoundaryPatch.cpp +++ b/src/Buffer/Buf_RecordBoundaryPatch.cpp @@ -5,7 +5,7 @@ -//###OPTIMIZATION : use heap sort or quick sort +//###OPTIMIZATION: use heap sort or quick sort //------------------------------------------------------------------------------------------------------- // Function : Buf_RecordBoundaryPatch // Description : Record the patches near the sub-domain boundaries in amr->ParaVar->BounP_IDList[] diff --git a/src/Feedback/FB_AdvanceDt.cpp b/src/Feedback/FB_AdvanceDt.cpp index f3eca747c5..5428a1d3ea 100644 --- a/src/Feedback/FB_AdvanceDt.cpp +++ b/src/Feedback/FB_AdvanceDt.cpp @@ -6,14 +6,14 @@ // prototypes of built-in feedbacks int FB_SNe( const int lv, const double TimeNew, const double TimeOld, const double dt, - const int NPar, const long *ParSortID, real_par *ParAtt[PAR_NATT_TOTAL], + const int NPar, const long *ParSortID, real_par *ParAttFlt[PAR_NATT_FLT_TOTAL], long_par *ParAttInt[PAR_NATT_INT_TOTAL], real (*Fluid)[FB_NXT][FB_NXT][FB_NXT], const double EdgeL[], const double dh, bool CoarseFine[], const int TID, RandomNumber_t *RNG ); // user-specified feedback to be set by a test problem initializer int (*FB_User_Ptr)( const int lv, const double TimeNew, const double TimeOld, const double dt, - const int NPar, const long *ParSortID, real_par *ParAtt[PAR_NATT_TOTAL], + const int NPar, const long *ParSortID, real_par *ParAttFlt[PAR_NATT_FLT_TOTAL], long_par *ParAttInt[PAR_NATT_INT_TOTAL], real (*Fluid)[FB_NXT][FB_NXT][FB_NXT], const double EdgeL[], const double dh, bool CoarseFine[], const int TID, RandomNumber_t *RNG ) = NULL; @@ -59,49 +59,65 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // --> for simplicity, we disable particle position prediction (PredictPos_No) currently even though particles // just crossing from coarse (lv-1) to fine (lv) grids may have time greater than other particles at lv // --> to fix it, we will need to correct other particle attributes such as velocity too - const bool TimingSendPar_Yes = true; - const bool JustCountNPar_No = false; - const bool PredictPos_No = false; - const bool SibBufPatch_Yes = true; - const bool FaSibBufPatch_No = false; + const bool TimingSendPar_Yes = true; + const bool JustCountNPar_No = false; + const bool PredictPos_No = false; + const bool SibBufPatch_Yes = true; + const bool FaSibBufPatch_No = false; //###OPTIMIZATION: only collect necessary particle attributes - const long ParAttBitIdx_In = _PAR_TOTAL; + const long ParAttFltBitIdx_In = _PAR_FLT_TOTAL; + const long ParAttIntBitIdx_In = _PAR_INT_TOTAL; - Par_CollectParticle2OneLevel( lv, ParAttBitIdx_In, PredictPos_No, TimeNew, SibBufPatch_Yes, FaSibBufPatch_No, + Par_CollectParticle2OneLevel( lv, ParAttFltBitIdx_In, ParAttIntBitIdx_In, PredictPos_No, TimeNew, SibBufPatch_Yes, FaSibBufPatch_No, JustCountNPar_No, TimingSendPar_Yes ); # ifdef DEBUG_PARTICLE - if ( ! ( ParAttBitIdx_In & _PAR_POSX ) || - ! ( ParAttBitIdx_In & _PAR_POSY ) || - ! ( ParAttBitIdx_In & _PAR_POSZ ) ) - Aux_Error( ERROR_INFO, "ParAttBitIdx_In must include particle positions !!\n" ); + if ( ! ( ParAttFltBitIdx_In & _PAR_POSX ) || + ! ( ParAttFltBitIdx_In & _PAR_POSY ) || + ! ( ParAttFltBitIdx_In & _PAR_POSZ ) ) + Aux_Error( ERROR_INFO, "ParAttFltBitIdx_In must include particle positions !!\n" ); # endif // 2. allocate a temporary particle repository to store the updated particle data -// --> must initialize it since we will replace amr->Par->Attribute[] by ParAtt_Updated[] -// at the end of this routine +// --> must initialize it since we will replace amr->Par->AttributeFlt[] by ParAttFlt_Updated[] and +// amr->Par->AttributeInt[] by ParAttInt_Updated[] at the end of this routine // --> otherwise, the data of particles skipped by this routine (e.g., those not on FB_LEVEL) will be incorrect // --> also to retain the information of inactive particles //###OPTIMIZATION: only store the attributes being updated //###OPTIMIZATION: only count particles on FB_LEVEL - real_par *ParAtt_Updated[PAR_NATT_TOTAL]; - long ParAttBitIdx_Out = _PAR_TOTAL; + real_par *ParAttFlt_Updated[PAR_NATT_FLT_TOTAL]; + long ParAttFltBitIdx_Out = _PAR_FLT_TOTAL; + long_par *ParAttInt_Updated[PAR_NATT_INT_TOTAL]; + long ParAttIntBitIdx_Out = _PAR_INT_TOTAL; // do not update particle positions and accelerations - ParAttBitIdx_Out &= ~( _PAR_POSX | _PAR_POSY | _PAR_POSZ ); + ParAttFltBitIdx_Out &= ~( _PAR_POSX | _PAR_POSY | _PAR_POSZ ); # ifdef STORE_PAR_ACC - ParAttBitIdx_Out &= ~( _PAR_ACCX | _PAR_ACCY | _PAR_ACCZ ); + ParAttFltBitIdx_Out &= ~( _PAR_ACCX | _PAR_ACCY | _PAR_ACCZ ); # endif - for (int v=0; vPar->ParListSize ]; - memcpy( ParAtt_Updated[v], amr->Par->Attribute[v], amr->Par->ParListSize*sizeof(real_par) ); + for (int v=0; vPar->ParListSize ]; + memcpy( ParAttFlt_Updated[v], amr->Par->AttributeFlt[v], amr->Par->ParListSize*sizeof(real_par) ); + } + else + ParAttFlt_Updated[v] = NULL; + } + + for (int v=0; vPar->ParListSize ]; + memcpy( ParAttInt_Updated[v], amr->Par->AttributeInt[v], amr->Par->ParListSize*sizeof(long_par) ); } else - ParAtt_Updated[v] = NULL; + ParAttInt_Updated[v] = NULL; } @@ -231,11 +247,13 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // --> include particles in both real and buffer patches // --> allocate the **maximum** required size among all nearby patches of a given patch group **just once** // for better performance - real_par *ParAtt_Local[PAR_NATT_TOTAL]; + real_par *ParAttFlt_Local[PAR_NATT_FLT_TOTAL]; + long_par *ParAttInt_Local[PAR_NATT_INT_TOTAL]; long *ParSortID = NULL; int NParMax = -1; - for (int v=0; v 0 ) { - for (int v=0; v if we modify the input particle data here, some patch groups may read the **updated** particle data // --> to solve this problem, we will store the updated particle data in a temporary particle repository -// ParAtt_Updated[] +// ParAttFlt_Updated[] and ParAttInt_Updated[] # ifdef LOAD_BALANCE - if ( UseParAttCopy ) { - for (int v=0; v 0 && amr->patch[0][lv][PID]->ParAttFlt_Copy[v] == NULL ) + Aux_Error( ERROR_INFO, "ParAttFlt_Copy == NULL for NPar (%d) > 0 (lv %d, PID %d, v %d) !!\n", + NPar, lv, PID, v ); +# endif + + for (int p=0; ppatch[0][lv][PID]->ParAttFlt_Copy[v][p]; + } + } + for (int v=0; v 0 && amr->patch[0][lv][PID]->ParAtt_Copy[v] == NULL ) - Aux_Error( ERROR_INFO, "ParAtt_Copy == NULL for NPar (%d) > 0 (lv %d, PID %d, v %d) !!\n", + if ( NPar > 0 && amr->patch[0][lv][PID]->ParAttInt_Copy[v] == NULL ) + Aux_Error( ERROR_INFO, "ParAttInt_Copy == NULL for NPar (%d) > 0 (lv %d, PID %d, v %d) !!\n", NPar, lv, PID, v ); # endif for (int p=0; ppatch[0][lv][PID]->ParAtt_Copy[v][p]; - }}} + ParAttInt_Local[v][p] = amr->patch[0][lv][PID]->ParAttInt_Copy[v][p]; + } + } + } // if ( UseParAttCopy ) else # endif // #ifdef LOAD_BALANCE @@ -325,10 +365,18 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con NPar, lv, PID ); # endif - for (int v=0; vPar->Attribute[v][ ParList[p] ]; + ParAttFlt_Local[v][p] = amr->Par->AttributeFlt[v][ ParList[p] ]; + } + + for (int v=0; vPar->AttributeInt[v][ ParList[p] ]; } } // if ( UseParAttCopy ) ... else ... @@ -337,7 +385,7 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // --> necessary when feedback involves random numbers // --> otherwise, the same particles accessed by different patches may have different random numbers const int SortOrder_pos[3] = { PAR_POSX, PAR_POSY, PAR_POSZ }; - Mis_SortByRows( ParAtt_Local, ParSortID, (long)NPar, SortOrder_pos, 3 ); + Mis_SortByRows( ParAttFlt_Local, ParSortID, (long)NPar, SortOrder_pos, 3 ); @@ -350,11 +398,13 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con const double HalfBox [3] = { 0.5*amr->BoxSize[0], 0.5*amr->BoxSize[1], 0.5*amr->BoxSize[2] }; const int ParPosIdx[3] = { PAR_POSX, PAR_POSY, PAR_POSZ }; - for (int d=0; d<3; d++) { - if ( Periodic[d] ) { - for (int p=0; p +HalfBox[d] ) *ParPos -= (real_par)amr->BoxSize[d]; @@ -380,24 +430,29 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con amr->patch[0][lv][PID0]->EdgeL[2] - FB_GHOST_SIZE*amr->dh[lv] }; int Status; - if ( FB_SNE ) Status = FB_SNe ( lv, TimeNew, TimeOld, dt, NPar, ParSortID, ParAtt_Local, fluid_PG, - EdgeL, amr->dh[lv], CoarseFine, TID, FB_RNG ); + if ( FB_SNE ) Status = FB_SNe ( lv, TimeNew, TimeOld, dt, NPar, ParSortID, ParAttFlt_Local, ParAttInt_Local, + fluid_PG, EdgeL, amr->dh[lv], CoarseFine, TID, FB_RNG ); - if ( FB_USER ) Status = FB_User_Ptr( lv, TimeNew, TimeOld, dt, NPar, ParSortID, ParAtt_Local, fluid_PG, - EdgeL, amr->dh[lv], CoarseFine, TID, FB_RNG ); + if ( FB_USER ) Status = FB_User_Ptr( lv, TimeNew, TimeOld, dt, NPar, ParSortID, ParAttFlt_Local, ParAttInt_Local, + fluid_PG, EdgeL, amr->dh[lv], CoarseFine, TID, FB_RNG ); -// 9. store the updated particle data in ParAtt_Updated[] +// 9. store the updated particle data in ParAttFlt/Int_Updated[] // --> only for particles in the central 8 patches // --> particles in the sibling patches will be updated and stored when applying feedback to these patches // --> avoid duplicate updates // --> different OpenMP threads work on different patch groups and thus won't update the same particles if ( PID >= PID0 && PID < PID0+8 && amr->patch[0][lv][PID]->son == -1 ) { - for (int v=0; vNPatchComma[lv][1]; PID0+=8) @@ -444,9 +500,16 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // 11. store the updated particle data - for (int v=0; vPar->Attribute[v], ParAtt_Updated[v], amr->Par->ParListSize*sizeof(real_par) ); + for (int v=0; vPar->AttributeFlt[v], ParAttFlt_Updated[v], amr->Par->ParListSize*sizeof(real_par) ); + } + + for (int v=0; vPar->AttributeInt[v], ParAttInt_Updated[v], amr->Par->ParListSize*sizeof(long_par) ); } @@ -461,7 +524,8 @@ void FB_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // 13. free memory - for (int v=0; v This function is responsible for updating gas and particles within // ** FB_GHOST_SIZE <= cell indices i,j,k < FB_GHOST_SIZE+PS2 ** // --> Updating gas and particles outside this range is fine but will have no effect at all -// 2. Must use ParSortID[] to access ParAtt[] -// --> ParAtt[PAR_MASS/PAR_POSX/etc][ ParSortID[...] ] +// 2. Must use ParSortID[] to access ParAttFlt/Int[] +// --> ParAttFlt[PAR_MASS/PAR_POSX/etc][ ParSortID[...] ] +// --> ParAttInt[PAR_TYPE/etc][ ParSortID[...] ] // 3. Particles may be outside the target region // 4. To ensure the consistency of random numbers, one must call the random number generator for // ALL particles, including those too far away to affect the target region @@ -51,7 +52,8 @@ // dt : Time interval to advance solution // NPar : Number of particles // ParSortID : Sorted particle IDs -// ParAtt : Particle attribute arrays +// ParAttFlt : Particle floating-point attribute arrays +// ParAttInt : Particle integer attribute arrays // Fluid : Array to store the input/output fluid data // --> Array size is fixed to (FB_NXT)^3=(PS2+2*FB_GHOST_SIZE)^3 // EdgeL : Left edge of Fluid[] @@ -63,10 +65,10 @@ // --> Random number can be obtained by "RNG->GetValue( TID, Min, Max )", // where Min/Max specify the range of random numbers // -// Return : Fluid, ParAtt +// Return : Fluid, ParAttFlt, ParAttInt //------------------------------------------------------------------------------------------------------- int FB_SNe( const int lv, const double TimeNew, const double TimeOld, const double dt, - const int NPar, const long *ParSortID, real_par *ParAtt[PAR_NATT_TOTAL], + const int NPar, const long *ParSortID, real_par *ParAttFlt[PAR_NATT_FLT_TOTAL], long_par *ParAttInt[PAR_NATT_INT_TOTAL], real (*Fluid)[FB_NXT][FB_NXT][FB_NXT], const double EdgeL[], const double dh, bool CoarseFine[], const int TID, RandomNumber_t *RNG ) { @@ -77,7 +79,8 @@ int FB_SNe( const int lv, const double TimeNew, const double TimeOld, const doub if ( NPar > 0 ) { if ( ParSortID == NULL ) Aux_Error( ERROR_INFO, "ParSortID == NULL for NPar = %d !!\n", NPar ); - if ( ParAtt == NULL ) Aux_Error( ERROR_INFO, "ParAtt == NULL for NPar = %d !!\n", NPar ); + if ( ParAttFlt == NULL ) Aux_Error( ERROR_INFO, "ParAttFlt == NULL for NPar = %d !!\n", NPar ); + if ( ParAttInt == NULL ) Aux_Error( ERROR_INFO, "ParAttInt == NULL for NPar = %d !!\n", NPar ); } # endif // #ifdef GAMER_DEBUG diff --git a/src/Feedback/User_Template/FB_User_Template.cpp b/src/Feedback/User_Template/FB_User_Template.cpp index 3dad50e8b0..b74c15a2fb 100644 --- a/src/Feedback/User_Template/FB_User_Template.cpp +++ b/src/Feedback/User_Template/FB_User_Template.cpp @@ -9,12 +9,13 @@ // Function : FB_User_Template // Description : Template of a user-defined feedback // -// Note : 1. Input and output fluid and particle data are stored in Fluid[] and ParAtt[], respectively +// Note : 1. Input and output fluid and particle data are stored in Fluid[] and ParAttFlt/Int[], respectively // --> This function is responsible for updating gas and particles within // ** FB_GHOST_SIZE <= cell indices i,j,k < FB_GHOST_SIZE+PS2 ** // --> Updating gas and particles outside this range is fine but will have no effect at all -// 2. Must use ParSortID[] to access ParAtt[] -// --> ParAtt[PAR_MASS/PAR_POSX/etc][ ParSortID[...] ] +// 2. Must use ParSortID[] to access ParAttFlt[] and ParAttInt[] +// --> ParAttFlt[PAR_MASS/PAR_POSX/etc][ ParSortID[...] ] +// --> ParAttInt[PAR_TYPE/etc][ ParSortID[...] ] // 3. Particles may be outside the target region // 4. To ensure the consistency of random numbers, one must call the random number generator for // ALL particles, including those too far away to affect the target region @@ -52,7 +53,8 @@ // dt : Time interval to advance solution // NPar : Number of particles // ParSortID : Sorted particle IDs -// ParAtt : Particle attribute arrays +// ParAttFlt : Particle floating-point attribute arrays +// ParAttInt : Particle integer attribute arrays // Fluid : Array to store the input/output fluid data // --> Array size is fixed to (FB_NXT)^3=(PS2+2*FB_GHOST_SIZE)^3 // EdgeL : Left edge of Fluid[] @@ -64,10 +66,10 @@ // --> Random number can be obtained by "RNG->GetValue( TID, Min, Max )", // where Min/Max specify the range of random numbers // -// Return : Fluid, ParAtt +// Return : Fluid, ParAttFlt, ParAttInt //------------------------------------------------------------------------------------------------------- int FB_User_Template( const int lv, const double TimeNew, const double TimeOld, const double dt, - const int NPar, const long *ParSortID, real_par *ParAtt[PAR_NATT_TOTAL], + const int NPar, const long *ParSortID, real_par *ParAttFlt[PAR_NATT_FLT_TOTAL], long_par *ParAttInt[PAR_NATT_INT_TOTAL], real (*Fluid)[FB_NXT][FB_NXT][FB_NXT], const double EdgeL[], const double dh, bool CoarseFine[], const int TID, RandomNumber_t *RNG ) { @@ -78,7 +80,8 @@ int FB_User_Template( const int lv, const double TimeNew, const double TimeOld, if ( NPar > 0 ) { if ( ParSortID == NULL ) Aux_Error( ERROR_INFO, "ParSortID == NULL for NPar = %d !!\n", NPar ); - if ( ParAtt == NULL ) Aux_Error( ERROR_INFO, "ParAtt == NULL for NPar = %d !!\n", NPar ); + if ( ParAttFlt == NULL ) Aux_Error( ERROR_INFO, "ParAttFlt == NULL for NPar = %d !!\n", NPar ); + if ( ParAttInt == NULL ) Aux_Error( ERROR_INFO, "ParAttInt == NULL for NPar = %d !!\n", NPar ); } # endif // #ifdef GAMER_DEBUG @@ -90,7 +93,7 @@ int FB_User_Template( const int lv, const double TimeNew, const double TimeOld, for (int t=0; t unsplit // 4. Corner-Transport-Upwind scheme (CTU ) --> unsplit // -// -// Parameter : h_Flu_Array_In : Host array storing the input fluid variables -// h_Flu_Array_Out : Host array to store the output fluid variables -// h_Mag_Array_In : Host array storing the input B field (for MHD only) -// h_Mag_Array_Out : Host array to store the output B field (for MHD only) -// h_DE_Array_Out : Host array to store the dual-energy status -// h_Flux_Array : Host array to store the output fluxes (useful only if StoreFlux == true) -// h_Ele_Array : Host array to store the output electric field (for MHD only) -// h_Corner_Array : Host array storing the physical corner coordinates of each patch group -// h_Pot_Array_USG : Host array storing the input potential for UNSPLIT_GRAVITY -// NPatchGroup : Number of patch groups to be evaluated -// dt : Time interval to advance solution -// dh : Grid size -// StoreFlux : true --> store the coarse-fine fluxes -// StoreElectric : true --> store the coarse-fine electric field -// XYZ : true : x->y->z ( forward sweep) -// false1 : z->y->x (backward sweep) -// --> only useful for the RTVD scheme -// LR_Limiter : Slope limiter for the data reconstruction in the MHM/MHM_RP/CTU schemes -// (0/1/2/3/4) = (vanLeer/generalized MinMod/vanAlbada/ -// vanLeer + generalized MinMod/extrema-preserving) limiter -// MinMod_Coeff : Coefficient of the generalized MinMod limiter -// MinMod_MaxIter : Maximum number of iterations to reduce MinMod_Coeff -// ELBDM_Eta : Particle mass / Planck constant -// ELBDM_Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion for ELBDM -// ELBDM_Taylor3_Auto : true --> Determine ELBDM_Taylor3_Coeff automatically by invoking the -// function "ELBDM_SetTaylor3Coeff" -// Time : Current physical time (for UNSPLIT_GRAVITY only) -// UsePot : Add self-gravity and/or external potential (for UNSPLIT_GRAVITY only) -// ExtAcc : Add external acceleration (for UNSPLIT_GRAVITY only) -// MicroPhy : Microphysics object -// MinDens/Pres/Eint : Density, pressure, and internal energy floors -// DualEnergySwitch : Use the dual-energy formalism if E_int/E_kin < DualEnergySwitch -// NormPassive : true --> normalize passive scalars so that the sum of their mass density -// is equal to the gas mass density -// NNorm : Number of passive scalars to be normalized -// --> Should be set to the global variable "PassiveNorm_NVar" -// NormIdx : Target variable indices to be normalized -// --> Should be set to the global variable "PassiveNorm_VarIdx" -// FracPassive : true --> convert passive scalars to mass fraction during data reconstruction -// NFrac : Number of passive scalars for the option "FracPassive" -// --> Should be set to the global variable "PassiveIntFrac_NVar" -// FracIdx : Target variable indices for the option "FracPassive" -// --> Should be set to the global variable "PassiveIntFrac_VarIdx" -// JeansMinPres : Apply minimum pressure estimated from the Jeans length -// JeansMinPres_Coeff : Coefficient used by JeansMinPres = G*(Jeans_NCell*Jeans_dh)^2/(Gamma*pi); +// Parameter : h_Flu_Array_In : Host array storing the input fluid variables +// h_Flu_Array_Out : Host array to store the output fluid variables +// h_Mag_Array_In : Host array storing the input B field (for MHD only) +// h_Mag_Array_Out : Host array to store the output B field (for MHD only) +// h_DE_Array_Out : Host array to store the dual-energy status +// h_Flux_Array : Host array to store the output fluxes (useful only if StoreFlux == true) +// h_Ele_Array : Host array to store the output electric field (for MHD only) +// h_Corner_Array : Host array storing the physical corner coordinates of each patch group +// h_Pot_Array_USG : Host array storing the input potential for UNSPLIT_GRAVITY +// h_IsCompletelyRefined : Host array storing which patch groups are completely refined ( ELBDM only ) +// h_HasWaveCounterpart : Host array storing which cells have wave counterpart ( ELBDM_HYBRID only ) +// h_GramFE_TimeEvo : Host array storing time evolution matrix ( GRAMFE_MATMUL only ) +// NPatchGroup : Number of patch groups to be evaluated +// dt : Time interval to advance solution +// dh : Grid size +// StoreFlux : true --> store the coarse-fine fluxes +// StoreElectric : true --> store the coarse-fine electric field +// XYZ : true : x->y->z ( forward sweep) +// false1 : z->y->x (backward sweep) +// --> only useful for the RTVD scheme +// LR_Limiter : Slope limiter for the data reconstruction in the MHM/MHM_RP/CTU schemes +// (0/1/2/3/4) = (vanLeer/generalized MinMod/vanAlbada/ +// vanLeer + generalized MinMod/extrema-preserving) limiter +// MinMod_Coeff : Coefficient of the generalized MinMod limiter +// MinMod_MaxIter : Maximum number of iterations to reduce MinMod_Coeff +// ELBDM_Eta : Particle mass / Planck constant +// ELBDM_Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion for ELBDM +// ELBDM_Taylor3_Auto : true --> Determine ELBDM_Taylor3_Coeff automatically by invoking the +// function "ELBDM_SetTaylor3Coeff" +// Time : Current physical time (for UNSPLIT_GRAVITY only) +// UsePot : Add self-gravity and/or external potential (for UNSPLIT_GRAVITY only) +// ExtAcc : Add external acceleration (for UNSPLIT_GRAVITY only) +// MicroPhy : Microphysics object +// MinDens/Pres/Eint : Density, pressure, and internal energy floors +// DualEnergySwitch : Use the dual-energy formalism if E_int/E_kin < DualEnergySwitch +// NormPassive : true --> normalize passive scalars so that the sum of their mass density +// is equal to the gas mass density +// NNorm : Number of passive scalars to be normalized +// --> Should be set to the global variable "PassiveNorm_NVar" +// NormIdx : Target variable indices to be normalized +// --> Should be set to the global variable "PassiveNorm_VarIdx" +// FracPassive : true --> convert passive scalars to mass fraction during data reconstruction +// NFrac : Number of passive scalars for the option "FracPassive" +// --> Should be set to the global variable "PassiveIntFrac_NVar" +// FracIdx : Target variable indices for the option "FracPassive" +// --> Should be set to the global variable "PassiveIntFrac_VarIdx" +// JeansMinPres : Apply minimum pressure estimated from the Jeans length +// JeansMinPres_Coeff : Coefficient used by JeansMinPres = G*(Jeans_NCell*Jeans_dh)^2/(Gamma*pi); +// UseWaveFlag : Determines whether wave or fluid solver is used for MODEL == ELBDM and ELBDM_SCHEME == ELBDM_HYBRID //------------------------------------------------------------------------------------------------------- void CPU_FluidSolver( real h_Flu_Array_In[][FLU_NIN][ CUBE(FLU_NXT) ], real h_Flu_Array_Out[][FLU_NOUT][ CUBE(PS2) ], @@ -177,6 +212,9 @@ void CPU_FluidSolver( real h_Flu_Array_In[][FLU_NIN][ CUBE(FLU_NXT) ], real h_Ele_Array[][9][NCOMP_ELE][ PS2P1*PS2 ], const double h_Corner_Array[][3], const real h_Pot_Array_USG[][ CUBE(USG_NXT_F) ], + const bool h_IsCompletelyRefined[], + const bool h_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + gramfe_matmul_float h_GramFE_TimeEvo[][ 2*FLU_NXT ], const int NPatchGroup, const real dt, const real dh, const bool StoreFlux, const bool StoreElectric, const bool XYZ, const LR_Limiter_t LR_Limiter, const real MinMod_Coeff, const int MinMod_MaxIter, @@ -186,7 +224,8 @@ void CPU_FluidSolver( real h_Flu_Array_In[][FLU_NIN][ CUBE(FLU_NXT) ], const real DualEnergySwitch, const bool NormPassive, const int NNorm, const int NormIdx[], const bool FracPassive, const int NFrac, const int FracIdx[], - const bool JeansMinPres, const real JeansMinPres_Coeff ) + const bool JeansMinPres, const real JeansMinPres_Coeff, + const bool UseWaveFlag ) { // check @@ -240,12 +279,53 @@ void CPU_FluidSolver( real h_Flu_Array_In[][FLU_NIN][ CUBE(FLU_NXT) ], # elif ( MODEL == ELBDM ) -// evaluate the optimized Taylor expansion coefficient - if ( ELBDM_Taylor3_Auto ) ELBDM_Taylor3_Coeff = ELBDM_SetTaylor3Coeff( dt, dh, ELBDM_Eta ); - CPU_ELBDMSolver( h_Flu_Array_In, h_Flu_Array_Out, h_Flux_Array, NPatchGroup, dt, dh, ELBDM_Eta, StoreFlux, + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( UseWaveFlag ) { +# endif + +# if ( WAVE_SCHEME == WAVE_FD ) +// evaluate the optimized Taylor expansion coefficient + if ( ELBDM_Taylor3_Auto ) ELBDM_Taylor3_Coeff = ELBDM_SetTaylor3Coeff( dt, dh, ELBDM_Eta ); + + CPU_ELBDMSolver_FD( h_Flu_Array_In, h_Flu_Array_Out, h_Flux_Array, NPatchGroup, dt, dh, ELBDM_Eta, StoreFlux, ELBDM_Taylor3_Coeff, XYZ, MinDens ); +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) + +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) + CPU_ELBDMSolver_GramFE_FFT( h_Flu_Array_In, h_Flu_Array_Out, h_Flux_Array, NPatchGroup, dt, dh, ELBDM_Eta, StoreFlux, + XYZ, MinDens ); +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + CPU_ELBDMSolver_GramFE_MATMUL( h_Flu_Array_In, h_Flu_Array_Out, h_Flux_Array, h_GramFE_TimeEvo, NPatchGroup, dt, dh, ELBDM_Eta, StoreFlux, + XYZ, MinDens ); +# else +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME + +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { +// cast h_Flu_Array_In since HYB_NXT is possibly smaller than FLU_NXT + real (*smaller_h_Flu_Array_In )[FLU_NIN ][ CUBE(HYB_NXT) ] = ( real (*)[FLU_NIN ][ CUBE(HYB_NXT) ] ) h_Flu_Array_In; + +// in debug mode, send DENS, PHAS and STUB back from CPU/GPU solvers +// in regular mode, only send DENS and PHAS back from CPU/GPU solvers +# ifndef GAMER_DEBUG + real (*smaller_h_Flu_Array_Out)[FLU_NIN ][ CUBE(PS2) ] = ( real (*)[FLU_NIN ][ CUBE(PS2) ] ) h_Flu_Array_Out; +# else + real (*smaller_h_Flu_Array_Out)[FLU_NOUT][ CUBE(PS2) ] = ( real (*)[FLU_NOUT][ CUBE(PS2) ] ) h_Flu_Array_Out; +# endif + + CPU_ELBDMSolver_HamiltonJacobi( smaller_h_Flu_Array_In, smaller_h_Flu_Array_Out, h_Flux_Array, h_IsCompletelyRefined, + h_HasWaveCounterpart, NPatchGroup, dt, dh, ELBDM_Eta, StoreFlux, XYZ, MinDens ); + } +# endif + # else # error : ERROR : unsupported MODEL !! # endif // MODEL diff --git a/src/Fluid/Flu_AdvanceDt.cpp b/src/Fluid/Flu_AdvanceDt.cpp index 551b34b0e0..18702589f5 100644 --- a/src/Fluid/Flu_AdvanceDt.cpp +++ b/src/Fluid/Flu_AdvanceDt.cpp @@ -58,7 +58,13 @@ int Flu_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, con // invoke the fluid solver FluStatus_ThisRank = GAMER_SUCCESS; - +# if ( MODEL == ELBDM && defined SUPPORT_FFTW ) + if ( lv == 0 && ELBDM_BASE_SPECTRAL ) + { + CPU_ELBDMSolver_FFT( dt, TimeOld, SaveSg_Flu ); + } + else +# endif InvokeSolver( FLUID_SOLVER, lv, TimeNew, TimeOld, dt, NULL_REAL, SaveSg_Flu, SaveSg_Mag, NULL_INT, OverlapMPI, Overlap_Sync ); diff --git a/src/Fluid/Flu_Close.cpp b/src/Fluid/Flu_Close.cpp index 152cf713f9..6ef546cf21 100644 --- a/src/Fluid/Flu_Close.cpp +++ b/src/Fluid/Flu_Close.cpp @@ -125,7 +125,8 @@ void Flu_Close( const int lv, const int SaveSg_Flu, const int SaveSg_Mag, // copy the updated data from output arrays to the corresponding patch pointers -# if ( FLU_NOUT != NCOMP_TOTAL ) +// --> for ELBDM, passive scalars are excluded for now and thus FLU_NOUT == NCOMP_FLUID in Macro.h +# if ( FLU_NOUT != NCOMP_TOTAL && MODEL != ELBDM ) # error : ERROR : FLU_NOUT != NCOMP_TOTAL (one must specify how to copy data from h_Flu_Array_F_Out to fluid) !! # endif @@ -144,6 +145,11 @@ void Flu_Close( const int lv, const int SaveSg_Flu, const int SaveSg_Mag, int I, J, K, KJI; // fluid variables +# if ( MODEL == ELBDM && ELBDM_SCHEME == ELBDM_HYBRID && !defined(GAMER_DEBUG) ) +// hybrid scheme in debug mode on fluid levels transfers 3 fields back from GPU: DENS, PHAS and STUB +// --> STUB contains information about the cells that were updated using a first-order scheme where the fluid scheme fails + if ( amr->use_wave_flag[lv] ) { +# endif for (int v=0; vpatch[SaveSg_Flu][lv][PID]->fluid[v][k][j][i] = h_Flu_Array_F_Out[TID][v][KJI]; }}}} +# if ( MODEL == ELBDM && ELBDM_SCHEME == ELBDM_HYBRID && !defined(GAMER_DEBUG) ) +// when not in debug mode, only the fields DENS and PHAS need to be transferred back from GPU on fluid levels +// --> the number of fields equals FLU_NIN and not FLU_NOUT in this case + } else { + for (int v=0; vpatch[SaveSg_Flu][lv][PID]->fluid[v][k][j][i] = smaller_h_Flu_Array_F_Out[TID][v][KJI]; + + }}}} + } +# endif + // dual-energy status # ifdef DUAL_ENERGY @@ -944,10 +968,11 @@ void CorrectUnphysical( const int lv, const int NPG, const int *PID0_List, { const int PID_Failed = PID0_List[TID] + LocalID[ijk_out[2]/PS1][ijk_out[1]/PS1][ijk_out[0]/PS1]; const bool CheckMinEint_No = false; + const bool CheckMinPres_No = false; real In[NCOMP_TOTAL], tmp[NCOMP_TOTAL]; - char FileName[100]; - sprintf( FileName, "FailedPatchGroup_r%03d_lv%02d_PID0-%05d", MPI_Rank, lv, PID0_List[TID] ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/FailedPatchGroup_r%03d_lv%02d_PID0-%05d", OUTPUT_DIR, MPI_Rank, lv, PID0_List[TID] ); // use "a" instead of "w" since there may be more than one failed cell in a given patch group FILE *File = fopen( FileName, "a" ); @@ -981,8 +1006,11 @@ void CorrectUnphysical( const int lv, const int NPG, const int *PID0_List, # endif fprintf( File, "\n" ); - fprintf( File, " (%14s, %14s, %14s, %14s, %14s, %14s", - FieldLabel[DENS], FieldLabel[MOMX], FieldLabel[MOMY], FieldLabel[MOMZ], FieldLabel[ENGY], "Eint" ); + fprintf( File, " (" ); + for (int v=0; v=0; lv--) { if ( NPatchTotal[lv+1] == 0 ) continue; @@ -78,6 +78,20 @@ void Flu_CorrAfterAllSync() if ( OPT__VERBOSE && MPI_Rank == 0 ) Aux_Message( stdout, " restrict data at Lv %2d ... ", lv ); +# if ( defined(LOAD_BALANCE) && MODEL == ELBDM && ELBDM_SCHEME == ELBDM_HYBRID ) +// exchange phase field on level lv if level lv+1 uses wave scheme +// --> if available, use the phase information from the previous time step (1 - amr->FluSg[FaLv]) for this purpose + if ( !amr->use_wave_flag[lv] && amr->use_wave_flag[lv+1] && ELBDM_MATCH_PHASE ) { + int FaLv = lv; + int FaFluSg = amr->FluSg[FaLv]; + if ( amr->FluSgTime[FaLv][1-FaFluSg] >= 0.0 ) { + FaFluSg = 1 - FaFluSg; + } + Buf_GetBufferData( FaLv, FaFluSg, NULL_INT, NULL_INT, DATA_GENERAL, + _PHAS, _NONE, 0, USELB_YES ); + } +# endif + // we do not restrict potential since it will be recalculated anyway Flu_FixUp_Restrict( lv, amr->FluSg[lv+1], amr->FluSg[lv], amr->MagSg[lv+1], amr->MagSg[lv], NULL_INT, NULL_INT, FixUpVar_Restrict, _MAG ); @@ -88,7 +102,7 @@ void Flu_CorrAfterAllSync() Buf_GetBufferData( lv, amr->FluSg[lv], amr->MagSg[lv], NULL_INT, DATA_AFTER_FIXUP, FixUpVar_Restrict, _MAG, Flu_ParaBuf, USELB_YES ); if ( OPT__VERBOSE && MPI_Rank == 0 ) Aux_Message( stdout, "done\n" ); - } + }} // if ( OPT__FIXUP_RESTRICT ) // 3. recalculate gravitational potential diff --git a/src/Fluid/Flu_FixUp_Flux.cpp b/src/Fluid/Flu_FixUp_Flux.cpp index e3d0e04f45..4f80a7d5ce 100644 --- a/src/Fluid/Flu_FixUp_Flux.cpp +++ b/src/Fluid/Flu_FixUp_Flux.cpp @@ -15,8 +15,9 @@ // Parameter : lv : Target coarse level // TVar : Target variables // --> Supported variables in different models: -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, BIDX(field_index)] -// ELBDM : _DENS +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, BIDX(field_index)] +// ELBDM_WAVE : _DENS +// ELBDM_HYBRID : _DENS // --> _FLUID, _PASSIVE, and _TOTAL apply to all models //------------------------------------------------------------------------------------------------------- void Flu_FixUp_Flux( const int lv, const long TVar ) @@ -73,6 +74,10 @@ void Flu_FixUp_Flux( const int lv, const long TVar ) Aux_Error( ERROR_INFO, "FLUX_DENS (%d) != 0 for the option OPT__FIXUP_FLUX !!\n", FLUX_DENS ); # endif +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + if ( lv != TOP_LEVEL && amr->use_wave_flag[lv+1] ) + Aux_Error( ERROR_INFO, "WAVE_GRAMFE does not support the option OPT__FIXUP_FLUX !!\n" ); +# endif // if "NCOMP_TOTAL != NFLUX_TOTAL", one must specify how to correct cell data from the flux arrays // --> specifically, how to map different flux variables to fluid active/passive variables @@ -257,8 +262,17 @@ void Flu_FixUp_Flux( const int lv, const long TVar ) ) # endif + # elif ( MODEL == ELBDM && defined CONSERVE_MASS ) +// throw error if corrected density is unphysical + if ( ! Aux_IsFinite(CorrVal[DENS]) ) + Aux_Error( ERROR_INFO, "Flux-corrected density is unphysical (dens %14.7e, flux %14.7e, const %14.7e, PID %d, lv %d) !!\n", + CorrVal[DENS], FluxPtr[DENS][m][n], Const[s], PID, lv ); + if ( CorrVal[DENS] <= MIN_DENS ) + +# else + if ( false ) # endif { ApplyFix = false; @@ -317,6 +331,9 @@ void Flu_FixUp_Flux( const int lv, const long TVar ) // rescale the real and imaginary parts to be consistent with the corrected amplitude // --> must NOT use CorrVal[REAL] and CorrVal[IMAG] below since NFLUX_TOTAL == 1 for ELBDM # if ( MODEL == ELBDM && defined CONSERVE_MASS ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif real Re, Im, Rho_Corr, Rho_Wrong, Rescale; Re = *FluidPtr1D[REAL]; @@ -335,7 +352,10 @@ void Flu_FixUp_Flux( const int lv, const long TVar ) *FluidPtr1D[REAL] *= Rescale; *FluidPtr1D[IMAG] *= Rescale; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv] ) # endif +# endif // # if ( MODEL == ELBDM && defined CONSERVE_MASS ) } // if ( ApplyFix ) diff --git a/src/Fluid/Flu_FixUp_Restrict.cpp b/src/Fluid/Flu_FixUp_Restrict.cpp index a343e4c1fd..1966ed459c 100644 --- a/src/Fluid/Flu_FixUp_Restrict.cpp +++ b/src/Fluid/Flu_FixUp_Restrict.cpp @@ -8,10 +8,11 @@ // Description : Replace the data at level "FaLv" by the average data at level "FaLv+1" // // Note : 1. Use the input parameters "TVarCC" and "TVarFC" to determine the target cell- and -// face-centered variables, respectively +// face-centered variables on level "FaLv", respectively // 2. For MHD, this routine currently always restrict all three B field components // --> Do not distinguish _MAGX, _MAGY, _MAGZ, and _MAG in TVarFC // 3. Invoked by EvolveLevel() +// 4. ELBDM_HYBRID + LOAD_BALANCE: Backward matching of phase field for ELBDM_MATCH_PHASE requires OPT__LB_EXCHANGE_FATHER // // Parameter : FaLv : Target refinement level at which the data are going to be replaced // SonFluSg : Fluid sandglass at level "FaLv+1" @@ -20,12 +21,13 @@ // FaMagSg : B field sandglass at level "FaLv" // SonPotSg : Potential sandglass at level "FaLv+1" // FaPotSg : Potential sandglass at level "FaLv" -// TVarCC : Target cell-centered variables +// TVarCC : Target cell-centered variables on level "FaLv" // --> Supported variables in different models: -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, _POTE] [, BIDX(field_index)] -// ELBDM : _DENS, _REAL, _IMAG [, _POTE] [, BIDX(field_index)] +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, _POTE] [, BIDX(field_index)] +// ELBDM_WAVE : _DENS, _REAL, _IMAG, [, _POTE] +// ELBDM_HYBRID : _DENS, _PHAS [, _POTE] // --> _FLUID, _PASSIVE, and _TOTAL apply to all models -// TVarFC : Target face-centered variables +// TVarFC : Target face-centered variables on level "FaLv" // --> Supported variables in different models: // HYDRO with MHD : _MAGX, _MAGY, _MAGZ, _MAG // ELBDM : none @@ -37,16 +39,11 @@ void Flu_FixUp_Restrict( const int FaLv, const int SonFluSg, const int FaFluSg, const int SonLv = FaLv + 1; + // check - if ( FaLv < 0 || FaLv >= NLEVEL ) + if ( FaLv < 0 || FaLv > TOP_LEVEL ) Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "FaLv", FaLv ); - if ( FaLv == NLEVEL-1 ) - { - Aux_Message( stderr, "WARNING : applying \"%s\" to the maximum level is meaningless !! \n", __FUNCTION__ ); - return; - } - if ( ( TVarCC & _TOTAL ) && ( SonFluSg != 0 && SonFluSg != 1 ) ) Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "SonFluSg", SonFluSg ); @@ -73,7 +70,14 @@ void Flu_FixUp_Restrict( const int FaLv, const int SonFluSg, const int FaFluSg, # endif -// nothing to do if there are no real patches at lv+1 +// nothing to do on the top level + if ( FaLv == TOP_LEVEL ) + { + Aux_Message( stderr, "WARNING : applying \"%s\" to the top level is meaningless !!\n", __FUNCTION__ ); + return; + } + +// nothing to do if there is no real patch at lv+1 if ( amr->NPatchComma[SonLv][1] == 0 ) return; // check the synchronization @@ -94,17 +98,50 @@ void Flu_FixUp_Restrict( const int FaLv, const int SonFluSg, const int FaFluSg, const int PS1_half = PS1 / 2; -// determine the components to be restricted (TFluVarIdx : target fluid variable indices ( = [0 ... NCOMP_TOTAL-1] ) +// determine the indices of fluid components to be restricted: TFluVarIdx = [0 ... NCOMP_TOTAL-1] int NFluVar=0, TFluVarIdxList[NCOMP_TOTAL]; +# if ( MODEL == ELBDM ) +// set correct restriction options for wave-wave, fluid-wave and fluid-fluid level phase restriction +// wave-wave: phase restriction on if OPT__RES_PHASE is set +// fluid-wave: always use phase restriction +// fluid-fluid: treat phase restriction the same as normal restriction +// --> ELBDM_MATCH_PHASE is only applied to fluid-wave + const bool ResWave = ( TVarCC & _REAL ) || ( TVarCC & _IMAG ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// restrict phase during wave-wave-level restriction if OPT__RES_PHAS is enabled + const bool ResWWPha = OPT__RES_PHASE && ResWave && amr->use_wave_flag[FaLv] && amr->use_wave_flag[SonLv]; +// always restrict phase during fluid-wave-level restriction + const bool ResWFPha = ResWave && !amr->use_wave_flag[FaLv] && amr->use_wave_flag[SonLv]; + const bool ResPha = ResWWPha || ResWFPha; +# else +// restrict phase if OPT__RES_PHAS is enabled + const bool ResPha = OPT__RES_PHASE && ResWave; +# endif + +// update the components to be restricted depending on whether phase restriction is enabled +// --> when applying phase restriction, TFluVarIdxList[] only needs to record components other than density and wave function + for (int v=0; vpatch[SonFluSg][SonLv][SonPID]->fluid[DENS]; + const real (*RSonPtr) [PS1][PS1] = amr->patch[SonFluSg][SonLv][SonPID]->fluid[REAL]; + const real (*ISonPtr) [PS1][PS1] = amr->patch[SonFluSg][SonLv][SonPID]->fluid[IMAG]; + + real (*DFaPtr) [PS1][PS1] = amr->patch[ FaFluSg][ FaLv][ FaPID]->fluid[DENS]; + real (*RFaPtr) [PS1][PS1] = amr->patch[ FaFluSg][ FaLv][ FaPID]->fluid[REAL]; + real (*IFaPtr) [PS1][PS1] = amr->patch[ FaFluSg][ FaLv][ FaPID]->fluid[IMAG]; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + real (*PFaPtr) [PS1][PS1] = amr->patch[ FaFluSg][ FaLv][ FaPID]->fluid[PHAS]; + real (*OldPFaPtr)[PS1][PS1] = amr->patch[1-FaFluSg][ FaLv][ FaPID]->fluid[PHAS]; +// handle that we do not have data of previous time step during initialisation corresponding to a negative time + if ( amr->FluSgTime[FaLv][1-FaFluSg ] < 0.0 ) { + OldPFaPtr = PFaPtr; + } +# endif + + int ii, jj, kk, I, J, K, Ip, Jp, Kp; + real refphase, avgphase, avgdens; + + for (int k=0; kuse_wave_flag[FaLv] && ELBDM_MATCH_PHASE ) { + avgphase = ELBDM_UnwrapPhase( OldPFaPtr[kk][jj][ii], avgphase ); + } + + if ( !amr->use_wave_flag[FaLv] ) { + if ( TVarCC & _DENS ) DFaPtr[kk][jj][ii] = avgdens; + if ( TVarCC & _PHAS ) PFaPtr[kk][jj][ii] = avgphase; + } else { +# endif + if ( TVarCC & _DENS ) DFaPtr[kk][jj][ii] = avgdens; + if ( TVarCC & _REAL ) RFaPtr[kk][jj][ii] = SQRT(avgdens) * COS(avgphase); + if ( TVarCC & _IMAG ) IFaPtr[kk][jj][ii] = SQRT(avgdens) * SIN(avgphase); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( !amr->use_wave_flag[FaLv] ) ... else ... +# endif + }}} + } // if ( ResPha ) +# endif // #if ( MODEL == ELBDM ) + // restrict the fluid data - if ( ResFlu ) +// ELBDM: only restrict fluid data that has not yet been restricted using phase restriction + if ( ResFlu ) { for (int v=0; vuse_wave_flag[FaLv] ) { real Real, Imag, Rho_Wrong, Rho_Corr, Rescale; if ( ( TVarCC & _DENS ) && ( TVarCC & _REAL ) && (TVarCC & _IMAG ) ) @@ -367,7 +471,9 @@ void Flu_FixUp_Restrict( const int FaLv, const int SonFluSg, const int FaFluSg, amr->patch[FaFluSg][FaLv][FaPID]->fluid[REAL][k][j][i] *= Rescale; amr->patch[FaFluSg][FaLv][FaPID]->fluid[IMAG][k][j][i] *= Rescale; } -# endif + + } // if ( amr->use_wave_flag[FaLv] ) +# endif // # if ( MODEL == ELBDM ) } // for (int SonPID0=0; SonPID0NPatchComma[SonLv][1]; SonPID0+=8) diff --git a/src/Fluid/Flu_Prepare.cpp b/src/Fluid/Flu_Prepare.cpp index be8053ab51..d4bde1b5f1 100644 --- a/src/Fluid/Flu_Prepare.cpp +++ b/src/Fluid/Flu_Prepare.cpp @@ -9,20 +9,26 @@ // // Note : Invoke Prepare_PatchData() // -// Parameter : lv : Target refinement level -// PrepTime : Target physical time to prepare the coarse-grid data -// h_Flu_Array_F_In : Host array to store the prepared fluid data -// h_Mag_Array_F_In : Host array to store the prepared B field (for MHD onlhy) -// h_Pot_Array_USG_F : Host array to store the prepared potential data (for UNSPLIT_GRAVITY only) -// h_Corner_Array_USG_F : Host array to store the prepared corner data (for UNSPLIT_GRAVITY only) -// NPG : Number of patch groups to be prepared at a time -// PID0_List : List recording the patch indices with LocalID==0 to be udpated +// Parameter : lv : Target refinement level +// PrepTime : Target physical time to prepare the coarse-grid data +// h_Flu_Array_F_In : Host array to store the prepared fluid data +// h_Mag_Array_F_In : Host array to store the prepared B field (for MHD onlhy) +// h_Pot_Array_USG_F : Host array to store the prepared potential data (for UNSPLIT_GRAVITY only) +// h_Corner_Array_USG_F : Host array to store the prepared corner data (for UNSPLIT_GRAVITY only) +// h_IsCompletelyRefined : Host array storing which patch groups are completely refined ( ELBDM only ) +// h_HasWaveCounterpart : Host array storing which cells have wave counterpart ( ELBDM_HYBRID only ) +// NPG : Number of patch groups to be prepared at a time +// PID0_List : List recording the patch indices with LocalID==0 to be udpated //------------------------------------------------------------------------------------------------------- void Flu_Prepare( const int lv, const double PrepTime, real h_Flu_Array_F_In[][FLU_NIN][ CUBE(FLU_NXT) ], real h_Mag_Array_F_In[][NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ], real h_Pot_Array_USG_F[][ CUBE(USG_NXT_F) ], - double h_Corner_Array_F[][3], const int NPG, const int *PID0_List ) + double h_Corner_Array_F[][3], + bool h_IsCompletelyRefined[], + bool h_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + const int NPG, const int *PID0_List, + LB_GlobalTree* GlobalTree ) { // check @@ -37,30 +43,46 @@ void Flu_Prepare( const int lv, const double PrepTime, # endif -# if ( MODEL != HYDRO ) - const double MIN_DENS = -1.0; // set to an arbitrarily negative value to disable it -# endif # ifndef MHD - const int OPT__MAG_INT_SCHEME = INT_NONE; + const int OPT__MAG_INT_SCHEME = INT_NONE; # endif - const bool IntPhase_No = false; - const real MinDens_No = -1.0; - const real MinPres_No = -1.0; - const real MinTemp_No = -1.0; - const real MinEntr_No = -1.0; - const bool DE_Consistency_Yes = true; - const bool DE_Consistency_No = false; - const bool DE_Consistency = ( OPT__OPTIMIZE_AGGRESSIVE ) ? DE_Consistency_No : DE_Consistency_Yes; - const real MinDens = ( OPT__OPTIMIZE_AGGRESSIVE ) ? MinDens_No : MIN_DENS; + const bool IntPhase_No = false; + const real MinDens_No = -1.0; + const real MinPres_No = -1.0; + const real MinTemp_No = -1.0; + const real MinEntr_No = -1.0; + const bool DE_Consistency_Yes = true; + const bool DE_Consistency_No = false; + const bool DE_Consistency = ( OPT__OPTIMIZE_AGGRESSIVE ) ? DE_Consistency_No : DE_Consistency_Yes; + const real MinDens = ( OPT__OPTIMIZE_AGGRESSIVE ) ? MinDens_No : MIN_DENS; // prepare the fluid array +// --> exclude passive scalars for ELBDM for now since it is not supported yet +// --> consistent with FLU_NIN == NCOMP_FLUID - 1 in Macro.h # if ( MODEL == ELBDM ) - Prepare_PatchData( lv, PrepTime, h_Flu_Array_F_In[0][0], NULL, - FLU_GHOST_SIZE, NPG, PID0_List, _REAL|_IMAG|_PASSIVE, _NONE, - OPT__FLU_INT_SCHEME, INT_NONE, UNIT_PATCHGROUP, NSIDE_26, OPT__INT_PHASE, - OPT__BC_FLU, BC_POT_NONE, MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); -# else + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + Prepare_PatchData( lv, PrepTime, h_Flu_Array_F_In[0][0], NULL, +// FLU_GHOST_SIZE, NPG, PID0_List, _REAL|_IMAG|_PASSIVE, _NONE, + FLU_GHOST_SIZE, NPG, PID0_List, _REAL|_IMAG, _NONE, + OPT__FLU_INT_SCHEME, INT_NONE, UNIT_PATCHGROUP, NSIDE_26, OPT__INT_PHASE, + OPT__BC_FLU, BC_POT_NONE, MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + Prepare_PatchData( lv, PrepTime, h_Flu_Array_F_In[0][0], NULL, +// HYB_GHOST_SIZE, NPG, PID0_List, _DENS|_PHAS|_PASSIVE, _NONE, + HYB_GHOST_SIZE, NPG, PID0_List, _DENS|_PHAS, _NONE, + OPT__FLU_INT_SCHEME, INT_NONE, UNIT_PATCHGROUP, NSIDE_26, OPT__INT_PHASE, + OPT__BC_FLU, BC_POT_NONE, MinDens, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + } +# endif + +# else // #if ( MODEL == ELBDM ) + # ifdef MHD real *Mag_Array = h_Mag_Array_F_In[0][0]; # else @@ -69,8 +91,9 @@ void Flu_Prepare( const int lv, const double PrepTime, Prepare_PatchData( lv, PrepTime, h_Flu_Array_F_In[0][0], Mag_Array, FLU_GHOST_SIZE, NPG, PID0_List, _TOTAL, _MAG, OPT__FLU_INT_SCHEME, OPT__MAG_INT_SCHEME, UNIT_PATCHGROUP, NSIDE_26, IntPhase_No, - OPT__BC_FLU, BC_POT_NONE, MinDens, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency ); -# endif + OPT__BC_FLU, BC_POT_NONE, MinDens, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency ); + +# endif // #if ( MODEL == ELBDM ) ... else ... # ifdef UNSPLIT_GRAVITY // prepare the potential array @@ -80,6 +103,7 @@ void Flu_Prepare( const int lv, const double PrepTime, OPT__GRA_INT_SCHEME, INT_NONE, UNIT_PATCHGROUP, NSIDE_26, IntPhase_No, OPT__BC_FLU, OPT__BC_POT, MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + // prepare the corner array if ( OPT__EXT_ACC ) { @@ -99,6 +123,36 @@ void Flu_Prepare( const int lv, const double PrepTime, # endif // #ifdef UNSPLIT_GRAVITY +// prepare boolean array that indicates whether patch group is fully refined (in other words has 8*8=64 children) +# if ( MODEL == ELBDM ) +# pragma omp parallel for schedule( runtime ) + for (int TID=0; TIDpatch[0][lv][PID]->son == -1 ) + { + PGIsCompletelyRefined = false; + break; + } + } + + h_IsCompletelyRefined[TID] = PGIsCompletelyRefined; + } +# endif + + +// prepare h_HasWaveCounterpart with information which cells have wave counterparts +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !amr->use_wave_flag[lv] ) + Prepare_PatchData_HasWaveCounterpart( lv, h_HasWaveCounterpart, HYB_GHOST_SIZE, NPG, PID0_List, NSIDE_26, GlobalTree ); +# endif + + // validate input arrays for debugging purposes if ( OPT__CK_INPUT_FLUID ) { @@ -109,15 +163,36 @@ void Flu_Prepare( const int lv, const double PrepTime, { real fluid[FLU_NIN]; + int flu_nxt = FLU_NXT; + +// distinguish between FLU_NXT and HYB_NXT +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !amr->use_wave_flag[lv] ) flu_nxt = HYB_NXT; +# endif + // a. fluid - for (int k=0; kuse_wave_flag[lv] ) { +# endif + const int t = IDX321( i, j, k, FLU_NXT, FLU_NXT ); for (int v=0; vuse_wave_flag[lv] ) isDataInvalid |= ( (v == DENS) && fluid[DENS] < (real)0.0 ); +# endif + + if ( isDataInvalid ) { - Aux_Message( stderr, "Invalid input fluid data:\n" ); + Aux_Message( stderr, "Invalid input fluid data on level %d:\n", lv ); Aux_Message( stderr, "Fluid: " ); for (int v=0; v invoke the kernel "CUFLU_FluidSolver_XXX" // 2. MODEL == ELBDM : use GPU to solve the kinematic operator in the Schrodinger's equations -// --> invoke the kernel "CUFLU_ELBDMSolver" +// --> invoke the kernel "CUFLU_ELBDMSolver_XXX" // // *********************************************************** // ** Asynchronous Function ** @@ -160,48 +213,51 @@ extern cudaStream_t *Stream; // 3. MUSCL-Hancock scheme with Riemann prediction (MHM_RP) --> unsplit // 4. Corner-Transport-Upwind scheme (CTU ) --> unsplit // -// Parameter : h_Flu_Array_In : Host array to store the input fluid variables -// h_Flu_Array_Out : Host array to store the output fluid variables -// h_Mag_Array_In : Host array storing the input B field (for MHD only) -// h_Mag_Array_Out : Host array to store the output B field (for MHD only) -// h_DE_Array_Out : Host array to store the dual-energy status -// h_Flux_Array : Host array to store the output fluxes -// h_Ele_Array : Host array to store the output electric field (for MHD only) -// h_Corner_Array : Host array storing the physical corner coordinates of each patch group -// h_Pot_Array_USG : Host array storing the input potential for UNSPLIT_GRAVITY -// NPatchGroup : Number of patch groups evaluated simultaneously by GPU -// dt : Time interval to advance solution -// dh : Cell size -// StoreFlux : true --> store the coarse-fine fluxes -// StoreElectric : true --> store the coarse-fine electric field -// XYZ : true : x->y->z ( forward sweep) -// false : z->y->x (backward sweep) -// ~ useless in directionally unsplit schemes -// LR_Limiter : Slope limiter for the data reconstruction in the MHM/MHM_RP/CTU schemes -// (0/1/2/3/4) = (vanLeer/generalized MinMod/vanAlbada/ -// vanLeer + generalized MinMod/extrema-preserving) limiter -// MinMod_Coeff : Coefficient of the generalized MinMod limiter -// MinMod_MaxIter : Maximum number of iterations to reduce MinMod_Coeff -// ELBDM_Eta : Particle mass / Planck constant -// ELBDM_Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion for ELBDM -// ELBDM_Taylor3_Auto : true --> Determine ELBDM_Taylor3_Coeff automatically by invoking the -// function "ELBDM_SetTaylor3Coeff" -// Time : Current physical time (for UNSPLIT_GRAVITY only) -// UsePot : Add self-gravity and/or external potential (for UNSPLIT_GRAVITY only) -// ExtAcc : Add external acceleration (for UNSPLIT_GRAVITY only) -// MicroPhy : Microphysics object -// MinDens/Pres/Eint : Density, pressure, and internal energy floors -// DualEnergySwitch : Use the dual-energy formalism if E_int/E_kin < DualEnergySwitch -// NormPassive : true --> normalize passive scalars so that the sum of their mass density -// is equal to the gas mass density -// NNorm : Number of passive scalars to be normalized -// --> Should be set to the global variable "PassiveNorm_NVar" -// FracPassive : true --> convert passive scalars to mass fraction during data reconstruction -// NFrac : Number of passive scalars for the option "FracPassive" -// --> Should be set to the global variable "PassiveIntFrac_NVar" -// JeansMinPres : Apply minimum pressure estimated from the Jeans length -// JeansMinPres_Coeff : Coefficient used by JeansMinPres = G*(Jeans_NCell*Jeans_dh)^2/(Gamma*pi); -// GPU_NStream : Number of CUDA streams for the asynchronous memory copy +// Parameter : h_Flu_Array_In : Host array to store the input fluid variables +// h_Flu_Array_Out : Host array to store the output fluid variables +// h_Mag_Array_In : Host array storing the input B field (for MHD only) +// h_Mag_Array_Out : Host array to store the output B field (for MHD only) +// h_DE_Array_Out : Host array to store the dual-energy status +// h_Flux_Array : Host array to store the output fluxes +// h_Ele_Array : Host array to store the output electric field (for MHD only) +// h_Corner_Array : Host array storing the physical corner coordinates of each patch group +// h_Pot_Array_USG : Host array storing the input potential for UNSPLIT_GRAVITY +// h_IsCompletelyRefined : Host array storing which patch groups are completely refined ( ELBDM only ) +// h_HasWaveCounterpart : Host array storing which cells have wave counterpart ( ELBDM_HYBRID only ) +// NPatchGroup : Number of patch groups evaluated simultaneously by GPU +// dt : Time interval to advance solution +// dh : Cell size +// StoreFlux : true --> store the coarse-fine fluxes +// StoreElectric : true --> store the coarse-fine electric field +// XYZ : true : x->y->z ( forward sweep) +// false : z->y->x (backward sweep) +// ~ useless in directionally unsplit schemes +// LR_Limiter : Slope limiter for the data reconstruction in the MHM/MHM_RP/CTU schemes +// (0/1/2/3/4) = (vanLeer/generalized MinMod/vanAlbada/ +// vanLeer + generalized MinMod/extrema-preserving) limiter +// MinMod_Coeff : Coefficient of the generalized MinMod limiter +// MinMod_MaxIter : Maximum number of iterations to reduce MinMod_Coeff +// ELBDM_Eta : Particle mass / Planck constant +// ELBDM_Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion for ELBDM +// ELBDM_Taylor3_Auto : true --> Determine ELBDM_Taylor3_Coeff automatically by invoking the +// function "ELBDM_SetTaylor3Coeff" +// Time : Current physical time (for UNSPLIT_GRAVITY only) +// UsePot : Add self-gravity and/or external potential (for UNSPLIT_GRAVITY only) +// ExtAcc : Add external acceleration (for UNSPLIT_GRAVITY only) +// MicroPhy : Microphysics object +// MinDens/Pres/Eint : Density, pressure, and internal energy floors +// DualEnergySwitch : Use the dual-energy formalism if E_int/E_kin < DualEnergySwitch +// NormPassive : true --> normalize passive scalars so that the sum of their mass density +// is equal to the gas mass density +// NNorm : Number of passive scalars to be normalized +// --> Should be set to the global variable "PassiveNorm_NVar" +// FracPassive : true --> convert passive scalars to mass fraction during data reconstruction +// NFrac : Number of passive scalars for the option "FracPassive" +// --> Should be set to the global variable "PassiveIntFrac_NVar" +// JeansMinPres : Apply minimum pressure estimated from the Jeans length +// JeansMinPres_Coeff : Coefficient used by JeansMinPres = G*(Jeans_NCell*Jeans_dh)^2/(Gamma*pi); +// GPU_NStream : Number of CUDA streams for the asynchronous memory copy +// UseWaveFlag : Determine whether to use wave or phase scheme //------------------------------------------------------------------------------------------------------- void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], real h_Flu_Array_Out[][FLU_NOUT][ CUBE(PS2) ], @@ -212,6 +268,8 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], real h_Ele_Array[][9][NCOMP_ELE][ PS2P1*PS2 ], const double h_Corner_Array[][3], real h_Pot_Array_USG[][ CUBE(USG_NXT_F) ], + const bool h_IsCompletelyRefined[], + const bool h_HasWaveCounterpart[][ CUBE(HYB_NXT) ], const int NPatchGroup, const real dt, const real dh, const bool StoreFlux, const bool StoreElectric, const bool XYZ, const LR_Limiter_t LR_Limiter, const real MinMod_Coeff, const int MinMod_MaxIter, @@ -222,7 +280,7 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], const bool NormPassive, const int NNorm, const bool FracPassive, const int NFrac, const bool JeansMinPres, const real JeansMinPres_Coeff, - const int GPU_NStream ) + const int GPU_NStream, const bool UseWaveFlag ) { // check @@ -232,18 +290,24 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], # ifdef UNSPLIT_GRAVITY if ( UsePot ) { - if ( h_Pot_Array_USG == NULL ) Aux_Error( ERROR_INFO, "h_Pot_Array_USG == NULL !!\n" ); - if ( d_Pot_Array_USG_F == NULL ) Aux_Error( ERROR_INFO, "d_Pot_Array_USG_F == NULL !!\n" ); + if ( h_Pot_Array_USG == NULL ) Aux_Error( ERROR_INFO, "h_Pot_Array_USG == NULL !!\n" ); + if ( d_Pot_Array_USG_F == NULL ) Aux_Error( ERROR_INFO, "d_Pot_Array_USG_F == NULL !!\n" ); } if ( ExtAcc ) { - if ( h_Corner_Array == NULL ) Aux_Error( ERROR_INFO, "h_Corner_Array == NULL !!\n" ); - if ( d_Corner_Array_F == NULL ) Aux_Error( ERROR_INFO, "d_Corner_Array_F == NULL !!\n" ); + if ( h_Corner_Array == NULL ) Aux_Error( ERROR_INFO, "h_Corner_Array == NULL !!\n" ); + if ( d_Corner_Array_F == NULL ) Aux_Error( ERROR_INFO, "d_Corner_Array_F == NULL !!\n" ); } # endif # elif ( MODEL == ELBDM ) + if ( h_IsCompletelyRefined == NULL ) Aux_Error( ERROR_INFO, "h_IsCompletelyRefined == NULL !!\n" ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( h_HasWaveCounterpart == NULL && !UseWaveFlag ) + Aux_Error( ERROR_INFO, "h_HasWaveCounterpart == NULL !!\n" ); +# endif # else # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? @@ -274,35 +338,89 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], # endif // #ifdef GAMER_DEBUG - const dim3 BlockDim_FluidSolver ( FLU_BLOCK_SIZE_X, FLU_BLOCK_SIZE_Y, 1 ); // for the fluidsolvers +// thread block size +# if ( !( MODEL == ELBDM && WAVE_SCHEME == WAVE_GRAMFE && GRAMFE_SCHEME == GRAMFE_FFT ) ) + const dim3 BlockDim_FluidSolver ( FLU_BLOCK_SIZE_X, FLU_BLOCK_SIZE_Y, 1 ); // for the fluid solvers +# endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + const dim3 BlockDim_FluidSolver_HJ ( FLU_BLOCK_SIZE_X, FLU_HJ_BLOCK_SIZE_Y, 1 ); // for the HJ solver +# endif + // model-dependent operations # if ( MODEL == HYDRO ) # elif ( MODEL == ELBDM ) + +# if ( WAVE_SCHEME == WAVE_GRAMFE && GRAMFE_SCHEME == GRAMFE_FFT ) + uint cufftdx_shared_memory_size = NULL_INT; +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( UseWaveFlag ) { +# endif + +# if ( WAVE_SCHEME == WAVE_FD ) + // evaluate the optimized Taylor expansion coefficient if ( ELBDM_Taylor3_Auto ) ELBDM_Taylor3_Coeff = ELBDM_SetTaylor3Coeff( dt, dh, ELBDM_Eta ); +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) + +// set up GPU FFT if GPU is used for Gram Fourier extension FFT scheme +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) +// total size of shared memory required for storing FFT::ffts_per_block rows of data after Gram extension and the coefficients of the respective left and right extension polynomials + auto size = FFT::ffts_per_block*cufftdx::size_of::value + 2*FFT::ffts_per_block*GRAMFE_NDELTA; + auto size_bytes = size*sizeof(complex_type); + +// shared memory must fit input data and must be big enough to run FFT + cufftdx_shared_memory_size = std::max( (unsigned int)FFT::shared_memory_size, (unsigned int)size_bytes ); + +// increase max shared memory if needed + CUDA_CHECK_ERROR( cudaFuncSetAttribute( CUFLU_ELBDMSolver_GramFE_FFT, cudaFuncAttributeMaxDynamicSharedMemorySize, + cufftdx_shared_memory_size ) ); + +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +// time evolution matrix is copied to GPU in InvokeSolver() + +# else +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME + +# else +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( UseWaveFlag ) +# endif + # else # error : ERROR : unsupported MODEL !! # endif // MODEL - int *NPatch_per_Stream = new int [GPU_NStream]; - int *UsedPatch = new int [GPU_NStream]; - int *Flu_MemSize_In = new int [GPU_NStream]; - int *Flu_MemSize_Out = new int [GPU_NStream]; - int *Flux_MemSize = new int [GPU_NStream]; + int *NPatch_per_Stream = new int [GPU_NStream]; + int *UsedPatch = new int [GPU_NStream]; + int *Flu_MemSize_In = new int [GPU_NStream]; + int *Flu_MemSize_Out = new int [GPU_NStream]; + int *Flux_MemSize = new int [GPU_NStream]; # ifdef MHD - int *Mag_MemSize_In = new int [GPU_NStream]; - int *Mag_MemSize_Out = new int [GPU_NStream]; - int *Ele_MemSize = new int [GPU_NStream]; + int *Mag_MemSize_In = new int [GPU_NStream]; + int *Mag_MemSize_Out = new int [GPU_NStream]; + int *Ele_MemSize = new int [GPU_NStream]; # endif # ifdef UNSPLIT_GRAVITY - int *USG_MemSize = new int [GPU_NStream]; - int *Corner_MemSize = new int [GPU_NStream]; + int *USG_MemSize = new int [GPU_NStream]; + int *Corner_MemSize = new int [GPU_NStream]; # endif # ifdef DUAL_ENERGY - int *DE_MemSize_Out = new int [GPU_NStream]; + int *DE_MemSize_Out = new int [GPU_NStream]; +# endif +# if ( MODEL == ELBDM ) + int *Flu_MemSize_IsCompletelyRefined = new int [GPU_NStream]; +# endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + int *Flu_MemSize_HasWaveCounterpart = ( !UseWaveFlag ) ? new int [GPU_NStream] : NULL; # endif @@ -327,7 +445,7 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], { Flu_MemSize_In [s] = sizeof(real )*NPatch_per_Stream[s]*FLU_NIN *CUBE(FLU_NXT); Flu_MemSize_Out[s] = sizeof(real )*NPatch_per_Stream[s]*FLU_NOUT*CUBE(PS2); - Flux_MemSize [s] = sizeof(real )*NPatch_per_Stream[s]*NFLUX_TOTAL*9*PS2*PS2; + Flux_MemSize [s] = sizeof(real )*NPatch_per_Stream[s]*NFLUX_TOTAL*9*SQR(PS2); # ifdef MHD Mag_MemSize_In [s] = sizeof(real )*NPatch_per_Stream[s]*NCOMP_MAG*FLU_NXT_P1*SQR(FLU_NXT); Mag_MemSize_Out[s] = sizeof(real )*NPatch_per_Stream[s]*NCOMP_MAG*PS2P1*SQR(PS2); @@ -340,7 +458,27 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], # ifdef DUAL_ENERGY DE_MemSize_Out [s] = sizeof(char )*NPatch_per_Stream[s]*CUBE(PS2); # endif - } + +// optimization for phase scheme: +// (a) transfer CUBE(HYB_NXT) instead of CUBE(FLU_NXT) cells to GPU +// (b) when not in the debug mode, do not transfer STUB back from GPU (so only FLU_NIN instead of FLU_NOUT components) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !UseWaveFlag ) { + Flu_MemSize_In [s] = sizeof(real )*NPatch_per_Stream[s]*FLU_NIN*CUBE(HYB_NXT); +# ifndef GAMER_DEBUG + Flu_MemSize_Out[s] = sizeof(real )*NPatch_per_Stream[s]*FLU_NIN*CUBE(PS2); +# endif + } +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +# if ( MODEL == ELBDM ) + Flu_MemSize_IsCompletelyRefined[s] = sizeof(bool)*NPatch_per_Stream[s]; +# endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !UseWaveFlag ) + Flu_MemSize_HasWaveCounterpart [s] = sizeof(bool)*NPatch_per_Stream[s]*CUBE(HYB_NXT); +# endif + } // for (int s=0; s>> +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( UseWaveFlag ) { +# endif + +# if ( WAVE_SCHEME == WAVE_FD ) + + CUFLU_ELBDMSolver_FD <<< NPatch_per_Stream[s], BlockDim_FluidSolver, 0, Stream[s] >>> ( d_Flu_Array_F_In + UsedPatch[s], d_Flu_Array_F_Out + UsedPatch[s], d_Flux_Array + UsedPatch[s], dt, 1.0/dh, ELBDM_Eta, StoreFlux, ELBDM_Taylor3_Coeff, XYZ, MinDens ); +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) + +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) + +// create forward and backward cufftx workspaces + cudaError_t error_code = cudaSuccess; + FFT::workspace_type cufftdx_workspace = cufftdx::make_workspace( error_code ); + CUDA_CHECK_ERROR(error_code); + error_code = cudaSuccess; + IFFT::workspace_type cufftdx_iworkspace = cufftdx::make_workspace( error_code ); + CUDA_CHECK_ERROR(error_code); + + CUFLU_ELBDMSolver_GramFE_FFT <<< NPatch_per_Stream[s], FFT::block_dim, cufftdx_shared_memory_size, Stream[s] >>> + ( d_Flu_Array_F_In + UsedPatch[s], + d_Flu_Array_F_Out + UsedPatch[s], + d_Flux_Array + UsedPatch[s], + dt, 1.0/dh, ELBDM_Eta, StoreFlux, XYZ, MinDens, cufftdx_workspace, cufftdx_iworkspace ); + +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + CUFLU_ELBDMSolver_GramFE_MATMUL <<< NPatch_per_Stream[s], BlockDim_FluidSolver, 0, Stream[s] >>> + ( d_Flu_Array_F_In + UsedPatch[s], + d_Flu_Array_F_Out + UsedPatch[s], + d_Flux_Array + UsedPatch[s], + d_Flu_TimeEvo, + dt, dh, ELBDM_Eta, StoreFlux, XYZ, MinDens ); +# else +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME + +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + real (*smaller_d_Flu_Array_F_In) [FLU_NIN ][CUBE(HYB_NXT)] = (real (*)[FLU_NIN][CUBE(HYB_NXT)]) d_Flu_Array_F_In; +# ifdef GAMER_DEBUG + real (*smaller_d_Flu_Array_F_Out)[FLU_NOUT][CUBE(PS2)] = d_Flu_Array_F_Out; +# else + real (*smaller_d_Flu_Array_F_Out)[FLU_NIN ][CUBE(PS2)] = (real (*)[FLU_NIN][CUBE(PS2)] ) d_Flu_Array_F_Out; +# endif + + CUFLU_ELBDMSolver_HamiltonJacobi <<< NPatch_per_Stream[s], BlockDim_FluidSolver_HJ, 0, Stream[s] >>> + ( smaller_d_Flu_Array_F_In + UsedPatch[s], + smaller_d_Flu_Array_F_Out + UsedPatch[s], + d_Flux_Array + UsedPatch[s], + d_IsCompletelyRefined + UsedPatch[s], + d_HasWaveCounterpart + UsedPatch[s], + dt, 1.0/dh, ELBDM_Eta, StoreFlux, XYZ, MinDens ); + + } // if ( UseWaveFlag ) ... else ... +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + # else # error : unsupported MODEL !! @@ -464,8 +683,19 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], { if ( NPatch_per_Stream[s] == 0 ) continue; +# if ( ELBDM_SCHEME == ELBDM_HYBRID && !defined(GAMER_DEBUG) ) + if ( UseWaveFlag ) { +# endif CUDA_CHECK_ERROR( cudaMemcpyAsync( h_Flu_Array_Out + UsedPatch[s], d_Flu_Array_F_Out + UsedPatch[s], Flu_MemSize_Out[s], cudaMemcpyDeviceToHost, Stream[s] ) ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID && !defined(GAMER_DEBUG) ) + } else { + real (*smaller_h_Flu_Array_Out )[FLU_NIN][CUBE(PS2)] = (real (*)[FLU_NIN][CUBE(PS2)]) h_Flu_Array_Out; + real (*smaller_d_Flu_Array_F_Out)[FLU_NIN][CUBE(PS2)] = (real (*)[FLU_NIN][CUBE(PS2)]) d_Flu_Array_F_Out; + CUDA_CHECK_ERROR( cudaMemcpyAsync( smaller_h_Flu_Array_Out + UsedPatch[s], smaller_d_Flu_Array_F_Out + UsedPatch[s], + Flu_MemSize_Out[s], cudaMemcpyDeviceToHost, Stream[s] ) ); + } +# endif if ( StoreFlux ) CUDA_CHECK_ERROR( cudaMemcpyAsync( h_Flux_Array + UsedPatch[s], d_Flux_Array + UsedPatch[s], @@ -504,6 +734,12 @@ void CUAPI_Asyn_FluidSolver( real h_Flu_Array_In[][FLU_NIN ][ CUBE(FLU_NXT) ], # ifdef DUAL_ENERGY delete [] DE_MemSize_Out; # endif +# if ( MODEL == ELBDM ) + delete [] Flu_MemSize_IsCompletelyRefined; +# endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + delete [] Flu_MemSize_HasWaveCounterpart; +# endif } // FUNCTION : CUAPI_Asyn_FluidSolver diff --git a/src/GPU_API/CUAPI_Asyn_PoissonGravitySolver.cu b/src/GPU_API/CUAPI_Asyn_PoissonGravitySolver.cu index d41d97457c..138718bd04 100644 --- a/src/GPU_API/CUAPI_Asyn_PoissonGravitySolver.cu +++ b/src/GPU_API/CUAPI_Asyn_PoissonGravitySolver.cu @@ -48,10 +48,16 @@ void CUPOT_HydroGravitySolver( #elif ( MODEL == ELBDM ) __global__ -void CUPOT_ELBDMGravitySolver( real g_Flu_Array[][GRA_NIN][ PS1*PS1*PS1 ], - const real g_Pot_Array[][ GRA_NXT*GRA_NXT*GRA_NXT ], +void CUPOT_ELBDMGravitySolver( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], const real EtaDt, const real dh, const real Lambda ); +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +__global__ +void CUPOT_ELBDMGravitySolver_HamiltonJacobi( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const real EtaDt, const real dh, const real Lambda ); +#endif #else #error : ERROR : unsupported MODEL !! #endif // MODEL @@ -144,6 +150,7 @@ extern cudaStream_t *Stream; // TimeOld : Physical time at the previous step (for external gravity in UNSPLIT_GRAVITY) // MinEint : Internal energy floor // GPU_NStream : Number of CUDA streams for the asynchronous memory copy +// UseWaveFlag : Determine whether to use wave or phase scheme // // Useless parameters in HYDRO : ELBDM_Eta, ELBDM_Lambda // Useless parameters in ELBDM : P5_Gradient @@ -165,7 +172,7 @@ void CUAPI_Asyn_PoissonGravitySolver( const real h_Rho_Array [][RHO_NXT][RHO_ const real ELBDM_Lambda, const bool Poisson, const bool GraAcc, const bool SelfGravity, const OptExtPot_t ExtPot, const OptExtAcc_t ExtAcc, const double TimeNew, const double TimeOld, const real MinEint, - const int GPU_NStream ) + const int GPU_NStream, const bool UseWaveFlag ) { // model-independent constants @@ -443,11 +450,20 @@ void CUAPI_Asyn_PoissonGravitySolver( const real h_Rho_Array [][RHO_NXT][RHO_ TimeNew, TimeOld, MinEint ); # elif ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( UseWaveFlag ) +# endif CUPOT_ELBDMGravitySolver <<< NPatch_per_Stream[s], Gra_Block_Dim, 0, Stream[s] >>> ( d_Flu_Array_G + UsedPatch[s], d_Pot_Array_P_Out + UsedPatch[s], - d_Corner_Array_PGT + UsedPatch[s], ELBDM_EtaDt, dh, ELBDM_Lambda ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + else + CUPOT_ELBDMGravitySolver_HamiltonJacobi <<< NPatch_per_Stream[s], Gra_Block_Dim, 0, Stream[s] >>> + ( d_Flu_Array_G + UsedPatch[s], + d_Pot_Array_P_Out + UsedPatch[s], + ELBDM_EtaDt, dh, ELBDM_Lambda ); +# endif # else # error : ERROR : unsupported MODEL !! diff --git a/src/GPU_API/CUAPI_Asyn_SrcSolver.cu b/src/GPU_API/CUAPI_Asyn_SrcSolver.cu index 7c91a602cc..a5a293d9e6 100644 --- a/src/GPU_API/CUAPI_Asyn_SrcSolver.cu +++ b/src/GPU_API/CUAPI_Asyn_SrcSolver.cu @@ -81,6 +81,12 @@ void CUAPI_Asyn_SrcSolver( const real h_Flu_Array_In [][FLU_NIN_S ][ CUBE(SRC_NX # endif +// EoS is not defined when MODEL != HYDRO +# if ( MODEL != HYDRO ) + EoS_t EoS; +# endif + + // set the block size dim3 BlockDim_SrcSolver( SRC_BLOCK_SIZE, 1, 1 ); diff --git a/src/GPU_API/CUAPI_Asyn_dtSolver.cu b/src/GPU_API/CUAPI_Asyn_dtSolver.cu index 0c1d67c2a5..1321cfc38a 100644 --- a/src/GPU_API/CUAPI_Asyn_dtSolver.cu +++ b/src/GPU_API/CUAPI_Asyn_dtSolver.cu @@ -36,11 +36,13 @@ extern real (*d_Flu_Array_T)[FLU_NIN_T][ CUBE(PS1) ]; extern real (*d_Pot_Array_T)[ CUBE(GRA_NXT) ]; extern double (*d_Corner_Array_PGT)[3]; #endif +#if ( MODEL == HYDRO ) #ifdef MHD extern real (*d_Mag_Array_T)[NCOMP_MAG][ PS1P1*SQR(PS1) ]; #else static real (*d_Mag_Array_T)[NCOMP_MAG][ PS1P1*SQR(PS1) ] = NULL; #endif +#endif // HYDRO extern cudaStream_t *Stream; @@ -126,6 +128,8 @@ void CUAPI_Asyn_dtSolver( const Solver_t TSolver, real h_dt_Array[], const real // set the block size const int NPatch = NPatchGroup*8; + +# if ( MODEL == HYDRO ) dim3 BlockDim_dtSolver( 1, 1, 1 ); switch ( TSolver ) @@ -143,6 +147,7 @@ void CUAPI_Asyn_dtSolver( const Solver_t TSolver, real h_dt_Array[], const real default : Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "TSolver", TSolver ); } +# endif // set the number of patches and the corresponding data size to be transferred into GPU in each stream diff --git a/src/GPU_API/CUAPI_DiagnoseDevice.cu b/src/GPU_API/CUAPI_DiagnoseDevice.cu index 321d9b914e..a3d4a6c278 100644 --- a/src/GPU_API/CUAPI_DiagnoseDevice.cu +++ b/src/GPU_API/CUAPI_DiagnoseDevice.cu @@ -51,13 +51,16 @@ void CUAPI_DiagnoseDevice() else if ( DeviceProp.major == 7 ) NCorePerMP = 64; else if ( DeviceProp.major == 8 && DeviceProp.minor == 0 ) NCorePerMP = 64; else if ( DeviceProp.major == 8 && DeviceProp.minor == 6 ) NCorePerMP = 128; + else if ( DeviceProp.major == 8 && DeviceProp.minor == 9 ) NCorePerMP = 128; + else if ( DeviceProp.major == 9 ) NCorePerMP = 128; else fprintf( stderr, "WARNING : unable to determine the number of cores per multiprocessor for version %d.%d ...\n", DeviceProp.major, DeviceProp.minor ); // record the device properties - const char FileName[] = "Record__Note"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Note", OUTPUT_DIR ); if ( MPI_Rank == 0 ) { diff --git a/src/GPU_API/CUAPI_MemAllocate_Fluid.cu b/src/GPU_API/CUAPI_MemAllocate_Fluid.cu index 6409792fe5..43cbf709bb 100644 --- a/src/GPU_API/CUAPI_MemAllocate_Fluid.cu +++ b/src/GPU_API/CUAPI_MemAllocate_Fluid.cu @@ -44,6 +44,18 @@ extern real (*d_EC_Ele )[NCOMP_MAG][ CUBE(N_EC_ELE) ]; #endif #endif // FLU_SCHEME +#if ( MODEL == ELBDM ) +extern bool (*d_IsCompletelyRefined); +#endif + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +extern bool (*d_HasWaveCounterpart)[ CUBE(HYB_NXT) ]; +#endif + +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +extern gramfe_matmul_float (*d_Flu_TimeEvo)[ 2*FLU_NXT ]; +#endif + #if ( MODEL != HYDRO && MODEL != ELBDM ) # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? #endif @@ -113,6 +125,18 @@ int CUAPI_MemAllocate_Fluid( const int Flu_NPG, const int Pot_NPG, const int Src # endif # endif // FLU_SCHEME +# if ( MODEL == ELBDM ) + const long Flu_MemSize_IsCompletelyRefined = sizeof(bool )*Flu_NPG; +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + const long Flu_MemSize_HasWaveCounterpart = sizeof(bool )*Flu_NPG*CUBE(HYB_NXT); +# endif + +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + const long GramFE_TimeEvo_MemSize = sizeof(gramfe_matmul_float)*2*PS2*FLU_NXT; +# endif + # if ( MODEL != HYDRO && MODEL != ELBDM ) # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? # endif @@ -154,6 +178,18 @@ int CUAPI_MemAllocate_Fluid( const int Flu_NPG, const int Pot_NPG, const int Src # endif # endif // MHM/MHM_RP/CTU +# if ( MODEL == ELBDM ) + TotalSize += Flu_MemSize_IsCompletelyRefined; +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + TotalSize += Flu_MemSize_HasWaveCounterpart; +# endif + +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + TotalSize += GramFE_TimeEvo_MemSize; +# endif + # if ( MODEL != HYDRO && MODEL != ELBDM ) # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? # endif @@ -227,6 +263,20 @@ int CUAPI_MemAllocate_Fluid( const int Flu_NPG, const int Pot_NPG, const int Src CUDA_CHECK_MALLOC( cudaMalloc( (void**) &d_Corner_Array_S, Corner_MemSize_S ) ); } + +# if ( MODEL == ELBDM ) + CUDA_CHECK_MALLOC( cudaMalloc( (void**) &d_IsCompletelyRefined, Flu_MemSize_IsCompletelyRefined ) ); +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + CUDA_CHECK_MALLOC( cudaMalloc( (void**) &d_HasWaveCounterpart, Flu_MemSize_HasWaveCounterpart ) ); +# endif + +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + CUDA_CHECK_MALLOC( cudaMalloc( (void**) &d_Flu_TimeEvo, GramFE_TimeEvo_MemSize ) ); +# endif + + # if ( MODEL != HYDRO && MODEL != ELBDM ) # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? # endif @@ -235,46 +285,57 @@ int CUAPI_MemAllocate_Fluid( const int Flu_NPG, const int Pot_NPG, const int Src // allocate the host memory by CUDA for (int t=0; t<2; t++) { - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_F_In [t], Flu_MemSize_F_In ) ); - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_F_Out[t], Flu_MemSize_F_Out ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_F_In [t], Flu_MemSize_F_In ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_F_Out [t], Flu_MemSize_F_Out ) ); if ( amr->WithFlux ) - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flux_Array [t], Flux_MemSize ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flux_Array [t], Flux_MemSize ) ); # ifdef UNSPLIT_GRAVITY - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Pot_Array_USG_F[t], Pot_MemSize_USG_F ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Pot_Array_USG_F [t], Pot_MemSize_USG_F ) ); if ( OPT__EXT_ACC ) - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Corner_Array_F [t], Corner_MemSize_F ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Corner_Array_F [t], Corner_MemSize_F ) ); # endif # ifdef DUAL_ENERGY - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_DE_Array_F_Out [t], DE_MemSize_F_Out ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_DE_Array_F_Out [t], DE_MemSize_F_Out ) ); # endif # ifdef MHD - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_F_In [t], Mag_MemSize_F_In ) ); - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_F_Out[t], Mag_MemSize_F_Out ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_F_In [t], Mag_MemSize_F_In ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_F_Out [t], Mag_MemSize_F_Out ) ); if ( amr->WithElectric ) - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Ele_Array [t], Ele_MemSize ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Ele_Array [t], Ele_MemSize ) ); - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_T [t], Mag_MemSize_T ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_T [t], Mag_MemSize_T ) ); # endif - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_dt_Array_T [t], dt_MemSize_T ) ); - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_T [t], Flu_MemSize_T ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_dt_Array_T [t], dt_MemSize_T ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_T [t], Flu_MemSize_T ) ); if ( SrcTerms.Any ) { - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_S_In [t], Flu_MemSize_S_In ) ); - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_S_Out[t], Flu_MemSize_S_Out ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_S_In [t], Flu_MemSize_S_In ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Flu_Array_S_Out [t], Flu_MemSize_S_Out ) ); # ifdef MHD - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_S_In [t], Mag_MemSize_S_In ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Mag_Array_S_In [t], Mag_MemSize_S_In ) ); # endif - CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Corner_Array_S [t], Corner_MemSize_S ) ); + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_Corner_Array_S [t], Corner_MemSize_S ) ); } + +# if ( MODEL == ELBDM ) + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_IsCompletelyRefined[t], Flu_MemSize_IsCompletelyRefined ) ); +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_HasWaveCounterpart [t], Flu_MemSize_HasWaveCounterpart ) ); +# endif } // for (int t=0; t<2; t++) +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + CUDA_CHECK_MALLOC( cudaMallocHost( (void**) &h_GramFE_TimeEvo, GramFE_TimeEvo_MemSize ) ); +# endif // create streams Stream = new cudaStream_t [GPU_NStream]; diff --git a/src/GPU_API/CUAPI_MemFree_Fluid.cu b/src/GPU_API/CUAPI_MemFree_Fluid.cu index 6ba2594a0c..19f3255dd8 100644 --- a/src/GPU_API/CUAPI_MemFree_Fluid.cu +++ b/src/GPU_API/CUAPI_MemFree_Fluid.cu @@ -38,6 +38,18 @@ extern real (*d_EC_Ele )[NCOMP_MAG][ CUBE(N_EC_ELE) ]; #endif #endif // FLU_SCHEME +#if ( MODEL == ELBDM ) +extern bool (*d_IsCompletelyRefined); +#endif + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +extern bool (*d_HasWaveCounterpart)[ CUBE(HYB_NXT) ]; +#endif + +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +extern gramfe_matmul_float (*d_Flu_TimeEvo)[ 2*FLU_NXT ]; +#endif + #if ( MODEL != HYDRO && MODEL != ELBDM ) # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? #endif @@ -57,39 +69,51 @@ void CUAPI_MemFree_Fluid( const int GPU_NStream ) { // free the device memory - if ( d_Flu_Array_F_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_F_In ) ); d_Flu_Array_F_In = NULL; } - if ( d_Flu_Array_F_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_F_Out ) ); d_Flu_Array_F_Out = NULL; } - if ( d_Flux_Array != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flux_Array ) ); d_Flux_Array = NULL; } + if ( d_Flu_Array_F_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_F_In ) ); d_Flu_Array_F_In = NULL; } + if ( d_Flu_Array_F_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_F_Out ) ); d_Flu_Array_F_Out = NULL; } + if ( d_Flux_Array != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flux_Array ) ); d_Flux_Array = NULL; } # ifdef UNSPLIT_GRAVITY - if ( d_Pot_Array_USG_F != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Pot_Array_USG_F ) ); d_Pot_Array_USG_F = NULL; } - if ( d_Corner_Array_F != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Corner_Array_F ) ); d_Corner_Array_F = NULL; } + if ( d_Pot_Array_USG_F != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Pot_Array_USG_F ) ); d_Pot_Array_USG_F = NULL; } + if ( d_Corner_Array_F != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Corner_Array_F ) ); d_Corner_Array_F = NULL; } # endif # ifdef DUAL_ENERGY - if ( d_DE_Array_F_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_DE_Array_F_Out ) ); d_DE_Array_F_Out = NULL; } + if ( d_DE_Array_F_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_DE_Array_F_Out ) ); d_DE_Array_F_Out = NULL; } # endif # ifdef MHD - if ( d_Mag_Array_F_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_F_In ) ); d_Mag_Array_F_In = NULL; } - if ( d_Mag_Array_F_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_F_Out ) ); d_Mag_Array_F_Out = NULL; } - if ( d_Ele_Array != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Ele_Array ) ); d_Ele_Array = NULL; } - if ( d_Mag_Array_T != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_T ) ); d_Mag_Array_T = NULL; } - if ( d_Mag_Array_S_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_S_In ) ); d_Mag_Array_S_In = NULL; } + if ( d_Mag_Array_F_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_F_In ) ); d_Mag_Array_F_In = NULL; } + if ( d_Mag_Array_F_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_F_Out ) ); d_Mag_Array_F_Out = NULL; } + if ( d_Ele_Array != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Ele_Array ) ); d_Ele_Array = NULL; } + if ( d_Mag_Array_T != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_T ) ); d_Mag_Array_T = NULL; } + if ( d_Mag_Array_S_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Mag_Array_S_In ) ); d_Mag_Array_S_In = NULL; } # endif - if ( d_dt_Array_T != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_dt_Array_T ) ); d_dt_Array_T = NULL; } - if ( d_Flu_Array_T != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_T ) ); d_Flu_Array_T = NULL; } - if ( d_Flu_Array_S_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_S_In ) ); d_Flu_Array_S_In = NULL; } - if ( d_Flu_Array_S_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_S_Out ) ); d_Flu_Array_S_Out = NULL; } - if ( d_Corner_Array_S != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Corner_Array_S ) ); d_Corner_Array_S = NULL; } + if ( d_dt_Array_T != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_dt_Array_T ) ); d_dt_Array_T = NULL; } + if ( d_Flu_Array_T != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_T ) ); d_Flu_Array_T = NULL; } + if ( d_Flu_Array_S_In != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_S_In ) ); d_Flu_Array_S_In = NULL; } + if ( d_Flu_Array_S_Out != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Flu_Array_S_Out ) ); d_Flu_Array_S_Out = NULL; } + if ( d_Corner_Array_S != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Corner_Array_S ) ); d_Corner_Array_S = NULL; } # if ( FLU_SCHEME == MHM || FLU_SCHEME == MHM_RP || FLU_SCHEME == CTU ) - if ( d_PriVar != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_PriVar ) ); d_PriVar = NULL; } - if ( d_Slope_PPM != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Slope_PPM ) ); d_Slope_PPM = NULL; } - if ( d_FC_Var != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_FC_Var ) ); d_FC_Var = NULL; } - if ( d_FC_Flux != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_FC_Flux ) ); d_FC_Flux = NULL; } + if ( d_PriVar != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_PriVar ) ); d_PriVar = NULL; } + if ( d_Slope_PPM != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_Slope_PPM ) ); d_Slope_PPM = NULL; } + if ( d_FC_Var != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_FC_Var ) ); d_FC_Var = NULL; } + if ( d_FC_Flux != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_FC_Flux ) ); d_FC_Flux = NULL; } # ifdef MHD - if ( d_FC_Mag_Half != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_FC_Mag_Half ) ); d_FC_Mag_Half = NULL; } - if ( d_EC_Ele != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_EC_Ele ) ); d_EC_Ele = NULL; } + if ( d_FC_Mag_Half != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_FC_Mag_Half ) ); d_FC_Mag_Half = NULL; } + if ( d_EC_Ele != NULL ) { CUDA_CHECK_ERROR( cudaFree( d_EC_Ele ) ); d_EC_Ele = NULL; } # endif # endif // FLU_SCHEME +# if ( MODEL == ELBDM ) + if ( d_IsCompletelyRefined != NULL ) { CUDA_CHECK_ERROR ( cudaFree( d_IsCompletelyRefined) ); d_IsCompletelyRefined = NULL; } +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( d_HasWaveCounterpart != NULL ) { CUDA_CHECK_ERROR ( cudaFree( d_HasWaveCounterpart ) ); d_HasWaveCounterpart = NULL; } +# endif + +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + if ( d_Flu_TimeEvo != NULL ) { CUDA_CHECK_ERROR ( cudaFree ( d_Flu_TimeEvo ) ); d_Flu_TimeEvo = NULL; } +# endif + # if ( MODEL != HYDRO && MODEL != ELBDM ) # warning : DO YOU WANT TO ADD SOMETHING HERE FOR THE NEW MODEL ?? # endif @@ -98,30 +122,41 @@ void CUAPI_MemFree_Fluid( const int GPU_NStream ) // free the host memory allocated by CUDA for (int t=0; t<2; t++) { - if ( h_Flu_Array_F_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_F_In [t] ) ); h_Flu_Array_F_In [t] = NULL; } - if ( h_Flu_Array_F_Out[t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_F_Out[t] ) ); h_Flu_Array_F_Out[t] = NULL; } - if ( h_Flux_Array [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flux_Array [t] ) ); h_Flux_Array [t] = NULL; } + if ( h_Flu_Array_F_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_F_In [t] ) ); h_Flu_Array_F_In [t] = NULL; } + if ( h_Flu_Array_F_Out [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_F_Out [t] ) ); h_Flu_Array_F_Out [t] = NULL; } + if ( h_Flux_Array [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flux_Array [t] ) ); h_Flux_Array [t] = NULL; } # ifdef UNSPLIT_GRAVITY - if ( h_Pot_Array_USG_F[t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Pot_Array_USG_F[t] ) ); h_Pot_Array_USG_F[t] = NULL; } - if ( h_Corner_Array_F [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Corner_Array_F [t] ) ); h_Corner_Array_F [t] = NULL; } + if ( h_Pot_Array_USG_F [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Pot_Array_USG_F [t] ) ); h_Pot_Array_USG_F [t] = NULL; } + if ( h_Corner_Array_F [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Corner_Array_F [t] ) ); h_Corner_Array_F [t] = NULL; } # endif # ifdef DUAL_ENERGY - if ( h_DE_Array_F_Out [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_DE_Array_F_Out [t] ) ); h_DE_Array_F_Out [t] = NULL; } + if ( h_DE_Array_F_Out [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_DE_Array_F_Out [t] ) ); h_DE_Array_F_Out [t] = NULL; } # endif # ifdef MHD - if ( h_Mag_Array_F_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_F_In [t] ) ); h_Mag_Array_F_In [t] = NULL; } - if ( h_Mag_Array_F_Out[t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_F_Out[t] ) ); h_Mag_Array_F_Out[t] = NULL; } - if ( h_Ele_Array [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Ele_Array [t] ) ); h_Ele_Array [t] = NULL; } - if ( h_Mag_Array_T [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_T [t] ) ); h_Mag_Array_T [t] = NULL; } - if ( h_Mag_Array_S_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_S_In [t] ) ); h_Mag_Array_S_In [t] = NULL; } + if ( h_Mag_Array_F_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_F_In [t] ) ); h_Mag_Array_F_In [t] = NULL; } + if ( h_Mag_Array_F_Out [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_F_Out [t] ) ); h_Mag_Array_F_Out [t] = NULL; } + if ( h_Ele_Array [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Ele_Array [t] ) ); h_Ele_Array [t] = NULL; } + if ( h_Mag_Array_T [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_T [t] ) ); h_Mag_Array_T [t] = NULL; } + if ( h_Mag_Array_S_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Mag_Array_S_In [t] ) ); h_Mag_Array_S_In [t] = NULL; } +# endif + if ( h_dt_Array_T [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_dt_Array_T [t] ) ); h_dt_Array_T [t] = NULL; } + if ( h_Flu_Array_T [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_T [t] ) ); h_Flu_Array_T [t] = NULL; } + if ( h_Flu_Array_S_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_S_In [t] ) ); h_Flu_Array_S_In [t] = NULL; } + if ( h_Flu_Array_S_Out [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_S_Out [t] ) ); h_Flu_Array_S_Out [t] = NULL; } + if ( h_Corner_Array_S [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Corner_Array_S [t] ) ); h_Corner_Array_S [t] = NULL; } + +# if ( MODEL == ELBDM ) + if ( h_IsCompletelyRefined[t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_IsCompletelyRefined[t] ) ); h_IsCompletelyRefined[t] = NULL; } +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( h_HasWaveCounterpart [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_HasWaveCounterpart [t] ) ); h_HasWaveCounterpart [t] = NULL; } # endif - if ( h_dt_Array_T [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_dt_Array_T [t] ) ); h_dt_Array_T [t] = NULL; } - if ( h_Flu_Array_T [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_T [t] ) ); h_Flu_Array_T [t] = NULL; } - if ( h_Flu_Array_S_In [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_S_In [t] ) ); h_Flu_Array_S_In [t] = NULL; } - if ( h_Flu_Array_S_Out[t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Flu_Array_S_Out[t] ) ); h_Flu_Array_S_Out[t] = NULL; } - if ( h_Corner_Array_S [t] != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost( h_Corner_Array_S [t] ) ); h_Corner_Array_S [t] = NULL; } } // for (int t=0; t<2; t++) +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + if ( h_GramFE_TimeEvo != NULL ) { CUDA_CHECK_ERROR( cudaFreeHost ( h_GramFE_TimeEvo ) ); h_GramFE_TimeEvo = NULL; } +# endif // destroy streams if ( Stream != NULL ) diff --git a/src/GPU_API/CUAPI_SendGramFEMatrix2GPU.cu b/src/GPU_API/CUAPI_SendGramFEMatrix2GPU.cu new file mode 100644 index 0000000000..429778bdda --- /dev/null +++ b/src/GPU_API/CUAPI_SendGramFEMatrix2GPU.cu @@ -0,0 +1,34 @@ +#include "CUAPI.h" +#include "CUFLU.h" + + +#if ( defined(GPU) && GRAMFE_SCHEME == GRAMFE_MATMUL ) + +extern gramfe_matmul_float (*d_Flu_TimeEvo)[ 2*FLU_NXT ]; + + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUAPI_SendGramFEMatrix2GPU +// Description : Transfer time evolution matrix used in ELBDM GramFE matrix multiplication scheme to GPU +// +// Note : 1. Prefix "d" : for pointers pointing to the "Device" memory space +// Prefix "h" : for pointers pointing to the "Host" memory space +// 2. Uses synchronous copy to ensure matrix is on GPU when solver starts +// +// Parameter : h_GramFE_TimeEvo : Host array storing the GramFE time evolution matrix prepared by +// ELBDM_GramFE_ComputeTimeEvolutionMatrix() +//------------------------------------------------------------------------------------------------------- +void CUAPI_SendGramFEMatrix2GPU( gramfe_matmul_float (*h_GramFE_TimeEvo)[ 2*FLU_NXT ] ) +{ + + size_t h_FluTimeEvo_MemSize = 2*FLU_NXT*PS2*sizeof(gramfe_matmul_float); + + CUDA_CHECK_ERROR( cudaMemcpy( d_Flu_TimeEvo, h_GramFE_TimeEvo, h_FluTimeEvo_MemSize, cudaMemcpyHostToDevice ) ); + +} // FUNCTION : CUAPI_SendGramFEMatrix2GPU + + + +#endif // #if ( defined(GPU) && GRAMFE_SCHEME == GRAMFE_MATMUL ) diff --git a/src/GPU_API/CUAPI_SetCache.cu b/src/GPU_API/CUAPI_SetCache.cu index d8f4a97407..d36c2bbbcc 100644 --- a/src/GPU_API/CUAPI_SetCache.cu +++ b/src/GPU_API/CUAPI_SetCache.cu @@ -91,13 +91,50 @@ void CUPOT_dtSolver_HydroGravity( real g_dt_Array[], const real g_Pot_Array[][ C #endif #elif ( MODEL == ELBDM ) -__global__ void CUFLU_ELBDMSolver( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], - real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], - real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], - const real dt, const real _dh, const real Eta, const bool StoreFlux, - const real Taylor3_Coeff, const bool XYZ, const real MinDens ); - -#else +# if ( WAVE_SCHEME == WAVE_FD ) +__global__ void CUFLU_ELBDMSolver_FD( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const real Taylor3_Coeff, const bool XYZ, const real MinDens ); +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) +__global__ void CUFLU_ELBDMSolver_GramFE_FFT( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT ][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens, + typename FFT::workspace_type Workspace, + typename IFFT::workspace_type WorkspaceInv ); +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +__global__ void CUFLU_ELBDMSolver_GramFE_MATMUL( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + gramfe_matmul_float g_TimeEvo[][ FLU_NXT*2 ], + const real dt, const real dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ); +# else // GRAMFE_SCHEME +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +__global__ void CUFLU_ELBDMSolver_HamiltonJacobi( real g_Fluid_In [][FLU_NIN ][ CUBE(HYB_NXT) ], + #ifdef GAMER_DEBUG + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + #else + real g_Fluid_Out[][FLU_NIN ][ CUBE(PS2) ], + #endif + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const bool g_IsCompletelyRefined[], + const bool g_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ); +#endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +#else // MODEL #error : ERROR : unsupported MODEL !! #endif // MODEL @@ -192,7 +229,22 @@ void CUAPI_SetCache() # endif # elif ( MODEL == ELBDM ) - CUDA_CHECK_ERROR( cudaFuncSetCacheConfig( CUFLU_ELBDMSolver, cudaFuncCachePreferShared ) ); +# if ( WAVE_SCHEME == WAVE_FD ) + CUDA_CHECK_ERROR( cudaFuncSetCacheConfig( CUFLU_ELBDMSolver_FD, cudaFuncCachePreferShared ) ); +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) +# if ( GRAMFE_SCHEME == GRAMFE_FFT ) + CUDA_CHECK_ERROR( cudaFuncSetCacheConfig( CUFLU_ELBDMSolver_GramFE_FFT, cudaFuncCachePreferShared ) ); +# elif ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + CUDA_CHECK_ERROR( cudaFuncSetCacheConfig( CUFLU_ELBDMSolver_GramFE_MATMUL, cudaFuncCachePreferShared ) ); +# else // GRAMFE_SCHEME +# error : ERROR : unsupported GRAMFE_SCHEME !! +# endif // GRAMFE_SCHEME +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + CUDA_CHECK_ERROR( cudaFuncSetCacheConfig( CUFLU_ELBDMSolver_HamiltonJacobi, cudaFuncCachePreferShared ) ); +# endif # else # error : ERROR : unsupported MODEL !! diff --git a/src/GPU_API/CUAPI_SetMemSize.cu b/src/GPU_API/CUAPI_SetMemSize.cu index 8f5b13e509..b4e4d293e7 100644 --- a/src/GPU_API/CUAPI_SetMemSize.cu +++ b/src/GPU_API/CUAPI_SetMemSize.cu @@ -40,38 +40,46 @@ void CUAPI_SetMemSize( int &GPU_NStream, int &Flu_GPU_NPGroup, int &Pot_GPU_NPGr { # if ( MODEL == HYDRO ) # if ( GPU_ARCH == FERMI ) - GPU_NStream = 8; + GPU_NStream = 4; # elif ( GPU_ARCH == KEPLER ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == MAXWELL ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == PASCAL ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == VOLTA ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == TURING ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == AMPERE ) - GPU_NStream = 16; + GPU_NStream = 4; +# elif ( GPU_ARCH == ADA_LOVELACE ) + GPU_NStream = 4; +# elif ( GPU_ARCH == HOPPER ) + GPU_NStream = 4; # else # error : UNKNOWN GPU_ARCH !! # endif # elif ( MODEL == ELBDM ) # if ( GPU_ARCH == FERMI ) - GPU_NStream = 8; + GPU_NStream = 4; # elif ( GPU_ARCH == KEPLER ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == MAXWELL ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == PASCAL ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == VOLTA ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == TURING ) - GPU_NStream = 16; + GPU_NStream = 4; # elif ( GPU_ARCH == AMPERE ) - GPU_NStream = 16; + GPU_NStream = 4; +# elif ( GPU_ARCH == ADA_LOVELACE ) + GPU_NStream = 4; +# elif ( GPU_ARCH == HOPPER ) + GPU_NStream = 4; # else # error : ERROR : UNKNOWN GPU_ARCH !! # endif @@ -106,6 +114,10 @@ void CUAPI_SetMemSize( int &GPU_NStream, int &Flu_GPU_NPGroup, int &Pot_GPU_NPGr Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # elif ( GPU_ARCH == AMPERE ) Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == ADA_LOVELACE ) + Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == HOPPER ) + Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # else # error : UNKNOWN GPU_ARCH !! # endif @@ -125,6 +137,10 @@ void CUAPI_SetMemSize( int &GPU_NStream, int &Flu_GPU_NPGroup, int &Pot_GPU_NPGr Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # elif ( GPU_ARCH == AMPERE ) Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == ADA_LOVELACE ) + Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == HOPPER ) + Flu_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # else # error : UNKNOWN GPU_ARCH !! # endif @@ -153,6 +169,10 @@ void CUAPI_SetMemSize( int &GPU_NStream, int &Flu_GPU_NPGroup, int &Pot_GPU_NPGr Pot_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # elif ( GPU_ARCH == AMPERE ) Pot_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == ADA_LOVELACE ) + Pot_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == HOPPER ) + Pot_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # else # error : UNKNOWN GPU_ARCH !! # endif @@ -179,6 +199,10 @@ void CUAPI_SetMemSize( int &GPU_NStream, int &Flu_GPU_NPGroup, int &Pot_GPU_NPGr Che_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # elif ( GPU_ARCH == AMPERE ) Che_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == ADA_LOVELACE ) + Che_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == HOPPER ) + Che_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # else # error : UNKNOWN GPU_ARCH !! # endif @@ -204,6 +228,10 @@ void CUAPI_SetMemSize( int &GPU_NStream, int &Flu_GPU_NPGroup, int &Pot_GPU_NPGr Src_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # elif ( GPU_ARCH == AMPERE ) Src_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == ADA_LOVELACE ) + Src_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; +# elif ( GPU_ARCH == HOPPER ) + Src_GPU_NPGroup = 1*GPU_NStream*DeviceProp.multiProcessorCount; # else # error : UNKNOWN GPU_ARCH !! # endif diff --git a/src/Grackle/Grackle_Close.cpp b/src/Grackle/Grackle_Close.cpp index fa2ed40226..fde6244c78 100644 --- a/src/Grackle/Grackle_Close.cpp +++ b/src/Grackle/Grackle_Close.cpp @@ -43,28 +43,28 @@ extern int CheIdx_Metal; // NPG : Number of patch groups to store the updated data // PID0_List : List recording the patch indices with LocalID==0 to be udpated //------------------------------------------------------------------------------------------------------- -void Grackle_Close( const int lv, const int SaveSg, const real h_Che_Array[], const int NPG, const int *PID0_List ) +void Grackle_Close( const int lv, const int SaveSg, const real_che h_Che_Array[], const int NPG, const int *PID0_List ) { - const int Size1pg = CUBE(PS2); - const int Size1v = NPG*Size1pg; - const real MassRatio_ep = Const_me / Const_mp; - - const real *Ptr_Dens0 = h_Che_Array + CheIdx_Dens *Size1v; - const real *Ptr_sEint0 = h_Che_Array + CheIdx_sEint*Size1v; - const real *Ptr_Ent0 = h_Che_Array + CheIdx_Ent *Size1v; - const real *Ptr_e0 = h_Che_Array + CheIdx_e *Size1v; - const real *Ptr_HI0 = h_Che_Array + CheIdx_HI *Size1v; - const real *Ptr_HII0 = h_Che_Array + CheIdx_HII *Size1v; - const real *Ptr_HeI0 = h_Che_Array + CheIdx_HeI *Size1v; - const real *Ptr_HeII0 = h_Che_Array + CheIdx_HeII *Size1v; - const real *Ptr_HeIII0 = h_Che_Array + CheIdx_HeIII*Size1v; - const real *Ptr_HM0 = h_Che_Array + CheIdx_HM *Size1v; - const real *Ptr_H2I0 = h_Che_Array + CheIdx_H2I *Size1v; - const real *Ptr_H2II0 = h_Che_Array + CheIdx_H2II *Size1v; - const real *Ptr_DI0 = h_Che_Array + CheIdx_DI *Size1v; - const real *Ptr_DII0 = h_Che_Array + CheIdx_DII *Size1v; - const real *Ptr_HDI0 = h_Che_Array + CheIdx_HDI *Size1v; + const int Size1pg = CUBE(PS2); + const int Size1v = NPG*Size1pg; + const real MassRatio_ep = Const_me / Const_mp; + + const real_che *Ptr_Dens0 = h_Che_Array + CheIdx_Dens *Size1v; + const real_che *Ptr_sEint0 = h_Che_Array + CheIdx_sEint*Size1v; + const real_che *Ptr_Ent0 = h_Che_Array + CheIdx_Ent *Size1v; + const real_che *Ptr_e0 = h_Che_Array + CheIdx_e *Size1v; + const real_che *Ptr_HI0 = h_Che_Array + CheIdx_HI *Size1v; + const real_che *Ptr_HII0 = h_Che_Array + CheIdx_HII *Size1v; + const real_che *Ptr_HeI0 = h_Che_Array + CheIdx_HeI *Size1v; + const real_che *Ptr_HeII0 = h_Che_Array + CheIdx_HeII *Size1v; + const real_che *Ptr_HeIII0 = h_Che_Array + CheIdx_HeIII*Size1v; + const real_che *Ptr_HM0 = h_Che_Array + CheIdx_HM *Size1v; + const real_che *Ptr_H2I0 = h_Che_Array + CheIdx_H2I *Size1v; + const real_che *Ptr_H2II0 = h_Che_Array + CheIdx_H2II *Size1v; + const real_che *Ptr_DI0 = h_Che_Array + CheIdx_DI *Size1v; + const real_che *Ptr_DII0 = h_Che_Array + CheIdx_DII *Size1v; + const real_che *Ptr_HDI0 = h_Che_Array + CheIdx_HDI *Size1v; # pragma omp parallel @@ -78,9 +78,9 @@ void Grackle_Close( const int lv, const int SaveSg, const real h_Che_Array[], co # endif real (*fluid)[PS1][PS1][PS1]=NULL; - const real *Ptr_Dens=NULL, *Ptr_sEint=NULL, *Ptr_Ent=NULL, *Ptr_e=NULL, *Ptr_HI=NULL, *Ptr_HII=NULL; - const real *Ptr_HeI=NULL, *Ptr_HeII=NULL, *Ptr_HeIII=NULL, *Ptr_HM=NULL, *Ptr_H2I=NULL, *Ptr_H2II=NULL; - const real *Ptr_DI=NULL, *Ptr_DII=NULL, *Ptr_HDI=NULL; + const real_che *Ptr_Dens=NULL, *Ptr_sEint=NULL, *Ptr_Ent=NULL, *Ptr_e=NULL, *Ptr_HI=NULL, *Ptr_HII=NULL; + const real_che *Ptr_HeI=NULL, *Ptr_HeII=NULL, *Ptr_HeIII=NULL, *Ptr_HM=NULL, *Ptr_H2I=NULL, *Ptr_H2II=NULL; + const real_che *Ptr_DI=NULL, *Ptr_DII=NULL, *Ptr_HDI=NULL; # pragma omp for schedule( static ) for (int TID=0; TID Only NCOMP_TOTAL-1 (which equals 5+NCOMP_PASSIVE_USER currently) fields // should be stored in "UM_IC" -// (2) For ELBDM, we will calculate the density field from the input wave function -// directly instead of loading it from the disk +// (2) For ELBDM: // --> Only NCOMP_TOTAL-1 (which equals 2+NCOMP_PASSIVE_USER currently) fields // should be stored in "UM_IC" +// +// ELBDM_SCHEME == ELBDM_WAVE: +// --> We will load the real and imaginary parts from the disk on all levels +// and calculate the density field from the input wave function +// directly instead of loading it from the disk. +// +// ELBDM_SCHEME == ELBDM_HYBRID: +// --> We will load the density and phase fields from the disk on all levels. +// There is no need to separately calculate the density field. // 4. The data format of the UM_IC file is controlled by the runtime parameter OPT__UM_IC_FORMAT // 5. Does not work with rectangular domain decomposition anymore // --> Must enable either SERIAL or LOAD_BALANCE @@ -626,8 +634,13 @@ void Init_ByFile_AssignData( const char UM_Filename[], const int UM_lv, const in // 3. Calculate the dual-energy variable automatically instead of load it from the disk // --> When adopting DUAL_ENERGY, the input uniform-mesh array must NOT include the dual-energy // variable -// 4. Calculate the density field automatically instead of load it from the disk for ELBDM -// --> For ELBDM, the input uniform-mesh array must NOT include the density field +// 4. ELBDM: +// ELBDM_SCHEME == ELBDM_WAVE: +// --> Calculate the density field automatically instead of loading it from the disk for ELBDM +// --> The input uniform-mesh array must NOT include the density field +// ELBDM_SCHEME == ELBDM_HYBRID: +// --> We will load the density and phase fields from the disk on all levels +// --> There is no need to separately calculate the density field // 5. Assuming nvar_in (i.e., OPT__UM_IC_NVAR) == NCOMP_TOTAL // --> Unless either DUAL_ENERGY or ELBDM is adopted, for which it assumes nvar_in == NCOMP_TOTAL-1 // @@ -669,9 +682,11 @@ void Init_ByFile_Default( real fluid_out[], const real fluid_in[], const int nva if ( v_out == DUAL ) v_out ++; # endif -// skip the density field for ELBDM +// skip the density field for ELBDM_SCHEME == ELBDM_WAVE # elif ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_WAVE ) if ( v_out == DENS ) v_out ++; +# endif # endif // MODEL fluid_out[v_out] = fluid_in[v_in]; @@ -692,10 +707,24 @@ void Init_ByFile_Default( real fluid_out[], const real fluid_in[], const int nva EoS_DensEint2Pres_CPUPtr, EoS_AuxArray_Flt, EoS_AuxArray_Int, h_EoS_Table ); # endif -// calculate the density field for ELBDM # elif ( MODEL == ELBDM ) + +# if ( ELBDM_SCHEME == ELBDM_WAVE ) +// calculate the density field for ELBDM wave scheme fluid_out[DENS] = SQR( fluid_out[REAL] ) + SQR( fluid_out[IMAG] ); -# endif + +# elif ( ELBDM_SCHEME == ELBDM_HYBRID ) +// convert density and phase to real and imaginary part on wave levels for hybrid scheme + if ( amr->use_wave_flag[lv] ) { + const real Phase = fluid_out[PHAS]; + const real Amp = SQRT( fluid_out[DENS] ); + fluid_out[REAL] = Amp * COS( Phase ); + fluid_out[IMAG] = Amp * SIN( Phase ); + } else { + fluid_out[STUB] = (real)0.0; + } +# endif // ELBDM_SCHEME +# endif // MODEL } // FUNCTION : Init_ByFile_Default diff --git a/src/Init/Init_ByRestart_HDF5.cpp b/src/Init/Init_ByRestart_HDF5.cpp index d5e9f53ca2..4ae2b3156c 100644 --- a/src/Init/Init_ByRestart_HDF5.cpp +++ b/src/Init/Init_ByRestart_HDF5.cpp @@ -16,8 +16,10 @@ static void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, co const int *SonList, const int (*CrList)[3], const hid_t *H5_SetID_Field, const hid_t H5_SpaceID_Field, const hid_t H5_MemID_Field, const hid_t *H5_SetID_FCMag, const hid_t *H5_SpaceID_FCMag, const hid_t *H5_MemID_FCMag, - const int *NParList, real_par **ParBuf, long *NewParList, const hid_t *H5_SetID_ParData, - const hid_t H5_SpaceID_ParData, const long *GParID_Offset, const long NParThisRank ); + const int *NParList, real_par **ParFltBuf, long_par **ParIntBuf, long *NewParList, + const hid_t *H5_SetID_ParFltData, const hid_t *H5_SetID_ParIntData, + const hid_t H5_SpaceID_ParData, const long *GParID_Offset, const long NParThisRank, + const int FormatVersion ); static void Check_Makefile ( const char *FileName, const int FormatVersion ); static void Check_SymConst ( const char *FileName, const int FormatVersion ); static void Check_InputPara( const char *FileName, const int FormatVersion ); @@ -75,7 +77,8 @@ void Init_ByRestart_HDF5( const char *FileName ) # endif # ifdef PARTICLE const int Particle = 1; - const int Par_NAttStored = PAR_NATT_STORED; + const int Par_NAttFltStored = PAR_NATT_FLT_STORED; + const int Par_NAttIntStored = PAR_NATT_INT_STORED; # else const int Particle = 0; # endif @@ -215,16 +218,21 @@ void Init_ByRestart_HDF5( const char *FileName ) # ifdef PARTICLE if ( ReenablePar ) { - KeyInfo.Par_NPar = 0; - KeyInfo.Par_NAttStored = 0; + KeyInfo.Par_NPar = 0; + KeyInfo.Par_NAttFltStored = 0; + KeyInfo.Par_NAttIntStored = 0; } else { LoadField( "Par_NPar", &KeyInfo.Par_NPar, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); if ( KeyInfo.FormatVersion >= 2300 ) - LoadField( "Par_NAttStored", &KeyInfo.Par_NAttStored, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Par_NAttStored, 1, Fatal ); + LoadField( "Par_NAttFltStored", &KeyInfo.Par_NAttFltStored, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Par_NAttFltStored, 1, Fatal ); else - LoadField( "Par_NAttStored", &KeyInfo.Par_NAttStored, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Par_NAttStored, 1, NonFatal ); + LoadField( "Par_NAttFltStored", &KeyInfo.Par_NAttFltStored, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Par_NAttFltStored, 1, NonFatal ); + if ( KeyInfo.FormatVersion >= 2500 ) + LoadField( "Par_NAttIntStored", &KeyInfo.Par_NAttIntStored, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Par_NAttIntStored, 1, Fatal ); + else + LoadField( "Par_NAttIntStored", &KeyInfo.Par_NAttIntStored, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Par_NAttIntStored, 1, NonFatal ); } // if ( ReenablePar ) ... else ... # endif @@ -239,6 +247,9 @@ void Init_ByRestart_HDF5( const char *FileName ) # ifdef GRAVITY LoadField( "AveDens_Init", &KeyInfo.AveDens_Init, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + LoadField( "UseWaveScheme", KeyInfo.UseWaveScheme, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); +# endif // must initialize all char* pointers as NULL so that we can safely free them later // --> in case they do not exist in the restart file @@ -263,7 +274,10 @@ void Init_ByRestart_HDF5( const char *FileName ) // 1-5-1. parameters must be reset for (int lv=0; lvuse_wave_flag[lv] = KeyInfo.UseWaveScheme[lv]; +# endif } # ifdef PARTICLE @@ -293,9 +307,12 @@ void Init_ByRestart_HDF5( const char *FileName ) // --> assuming dTime_AllLv[] has been initialized as 0.0 properly for (int lv=KeyInfo.NLevel; lvuse_wave_flag[lv] = KeyInfo.UseWaveScheme[ KeyInfo.NLevel - 1 ]; +# endif } @@ -607,15 +624,17 @@ void Init_ByRestart_HDF5( const char *FileName ) // 2-5-4. get the maximum number of particles in one patch and allocate an I/O buffer accordingly long MaxNParInOnePatch = 0; long *NewParList = NULL; - real_par **ParBuf = NULL; + real_par **ParFltBuf = NULL; + long_par **ParIntBuf = NULL; for (int t=0; t for example, accessing ParBuf[0...PAR_NATT_STORED-1] will be illegal when MaxNParInOnePatch == 0 - Aux_AllocateArray2D( ParBuf, PAR_NATT_STORED, MaxNParInOnePatch ); +// be careful about using ParFlt/IntBuf returned from Aux_AllocateArray2D, which is set to NULL if MaxNParInOnePatch == 0 +// --> for example, accessing ParFlt/IntBuf[0...PAR_NATT_FLT/INT_STORED-1] will be illegal when MaxNParInOnePatch == 0 + Aux_AllocateArray2D( ParFltBuf, PAR_NATT_FLT_STORED, MaxNParInOnePatch ); + Aux_AllocateArray2D( ParIntBuf, PAR_NATT_INT_STORED, MaxNParInOnePatch ); if ( MPI_Rank == 0 ) Aux_Message( stdout, " Initializing particle repository ... done\n" ); # endif // #ifdef PARTICLE @@ -625,6 +644,13 @@ void Init_ByRestart_HDF5( const char *FileName ) // 3. load and allocate patches (load particles as well if PARTICLE is on) if ( MPI_Rank == 0 ) Aux_Message( stdout, " Loading patches and particles ...\n" ); + int NCompStore = NCOMP_TOTAL; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// do not load STUB field (the hybrid scheme always stores density and phase) + NCompStore -= 1; +# endif + # ifdef LOAD_BALANCE const bool Recursive_No = false; # else @@ -632,9 +658,9 @@ void Init_ByRestart_HDF5( const char *FileName ) int TRange_Min[3], TRange_Max[3]; # endif - char (*FieldName)[MAX_STRING] = new char [NCOMP_TOTAL][MAX_STRING]; + char (*FieldName)[MAX_STRING] = new char [NCompStore][MAX_STRING]; hsize_t H5_SetDims_Field[4], H5_MemDims_Field[4]; - hid_t H5_SetID_Field[NCOMP_TOTAL], H5_MemID_Field, H5_SpaceID_Field, H5_GroupID_GridData; + hid_t H5_SetID_Field[NCompStore], H5_MemID_Field, H5_SpaceID_Field, H5_GroupID_GridData; # ifdef MHD char (*FCMagName)[MAX_STRING] = new char [NCOMP_MAG][MAX_STRING]; @@ -647,31 +673,35 @@ void Init_ByRestart_HDF5( const char *FileName ) # endif // #ifdef MHD ... else ... # ifdef PARTICLE - char (*ParAttName)[MAX_STRING] = new char [PAR_NATT_STORED][MAX_STRING]; + char (*ParAttFltName)[MAX_STRING] = new char [PAR_NATT_FLT_STORED][MAX_STRING]; + char (*ParAttIntName)[MAX_STRING] = new char [PAR_NATT_INT_STORED][MAX_STRING]; hsize_t H5_SetDims_ParData[1]; - hid_t H5_SetID_ParData[PAR_NATT_STORED], H5_SpaceID_ParData, H5_GroupID_Particle; + hid_t H5_SetID_ParFltData[PAR_NATT_FLT_STORED], H5_SetID_ParIntData[PAR_NATT_INT_STORED], H5_SpaceID_ParData, H5_GroupID_Particle; # else // define useless variables when PARTICLE is off - int *NParList_AllLv = NULL; - real_par **ParBuf = NULL; - long *NewParList = NULL; - long *GParID_Offset = NULL; - hid_t *H5_SetID_ParData = NULL; - hid_t H5_SpaceID_ParData = NULL_INT; - long NParThisRank = NULL_INT; + int *NParList_AllLv = NULL; + real_par **ParFltBuf = NULL; + long_par **ParIntBuf = NULL; + long *NewParList = NULL; + long *GParID_Offset = NULL; + hid_t *H5_SetID_ParFltData = NULL; + hid_t *H5_SetID_ParIntData = NULL; + hid_t H5_SpaceID_ParData = NULL_INT; + long NParThisRank = NULL_INT; # endif // #ifdef PARTICLE ... else ... // 3-1. set the names of all grid fields and particle attributes - for (int v=0; v Set only when LOAD_BALANCE is not defined -// CrList : List of patch corners -// H5_SetID_Field : HDF5 dataset ID for cell-centered grid data -// H5_SpaceID_Field : HDF5 dataset dataspace ID for cell-centered grid data -// H5_MemID_Field : HDF5 memory dataspace ID for cell-centered grid data -// H5_SetID_FCMag : HDF5 dataset ID for face-centered magnetic field -// H5_SpaceID_FCMag : HDF5 dataset dataspace ID for face-centered magnetic field -// H5_MemID_FCMag : HDF5 memory dataspace ID for face-centered magnetic field -// NParList : List of particle counts -// ParBuf : I/O buffer for loading particle data from the disk -// --> It must be preallocated with a size equal to the maximum number of -// particles in one patch times the number of particles attributes -// stored on disk -// --> Be careful about using ParBuf, which is set to NULL if it has no elements -// (because of the current implementation of Aux_AllocateArray2D) -// --> For example, accessing ParBuf[0...PAR_NATT_STORED-1] will be illegal when there -// are no particles -// NewParList : Array to store the new particle indices -// --> It must be preallocated with a size equal to the maximum number of -// particles in one patch -// H5_SetID_ParData : HDF5 dataset ID for particle data -// H5_SpaceID_ParData : HDF5 dataset dataspace ID for particle data -// GParID_Offset : Starting global particle indices for all patches -// NParThisRank : Total number of particles in this rank (for check only) +// Parameter : H5_FileID : HDF5 file ID of the restart file +// lv : Target level +// GID : Target GID +// Recursive : Find all children (and childrens' children, ...) recuresively +// SonList : List of son indices +// --> Set only when LOAD_BALANCE is not defined +// CrList : List of patch corners +// H5_SetID_Field : HDF5 dataset ID for cell-centered grid data +// H5_SpaceID_Field : HDF5 dataset dataspace ID for cell-centered grid data +// H5_MemID_Field : HDF5 memory dataspace ID for cell-centered grid data +// H5_SetID_FCMag : HDF5 dataset ID for face-centered magnetic field +// H5_SpaceID_FCMag : HDF5 dataset dataspace ID for face-centered magnetic field +// H5_MemID_FCMag : HDF5 memory dataspace ID for face-centered magnetic field +// NParList : List of particle counts +// ParFlt/IntBuf : I/O buffer for loading particle data from the disk +// --> It must be preallocated with a size equal to the maximum number of +// particles in one patch times the number of particles attributes +// stored on disk +// --> Be careful about using ParFlt/IntBuf, which is set to NULL if it has no elements +// (because of the current implementation of Aux_AllocateArray2D) +// --> For example, accessing ParFlt/IntBuf[0...PAR_NATT_FLT/INT_STORED-1] will be illegal when there +// are no particles +// NewParList : Array to store the new particle indices +// --> It must be preallocated with a size equal to the maximum number of +// particles in one patch +// H5_SetID_ParFltData : HDF5 dataset ID for particle floating-point data +// H5_SetID_ParIntData : HDF5 dataset ID for particle integer data +// H5_SpaceID_ParData : HDF5 dataset dataspace ID for particle data +// GParID_Offset : Starting global particle indices for all patches +// NParThisRank : Total number of particles in this rank (for check only) +// FormatVersion : HDF5 snapshot format version //------------------------------------------------------------------------------------------------------- void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const bool Recursive, const int *SonList, const int (*CrList)[3], const hid_t *H5_SetID_Field, const hid_t H5_SpaceID_Field, const hid_t H5_MemID_Field, const hid_t *H5_SetID_FCMag, const hid_t *H5_SpaceID_FCMag, const hid_t *H5_MemID_FCMag, - const int *NParList, real_par **ParBuf, long *NewParList, const hid_t *H5_SetID_ParData, - const hid_t H5_SpaceID_ParData, const long *GParID_Offset, const long NParThisRank ) + const int *NParList, real_par **ParFltBuf, long_par **ParIntBuf, long *NewParList, + const hid_t *H5_SetID_ParFltData, const hid_t *H5_SetID_ParIntData, + const hid_t H5_SpaceID_ParData, const long *GParID_Offset, const long NParThisRank, + const int FormatVersion ) { const bool WithData_Yes = true; @@ -1265,6 +1309,13 @@ void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const boo herr_t H5_Status; int SonGID0, PID; + int NCompStore = NCOMP_TOTAL; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// do not load STUB field (the hybrid scheme always stores density and phase) + NCompStore -= 1 ; +# endif + // allocate patch amr->pnew( lv, CrList[GID][0], CrList[GID][1], CrList[GID][2], -1, WithData_Yes, WithData_Yes, WithData_Yes ); @@ -1288,7 +1339,7 @@ void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const boo // load cell-centered intrinsic variables from disk // --> excluding all derived variables such as gravitational potential and cell-centered B field - for (int v=0; vpatch[ amr->FluSg[lv] ][lv][PID]->fluid[v] ); @@ -1297,6 +1348,26 @@ void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const boo } +// convert phase/density to real and imaginary parts +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { + real Dens, Phas, Im, Re; + + for (int k=0; kpatch[ amr->FluSg[lv] ][lv][PID]->fluid[DENS][k][j][i]; + Phas = amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[PHAS][k][j][i]; + Re = SQRT(Dens) * COS(Phas); + Im = SQRT(Dens) * SIN(Phas); + + amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[REAL][k][j][i] = Re; + amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[IMAG][k][j][i] = Im; + }}} + } +# endif + + // load face-centered magnetic field from disk # ifdef MHD for (int v=0; v 0 ) { @@ -1352,24 +1424,61 @@ void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const boo if ( H5_MemID_ParData < 0 ) Aux_Error( ERROR_INFO, "failed to create the space \"%s\" !!\n", "H5_MemID_ParData" ); // load particle data from disk - for (int v=0; vPar->AddOneParticle( NewParAtt ); + NewParList[p] = amr->Par->AddOneParticle( NewParAttFlt, NewParAttInt ); // check if ( NewParList[p] >= NParThisRank ) @@ -1378,7 +1487,7 @@ void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const boo } // for (int p=0; pPar->Type; + const long_par *PType = amr->Par->Type; # ifdef DEBUG_PARTICLE const real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; char Comment[MAX_STRING]; @@ -1410,10 +1519,11 @@ void LoadOnePatch( const hid_t H5_FileID, const int lv, const int GID, const boo LoadOnePatch( H5_FileID, lv+1, SonGID, Recursive, SonList, CrList, H5_SetID_Field, H5_SpaceID_Field, H5_MemID_Field, H5_SetID_FCMag, H5_SpaceID_FCMag, H5_MemID_FCMag, - NParList, ParBuf, NewParList, H5_SetID_ParData, H5_SpaceID_ParData, - GParID_Offset, NParThisRank ); + NParList, ParFltBuf, ParIntBuf, NewParList, + H5_SetID_ParFltData, H5_SetID_ParIntData, H5_SpaceID_ParData, + GParID_Offset, NParThisRank, FormatVersion ); } - } + } // if ( Recursive ) } // FUNCTION : LoadOnePatch @@ -1481,6 +1591,7 @@ void Check_Makefile( const char *FileName, const int FormatVersion ) LoadField( "Laohu", &RS.Laohu, SID, TID, NonFatal, &RT.Laohu, 1, NonFatal ); LoadField( "SupportHDF5", &RS.SupportHDF5, SID, TID, NonFatal, &RT.SupportHDF5, 1, NonFatal ); LoadField( "SupportGSL", &RS.SupportGSL, SID, TID, NonFatal, &RT.SupportGSL, 1, NonFatal ); + LoadField( "SupportSpectralInt", &RS.SupportSpectralInt, SID, TID, NonFatal, &RT.SupportSpectralInt, 1, NonFatal ); LoadField( "SupportFFTW", &RS.SupportFFTW, SID, TID, NonFatal, &RT.SupportFFTW, 1, NonFatal ); LoadField( "SupportLibYT", &RS.SupportLibYT, SID, TID, NonFatal, &RT.SupportLibYT, 1, NonFatal ); # ifdef SUPPORT_LIBYT @@ -1517,6 +1628,8 @@ void Check_Makefile( const char *FileName, const int FormatVersion ) LoadField( "BarotropicEoS", &RS.BarotropicEoS, SID, TID, NonFatal, &RT.BarotropicEoS, 1, NonFatal ); # elif ( MODEL == ELBDM ) + LoadField( "ELBDMScheme", &RS.ELBDMScheme, SID, TID, NonFatal, &RT.ELBDMScheme, 1, NonFatal ); + LoadField( "WaveScheme", &RS.WaveScheme, SID, TID, NonFatal, &RT.WaveScheme, 1, NonFatal ); LoadField( "ConserveMass", &RS.ConserveMass, SID, TID, NonFatal, &RT.ConserveMass, 1, NonFatal ); LoadField( "Laplacian4th", &RS.Laplacian4th, SID, TID, NonFatal, &RT.Laplacian4th, 1, NonFatal ); LoadField( "SelfInteraction4", &RS.SelfInteraction4, SID, TID, NonFatal, &RT.SelfInteraction4, 1, NonFatal ); @@ -1532,10 +1645,15 @@ void Check_Makefile( const char *FileName, const int FormatVersion ) LoadField( "StarFormation", &RS.StarFormation, SID, TID, NonFatal, &RT.StarFormation, 1, NonFatal ); LoadField( "Feedback", &RS.Feedback, SID, TID, NonFatal, &RT.Feedback, 1, NonFatal ); if ( FormatVersion >= 2300 ) - LoadField( "Par_NAttUser", &RS.Par_NAttUser, SID, TID, NonFatal, &RT.Par_NAttUser, 1, Fatal ); + LoadField( "Par_NAttFltUser", &RS.Par_NAttFltUser, SID, TID, NonFatal, &RT.Par_NAttFltUser, 1, Fatal ); + else + LoadField( "Par_NAttFltUser", &RS.Par_NAttFltUser, SID, TID, NonFatal, &RT.Par_NAttFltUser, 1, NonFatal ); + if ( FormatVersion >= 2500 ) + LoadField( "Par_NAttIntUser", &RS.Par_NAttIntUser, SID, TID, NonFatal, &RT.Par_NAttIntUser, 1, Fatal ); else - LoadField( "Par_NAttUser", &RS.Par_NAttUser, SID, TID, NonFatal, &RT.Par_NAttUser, 1, NonFatal ); + LoadField( "Par_NAttIntUser", &RS.Par_NAttIntUser, SID, TID, NonFatal, &RT.Par_NAttIntUser, 1, NonFatal ); LoadField( "Float8_Par", &RS.Float8_Par, SID, TID, NonFatal, &RT.Float8_Par, 1, NonFatal ); + LoadField( "Int8_Par", &RS.Int8_Par, SID, TID, NonFatal, &RT.Int8_Par, 1, NonFatal ); # endif # ifdef COSMIC_RAY @@ -1650,9 +1768,13 @@ void Check_SymConst( const char *FileName, const int FormatVersion ) # ifdef PARTICLE if ( FormatVersion >= 2300 ) - LoadField( "Par_NAttStored", &RS.Par_NAttStored, SID, TID, NonFatal, &RT.Par_NAttStored, 1, Fatal ); + LoadField( "Par_NAttFltStored", &RS.Par_NAttFltStored, SID, TID, NonFatal, &RT.Par_NAttFltStored, 1, Fatal ); else - LoadField( "Par_NAttStored", &RS.Par_NAttStored, SID, TID, NonFatal, &RT.Par_NAttStored, 1, NonFatal ); + LoadField( "Par_NAttFltStored", &RS.Par_NAttFltStored, SID, TID, NonFatal, &RT.Par_NAttFltStored, 1, NonFatal ); + if ( FormatVersion >= 2500 ) + LoadField( "Par_NAttIntStored", &RS.Par_NAttIntStored, SID, TID, NonFatal, &RT.Par_NAttIntStored, 1, Fatal ); + else + LoadField( "Par_NAttIntStored", &RS.Par_NAttIntStored, SID, TID, NonFatal, &RT.Par_NAttIntStored, 1, NonFatal ); LoadField( "Par_NType", &RS.Par_NType, SID, TID, NonFatal, &RT.Par_NType, 1, NonFatal ); # ifdef GRAVITY LoadField( "RhoExt_GhostSize", &RS.RhoExt_GhostSize, SID, TID, NonFatal, &RT.RhoExt_GhostSize, 1, NonFatal ); @@ -1700,7 +1822,19 @@ void Check_SymConst( const char *FileName, const int FormatVersion ) # elif ( MODEL == ELBDM ) LoadField( "Flu_BlockSize_x", &RS.Flu_BlockSize_x, SID, TID, NonFatal, &RT.Flu_BlockSize_x, 1, NonFatal ); LoadField( "Flu_BlockSize_y", &RS.Flu_BlockSize_y, SID, TID, NonFatal, &RT.Flu_BlockSize_y, 1, NonFatal ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + LoadField( "Flu_HJ_BlockSize_y", &RS.Flu_HJ_BlockSize_y, SID, TID, NonFatal, &RT.Flu_HJ_BlockSize_y, 1, NonFatal ); +# endif +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + LoadField( "GramFEScheme", &RS.GramFEScheme, SID, TID, NonFatal, &RT.GramFEScheme, 1, NonFatal ); + LoadField( "GramFEGamma", &RS.GramFEGamma, SID, TID, NonFatal, &RT.GramFEGamma, 1, NonFatal ); + LoadField( "GramFEG", &RS.GramFEG, SID, TID, NonFatal, &RT.GramFEG, 1, NonFatal ); + LoadField( "GramFENDelta", &RS.GramFENDelta, SID, TID, NonFatal, &RT.GramFENDelta, 1, NonFatal ); + LoadField( "GramFEOrder", &RS.GramFEOrder, SID, TID, NonFatal, &RT.GramFEOrder, 1, NonFatal ); + LoadField( "GramFEND", &RS.GramFEND, SID, TID, NonFatal, &RT.GramFEND, 1, NonFatal ); + LoadField( "GramFEFluNxt", &RS.GramFEFluNxt, SID, TID, NonFatal, &RT.GramFEFluNxt, 1, NonFatal ); +# endif # else # error : ERROR : unsupported MODEL !! # endif // MODEL @@ -1715,9 +1849,11 @@ void Check_SymConst( const char *FileName, const int FormatVersion ) LoadField( "Src_BlockSize", &RS.Src_BlockSize, SID, TID, NonFatal, &RT.Src_BlockSize, 1, NonFatal ); LoadField( "Src_GhostSize", &RS.Src_GhostSize, SID, TID, NonFatal, &RT.Src_GhostSize, 1, NonFatal ); LoadField( "Src_Nxt", &RS.Src_Nxt, SID, TID, NonFatal, &RT.Src_Nxt, 1, NonFatal ); +# if ( MODEL == HYDRO ) LoadField( "Src_NAuxDlep", &RS.Src_NAuxDlep, SID, TID, NonFatal, &RT.Src_NAuxDlep, 1, NonFatal ); LoadField( "Src_DlepProfNVar", &RS.Src_DlepProfNVar, SID, TID, NonFatal, &RT.Src_DlepProfNVar, 1, NonFatal ); LoadField( "Src_DlepProfNBinMax", &RS.Src_DlepProfNBinMax, SID, TID, NonFatal, &RT.Src_DlepProfNBinMax, 1, NonFatal ); +# endif LoadField( "Src_NAuxUser", &RS.Src_NAuxUser, SID, TID, NonFatal, &RT.Src_NAuxUser, 1, NonFatal ); LoadField( "Der_GhostSize", &RS.Der_GhostSize, SID, TID, NonFatal, &RT.Der_GhostSize, 1, NonFatal ); @@ -1855,7 +1991,13 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) # endif # if ( MODEL == ELBDM ) LoadField( "Dt__Phase", &RS.Dt__Phase, SID, TID, NonFatal, &RT.Dt__Phase, 1, NonFatal ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + LoadField( "Dt__HybridCFL", &RS.Dt__HybridCFL, SID, TID, NonFatal, &RT.Dt__HybridCFL, 1, NonFatal ); + LoadField( "Dt__HybridCFLInit", &RS.Dt__HybridCFLInit, SID, TID, NonFatal, &RT.Dt__HybridCFLInit, 1, NonFatal ); + LoadField( "Dt__HybridVelocity", &RS.Dt__HybridVelocity, SID, TID, NonFatal, &RT.Dt__HybridVelocity, 1, NonFatal ); + LoadField( "Dt__HybridVelocityInit", &RS.Dt__HybridVelocityInit, SID, TID, NonFatal, &RT.Dt__HybridVelocityInit, 1, NonFatal ); # endif +# endif // #if ( MODEL == ELBDM ) # ifdef PARTICLE LoadField( "Dt__ParVel", &RS.Dt__ParVel, SID, TID, NonFatal, &RT.Dt__ParVel, 1, NonFatal ); LoadField( "Dt__ParVelMax", &RS.Dt__ParVelMax, SID, TID, NonFatal, &RT.Dt__ParVelMax, 1, NonFatal ); @@ -1892,6 +2034,8 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) LoadField( "MaxLevel", &RS.MaxLevel, SID, TID, NonFatal, &RT.MaxLevel, 1, NonFatal ); LoadField( "Opt__Flag_Rho", &RS.Opt__Flag_Rho, SID, TID, NonFatal, &RT.Opt__Flag_Rho, 1, NonFatal ); LoadField( "Opt__Flag_RhoGradient", &RS.Opt__Flag_RhoGradient, SID, TID, NonFatal, &RT.Opt__Flag_RhoGradient, 1, NonFatal ); + LoadField( "Opt__Flag_Angular", &RS.Opt__Flag_Angular, SID, TID, NonFatal, &RT.Opt__Flag_Angular, 1, NonFatal ); + LoadField( "Opt__Flag_Radial", &RS.Opt__Flag_Radial, SID, TID, NonFatal, &RT.Opt__Flag_Radial, 1, NonFatal ); # if ( MODEL == HYDRO ) LoadField( "Opt__Flag_PresGradient", &RS.Opt__Flag_PresGradient, SID, TID, NonFatal, &RT.Opt__Flag_PresGradient, 1, NonFatal ); LoadField( "Opt__Flag_Vorticity", &RS.Opt__Flag_Vorticity, SID, TID, NonFatal, &RT.Opt__Flag_Vorticity, 1, NonFatal ); @@ -1908,7 +2052,12 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) # endif # if ( MODEL == ELBDM ) LoadField( "Opt__Flag_EngyDensity", &RS.Opt__Flag_EngyDensity, SID, TID, NonFatal, &RT.Opt__Flag_EngyDensity, 1, NonFatal ); + LoadField( "Opt__Flag_Spectral", &RS.Opt__Flag_Spectral, SID, TID, NonFatal, &RT.Opt__Flag_Spectral, 1, NonFatal ); + LoadField( "Opt__Flag_Spectral_N", &RS.Opt__Flag_Spectral_N, SID, TID, NonFatal, &RT.Opt__Flag_Spectral_N, 1, NonFatal ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + LoadField( "Opt__Flag_Interference", &RS.Opt__Flag_Interference, SID, TID, NonFatal, &RT.Opt__Flag_Interference, 1, NonFatal ); # endif +# endif // #if ( MODEL == ELBDM ) LoadField( "Opt__Flag_LohnerDens", &RS.Opt__Flag_LohnerDens, SID, TID, NonFatal, &RT.Opt__Flag_LohnerDens, 1, NonFatal ); # if ( MODEL == HYDRO ) LoadField( "Opt__Flag_LohnerEngy", &RS.Opt__Flag_LohnerEngy, SID, TID, NonFatal, &RT.Opt__Flag_LohnerEngy, 1, NonFatal ); @@ -1943,7 +2092,8 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) LoadField( "LB_Par_Weight", &RS.LB_Par_Weight, SID, TID, NonFatal, &RT.LB_Par_Weight, 1, NonFatal ); # endif LoadField( "Opt__RecordLoadBalance", &RS.Opt__RecordLoadBalance, SID, TID, NonFatal, &RT.Opt__RecordLoadBalance, 1, NonFatal ); -# endif + LoadField( "Opt__LB_ExchangeFather", &RS.Opt__LB_ExchangeFather, SID, TID, NonFatal, &RT.Opt__LB_ExchangeFather, 1, NonFatal ); +# endif // #ifdef LOAD_BALANCE LoadField( "Opt__MinimizeMPIBarrier", &RS.Opt__MinimizeMPIBarrier, SID, TID, NonFatal, &RT.Opt__MinimizeMPIBarrier, 1, NonFatal ); // fluid solvers in HYDRO @@ -1974,6 +2124,13 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) # endif LoadField( "ELBDM_Taylor3_Coeff", &RS.ELBDM_Taylor3_Coeff, SID, TID, NonFatal, &RT.ELBDM_Taylor3_Coeff, 1, NonFatal ); LoadField( "ELBDM_Taylor3_Auto", &RS.ELBDM_Taylor3_Auto, SID, TID, NonFatal, &RT.ELBDM_Taylor3_Auto, 1, NonFatal ); + LoadField( "ELBDM_RemoveMotionCM", &RS.ELBDM_RemoveMotionCM, SID, TID, NonFatal, &RT.ELBDM_RemoveMotionCM, 1, NonFatal ); + LoadField( "ELBDM_BaseSpectral", &RS.ELBDM_BaseSpectral, SID, TID, NonFatal, &RT.ELBDM_BaseSpectral, 1, NonFatal ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// ELBDM_FIRST_WAVE_LEVEL currently cannot be changed upon restart because the code cannot robustly handle the conversion +// from Re/Im to Dens/Phase due to the phase ambiguity introduced by vortices + LoadField( "ELBDM_FirstWaveLevel", &RS.ELBDM_FirstWaveLevel, SID, TID, NonFatal, &RT.ELBDM_FirstWaveLevel, 1, Fatal ); +# endif # endif // ELBDM // fluid solvers in both HYDRO/ELBDM @@ -2121,6 +2278,10 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) # endif # if ( MODEL == ELBDM ) LoadField( "Opt__Int_Phase", &RS.Opt__Int_Phase, SID, TID, NonFatal, &RT.Opt__Int_Phase, 1, NonFatal ); + LoadField( "Opt__Res_Phase", &RS.Opt__Res_Phase, SID, TID, NonFatal, &RT.Opt__Res_Phase, 1, NonFatal ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + LoadField( "Opt__Hybrid_Match_Phase", &RS.Opt__Hybrid_Match_Phase, SID, TID, NonFatal, &RT.Opt__Hybrid_Match_Phase, 1, NonFatal ); +# endif # endif LoadField( "Opt__Flu_IntScheme", &RS.Opt__Flu_IntScheme, SID, TID, NonFatal, &RT.Opt__Flu_IntScheme, 1, NonFatal ); LoadField( "Opt__RefFlu_IntScheme", &RS.Opt__RefFlu_IntScheme, SID, TID, NonFatal, &RT.Opt__RefFlu_IntScheme, 1, NonFatal ); @@ -2140,6 +2301,14 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) # endif LoadField( "Mono_MaxIter", &RS.Mono_MaxIter, SID, TID, NonFatal, &RT.Mono_MaxIter, 1, NonFatal ); LoadField( "IntOppSign0thOrder", &RS.IntOppSign0thOrder, SID, TID, NonFatal, &RT.IntOppSign0thOrder, 1, NonFatal ); +# ifdef SUPPORT_SPECTRAL_INT + LoadField( "SpecInt_TablePath", &RS.SpecInt_TablePath, SID, TID, NonFatal, RT.SpecInt_TablePath, 1, NonFatal ); + LoadField( "SpecInt_GhostBoundary", &RS.SpecInt_GhostBoundary, SID, TID, NonFatal, &RT.SpecInt_GhostBoundary, 1, NonFatal ); +# if ( MODEL == ELBDM ) + LoadField( "SpecInt_XY_Instead_DePha",&RS.SpecInt_XY_Instead_DePha,SID, TID, NonFatal, &RT.SpecInt_XY_Instead_DePha, 1, NonFatal ); + LoadField( "SpecInt_VortexThreshold", &RS.SpecInt_VortexThreshold, SID, TID, NonFatal, &RT.SpecInt_VortexThreshold, 1, NonFatal ); +# endif +# endif // #ifdef SUPPORT_SPECTRAL_INT // data dump LoadField( "Opt__Output_Total", &RS.Opt__Output_Total, SID, TID, NonFatal, &RT.Opt__Output_Total, 1, NonFatal ); @@ -2147,6 +2316,7 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) LoadField( "Opt__Output_User", &RS.Opt__Output_User, SID, TID, NonFatal, &RT.Opt__Output_User, 1, NonFatal ); # ifdef PARTICLE LoadField( "Opt__Output_Par_Mode", &RS.Opt__Output_Par_Mode, SID, TID, NonFatal, &RT.Opt__Output_Par_Mode, 1, NonFatal ); + LoadField( "Opt__Output_Par_Mesh", &RS.Opt__Output_Par_Mesh, SID, TID, NonFatal, &RT.Opt__Output_Par_Mesh, 1, NonFatal ); # endif LoadField( "Opt__Output_BasePS", &RS.Opt__Output_BasePS, SID, TID, NonFatal, &RT.Opt__Output_BasePS, 1, NonFatal ); if ( OPT__OUTPUT_PART ) @@ -2187,6 +2357,7 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) LoadField( "Opt__Output_Step", &RS.Opt__Output_Step, SID, TID, NonFatal, &RT.Opt__Output_Step, 1, NonFatal ); LoadField( "Opt__Output_Dt", &RS.Opt__Output_Dt, SID, TID, NonFatal, &RT.Opt__Output_Dt, 1, NonFatal ); LoadField( "Opt__Output_Text_Format_Flt", &RS.Opt__Output_Text_Format_Flt, SID, TID, NonFatal, RT.Opt__Output_Text_Format_Flt, 1, NonFatal ); + LoadField( "Opt__Output_Text_Length_Int", &RS.Opt__Output_Text_Length_Int, SID, TID, NonFatal, &RT.Opt__Output_Text_Length_Int, 1, NonFatal ); } if ( OPT__OUTPUT_PART ) { LoadField( "Output_PartX", &RS.Output_PartX, SID, TID, NonFatal, &RT.Output_PartX, 1, NonFatal ); @@ -2270,6 +2441,11 @@ void Check_InputPara( const char *FileName, const int FormatVersion ) for (int t=0; t<5; t++) RS.FlagTable_Lohner [lv][t] = -1.0; + for (int t=0; t<3; t++) + RS.FlagTable_Angular [lv][t] = -1.0; + + RS.FlagTable_Radial [lv] = -1.0; + RS.FlagTable_User [lv].p = malloc( OPT__FLAG_USER_NUM*sizeof(double) ); RS.FlagTable_User [lv].len = OPT__FLAG_USER_NUM; for (int t=0; t= 2210) !!\n" ); # endif + +# if ( defined PARTICLE && ( (defined FLOAT8 && !defined FLOAT8_PAR) || (!defined FLOAT8 && defined FLOAT8_PAR) ) ) + if ( FormatVersion < 2300 ) + Aux_Error( ERROR_INFO, "Must adopt FLOAT8_PAR=FLOAT8 for OPT__OUTPUT_TOTAL=2 (C-binary) for versions < 2300 !!\n" ); +# endif } MPI_Barrier( MPI_COMM_WORLD ); @@ -332,7 +333,16 @@ void Init_ByRestart() ExpectSize += ParInfoSize; } - ExpectSize += (long)PAR_NATT_STORED*amr->Par->NPar_Active_AllRank*sizeof(real_par); + if ( FormatVersion >= 2300 ) + { + ExpectSize += (long)PAR_NATT_FLT_STORED*amr->Par->NPar_Active_AllRank*sizeof(real_par); + ExpectSize += (long)PAR_NATT_INT_STORED*amr->Par->NPar_Active_AllRank*sizeof(long_par); + } + else + { + ExpectSize += (long)PAR_NATT_FLT_STORED*amr->Par->NPar_Active_AllRank*sizeof(real_par); + ExpectSize += (long)1*amr->Par->NPar_Active_AllRank*sizeof(real_par); // ParType + } # endif fseek( File, 0, SEEK_END ); @@ -577,22 +587,26 @@ void Init_ByRestart() // e. load particles // ================================================================================================= # ifdef PARTICLE - const long ParDataSize1v = amr->Par->NPar_Active_AllRank*sizeof(real_par); + const long ParFltDataSize1v = amr->Par->NPar_Active_AllRank*sizeof(real_par); + const long ParIntDataSize1v = amr->Par->NPar_Active_AllRank*sizeof(long_par); long *NewParList = new long [MaxNParInOnePatch]; - real_par **ParBuf = NULL; + real_par **ParFltBuf = NULL; + long_par **ParIntBuf = NULL; - real_par NewParAtt[PAR_NATT_TOTAL]; + real_par NewParAttFlt[PAR_NATT_FLT_TOTAL]; + long_par NewParAttInt[PAR_NATT_INT_TOTAL]; long GParID; int NParThisPatch; -// be careful about using ParBuf returned from Aux_AllocateArray2D, which is set to NULL if MaxNParInOnePatch == 0 -// --> for example, accessing ParBuf[0...PAR_NATT_STORED-1] will be illegal when MaxNParInOnePatch == 0 - Aux_AllocateArray2D( ParBuf, PAR_NATT_STORED, MaxNParInOnePatch ); +// be careful about using ParFlt/IntBuf returned from Aux_AllocateArray2D, which is set to NULL if MaxNParInOnePatch == 0 +// --> for example, accessing ParFlt/IntBuf[0...PAR_NATT_FLT/INT_STORED-1] will be illegal when MaxNParInOnePatch == 0 + Aux_AllocateArray2D( ParFltBuf, PAR_NATT_FLT_STORED, MaxNParInOnePatch ); + Aux_AllocateArray2D( ParIntBuf, PAR_NATT_INT_STORED, MaxNParInOnePatch ); // all particles are assumed to be synchronized with the base level - NewParAtt[PAR_TIME] = Time[0]; + NewParAttFlt[PAR_TIME] = Time[0]; // allocate particle repository @@ -633,21 +647,57 @@ void Init_ByRestart() amr->patch[0][lv][PID]->NPar = 0; // load one particle attribute at a time - for (int v=0; vPar->AddOneParticle( NewParAtt ); + NewParList[p] = amr->Par->AddOneParticle( NewParAttFlt, NewParAttInt ); # ifdef DEBUG_PARTICLE if ( NewParList[p] >= NParThisRank ) @@ -657,7 +707,7 @@ void Init_ByRestart() } // for (int p=0; pPar->Type; + const long_par *PType = amr->Par->Type; # ifdef DEBUG_PARTICLE char Comment[100]; sprintf( Comment, "%s, PID %d, NPar %d", __FUNCTION__, PID, NParThisPatch ); @@ -685,7 +735,8 @@ void Init_ByRestart() // free memory delete [] NewParList; - Aux_DeallocateArray2D( ParBuf ); + Aux_DeallocateArray2D( ParFltBuf ); + Aux_DeallocateArray2D( ParIntBuf ); # endif // #ifdef PARTICLE @@ -869,7 +920,8 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, int &NLv_Re bool use_psolver_10to14; int ncomp_fluid, patch_size, flu_ghost_size, pot_ghost_size, gra_ghost_size, check_intermediate; int flu_block_size_x, flu_block_size_y, pot_block_size_x, pot_block_size_z, gra_block_size; - int par_natt_stored, par_natt_user; + int par_natt_flt_stored, par_natt_flt_user; + int par_natt_int_stored, par_natt_int_user; double min_pres, max_error; fseek( File, HeaderOffset_Constant, SEEK_SET ); @@ -893,8 +945,10 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, int &NLv_Re fread( &pot_block_size_x, sizeof(int), 1, File ); fread( &pot_block_size_z, sizeof(int), 1, File ); fread( &gra_block_size, sizeof(int), 1, File ); - fread( &par_natt_stored, sizeof(int), 1, File ); - fread( &par_natt_user, sizeof(int), 1, File ); + fread( &par_natt_flt_stored, sizeof(int), 1, File ); + fread( &par_natt_flt_user, sizeof(int), 1, File ); + fread( &par_natt_int_stored, sizeof(int), 1, File ); + fread( &par_natt_int_user, sizeof(int), 1, File ); // c. load the simulation parameters recorded in the file "Input__Parameter" @@ -1016,7 +1070,9 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, int &NLv_Re if ( FormatVersion < 2210 ) opt__output_cc_mag = false; +# if ( MODEL == HYDRO ) if ( FormatVersion < 2220 ) eos = EOS_GAMMA; +# endif if ( MPI_Rank == 0 ) Aux_Message( stdout, " Loading simulation parameters ... done\n" ); @@ -1194,7 +1250,9 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, int &NLv_Re CompareVar( "MAX_PATCH", max_patch, MAX_PATCH, NonFatal ); +# if ( MODEL == HYDRO ) CompareVar( "EOS", eos, EOS, NonFatal ); +# endif @@ -1350,19 +1408,31 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, int &NLv_Re // check in PARTICLE // ------------------ # ifdef PARTICLE - if ( FormatVersion >= 2200 ) - CompareVar( "PAR_NATT_STORED", par_natt_stored, PAR_NATT_STORED, Fatal ); + if ( FormatVersion >= 2300 ) + CompareVar( "PAR_NATT_FLT_STORED", par_natt_flt_stored, PAR_NATT_FLT_STORED, Fatal ); + else if ( FormatVersion >= 2200 ) + CompareVar( "PAR_NATT_FLT_STORED", par_natt_flt_stored, PAR_NATT_FLT_STORED+1, Fatal ); else - CompareVar( "PAR_NATT_STORED", par_natt_stored, PAR_NATT_STORED, NonFatal ); + CompareVar( "PAR_NATT_FLT_STORED", par_natt_flt_stored, PAR_NATT_FLT_STORED, NonFatal ); if ( FormatVersion >= 2200 ) - CompareVar( "PAR_NATT_USER", par_natt_user, PAR_NATT_USER, Fatal ); + CompareVar( "PAR_NATT_FLT_USER", par_natt_flt_user, PAR_NATT_FLT_USER, Fatal ); + else + CompareVar( "PAR_NATT_FLT_USER", par_natt_flt_user, PAR_NATT_FLT_USER, NonFatal ); + + if ( FormatVersion >= 2300 ) + CompareVar( "PAR_NATT_INT_STORED", par_natt_int_stored, PAR_NATT_INT_STORED, Fatal ); + else + CompareVar( "PAR_NATT_INT_STORED", par_natt_int_stored, PAR_NATT_INT_STORED, NonFatal ); + + if ( FormatVersion >= 2300 ) + CompareVar( "PAR_NATT_INT_USER", par_natt_int_user, PAR_NATT_INT_USER, Fatal ); else - CompareVar( "PAR_NATT_USER", par_natt_user, PAR_NATT_USER, NonFatal ); + CompareVar( "PAR_NATT_INT_USER", par_natt_int_user, PAR_NATT_INT_USER, NonFatal ); - if ( par_natt_user > 0 && FormatVersion < 2200 && MPI_Rank == 0 ) - Aux_Message( stderr, "WARNING : loading user-defined particle attributes (PAR_NATT_USER = %d) " - "from version < 2200 will likely fail !!\n", par_natt_user ); + if ( par_natt_flt_user > 0 && FormatVersion < 2200 && MPI_Rank == 0 ) + Aux_Message( stderr, "WARNING : loading user-defined particle attributes (PAR_NATT_FLT_USER = %d) " + "from version < 2200 will likely fail !!\n", par_natt_flt_user ); # endif diff --git a/src/Init/Init_FFTW.cpp b/src/Init/Init_FFTW.cpp index c6ed018186..acc1b78a1d 100644 --- a/src/Init/Init_FFTW.cpp +++ b/src/Init/Init_FFTW.cpp @@ -8,6 +8,12 @@ root_fftw::real_plan_nd FFTW_Plan_PS; // PS : plan for ca #ifdef GRAVITY root_fftw::real_plan_nd FFTW_Plan_Poi, FFTW_Plan_Poi_Inv; // Poi : plan for the self-gravity Poisson solver #endif // #ifdef GRAVITY +#if ( MODEL == ELBDM ) +root_fftw::complex_plan_nd FFTW_Plan_Psi, FFTW_Plan_Psi_Inv; // Psi : plan for the ELBDM spectral solver +#if ( WAVE_SCHEME == WAVE_GRAMFE ) +gramfe_fftw::complex_plan_1d FFTW_Plan_ExtPsi, FFTW_Plan_ExtPsi_Inv; // ExtPsi : plan for the Gram Fourier extension solver +#endif // #if (WAVE_SCHEME == WAVE_GRAMFE) +#endif // #if ( MODEL == ELBDM ) @@ -49,6 +55,7 @@ void Init_FFTW() if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... ", __FUNCTION__ ); + # if ( SUPPORT_FFTW == FFTW3 ) FFTW3_Double_OMP_Enabled = false; FFTW3_Single_OMP_Enabled = false; @@ -116,8 +123,28 @@ void Init_FFTW() } # endif // # ifdef GRAVITY +// determine the FFT size for the base-level FFT wave solver +# if ( MODEL == ELBDM ) + int Psi_FFT_Size[3] = { NX0_TOT[0], NX0_TOT[1], NX0_TOT[2] }; +# if ( defined(SERIAL) || SUPPORT_FFTW == FFTW3 ) + int InvPsi_FFT_Size[3] = { NX0_TOT[0], NX0_TOT[1], NX0_TOT[2] }; +# else // # ifdef SERIAL || FFTW3 +// Note that the dimensions of the inverse transform in FFTW2, +// which are given by the dimensions of the output of the forward transform, +// are Ny*Nz*Nx because we are using "FFTW_TRANSPOSED_ORDER" in fftwnd_mpi(). + int InvPsi_FFT_Size[3] = { NX0_TOT[0], NX0_TOT[2], NX0_TOT[1] }; +# endif // # ifdef SERIAL || FFTW3 ... # else + +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + int ExtPsi_FFT_Size = GRAMFE_FLU_NXT; +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) +# endif // # if ( MODEL == ELBDM ) real* PS = NULL; real* RhoK = NULL; + real* PsiK = NULL; +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + gramfe_fftw::fft_complex* ExtPsiK = NULL; +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) // determine how to initialise fftw plans int StartupFlag; @@ -139,14 +166,49 @@ void Init_FFTW() # ifdef GRAVITY RhoK = (real*) root_fftw::fft_malloc(ComputePaddedTotalSize(Gravity_FFT_Size) * sizeof(real)); # endif // # ifdef GRAVITY +# if ( MODEL == ELBDM ) + PsiK = (real*) root_fftw::fft_malloc( ComputeTotalSize ( Psi_FFT_Size ) * sizeof(real) * 2 ); // 2 * real for size of complex number +# endif // # if ( MODEL == ELBDM ) + +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + ExtPsiK = (gramfe_fftw::fft_complex*) gramfe_fftw::fft_malloc( ExtPsi_FFT_Size * sizeof(gramfe_fftw::fft_complex) ); +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) # endif // # if ( SUPPORT_FFTW == FFTW3 ) + // create plans for power spectrum and the self-gravity solver FFTW_Plan_PS = root_fftw_create_3d_r2c_plan(PS_FFT_Size, PS, StartupFlag); # ifdef GRAVITY FFTW_Plan_Poi = root_fftw_create_3d_r2c_plan(Gravity_FFT_Size, RhoK, StartupFlag); FFTW_Plan_Poi_Inv = root_fftw_create_3d_c2r_plan(Gravity_FFT_Size, RhoK, StartupFlag); # endif // # ifdef GRAVITY +# if ( MODEL == ELBDM ) + FFTW_Plan_Psi = root_fftw_create_3d_forward_c2c_plan ( Psi_FFT_Size, PsiK, StartupFlag ); + FFTW_Plan_Psi_Inv = root_fftw_create_3d_backward_c2c_plan( InvPsi_FFT_Size, PsiK, StartupFlag ); + +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + +// the Gram-Fourier extension planners only use one thread because OMP parallelisation evolves different patches parallely +// From the FFTW3 documentation: https://www.fftw.org/fftw3_doc/Usage-of-Multi_002dthreaded-FFTW.html +// "You can call fftw_plan_with_nthreads, create some plans, +// call fftw_plan_with_nthreads again with a different argument, and create some more plans for a new number of threads." + +# if ( defined(SUPPORT_FFTW3) && defined(OPENMP) ) + if (FFTW3_Double_OMP_Enabled) fftw_plan_with_nthreads(1); + if (FFTW3_Single_OMP_Enabled) fftwf_plan_with_nthreads(1); +# endif // # if ( defined(SUPPORT_FFTW3) && defined(OPENMP) ) + + FFTW_Plan_ExtPsi = gramfe_fftw_create_1d_forward_c2c_plan ( ExtPsi_FFT_Size, ExtPsiK, StartupFlag ); + FFTW_Plan_ExtPsi_Inv = gramfe_fftw_create_1d_backward_c2c_plan( ExtPsi_FFT_Size, ExtPsiK, StartupFlag ); + +// restore regular settings +# if ( defined(SUPPORT_FFTW3) && defined(OPENMP) ) + if (FFTW3_Double_OMP_Enabled) fftw_plan_with_nthreads(OMP_NTHREAD); + if (FFTW3_Single_OMP_Enabled) fftwf_plan_with_nthreads(OMP_NTHREAD); +# endif // # if ( defined(SUPPORT_FFTW3) && defined(OPENMP) ) +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) + +# endif // # if ( MODEL == ELBDM ) // free memory for arrays in fftw3 # if ( SUPPORT_FFTW == FFTW3 ) @@ -154,6 +216,12 @@ void Init_FFTW() # ifdef GRAVITY root_fftw::fft_free(RhoK); # endif // # ifdef GRAVITY +# if ( MODEL == ELBDM ) + root_fftw::fft_free( PsiK ); +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + gramfe_fftw::fft_free( ExtPsiK ); +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) +# endif // # if ( MODEL == ELBDM ) # endif // # if ( SUPPORT_FFTW == FFTW3 ) @@ -179,20 +247,34 @@ void End_FFTW() root_fftw::destroy_real_plan_nd ( FFTW_Plan_Poi_Inv ); # endif // # ifdef GRAVITY + +# if ( MODEL == ELBDM ) + root_fftw::destroy_complex_plan_nd ( FFTW_Plan_Psi ); + root_fftw::destroy_complex_plan_nd ( FFTW_Plan_Psi_Inv ); + +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + gramfe_fftw::destroy_complex_plan_1d ( FFTW_Plan_ExtPsi ); + gramfe_fftw::destroy_complex_plan_1d ( FFTW_Plan_ExtPsi_Inv ); +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) +# endif // #if ( MODEL == ELBDM ) + # if ( SUPPORT_FFTW == FFTW3 ) # ifdef OPENMP - if (FFTW3_Double_OMP_Enabled) fftw_cleanup_threads(); - if (FFTW3_Single_OMP_Enabled) fftwf_cleanup_threads(); -# endif + if ( FFTW3_Double_OMP_Enabled ) fftw_cleanup_threads(); + if ( FFTW3_Single_OMP_Enabled ) fftwf_cleanup_threads(); +# endif // # ifdef OPENMP + # ifdef SERIAL fftw_cleanup(); fftwf_cleanup(); -# else +# else // # ifdef SERIAL +// fftwx_mpi_cleanup also calls fftwx_cleanup fftw_mpi_cleanup(); fftwf_mpi_cleanup(); -# endif +# endif // # ifdef SERIAL ... # else # endif // # if ( SUPPORT_FFTW == FFTW3 ) + if ( MPI_Rank == 0 ) Aux_Message( stdout, "done\n" ); } // FUNCTION : End_FFTW diff --git a/src/Init/Init_Field.cpp b/src/Init/Init_Field.cpp index b3f7be1493..bba374d938 100644 --- a/src/Init/Init_Field.cpp +++ b/src/Init/Init_Field.cpp @@ -68,6 +68,30 @@ void Init_Field() # endif # elif ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_WAVE ) + Idx_Dens = AddField( "Dens", FIXUP_FLUX_YES, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); + Idx_Real = AddField( "Real", FIXUP_FLUX_NO, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); + Idx_Imag = AddField( "Imag", FIXUP_FLUX_NO, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); + + if ( Idx_Dens != DENS ) Aux_Error( ERROR_INFO, "inconsistent Idx_Dens (%d != %d) !!\n", Idx_Dens, DENS ); + if ( Idx_Real != REAL ) Aux_Error( ERROR_INFO, "inconsistent Idx_Real (%d != %d) !!\n", Idx_Real, REAL ); + if ( Idx_Imag != IMAG ) Aux_Error( ERROR_INFO, "inconsistent Idx_Imag (%d != %d) !!\n", Idx_Imag, IMAG ); + +# elif ( ELBDM_SCHEME == ELBDM_HYBRID ) + Idx_Dens = AddField( "Dens", FIXUP_FLUX_YES, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); + Idx_Phas = AddField( "Phase", FIXUP_FLUX_NO, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); + Idx_Stub = AddField( "Stub", FIXUP_FLUX_NO, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); + Idx_Real = Idx_Phas; + Idx_Imag = Idx_Stub; + + if ( Idx_Dens != DENS ) Aux_Error( ERROR_INFO, "inconsistent Idx_Dens (%d != %d) !!\n", Idx_Dens, DENS ); + if ( Idx_Real != REAL ) Aux_Error( ERROR_INFO, "inconsistent Idx_Real (%d != %d) !!\n", Idx_Real, REAL ); + if ( Idx_Imag != IMAG ) Aux_Error( ERROR_INFO, "inconsistent Idx_Imag (%d != %d) !!\n", Idx_Imag, IMAG ); + if ( Idx_Phas != PHAS ) Aux_Error( ERROR_INFO, "inconsistent Idx_Phas (%d != %d) !!\n", Idx_Phas, PHAS ); + if ( Idx_Stub != STUB ) Aux_Error( ERROR_INFO, "inconsistent Idx_Stub (%d != %d) !!\n", Idx_Stub, STUB ); +# else +# error : ERROR : unsupported ELBDM_SCHEME !! +# endif // ELBDM_SCHEME # else # error : ERROR : unsupported MODEL !! diff --git a/src/Init/Init_GAMER.cpp b/src/Init/Init_GAMER.cpp index 095a2ceba3..fc0bfa840a 100644 --- a/src/Init/Init_GAMER.cpp +++ b/src/Init/Init_GAMER.cpp @@ -188,6 +188,12 @@ void Init_GAMER( int *argc, char ***argv ) # endif +// initialize variables for dumping particle attributes mapped from mesh quantities +# ifdef PARTICLE + if ( OPT__OUTPUT_PAR_MESH ) Par_Init_Attribute_Mesh(); +# endif + + // initialize particles # ifdef PARTICLE switch ( amr->Par->Init ) @@ -197,7 +203,7 @@ void Init_GAMER( int *argc, char ***argv ) Par_Init_ByFunction_Ptr( amr->Par->NPar_Active, amr->Par->NPar_Active_AllRank, amr->Par->Mass, amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ, amr->Par->VelX, amr->Par->VelY, amr->Par->VelZ, amr->Par->Time, - amr->Par->Type, amr->Par->Attribute ); + amr->Par->Type, amr->Par->AttributeFlt, amr->Par->AttributeInt ); else Aux_Error( ERROR_INFO, "Par_Init_ByFunction_Ptr == NULL for PAR_INIT = 1 !!\n" ); break; @@ -218,7 +224,7 @@ void Init_GAMER( int *argc, char ***argv ) # endif // #ifdef PARTICLE -// initialize the AMR structure and fluid field +// initialize the local AMR structure and grid fields switch ( OPT__INIT ) { case INIT_BY_FUNCTION : Init_ByFunction(); break; @@ -231,6 +237,13 @@ void Init_GAMER( int *argc, char ***argv ) } +// initialize the global AMR structure if required +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + delete GlobalTree; // in case it has been allocated already + GlobalTree = new LB_GlobalTree; +# endif + + // ensure B field consistency on the shared interfaces between sibling patches # if ( MODEL == HYDRO && defined MHD ) if ( OPT__SAME_INTERFACE_B ) @@ -279,7 +292,7 @@ void Init_GAMER( int *argc, char ***argv ) } // for (int lv=0; lv 0 ) for (int FlagMode=0; FlagMode !!\n", + lv, TargetName ); } - File = fopen( TargetName, "r" ); - -// skip the header - getline( &input_line, &len, File ); - -// begin to read - for (int lv=0; lv !!\n", - lv, TargetName ); - } + sscanf( input_line, "%d%n", &Trash, &offset ); + input_line += offset; -// OPT__FLAG_ENGY_DENSITY and OPT__FLAG_LOHNER have two and five columns to be loaded, respectively - if ( FlagMode == 3 ) sscanf( input_line, "%d%lf%lf", &Trash, &FlagTable_EngyDensity[lv][0], - &FlagTable_EngyDensity[lv][1] ); - else if ( FlagMode == 4 ) sscanf( input_line, "%d%lf%lf%lf%lf%lf", &Trash, &FlagTable_Lohner[lv][0], - &FlagTable_Lohner[lv][1], - &FlagTable_Lohner[lv][2], - &FlagTable_Lohner[lv][3], - &FlagTable_Lohner[lv][4] ); -// OPT__FLAG_USER has OPT__FLAG_USER_NUM columns to be loaded - else if ( FlagMode == 5 ) + for (int t=0; t= 0.0 && + FlagTable_Angular[lv][1] >= 0.0 && + FlagTable_Angular[lv][0] > 0.5*FlagTable_Angular[lv][1] ) + Aux_Message( stderr, "WARNING : AngRes_Max (%20.14e) > 0.5*AngRes_Min (%20.14e) at lv %d (note that AngRes_Max has higher priority) !!\n", + FlagTable_Angular[lv][0], 0.5*FlagTable_Angular[lv][1], lv ); + } + +// others use the default format: (integer, double) + else sscanf( input_line, "%d%lf", &Trash, &FlagTable[FlagMode][lv] ); + } // for (int lv=0; lvAdd( "MPI_NRANK_X", &MPI_NRank_X[0], -1, NoMin_int, NoMax_int ); ReadPara->Add( "MPI_NRANK_Y", &MPI_NRank_X[1], -1, NoMin_int, NoMax_int ); ReadPara->Add( "MPI_NRANK_Z", &MPI_NRank_X[2], -1, NoMin_int, NoMax_int ); -// do not check OMP_NTHREAD since it may be reset by Init_ResetDefaultParameter() +// do not check OMP_NTHREAD since it may be reset by Init_ResetParameter() ReadPara->Add( "OMP_NTHREAD", &OMP_NTHREAD, -1, NoMin_int, NoMax_int ); // do not check END_T and END_STEP since they may be reset by test problems or restart ReadPara->Add( "END_T", &END_T, -1.0, NoMin_double, NoMax_double ); @@ -65,7 +65,7 @@ void Init_Load_Parameter() ReadPara->Add( "OPT__BC_FLU_ZP", &OPT__BC_FLU[5], -1, 1, 5 ); # ifdef GRAVITY ReadPara->Add( "OPT__BC_POT", &OPT__BC_POT, -1, 1, 2 ); -// do not check GFUNC_COEFF0 since it may be reset by Init_ResetDefaultParameter() +// do not check GFUNC_COEFF0 since it may be reset by Init_ResetParameter() ReadPara->Add( "GFUNC_COEFF0", &GFUNC_COEFF0, -1.0, NoMin_double, NoMax_double ); # endif @@ -77,6 +77,7 @@ void Init_Load_Parameter() ReadPara->Add( "PAR_INIT", &amr->Par->Init, -1, 1, 3 ); ReadPara->Add( "PAR_IC_FORMAT", &amr->Par->ParICFormat, PAR_IC_FORMAT_ATT_ID, 1, 2 ); ReadPara->Add( "PAR_IC_FLOAT8", &PAR_IC_FLOAT8, -1, NoMin_int, 1 ); + ReadPara->Add( "PAR_IC_INT8", &PAR_IC_INT8, -1, NoMin_int, 1 ); ReadPara->Add( "PAR_IC_MASS", &amr->Par->ParICMass, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "PAR_IC_TYPE", &amr->Par->ParICType, -1, NoMin_int, PAR_NTYPE-1 ); ReadPara->Add( "PAR_INTERP", &amr->Par->Interp, PAR_INTERP_CIC, 1, 3 ); @@ -85,7 +86,7 @@ void Init_Load_Parameter() ReadPara->Add( "PAR_TR_INTEG", &amr->Par->IntegTracer, TRACER_INTEG_RK2, 1, 2 ); ReadPara->Add( "PAR_IMPROVE_ACC", &amr->Par->ImproveAcc, true, Useless_bool, Useless_bool ); ReadPara->Add( "PAR_PREDICT_POS", &amr->Par->PredictPos, true, Useless_bool, Useless_bool ); -// do not check PAR_REMOVE_CELL since it may be reset by Init_ResetDefaultParameter() +// do not check PAR_REMOVE_CELL since it may be reset by Init_ResetParameter() ReadPara->Add( "PAR_REMOVE_CELL", &amr->Par->RemoveCell, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "OPT__FREEZE_PAR", &OPT__FREEZE_PAR, false, Useless_bool, Useless_bool ); ReadPara->Add( "PAR_TR_VEL_CORR", &amr->Par->TracerVelCorr, false, Useless_bool, Useless_bool ); @@ -102,7 +103,7 @@ void Init_Load_Parameter() // time-step ReadPara->Add( "DT__MAX", &DT__MAX, -1.0, NoMin_double, NoMax_double ); -// do not check DT__FLUID/FLUID_INIT/GRAVITY/PARVEL_MAX since they may be reset by Init_ResetDefaultParameter() +// do not check DT__FLUID/FLUID_INIT/GRAVITY/PARVEL_MAX/HYBRID_* since they may be reset by Init_ResetParameter() ReadPara->Add( "DT__FLUID", &DT__FLUID, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "DT__FLUID_INIT", &DT__FLUID_INIT, -1.0, NoMin_double, NoMax_double ); # ifdef SRHD @@ -113,7 +114,13 @@ void Init_Load_Parameter() # endif # if ( MODEL == ELBDM ) ReadPara->Add( "DT__PHASE", &DT__PHASE, 0.0, 0.0, NoMax_double ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + ReadPara->Add( "DT__HYBRID_CFL", &DT__HYBRID_CFL, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "DT__HYBRID_CFL_INIT", &DT__HYBRID_CFL_INIT, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "DT__HYBRID_VELOCITY", &DT__HYBRID_VELOCITY, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "DT__HYBRID_VELOCITY_INIT", &DT__HYBRID_VELOCITY_INIT, -1.0, NoMin_double, NoMax_double ); # endif +# endif // #if ( MODEL == ELBDM ) # ifdef PARTICLE ReadPara->Add( "DT__PARVEL", &DT__PARVEL, 0.5, 0.0, NoMax_double ); ReadPara->Add( "DT__PARVEL_MAX", &DT__PARVEL_MAX, -1.0, NoMin_double, NoMax_double ); @@ -174,11 +181,24 @@ void Init_Load_Parameter() # endif # if ( MODEL == ELBDM ) ReadPara->Add( "OPT__FLAG_ENGY_DENSITY", &OPT__FLAG_ENGY_DENSITY, false, Useless_bool, Useless_bool ); + ReadPara->Add( "OPT__FLAG_SPECTRAL", &OPT__FLAG_SPECTRAL, false, Useless_bool, Useless_bool ); + ReadPara->Add( "OPT__FLAG_SPECTRAL_N", &OPT__FLAG_SPECTRAL_N, 2, 1, 14 ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + ReadPara->Add( "OPT__FLAG_INTERFERENCE", &OPT__FLAG_INTERFERENCE, false, Useless_bool, Useless_bool ); # endif +# endif // #if ( MODEL == ELBDM ) ReadPara->Add( "OPT__FLAG_LOHNER_FORM", &OPT__FLAG_LOHNER_FORM, LOHNER_FLASH2, 1, 4 ); ReadPara->Add( "OPT__FLAG_USER", &OPT__FLAG_USER, false, Useless_bool, Useless_bool ); ReadPara->Add( "OPT__FLAG_USER_NUM", &OPT__FLAG_USER_NUM, 1, 1, NoMax_int ); ReadPara->Add( "OPT__FLAG_REGION", &OPT__FLAG_REGION, false, Useless_bool, Useless_bool ); + ReadPara->Add( "OPT__FLAG_ANGULAR", &OPT__FLAG_ANGULAR, false, Useless_bool, Useless_bool ); + ReadPara->Add( "FLAG_ANGULAR_CEN_X", &FLAG_ANGULAR_CEN_X, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "FLAG_ANGULAR_CEN_Y", &FLAG_ANGULAR_CEN_Y, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "FLAG_ANGULAR_CEN_Z", &FLAG_ANGULAR_CEN_Z, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "OPT__FLAG_RADIAL", &OPT__FLAG_RADIAL, false, Useless_bool, Useless_bool ); + ReadPara->Add( "FLAG_RADIAL_CEN_X", &FLAG_RADIAL_CEN_X, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "FLAG_RADIAL_CEN_Y", &FLAG_RADIAL_CEN_Y, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "FLAG_RADIAL_CEN_Z", &FLAG_RADIAL_CEN_Z, -1.0, NoMin_double, NoMax_double ); # ifdef PARTICLE ReadPara->Add( "OPT__FLAG_NPAR_PATCH", &OPT__FLAG_NPAR_PATCH, 0, 0, 2 ); ReadPara->Add( "OPT__FLAG_NPAR_CELL", &OPT__FLAG_NPAR_CELL, false, Useless_bool, Useless_bool ); @@ -200,14 +220,20 @@ void Init_Load_Parameter() ReadPara->Add( "LB_INPUT__PAR_WEIGHT", &LB_INPUT__PAR_WEIGHT, 0.0, 0.0, NoMax_double ); # endif ReadPara->Add( "OPT__RECORD_LOAD_BALANCE", &OPT__RECORD_LOAD_BALANCE, true, Useless_bool, Useless_bool ); -# endif +// exchange father pathes for hybrid scheme with MPI +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + ReadPara->Add( "OPT__LB_EXCHANGE_FATHER", &OPT__LB_EXCHANGE_FATHER, true, Useless_bool, Useless_bool ); +# else + ReadPara->Add( "OPT__LB_EXCHANGE_FATHER", &OPT__LB_EXCHANGE_FATHER, false, Useless_bool, Useless_bool ); +# endif // ELBDM_SCHEME +# endif // #ifdef LOAD_BALANCE ReadPara->Add( "OPT__MINIMIZE_MPI_BARRIER", &OPT__MINIMIZE_MPI_BARRIER, false, Useless_bool, Useless_bool ); // source terms ReadPara->Add( "SRC_DELEPTONIZATION", &SrcTerms.Deleptonization, false, Useless_bool, Useless_bool ); ReadPara->Add( "SRC_USER", &SrcTerms.User, false, Useless_bool, Useless_bool ); -// do not check SRC_GPU_NPGROUP since it may be reset by either Init_ResetDefaultParameter() or CUAPI_SetMemSize() +// do not check SRC_GPU_NPGROUP since it may be reset by either Init_ResetParameter() or CUAPI_SetMemSize() ReadPara->Add( "SRC_GPU_NPGROUP", &SRC_GPU_NPGROUP, -1, NoMin_int, NoMax_int ); @@ -226,7 +252,7 @@ void Init_Load_Parameter() ReadPara->Add( "GRACKLE_THREE_BODY_RATE", &GRACKLE_THREE_BODY_RATE, 0, 0, 5 ); ReadPara->Add( "GRACKLE_CIE_COOLING", &GRACKLE_CIE_COOLING, false, Useless_bool, Useless_bool ); ReadPara->Add( "GRACKLE_H2_OPA_APPROX", &GRACKLE_H2_OPA_APPROX, 0, 0, 1 ); -// do not check CHE_GPU_NPGROUP since it may be reset by either Init_ResetDefaultParameter() or CUAPI_SetMemSize() +// do not check CHE_GPU_NPGROUP since it may be reset by either Init_ResetParameter() or CUAPI_SetMemSize() ReadPara->Add( "CHE_GPU_NPGROUP", &CHE_GPU_NPGROUP, -1, NoMin_int, NoMax_int ); # endif @@ -307,20 +333,30 @@ void Init_Load_Parameter() ReadPara->Add( "ELBDM_LAMBDA", &ELBDM_LAMBDA, 1.0, NoMin_double, NoMax_double ); # endif ReadPara->Add( "ELBDM_TAYLOR3_COEFF", &ELBDM_TAYLOR3_COEFF, 1.0/6.0, NoMin_double, NoMax_double ); - ReadPara->Add( "ELBDM_TAYLOR3_AUTO", &ELBDM_TAYLOR3_AUTO, true, Useless_bool, Useless_bool ); + ReadPara->Add( "ELBDM_TAYLOR3_AUTO", &ELBDM_TAYLOR3_AUTO, false, Useless_bool, Useless_bool ); + ReadPara->Add( "ELBDM_REMOVE_MOTION_CM", &ELBDM_REMOVE_MOTION_CM, ELBDM_REMOVE_MOTION_CM_NONE, 0, 2 ); + ReadPara->Add( "ELBDM_BASE_SPECTRAL", &ELBDM_BASE_SPECTRAL, false, Useless_bool, Useless_bool ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + ReadPara->Add( "ELBDM_MATCH_PHASE", &ELBDM_MATCH_PHASE, true, Useless_bool, Useless_bool ); + ReadPara->Add( "ELBDM_FIRST_WAVE_LEVEL", &ELBDM_FIRST_WAVE_LEVEL, -1, 1, NoMax_int ); +# endif # endif // #if ( MODEL == ELBDM ) // fluid solvers in all models -// do not check FLU_GPU_NPGROUP and GPU_NSTREAM since they may be reset by either Init_ResetDefaultParameter() or CUAPI_SetMemSize() +// do not check FLU_GPU_NPGROUP and GPU_NSTREAM since they may be reset by either Init_ResetParameter() or CUAPI_SetMemSize() ReadPara->Add( "FLU_GPU_NPGROUP", &FLU_GPU_NPGROUP, -1, NoMin_int, NoMax_int ); ReadPara->Add( "GPU_NSTREAM", &GPU_NSTREAM, -1, NoMin_int, NoMax_int ); +# if ( MODEL == ELBDM && ELBDM_SCHEME != ELBDM_HYBRID && WAVE_SCHEME == WAVE_GRAMFE ) + ReadPara->Add( "OPT__FIXUP_FLUX", &OPT__FIXUP_FLUX, false, Useless_bool, Useless_bool ); +# else ReadPara->Add( "OPT__FIXUP_FLUX", &OPT__FIXUP_FLUX, true, Useless_bool, Useless_bool ); +# endif # ifdef MHD ReadPara->Add( "OPT__FIXUP_ELECTRIC", &OPT__FIXUP_ELECTRIC, true, Useless_bool, Useless_bool ); # endif ReadPara->Add( "OPT__FIXUP_RESTRICT", &OPT__FIXUP_RESTRICT, true, Useless_bool, Useless_bool ); -// do not check OPT__CORR_AFTER_ALL_SYNC since it may be reset by Init_ResetDefaultParameter() +// do not check OPT__CORR_AFTER_ALL_SYNC since it may be reset by Init_ResetParameter() ReadPara->Add( "OPT__CORR_AFTER_ALL_SYNC", &OPT__CORR_AFTER_ALL_SYNC, -1, NoMin_int, NoMax_int ); ReadPara->Add( "OPT__NORMALIZE_PASSIVE", &OPT__NORMALIZE_PASSIVE, true, Useless_bool, Useless_bool ); ReadPara->Add( "OPT__INT_FRAC_PASSIVE_LR", &OPT__INT_FRAC_PASSIVE_LR, true, Useless_bool, Useless_bool ); @@ -359,7 +395,7 @@ void Init_Load_Parameter() ReadPara->Add( "MG_NPRE_SMOOTH", &MG_NPRE_SMOOTH, -1, NoMin_int, NoMax_int ); ReadPara->Add( "MG_NPOST_SMOOTH", &MG_NPOST_SMOOTH, -1, NoMin_int, NoMax_int ); ReadPara->Add( "MG_TOLERATED_ERROR", &MG_TOLERATED_ERROR, -1.0, NoMin_double, NoMax_double ); -// do not check POT_GPU_NPGROUP since it may be reset by either Init_ResetDefaultParameter() or CUAPI_SetMemSize() +// do not check POT_GPU_NPGROUP since it may be reset by either Init_ResetParameter() or CUAPI_SetMemSize() ReadPara->Add( "POT_GPU_NPGROUP", &POT_GPU_NPGROUP, -1, NoMin_int, NoMax_int ); ReadPara->Add( "OPT__GRA_P5_GRADIENT", &OPT__GRA_P5_GRADIENT, false, Useless_bool, Useless_bool ); ReadPara->Add( "OPT__SELF_GRAVITY", &OPT__SELF_GRAVITY, true, Useless_bool, Useless_bool ); @@ -417,6 +453,7 @@ void Init_Load_Parameter() # endif // # if ( SUPPORT_FFTW == FFTW2 ) ... # else # endif // # ifdef SUPPORT_FFTW + // interpolation schemes ReadPara->Add( "OPT__INT_TIME", &OPT__INT_TIME, true, Useless_bool, Useless_bool ); # if ( MODEL == HYDRO ) @@ -424,8 +461,9 @@ void Init_Load_Parameter() # endif # if ( MODEL == ELBDM ) ReadPara->Add( "OPT__INT_PHASE", &OPT__INT_PHASE, true, Useless_bool, Useless_bool ); + ReadPara->Add( "OPT__RES_PHASE", &OPT__RES_PHASE, false, Useless_bool, Useless_bool ); # endif -// do not check OPT__FLU_INT_SCHEME and OPT__REF_FLU_INT_SCHEME since they may be reset by Init_ResetDefaultParameter() +// do not check OPT__FLU_INT_SCHEME and OPT__REF_FLU_INT_SCHEME since they may be reset by Init_ResetParameter() ReadPara->Add( "OPT__FLU_INT_SCHEME", &OPT__FLU_INT_SCHEME, INT_DEFAULT, NoMin_int, NoMax_int ); ReadPara->Add( "OPT__REF_FLU_INT_SCHEME", &OPT__REF_FLU_INT_SCHEME, INT_DEFAULT, NoMin_int, NoMax_int ); # ifdef MHD @@ -450,15 +488,29 @@ void Init_Load_Parameter() # else # error : unsupported MODEL !! # endif +# ifdef SUPPORT_SPECTRAL_INT + ReadPara->Add( "SPEC_INT_TABLE_PATH", SPEC_INT_TABLE_PATH, NoDef_str, Useless_str, Useless_str ); + ReadPara->Add( "SPEC_INT_GHOST_BOUNDARY", &SPEC_INT_GHOST_BOUNDARY, 4, 1, NoMax_int ); +# if ( MODEL == ELBDM ) + ReadPara->Add( "SPEC_INT_XY_INSTEAD_DEPHA", &SPEC_INT_XY_INSTEAD_DEPHA, true, Useless_bool, Useless_bool ); + ReadPara->Add( "SPEC_INT_VORTEX_THRESHOLD", &SPEC_INT_VORTEX_THRESHOLD, 0.1, 0.0, NoMax_double ); +# endif +# endif // #ifdef SUPPORT_SPECTRAL_INT // data dump ReadPara->Add( "OPT__OUTPUT_TOTAL", &OPT__OUTPUT_TOTAL, 1, 0, 2 ); - ReadPara->Add( "OPT__OUTPUT_PART", &OPT__OUTPUT_PART, 0, 0, 7 ); + ReadPara->Add( "OPT__OUTPUT_PART", &OPT__OUTPUT_PART, 0, 0, 8 ); ReadPara->Add( "OPT__OUTPUT_USER", &OPT__OUTPUT_USER, false, Useless_bool, Useless_bool ); ReadPara->Add( "OPT__OUTPUT_TEXT_FORMAT_FLT", OPT__OUTPUT_TEXT_FORMAT_FLT, "%24.16e", Useless_str, Useless_str ); + ReadPara->Add( "OPT__OUTPUT_TEXT_LENGTH_INT",&OPT__OUTPUT_TEXT_LENGTH_INT, 12, 0, NoMax_int ); # ifdef PARTICLE ReadPara->Add( "OPT__OUTPUT_PAR_MODE", &OPT__OUTPUT_PAR_MODE, 0, 0, 2 ); +# ifdef TRACER + ReadPara->Add( "OPT__OUTPUT_PAR_MESH", &OPT__OUTPUT_PAR_MESH, true, Useless_bool, Useless_bool ); +# else + ReadPara->Add( "OPT__OUTPUT_PAR_MESH", &OPT__OUTPUT_PAR_MESH, false, Useless_bool, Useless_bool ); +# endif # endif ReadPara->Add( "OPT__OUTPUT_BASEPS", &OPT__OUTPUT_BASEPS, false, Useless_bool, Useless_bool ); ReadPara->Add( "OPT__OUTPUT_BASE", &OPT__OUTPUT_BASE, false, Useless_bool, Useless_bool ); @@ -466,7 +518,7 @@ void Init_Load_Parameter() ReadPara->Add( "OPT__OUTPUT_CC_MAG", &OPT__OUTPUT_CC_MAG, true, Useless_bool, Useless_bool ); # endif # ifdef GRAVITY - ReadPara->Add( "OPT__OUTPUT_POT", &OPT__OUTPUT_POT, true, Useless_bool, Useless_bool ); + ReadPara->Add( "OPT__OUTPUT_POT", &OPT__OUTPUT_POT, true, Useless_bool, Useless_bool ); # endif # ifdef PARTICLE ReadPara->Add( "OPT__OUTPUT_PAR_DENS", &OPT__OUTPUT_PAR_DENS, PAR_OUTPUT_DENS_PAR_ONLY, 0, 2 ); @@ -501,6 +553,7 @@ void Init_Load_Parameter() ReadPara->Add( "OUTPUT_PART_Y", &OUTPUT_PART_Y, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "OUTPUT_PART_Z", &OUTPUT_PART_Z, -1.0, NoMin_double, NoMax_double ); ReadPara->Add( "INIT_DUMPID", &INIT_DUMPID, -1, NoMin_int, NoMax_int ); + ReadPara->Add( "OUTPUT_DIR", OUTPUT_DIR, ".", Useless_str, Useless_str ); // yt inline analysis @@ -513,7 +566,6 @@ void Init_Load_Parameter() # endif # endif - // miscellaneous ReadPara->Add( "OPT__VERBOSE", &OPT__VERBOSE, false, Useless_bool, Useless_bool ); // do not check OPT__TIMING_BARRIER since it depends on other options diff --git a/src/Init/Init_MemAllocate_Fluid.cpp b/src/Init/Init_MemAllocate_Fluid.cpp index 536dc6ec5a..c629151dd9 100644 --- a/src/Init/Init_MemAllocate_Fluid.cpp +++ b/src/Init/Init_MemAllocate_Fluid.cpp @@ -38,59 +38,70 @@ void Init_MemAllocate_Fluid( const int Flu_NPatchGroup, const int Pot_NPatchGrou for (int t=0; t<2; t++) { - h_Flu_Array_F_In [t] = new real [Flu_NPatchGroup][FLU_NIN ][ CUBE(FLU_NXT) ]; - h_Flu_Array_F_Out[t] = new real [Flu_NPatchGroup][FLU_NOUT][ CUBE(PS2) ]; + h_Flu_Array_F_In [t] = new real [Flu_NPatchGroup][FLU_NIN ][ CUBE(FLU_NXT) ]; + h_Flu_Array_F_Out [t] = new real [Flu_NPatchGroup][FLU_NOUT][ CUBE(PS2) ]; if ( amr->WithFlux ) - h_Flux_Array [t] = new real [Flu_NPatchGroup][9][NFLUX_TOTAL][ SQR(PS2) ]; + h_Flux_Array [t] = new real [Flu_NPatchGroup][9][NFLUX_TOTAL][ SQR(PS2) ]; # ifdef UNSPLIT_GRAVITY - h_Pot_Array_USG_F[t] = new real [Flu_NPatchGroup][ CUBE(USG_NXT_F) ]; + h_Pot_Array_USG_F [t] = new real [Flu_NPatchGroup][ CUBE(USG_NXT_F) ]; - if ( OPT__EXT_ACC ) - h_Corner_Array_F [t] = new double [Flu_NPatchGroup][3]; + if ( OPT__EXT_ACC ) + h_Corner_Array_F [t] = new double [Flu_NPatchGroup][3]; # endif - h_dt_Array_T [t] = new real [dt_NPatch]; - h_Flu_Array_T [t] = new real [Flu_NPatch][FLU_NIN_T][ CUBE(PS1) ]; + h_dt_Array_T [t] = new real [dt_NPatch]; + h_Flu_Array_T [t] = new real [Flu_NPatch][FLU_NIN_T][ CUBE(PS1) ]; # ifdef DUAL_ENERGY - h_DE_Array_F_Out [t] = new char [Flu_NPatchGroup][ CUBE(PS2) ]; + h_DE_Array_F_Out [t] = new char [Flu_NPatchGroup][ CUBE(PS2) ]; # endif # ifdef MHD - h_Mag_Array_F_In [t] = new real [Flu_NPatchGroup][NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ]; - h_Mag_Array_F_Out[t] = new real [Flu_NPatchGroup][NCOMP_MAG][ PS2P1*SQR(PS2) ]; + h_Mag_Array_F_In [t] = new real [Flu_NPatchGroup][NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ]; + h_Mag_Array_F_Out [t] = new real [Flu_NPatchGroup][NCOMP_MAG][ PS2P1*SQR(PS2) ]; if ( amr->WithElectric ) - h_Ele_Array [t] = new real [Flu_NPatchGroup][9][NCOMP_ELE][ PS2P1*PS2 ]; + h_Ele_Array [t] = new real [Flu_NPatchGroup][9][NCOMP_ELE][ PS2P1*PS2 ]; - h_Mag_Array_T [t] = new real [Flu_NPatch][NCOMP_MAG][ PS1P1*SQR(PS1) ]; + h_Mag_Array_T [t] = new real [Flu_NPatch][NCOMP_MAG][ PS1P1*SQR(PS1) ]; # endif if ( SrcTerms.Any ) { - h_Flu_Array_S_In [t] = new real [Src_NPatch][FLU_NIN_S ][ CUBE(SRC_NXT) ]; - h_Flu_Array_S_Out[t] = new real [Src_NPatch][FLU_NOUT_S][ CUBE(PS1) ]; + h_Flu_Array_S_In [t] = new real [Src_NPatch][FLU_NIN_S ][ CUBE(SRC_NXT) ]; + h_Flu_Array_S_Out [t] = new real [Src_NPatch][FLU_NOUT_S][ CUBE(PS1) ]; # ifdef MHD - h_Mag_Array_S_In [t] = new real [Src_NPatch][NCOMP_MAG ][ SRC_NXT_P1*SQR(SRC_NXT) ]; + h_Mag_Array_S_In [t] = new real [Src_NPatch][NCOMP_MAG ][ SRC_NXT_P1*SQR(SRC_NXT) ]; # endif - h_Corner_Array_S [t] = new double [Src_NPatch][3]; + h_Corner_Array_S [t] = new double [Src_NPatch][3]; } + +# if ( MODEL == ELBDM ) + h_IsCompletelyRefined[t] = new bool [Flu_NPatchGroup]; +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + h_HasWaveCounterpart [t] = new bool [Flu_NPatchGroup][ CUBE(HYB_NXT) ]; +# endif } // for (int t=0; t<2; t++) # if ( FLU_SCHEME == MHM || FLU_SCHEME == MHM_RP || FLU_SCHEME == CTU ) - h_FC_Var = new real [Flu_NPatchGroup][6][NCOMP_TOTAL_PLUS_MAG][ CUBE(N_FC_VAR) ]; - h_FC_Flux = new real [Flu_NPatchGroup][3][NCOMP_TOTAL_PLUS_MAG][ CUBE(N_FC_FLUX) ]; - h_PriVar = new real [Flu_NPatchGroup] [NCOMP_LR ][ CUBE(FLU_NXT) ]; + h_FC_Var = new real [Flu_NPatchGroup][6][NCOMP_TOTAL_PLUS_MAG][ CUBE(N_FC_VAR) ]; + h_FC_Flux = new real [Flu_NPatchGroup][3][NCOMP_TOTAL_PLUS_MAG][ CUBE(N_FC_FLUX) ]; + h_PriVar = new real [Flu_NPatchGroup] [NCOMP_LR ][ CUBE(FLU_NXT) ]; # if ( LR_SCHEME == PPM ) - h_Slope_PPM = new real [Flu_NPatchGroup][3][NCOMP_LR ][ CUBE(N_SLOPE_PPM) ]; + h_Slope_PPM = new real [Flu_NPatchGroup][3][NCOMP_LR ][ CUBE(N_SLOPE_PPM) ]; # endif # ifdef MHD - h_FC_Mag_Half = new real [Flu_NPatchGroup][NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ]; - h_EC_Ele = new real [Flu_NPatchGroup][NCOMP_MAG][ CUBE(N_EC_ELE) ]; + h_FC_Mag_Half = new real [Flu_NPatchGroup][NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ]; + h_EC_Ele = new real [Flu_NPatchGroup][NCOMP_MAG][ CUBE(N_EC_ELE) ]; # endif # endif // FLU_SCHEME +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + h_GramFE_TimeEvo = new gramfe_matmul_float [PS2][ 2*FLU_NXT ]; +# endif } // FUNCTION : Init_MemAllocate_Fluid diff --git a/src/Init/Init_Refine.cpp b/src/Init/Init_Refine.cpp index 28b6e2b044..5eed453fc6 100644 --- a/src/Init/Init_Refine.cpp +++ b/src/Init/Init_Refine.cpp @@ -72,6 +72,17 @@ void Init_Refine( const int lv ) # ifdef PARTICLE Par_PassParticle2Son_SinglePatch( lv, PID ); # endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->patch[0][lv][PID]->switch_to_wave_flag ) { + amr->use_wave_flag[lv+1] = true; + } + +// if father level uses wave flag, also use wave solver on son levels + if ( amr->use_wave_flag[lv] ) { + amr->use_wave_flag[lv+1] = true; + } +# endif } // if ( amr->patch[0][lv][PID]->flag ) } // for (int PID=amr->NPatchComma[lv][s+1]; PIDNPatchComma[lv][s+2]; PID++) diff --git a/src/Init/Init_ResetParameter.cpp b/src/Init/Init_ResetParameter.cpp index 7c3c217312..35a14dff90 100644 --- a/src/Init/Init_ResetParameter.cpp +++ b/src/Init/Init_ResetParameter.cpp @@ -81,6 +81,7 @@ void Init_ResetParameter() if ( DT__FLUID < 0.0 ) { # if ( MODEL == HYDRO ) + # if ( FLU_SCHEME == RTVD ) DT__FLUID = 0.50; # elif ( FLU_SCHEME == MHM ) @@ -95,15 +96,28 @@ void Init_ResetParameter() # endif # elif ( MODEL == ELBDM ) + +# if ( WAVE_SCHEME == WAVE_FD ) # ifdef GRAVITY DT__FLUID = 0.20; // 1D k-max mode rotates 0.20*2*PI -# else +# else // # ifdef GRAVITY # ifdef LAPLACIAN_4TH DT__FLUID = SQRT(27.0)*M_PI/32.0; // stability limit (~0.51) -# else +# else // # ifdef LAPLACIAN_4TH DT__FLUID = SQRT(3.0)*M_PI/8.0; // stability limit (~0.68) -# endif -# endif // #ifdef GRAVITY ... else ... +# endif // # ifdef LAPLACIAN_4TH ... else ... +# endif // # ifdef GRAVITY ... else ... + +# elif ( WAVE_SCHEME == WAVE_GRAMFE ) +# ifdef GRAVITY + DT__FLUID = 0.20; // 1D k-max mode rotates 0.20*2*PI +# else // # ifdef GRAVITY + DT__FLUID = 0.20; // stability limit depends on ghost boundary and extension order +# endif // # ifdef GRAVITY ... else ... + +# else // WAVE_SCHEME +# error : ERROR : unsupported WAVE_SCHEME !! +# endif // WAVE_SCHEME # else # error : ERROR : unsupported MODEL !! @@ -120,6 +134,46 @@ void Init_ResetParameter() } +// hybrid dt (empirically determined CFL condition) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( DT__HYBRID_CFL < 0.0 ) + { +# ifdef GRAVITY + DT__HYBRID_CFL = 0.20; +# else + DT__HYBRID_CFL = 0.40; +# endif + + PRINT_RESET_PARA( DT__HYBRID_CFL, FORMAT_REAL, "" ); + } + + if ( DT__HYBRID_CFL_INIT < 0.0 ) + { + DT__HYBRID_CFL_INIT = DT__HYBRID_CFL; + + PRINT_RESET_PARA( DT__HYBRID_CFL_INIT, FORMAT_REAL, "" ); + } +# endif + + +// hybrid velocity dt (empirically determined CFL condition) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( DT__HYBRID_VELOCITY < 0.0 ) + { + DT__HYBRID_VELOCITY = 1.00; + + PRINT_RESET_PARA( DT__HYBRID_VELOCITY, FORMAT_REAL, "" ); + } + + if ( DT__HYBRID_VELOCITY_INIT < 0.0 ) + { + DT__HYBRID_VELOCITY_INIT = DT__HYBRID_VELOCITY; + + PRINT_RESET_PARA( DT__HYBRID_VELOCITY_INIT, FORMAT_REAL, "" ); + } +# endif + + // gravity dt # ifdef GRAVITY if ( DT__GRAVITY < 0.0 ) @@ -304,6 +358,14 @@ void Init_ResetParameter() PRINT_RESET_PARA( ELBDM_TAYLOR3_COEFF, FORMAT_REAL, "since ELBDM_TAYLOR3_AUTO is enabled" ); } + +// must disable ELBDM_TAYLOR3_AUTO for OPT__FREEZE_FLUID since ELBDM_SetTaylor3Coeff() doesn't support dt=0.0 + if ( OPT__FREEZE_FLUID && ELBDM_TAYLOR3_AUTO ) + { + ELBDM_TAYLOR3_AUTO = false; + + PRINT_RESET_PARA( ELBDM_TAYLOR3_AUTO, FORMAT_INT, "since OPT__FREEZE_FLUID is enabled" ); + } # endif // #if ( MODEL == ELBDM ) @@ -424,6 +486,15 @@ void Init_ResetParameter() PRINT_RESET_PARA( amr->Par->GhostSizeTracer, FORMAT_INT, "for the adopted PAR_TR_INTERP scheme" ); } +# ifndef TRACER + if ( OPT__OUTPUT_PAR_MESH ) + { + OPT__OUTPUT_PAR_MESH = false; + + PRINT_RESET_PARA( OPT__OUTPUT_PAR_MESH, FORMAT_INT, "since TRACER is disabled" ); + } +# endif + # endif // #ifdef PARTICLE @@ -651,6 +722,58 @@ void Init_ResetParameter() # endif +// angular resolution center + if ( OPT__FLAG_ANGULAR ) + { + if ( FLAG_ANGULAR_CEN_X < 0.0 ) + { + FLAG_ANGULAR_CEN_X = amr->BoxCenter[0]; + + PRINT_RESET_PARA( FLAG_ANGULAR_CEN_X, FORMAT_REAL, "" ); + } + + if ( FLAG_ANGULAR_CEN_Y < 0.0 ) + { + FLAG_ANGULAR_CEN_Y = amr->BoxCenter[1]; + + PRINT_RESET_PARA( FLAG_ANGULAR_CEN_Y, FORMAT_REAL, "" ); + } + + if ( FLAG_ANGULAR_CEN_Z < 0.0 ) + { + FLAG_ANGULAR_CEN_Z = amr->BoxCenter[2]; + + PRINT_RESET_PARA( FLAG_ANGULAR_CEN_Z, FORMAT_REAL, "" ); + } + } + + +// radial resolution center + if ( OPT__FLAG_RADIAL ) + { + if ( FLAG_RADIAL_CEN_X < 0.0 ) + { + FLAG_RADIAL_CEN_X = amr->BoxCenter[0]; + + PRINT_RESET_PARA( FLAG_RADIAL_CEN_X, FORMAT_REAL, "" ); + } + + if ( FLAG_RADIAL_CEN_Y < 0.0 ) + { + FLAG_RADIAL_CEN_Y = amr->BoxCenter[1]; + + PRINT_RESET_PARA( FLAG_RADIAL_CEN_Y, FORMAT_REAL, "" ); + } + + if ( FLAG_RADIAL_CEN_Z < 0.0 ) + { + FLAG_RADIAL_CEN_Z = amr->BoxCenter[2]; + + PRINT_RESET_PARA( FLAG_RADIAL_CEN_Z, FORMAT_REAL, "" ); + } + } + + // turn off refinement criteria and checks related to density if "DENS" is not defined # ifndef DENS if ( OPT__FLAG_RHO ) @@ -935,7 +1058,7 @@ void Init_ResetParameter() # endif -// PAR_IC_FLOAT8 +// PAR_IC_FLOAT/INT8 # ifdef PARTICLE if ( amr->Par->Init == PAR_INIT_BY_FILE && PAR_IC_FLOAT8 < 0 ) { @@ -948,6 +1071,18 @@ void Init_ResetParameter() PRINT_RESET_PARA( PAR_IC_FLOAT8, FORMAT_INT, "to be consistent with FLOAT8_PAR" ); } + + if ( amr->Par->Init == PAR_INIT_BY_FILE && PAR_IC_INT8 < 0 ) + { +// set PAR_IC_INT8 = INT8_PAR by default +# ifdef INT8_PAR + PAR_IC_INT8 = 1; +# else + PAR_IC_INT8 = 0; +# endif + + PRINT_RESET_PARA( PAR_IC_INT8, FORMAT_INT, "to be consistent with INT8_PAR" ); + } #endif diff --git a/src/Init/Init_TestProb.cpp b/src/Init/Init_TestProb.cpp index 2a711bebc1..819bc5cd4a 100644 --- a/src/Init/Init_TestProb.cpp +++ b/src/Init/Init_TestProb.cpp @@ -32,6 +32,19 @@ void Init_TestProb_Hydro_CR_ShockTube(); void Init_TestProb_Hydro_CR_Diffusion(); void Init_TestProb_ELBDM_ExtPot(); +void Init_TestProb_ELBDM_JeansInstabilityComoving(); +void Init_TestProb_ELBDM_JeansInstabilityPhysical(); +void Init_TestProb_ELBDM_Soliton(); +void Init_TestProb_ELBDM_SelfSimilarHalo(); +void Init_TestProb_ELBDM_VortexPairRotating(); +void Init_TestProb_ELBDM_VortexPairLinear(); +void Init_TestProb_ELBDM_IsolatedHalo(); +void Init_TestProb_ELBDM_GaussianWavePacket(); +void Init_TestProb_ELBDM_LSS(); +void Init_TestProb_ELBDM_PlaneWave(); +void Init_TestProb_ELBDM_Perturbation(); +void Init_TestProb_ELBDM_HaloMerger(); +void Init_TestProb_ELBDM_DiskHeating(); @@ -85,6 +98,19 @@ void Init_TestProb() case TESTPROB_HYDRO_CR_DIFFUSION : Init_TestProb_Hydro_CR_Diffusion(); break; case TESTPROB_ELBDM_EXTPOT : Init_TestProb_ELBDM_ExtPot(); break; + case TESTPROB_ELBDM_JEANS_INSTABILITY_COMOVING : Init_TestProb_ELBDM_JeansInstabilityComoving(); break; +// case TESTPROB_ELBDM_JEANS_INSTABILITY_PHYSICAL : Init_TestProb_ELBDM_JeansInstabilityPhysical(); break; + case TESTPROB_ELBDM_SOLITON : Init_TestProb_ELBDM_Soliton(); break; + case TESTPROB_ELBDM_SELF_SIMILAR_HALO : Init_TestProb_ELBDM_SelfSimilarHalo(); break; + case TESTPROB_ELBDM_VORTEX_PAIR_ROTATING : Init_TestProb_ELBDM_VortexPairRotating(); break; + case TESTPROB_ELBDM_VORTEX_PAIR_LINEAR : Init_TestProb_ELBDM_VortexPairLinear(); break; + case TESTPROB_ELBDM_ISOLATED_HALO : Init_TestProb_ELBDM_IsolatedHalo(); break; + case TESTPROB_ELBDM_GAUSSIAN_WAVE_PACKET : Init_TestProb_ELBDM_GaussianWavePacket(); break; + case TESTPROB_ELBDM_LSS : Init_TestProb_ELBDM_LSS(); break; + case TESTPROB_ELBDM_PLANE_WAVE : Init_TestProb_ELBDM_PlaneWave(); break; + case TESTPROB_ELBDM_PERTURBATION : Init_TestProb_ELBDM_Perturbation(); break; + case TESTPROB_ELBDM_HALO_MERGER : Init_TestProb_ELBDM_HaloMerger(); break; + case TESTPROB_ELBDM_DISK_HEATING : Init_TestProb_ELBDM_DiskHeating(); break; default: Aux_Error( ERROR_INFO, "unsupported TESTPROB_ID (%d) !!\n", TESTPROB_ID ); } // switch( TESTPROB_ID ) diff --git a/src/Init/Init_UniformGrid.cpp b/src/Init/Init_UniformGrid.cpp index fe14882079..e18684f99d 100644 --- a/src/Init/Init_UniformGrid.cpp +++ b/src/Init/Init_UniformGrid.cpp @@ -110,7 +110,7 @@ void Init_UniformGrid( const int lv, const bool FindHomePatchForPar ) if ( FindHomePatchForPar ) { const bool OldParOnly_Yes = true; - Par_FindHomePatch_UniformGrid( lv, OldParOnly_Yes, NULL_INT, NULL ); + Par_FindHomePatch_UniformGrid( lv, OldParOnly_Yes, NULL_INT, NULL, NULL ); } # endif diff --git a/src/Interpolation/Int_Spectral.cpp b/src/Interpolation/Int_Spectral.cpp new file mode 100644 index 0000000000..1f1fdbf432 --- /dev/null +++ b/src/Interpolation/Int_Spectral.cpp @@ -0,0 +1,978 @@ +#include "GAMER.h" + +#ifdef SUPPORT_SPECTRAL_INT + + +/*******************************************************************************************************/ +/*******************************************************************************************************/ +/** How to recreate the tables used in the below interpolation routines? **/ +/** **/ +/** They were created using the Python script **/ +/** tool/table_maker/GramFE/compute_interpolation_tables.py. The script can benefit from up to 42 **/ +/** MPI ranks in parallel and requires the mpi4py library. **/ +/** The Python code implements the Gram Fourier extension algorithm using arbitrary precision **/ +/** arithmetic and outputs interpolation and extension tables. The idea is to periodically extend **/ +/** the interpolant and then interpolate it using a DFT - either precomputed as matrix **/ +/** (PrecomputedInterpolationContext) or via the FFT algorithm (GramFEInterpolationContext) **/ +/** **/ +/** The tables for the PrecomputedInterpolationContext are computed using the GramFEInterpolation **/ +/** class and put in the folder "interpolation_tables". The tables for the **/ +/** GramFEInterpolationContext are computed using the GramFEFixedSizeExtension class and put in the **/ +/** folder "boundary2extension_tables". The respective constructors take the parameters **/ +/** Gamma (number of sampling points), g (number of Fourier modes), nd (size of extension region), **/ +/** and m (the order of boundary polynomials). **/ +/** The tables use the Gram Fourier extension algorithm to find a periodic extension of a given **/ +/** non-periodic function - the interpolant. This periodic function can then be interpolated using **/ +/** a DFT. This interpolation is not monotonic and not conservative, but highly accurate. **/ +/** Its accuracy is determined by the quality of the periodic extension. **/ +/** Gamma = 150, g = 63, nd = 32 and m = 8 have been found to be a good compromise between stability **/ +/** and accuracy for interpolation. Higher values of m led to interpolation artifacts in some tests. **/ +/** Lower values of m should in general be less accurate, but lead to better-behaved interpolation. **/ +/** **/ +/** interpolation_tables: **/ +/** The tables are named N.bin where N is the input interpolation size. **/ +/** They contain double-precision 2D matrices that represent the complete interpolation **/ +/** GramFE extension * DFT * shift in k space * IDFT as a matrix. **/ +/** It is an efficient way to implement the Gram FE interpolation for small N **/ +/** with a cost of N^2 operations for a single matrix multiplication. **/ +/** For m = N, this interpolation is equivalent to interpolating with a polynomial of **/ +/** order N (as observed in numerical tests). **/ +/** **/ +/** boundary2extension_tables: **/ +/** The tables are named %ld_%ld_%d_%d.bin with the arguments nd, m, Gamma, g. **/ +/** They contain double-precision 2D matrices that represent GramFE extension as a matrix. **/ +/** The interpolation itself is carried out using the FFTW library which is faster for larger **/ +/** interpolants with an asymptotic cost of 2 * mxm matrix multiplication + N log N. **/ +/** **/ +/*******************************************************************************************************/ +/*******************************************************************************************************/ + +#include +#include +#include "GramFE_Interpolation.h" + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Int_Spectral +// Description : Perform spatial interpolation based on the Gram-Fourier extension method +// +// Note : 1. The interpolation is spectrally accurate +// 2. The interpolation result is neither conservative nor monotonic +// 3. 3D interpolation is achieved by performing interpolation along x, y, and z directions +// in order +// +// Parameter : CData : Input coarse-grid array +// CSize : Size of the CData array +// CStart : (x,y,z) starting indices to perform interpolation on the CData array +// CRange : Number of grids in each direction to perform interpolation +// FData : Output fine-grid array +// FStart : (x,y,z) starting indcies to store the interpolation results +// NComp : Number of components in the CData and FData array +// UnwrapPhase : Unwrap phase when OPT__INT_PHASE is on (for ELBDM only) +// This option requires that the input field includes only the density and the phase field in this order +// Monotonic : Ensure that all interpolation results are monotonic +// MonoCoeff : Slope limiter coefficient for the option "Monotonic" +// OppSign0thOrder : See Int_MinMod1D() +//------------------------------------------------------------------------------------------------------- +void Int_Spectral( real CData[], const int CSize[3], const int CStart[3], const int CRange[3], + real FData[], const int FSize[3], const int FStart[3], const int NComp, + const bool UnwrapPhase, const bool Monotonic[], const real MonoCoeff, const bool OppSign0thOrder ) +{ + +// interpolation-scheme-dependent parameters +// =============================================================================== +// number of coarse-grid ghost zone + const int CGhost = SPEC_INT_GHOST_BOUNDARY; +// =============================================================================== + + +// allocate memory to store largest input and output column + const size_t MaxSize = MAX( MAX(CRange[0],CRange[1]), CRange[2] ); + const size_t InputDisp = MaxSize + 2*CGhost; + const size_t OutputDisp = 2*MaxSize; + +// add interpolation contexts (make sure that everything is thread-safe in AddInterpolationContext) + for (size_t dim=0; dim<3; ++dim) { + Int_InterpolationHandler.AddInterpolationContext( CRange[dim] + 2*CGhost, CGhost ); + } + +// determine workspace size + size_t WorkspaceSize = 0; + for (size_t dim=0; dim<3; ++dim) { + WorkspaceSize = MAX( WorkspaceSize, Int_InterpolationHandler.GetWorkspaceSize( CRange[dim] + 2*CGhost, CGhost ) ); + } + +// allocate workspace using fftw_malloc for contiguous memory used in FFT + char* Workspace = (char*) gamer_fftw::fft_malloc( WorkspaceSize ); + + +// index stride of the coarse-grid input array + const size_t Cdx = 1; + const size_t Cdy = Cdx*CSize[0]; + const size_t Cdz = Cdy*CSize[1]; + +// index stride of the temporary arrays storing the data after x and y interpolations + const size_t Tdx = 1; + const size_t Tdy = Tdx* CRange[0]*2; + const size_t TdzX = Tdy*(CRange[1]+2*CGhost); // array after x interpolation + const size_t TdzY = Tdy* CRange[1]*2; // array after y interpolation + +// index stride of the fine-grid output array + const size_t Fdx = 1; + const size_t Fdy = Fdx*FSize[0]; + const size_t Fdz = Fdy*FSize[1]; + +// index stride of different components + const int CDisp = CSize[0]*CSize[1]*CSize[2]; + const int FDisp = FSize[0]*FSize[1]*FSize[2]; + const int TDataXDisp = (CRange[2]+2*CGhost)*TdzX; + const int TDataYDisp = (CRange[2]+2*CGhost)*TdzY; + +// x = 0, y = 1, z = 2 +// first interpolate x, then y, then z + const size_t P[3][3] = { {2, 1, 0}, // z, y, x + {2, 0, 1}, // z, x, y + {1, 0, 2} }; // x, y, z + +// starting indices for 3D loops [x, y, z][1st iteration, 2nd iteration, 3rd iteration] + const int StartIndex[3][3] = { {CStart[0]-CGhost, 0, 0}, + {CStart[1]-CGhost, 0, 0}, + {CStart[2]-CGhost, 0, 0} }; + +// end indices for 3D loops [x, y, z][1st iteration, 2nd iteration, 3rd iteration] + const int EndIndex[3][3] = { {CStart[0]+CRange[0]+CGhost, CRange[0]+CRange[0], CRange[0]+CRange[0]}, + {CStart[1]+CRange[1]+CGhost, CRange[1]+2*CGhost, CRange[1]+CRange[1]}, + {CStart[2]+CRange[2]+CGhost, CRange[2]+2*CGhost, CRange[2]+2*CGhost } }; + +// index strides for input arrays [x, y, z][1st iteration, 2nd iteration, 3rd iteration] + const size_t InStride[3][3] = { {Cdx, Tdx, Tdx }, + {Cdy, Tdy, Tdy }, + {Cdz, TdzX, TdzY} }; + +// index strides for output arrays [x, y, z][1st iteration, 2nd iteration, 3rd iteration] + const size_t OutStride[3][3] = { {Tdx, Tdx, Fdx}, + {Tdy, Tdy, Fdy}, + {TdzX, TdzY, Fdz} }; + +// input sizes [x, y, z] (coarse array + ghost zone) + const int InSize[3] = { CRange[0]+2*CGhost, CRange[1]+2*CGhost, CRange[2]+2*CGhost }; + +// output sizes [x, y, z] (2*coarse array) + const int OutSize[3] = { CRange[0]+CRange[0], CRange[1]+CRange[1], CRange[2]+CRange[2] }; + + + real *Input = new real [ NComp*InputDisp ]; // hold one column of input data + real *Output = new real [ NComp*OutputDisp ]; // hold one column of output data + real *TDataX = new real [ NComp*TDataXDisp ]; // temporary array after x interpolation + real *TDataY = new real [ NComp*TDataYDisp ]; // temporary array after y interpolation + real *CPtr = CData; + real *FPtr = FData; + real *InPtr3D = NULL; + real *OutPtr3D = NULL; + real *InPtr1D = NULL; + real *OutPtr1D = NULL; + +# if ( MODEL == ELBDM ) +# ifdef GAMER_DEBUG + if ( UnwrapPhase && NComp != 2 ) { + Aux_Error( ERROR_INFO, "NComp = %d != 2 for OPT__INT_PHASE and INT_SPECTRAL !!\n", NComp ); + } +# endif + + real *DensInput = NULL; + real *DensOutput = NULL; +# endif // #if ( MODEL == ELBDM ) + + for (size_t XYZ=0; XYZ<3; ++XYZ) + { +// map indices i, j, k to dimensions x, y, z + const size_t Pi = P[XYZ][0]; + const size_t Pj = P[XYZ][1]; + const size_t Pk = P[XYZ][2]; + + for (int ii=StartIndex[Pi][XYZ], io=0; ii -rho and S -> S +- pi at the vortex +// This leads to smooth fields at the vortex, but fails around the vortex where S might jump by less then pi and the density is non-zero +// +// The safest strategy is to simply interpolate the real and imaginary part around the vortex with a generous vortex detection threshold + if ( SPEC_INT_XY_INSTEAD_DEPHA ) + { +// detect phase discontinuities + for (int k=1; k threshold implies a significant phase jump + if ( FABS( Imag[k+1] - (real)2.0*Imag[k] + Imag[k-1] ) > SPEC_INT_VORTEX_THRESHOLD ) { + InterpolateReIm = true; + break; + } + } + +// convert back to real & imaginary part + if ( InterpolateReIm ) { + for (int k=0; k See https://github.com/gamer-project/gamer/wiki/ELBDM-Spectral-Interpolation#obtaining-interpolation-tables\n", + filename ); + return; + } + +// read the array from the binary file + int num = fread( array, sizeof(double), size, file ); + + if ( num != size ) { +// fread failed + if ( ferror(file) ) // possibility 1 + Aux_Error( ERROR_INFO, "Error reading interpolation file %s (num %d, size %d) !!\n", filename, num, size ); + else if ( feof(file) ) // possibility 2 + Aux_Error( ERROR_INFO, "EOF found in interpolation file %s (num %d, size %d) !!\n", filename, num, size ); + } + +// close the file + fclose( file ); + +} // FUNCTION : ReadBinaryFile + + + +//------------------------------------------------------------------------------------------------------- +// Function : InterpolationContext::Preprocess +// Description : Unwrap phase in ELBDM +// +// Parameter : input : Input array +// UnwrapPhase : Unwrap phase when OPT__INT_PHASE is on (for ELBDM only) +//------------------------------------------------------------------------------------------------------- +void InterpolationContext::Preprocess( real* input, const bool UnwrapPhase ) const +{ + +} // FUNCTION : Preprocess + + + +//------------------------------------------------------------------------------------------------------- +// Function : InterpolationContext::Postprocess +// Description : Ensure monotonicity of interpolation result assuming nonconservative quartic interpolation +// +// Parameter : input : Input array +// output : Output array +// Monotonic : Ensure that all interpolation results are monotonic +// MonoCoeff : Slope limiter coefficient for the option "Monotonic" +// OppSign0thOrder : See Int_MinMod1D() +//------------------------------------------------------------------------------------------------------- +void InterpolationContext::Postprocess( const real* input, real* output, const bool Monotonic, const real MonoCoeff, + const bool OppSign0thOrder) const +{ + +// ensure monotonicity + if ( Monotonic ) + { +// MonoCoeff/4 + const real MonoCoeff_4 = (real)0.25*MonoCoeff; + real LSlopeDh_4, RSlopeDh_4, SlopeDh_4, Sign, CDataMax, CDataMin; + + size_t Idx_InC, Idx_InL1, Idx_InR1, Idx_Out, Tdy; + + for (size_t i=nGhostBoundary; i (real)0.0 ) + { + if ( LSlopeDh_4 > (real)0.0 ) + { + CDataMax = input[Idx_InR1]; + CDataMin = input[Idx_InL1]; + } + else + { + CDataMax = input[Idx_InL1]; + CDataMin = input[Idx_InR1]; + } + + if ( FMAX( output[Idx_Out], output[Idx_Out+Tdy] ) > CDataMax || + FMIN( output[Idx_Out], output[Idx_Out+Tdy] ) < CDataMin || + ( output[Idx_Out+Tdy] - output[Idx_Out] )*LSlopeDh_4 < (real)0.0 ) + { + SlopeDh_4 = (real)0.125*( input[Idx_InR1] - input[Idx_InL1] ); + LSlopeDh_4 *= MonoCoeff_4; + RSlopeDh_4 *= MonoCoeff_4; + Sign = SIGN( LSlopeDh_4 ); + + SlopeDh_4 *= Sign; + SlopeDh_4 = FMIN( Sign*LSlopeDh_4, SlopeDh_4 ); + SlopeDh_4 = FMIN( Sign*RSlopeDh_4, SlopeDh_4 ); + SlopeDh_4 *= Sign; + + output[ Idx_Out ] = input[Idx_InC] - SlopeDh_4; + output[ Idx_Out + Tdy ] = input[Idx_InC] + SlopeDh_4; + } + } // if ( LSlopeDh_4*RSlopeDh_4 > (real)0.0 ) + + else + { + output[ Idx_Out ] = input[Idx_InC]; + output[ Idx_Out + Tdy ] = input[Idx_InC]; + } // if ( LSlopeDh_4*RSlopeDh_4 > (real)0.0 ) ... else + } // if ( Monotonic[v] ) + + if ( OppSign0thOrder && input[Idx_InL1]*input[Idx_InR1] < (real)0.0 ) + { + output[ Idx_Out ] = input[Idx_InC]; + output[ Idx_Out + Tdy ] = input[Idx_InC]; + } + } // if ( Monotonic ) + +} // FUNCTION : Postprocess + + + +//------------------------------------------------------------------------------------------------------- +// Function : GramFEInterpolationContext +// Description : Constructor of GramFEInterpolationContext, sets up FFTs and translation arrays in k-space +// for fast interpolation, load Gram-Fourier extension table from disk +// +// Parameter : nInput : Size of input function to be interpolated +// nGhostBoundary : Size of ghost boundary +// nExtension : Size of extension domain +// nDelta : Size of boundary domain used for Gram-Fourier extension +//------------------------------------------------------------------------------------------------------- +GramFEInterpolationContext::GramFEInterpolationContext( size_t nInput, size_t nGhostBoundary, size_t nExtension, size_t nDelta ) + : InterpolationContext( nInput, nGhostBoundary ), + nExtension ( nExtension ), + nExtended ( nInput + nExtension ), + nExtendedPadded ( nExtended/2 + 1 ), + nDelta ( nDelta ) +{ + +// sanity checks +# ifdef GAMER_DEBUG + if ( nInput < nDelta ) + Aux_Error( ERROR_INFO, "Input array of size %ld smaller than Gram polynomial boundary of size %ld !!\n", nInput, nDelta ); +# endif + +// load Gram-Fourier extension tables from file + char filename[2*MAX_STRING]; + sprintf( filename, "%s/boundary2extension_tables/%ld_%ld_%d_%d.bin", SPEC_INT_TABLE_PATH, nExtension, nDelta, GRAMFE_GAMMA, GRAMFE_G ); + + size_t size = nExtension*2*nDelta; + double* table = (double*) malloc( size*sizeof(double) ); + ReadBinaryFile( filename, table, size ); + +// load extension table into GSL matrix + extensionMatrix = gfei_gsl::matrix_alloc( nExtension, 2*nDelta ); + for (size_t i=0; i* InputK = ( std::complex* ) inputExtended; + std::complex* OutputLK = ( std::complex* ) outputL; + std::complex* OutputRK = ( std::complex* ) outputR; + std::complex* TransL = ( std::complex* ) translationCoeffL; + std::complex* TransR = ( std::complex* ) translationCoeffR; + +// interpolate by shifting samples to the left by 0.25 dh + for (size_t i=0; i 32 use Gram-Fourier extension scheme with cost of N log(N) + } else { + size_t nExtension = 32, nDelta = 14; +// + const size_t minimumExtensionSize = 24; + const size_t maximumExtensionSize = 36; + for (size_t i=0; i= fastNExtended[i] ) { + nExtension = fastNExtended[i] - nInput; + break; + } + } + contexts.emplace( nInput, new GramFEInterpolationContext(nInput, nGhostBoundary, nExtension, nDelta) ); + } + } + +} // FUNCTION : AddInterpolationContext + + + +size_t InterpolationHandler::GetWorkspaceSize( size_t nInput, size_t nGhostBoundary ) const +{ + + return contexts.at( nInput )->GetWorkspaceSize(); + +} // FUNCTION : GetWorkspaceSize + + + +void InterpolationHandler::InterpolateReal( real* input, real* output, size_t nInput, size_t nGhostBoundary, char* workspace, + const bool Monotonic, const real MonoCoeff, const bool OppSign0thOrder ) const +{ + + auto context = contexts.at(nInput); + +// unwrap phase +// context->Preprocess( input, UnwrapPhase ); + +// interpolate + context->InterpolateReal( input, output, workspace ); + +// ensure monotonicity +// context->Postprocess( input, output, Monotonic, MonoCoeff, OppSign0thOrder ); + +} // FUNCTION : InterpolateReal + + + +#endif // #endif SUPPORT_SPECTRAL_INT diff --git a/src/Interpolation/Int_Table.cpp b/src/Interpolation/Int_Table.cpp index 62c589f70e..1a6a20b559 100644 --- a/src/Interpolation/Int_Table.cpp +++ b/src/Interpolation/Int_Table.cpp @@ -16,6 +16,7 @@ // INT_QUAD : quadratic // INT_CQUAR : conservative quartic // INT_QUAR : quartic +// INT_SPECTRAL : spectral // // Return : NSide, NGhost //------------------------------------------------------------------------------------------------------- @@ -24,13 +25,16 @@ void Int_Table( const IntScheme_t IntScheme, int &NSide, int &NGhost ) switch ( IntScheme ) { - case INT_MINMOD3D : NSide = 26; NGhost = 1; break; - case INT_MINMOD1D : NSide = 6; NGhost = 1; break; - case INT_VANLEER : NSide = 26; NGhost = 1; break; - case INT_CQUAD : NSide = 26; NGhost = 1; break; - case INT_QUAD : NSide = 26; NGhost = 1; break; - case INT_CQUAR : NSide = 26; NGhost = 2; break; - case INT_QUAR : NSide = 26; NGhost = 2; break; + case INT_MINMOD3D : NSide = 26; NGhost = 1; break; + case INT_MINMOD1D : NSide = 6; NGhost = 1; break; + case INT_VANLEER : NSide = 26; NGhost = 1; break; + case INT_CQUAD : NSide = 26; NGhost = 1; break; + case INT_QUAD : NSide = 26; NGhost = 1; break; + case INT_CQUAR : NSide = 26; NGhost = 2; break; + case INT_QUAR : NSide = 26; NGhost = 2; break; +# ifdef SUPPORT_SPECTRAL_INT + case INT_SPECTRAL : NSide = 26; NGhost = SPEC_INT_GHOST_BOUNDARY; break; +# endif default : Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "IntScheme", IntScheme ); exit(1); diff --git a/src/Interpolation/Interpolate.cpp b/src/Interpolation/Interpolate.cpp index 7aa147dd49..a14bc3b1bd 100644 --- a/src/Interpolation/Interpolate.cpp +++ b/src/Interpolation/Interpolate.cpp @@ -34,6 +34,11 @@ void Int_CQuartic ( real CData[], const int CSize[3], const int CStart[3], cons void Int_Quartic ( real CData[], const int CSize[3], const int CStart[3], const int CRange[3], real FData[], const int FSize[3], const int FStart[3], const int NComp, const bool UnwrapPhase, const bool Monotonic[], const real MonoCoeff, const bool OppSign0thOrder ); +#ifdef SUPPORT_SPECTRAL_INT +void Int_Spectral ( real CData[], const int CSize[3], const int CStart[3], const int CRange[3], + real FData[], const int FSize[3], const int FStart[3], const int NComp, + const bool UnwrapPhase, const bool Monotonic[], const real MonoCoeff, const bool OppSign0thOrder ); +#endif @@ -561,6 +566,14 @@ static IntSchemeFunc_t Int_SelectScheme( const IntScheme_t IntScheme ) case INT_QUAD : return Int_Quadratic; break; case INT_CQUAR : return Int_CQuartic; break; case INT_QUAR : return Int_Quartic; break; + case INT_SPECTRAL : +# ifdef SUPPORT_SPECTRAL_INT + return Int_Spectral; break; +# else + Aux_Error( ERROR_INFO, "must enable \"SUPPORT_SPECTRAL_INT\" to use spectral interpolation (%d) !!\n", + INT_SPECTRAL ); + return NULL; break; +# endif // # ifdef SUPPORT_SPECTRAL_INT default : Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "IntScheme", IntScheme ); } diff --git a/src/LoadBalance/LB_EstimateLoadImbalance.cpp b/src/LoadBalance/LB_EstimateLoadImbalance.cpp index cc93dc8d4c..3325a3fed4 100644 --- a/src/LoadBalance/LB_EstimateLoadImbalance.cpp +++ b/src/LoadBalance/LB_EstimateLoadImbalance.cpp @@ -98,8 +98,9 @@ double LB_EstimateLoadImbalance() // 4. write to the file "Record__LoadBalance" if ( OPT__RECORD_LOAD_BALANCE ) { - const char FileName[] = "Record__LoadBalance"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__LoadBalance", OUTPUT_DIR ); if ( FirstTime ) { diff --git a/src/LoadBalance/LB_EstimateWorkload_AllPatchGroup.cpp b/src/LoadBalance/LB_EstimateWorkload_AllPatchGroup.cpp index 25f46c58f8..318ad71584 100644 --- a/src/LoadBalance/LB_EstimateWorkload_AllPatchGroup.cpp +++ b/src/LoadBalance/LB_EstimateWorkload_AllPatchGroup.cpp @@ -53,7 +53,7 @@ void LB_EstimateWorkload_AllPatchGroup( const int lv, const double ParWeight, do const bool JustCountNPar_Yes = true; const bool TimingSendPar_No = false; - Par_CollectParticle2OneLevel( lv, _NONE, PredictPos_No, NULL_REAL, + Par_CollectParticle2OneLevel( lv, _NONE, _NONE, PredictPos_No, NULL_REAL, SibBufPatch_No, FaSibBufPatch_No, JustCountNPar_Yes, TimingSendPar_No ); for (int t=0; t Supported variables in different models: -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, _POTE] -// ELBDM : _DENS, _REAL, _IMAG [, _POTE] +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY [, _POTE] +// ELBDM_WAVE : _DENS, _REAL, _IMAG [, _POTE] +// ELBDM_HYBRID : _DENS, _PHAS [, _POTE] // --> _FLUID, _PASSIVE, and _TOTAL apply to all models // --> In addition, the flux variables (e.g., _FLUX_DENS) are also supported // Restrictions : @@ -1638,8 +1639,8 @@ void LB_GetBufferData( const int lv, const int FluSg, const int MagSg, const int # ifdef TIMING if ( OPT__TIMING_MPI ) { - char FileName[100]; - sprintf( FileName, "Record__TimingMPI_Rank%05d", MPI_Rank ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__TimingMPI_Rank%05d", OUTPUT_DIR, MPI_Rank ); char ModeName[100]; switch ( GetBufMode ) diff --git a/src/LoadBalance/LB_Init_LoadBalance.cpp b/src/LoadBalance/LB_Init_LoadBalance.cpp index 2003ea6ed4..5bcb7b24d5 100644 --- a/src/LoadBalance/LB_Init_LoadBalance.cpp +++ b/src/LoadBalance/LB_Init_LoadBalance.cpp @@ -4,11 +4,11 @@ -static void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool RemoveParFromRepo, const bool SendGridData ); +static void LB_RedistributeRealPatch( const int lv, real_par **ParAttFlt_Old, long_par **ParAttInt_Old, const bool RemoveParFromRepo, const bool SendGridData ); static void LB_SortRealPatch( const int lv ); #ifdef PARTICLE -static void LB_RedistributeParticle_Init( real_par **ParAtt_Old ); -static void LB_RedistributeParticle_End ( real_par **ParAtt_Old ); +static void LB_RedistributeParticle_Init( real_par **ParAttFlt_Old, long_par **ParAttInt_Old ); +static void LB_RedistributeParticle_End ( real_par **ParAttFlt_Old, long_par **ParAttInt_Old ); #endif @@ -117,26 +117,30 @@ void LB_Init_LoadBalance( const bool Redistribute, const bool SendGridData, cons const bool RemoveParFromRepo_No = false; # ifdef PARTICLE - real_par *ParAtt_Old[PAR_NATT_TOTAL]; + real_par *ParAttFlt_Old[PAR_NATT_FLT_TOTAL]; + long_par *ParAttInt_Old[PAR_NATT_INT_TOTAL]; # else - real_par **ParAtt_Old = NULL; + real_par **ParAttFlt_Old = NULL; + long_par **ParAttInt_Old = NULL; # endif # ifdef PARTICLE if ( Redistribute ) { if ( TLv < 0 ) - LB_RedistributeParticle_Init( ParAtt_Old ); + LB_RedistributeParticle_Init( ParAttFlt_Old, ParAttInt_Old ); else { - for (int v=0; vPar->Attribute[v]; + for (int v=0; vPar->AttributeFlt[v]; + for (int v=0; vPar->AttributeInt[v]; } } else { - for (int v=0; vPar->Attribute[]) +// ParAttFlt_Old : Pointers pointing to the particle floating-point attribute arrays (amr->Par->AttributeFlt[]) +// ParAttInt_Old : Pointers pointing to the particle integer attribute arrays (amr->Par->AttributeInt[]) // RemoveParFromRepo : Remove particles on lv from the particle repository (amr->Par) // --> Useful when applying LB_Init_LoadBalance() to a single level (i.e., TLv>=0) // SendGridData : Transfer grid data // --> Particle data will always be transferred //------------------------------------------------------------------------------------------------------- -void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool RemoveParFromRepo, const bool SendGridData ) +void LB_RedistributeRealPatch( const int lv, real_par **ParAttFlt_Old, long_par **ParAttInt_Old, const bool RemoveParFromRepo, const bool SendGridData ) { // 1. count the number of real patches (and particles) to be sent and received @@ -367,17 +379,25 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R # ifdef PARTICLE const bool RemoveAllParticle = true; - long NSend_Total_ParData, NRecv_Total_ParData; + long NSend_Total_ParFltData, NRecv_Total_ParFltData; + long NSend_Total_ParIntData, NRecv_Total_ParIntData; long ParID; - long *NDone_ParData = new long [MPI_NRank]; - long *Send_NCount_ParData = new long [MPI_NRank]; - long *Recv_NCount_ParData = new long [MPI_NRank]; - long *Send_NDisp_ParData = new long [MPI_NRank]; - long *Recv_NDisp_ParData = new long [MPI_NRank]; + long *NDone_ParFltData = new long [MPI_NRank]; + long *Send_NCount_ParFltData = new long [MPI_NRank]; + long *Recv_NCount_ParFltData = new long [MPI_NRank]; + long *Send_NDisp_ParFltData = new long [MPI_NRank]; + long *Recv_NDisp_ParFltData = new long [MPI_NRank]; + + long *NDone_ParIntData = new long [MPI_NRank]; + long *Send_NCount_ParIntData = new long [MPI_NRank]; + long *Recv_NCount_ParIntData = new long [MPI_NRank]; + long *Send_NDisp_ParIntData = new long [MPI_NRank]; + long *Recv_NDisp_ParIntData = new long [MPI_NRank]; # ifdef DEBUG_PARTICLE - if ( ParAtt_Old == NULL ) Aux_Error( ERROR_INFO, "ParAtt_Old == NULL !!\n" ); + if ( ParAttFlt_Old == NULL ) Aux_Error( ERROR_INFO, "ParAttFlt_Old == NULL !!\n" ); + if ( ParAttInt_Old == NULL ) Aux_Error( ERROR_INFO, "ParAttInt_Old == NULL !!\n" ); # endif # endif // #ifdef PARTICLE @@ -385,14 +405,17 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R { Send_NCount_Patch [r] = 0; # ifdef PARTICLE - Send_NCount_ParData[r] = 0L; + Send_NCount_ParFltData[r] = 0L; + Send_NCount_ParIntData[r] = 0L; # endif } Send_NDisp_Patch [0] = 0; Recv_NDisp_Patch [0] = 0; # ifdef PARTICLE - Send_NDisp_ParData[0] = 0L; - Recv_NDisp_ParData[0] = 0L; + Send_NDisp_ParFltData[0] = 0L; + Recv_NDisp_ParFltData[0] = 0L; + Send_NDisp_ParIntData[0] = 0L; + Recv_NDisp_ParIntData[0] = 0L; # endif // 1.1 send count @@ -403,17 +426,23 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R Send_NCount_Patch [TRank] ++; # ifdef PARTICLE - Send_NCount_ParData[TRank] += (long)amr->patch[0][lv][PID]->NPar; + Send_NCount_ParFltData[TRank] += (long)amr->patch[0][lv][PID]->NPar; + Send_NCount_ParIntData[TRank] += (long)amr->patch[0][lv][PID]->NPar; # endif } # ifdef PARTICLE - for (int r=0; rNPatchComma[lv][1] ); # endif # ifdef DEBUG_PARTICLE - if ( NSend_Total_ParData != (long)amr->Par->NPar_Lv[lv]*(long)PAR_NATT_TOTAL ) - Aux_Error( ERROR_INFO, "NSend_Total_ParData (%ld) != expected (%ld) !!\n", - NSend_Total_ParData, (long)amr->Par->NPar_Lv[lv]*(long)PAR_NATT_TOTAL ); + if ( NSend_Total_ParFltData != (long)amr->Par->NPar_Lv[lv]*(long)PAR_NATT_FLT_TOTAL ) + Aux_Error( ERROR_INFO, "NSend_Total_ParFltData (%ld) != expected (%ld) !!\n", + NSend_Total_ParFltData, (long)amr->Par->NPar_Lv[lv]*(long)PAR_NATT_FLT_TOTAL ); + if ( NSend_Total_ParIntData != (long)amr->Par->NPar_Lv[lv]*(long)PAR_NATT_INT_TOTAL ) + Aux_Error( ERROR_INFO, "NSend_Total_ParIntData (%ld) != expected (%ld) !!\n", + NSend_Total_ParIntData, (long)amr->Par->NPar_Lv[lv]*(long)PAR_NATT_INT_TOTAL ); # endif @@ -488,7 +524,8 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R # endif real *SendPtr = NULL; - real_par *SendPtr_Par = NULL; + real_par *SendPtr_ParFlt = NULL; + long_par *SendPtr_ParInt = NULL; long *SendBuf_LBIdx = new long [ NSend_Total_Patch ]; real *SendBuf_Flu = ( SendGridData ) ? new real [ SendDataSizeFlu1v*NCOMP_TOTAL ] : NULL; # ifdef GRAVITY @@ -501,15 +538,17 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R real *SendBuf_Mag = ( SendGridData ) ? new real [ SendDataSizeMag1v*NCOMP_MAG ] : NULL; # endif # ifdef PARTICLE - real_par *SendBuf_ParData = new real_par [ NSend_Total_ParData ]; - int *SendBuf_NPar = new int [ NSend_Total_Patch ]; + real_par *SendBuf_ParFltData = new real_par [ NSend_Total_ParFltData ]; + long_par *SendBuf_ParIntData = new long_par [ NSend_Total_ParIntData ]; + int *SendBuf_NPar = new int [ NSend_Total_Patch ]; # endif for (int r=0; rpatch[0][lv][PID]->NPar; - SendPtr_Par = SendBuf_ParData + Send_NDisp_ParData[TRank] + NDone_ParData[TRank]; + SendPtr_ParFlt = SendBuf_ParFltData + Send_NDisp_ParFltData[TRank] + NDone_ParFltData[TRank]; + SendPtr_ParInt = SendBuf_ParIntData + Send_NDisp_ParIntData[TRank] + NDone_ParIntData[TRank]; for (int p=0; ppatch[0][lv][PID]->NPar; p++) { @@ -564,11 +604,12 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R // there should be no inactive particles associated with patches # ifdef DEBUG_PARTICLE - if ( ParAtt_Old[PAR_MASS][ParID] < (real_par)0.0 ) - Aux_Error( ERROR_INFO, "Mass[%ld] = %14.7e < 0.0 !!\n", ParID, ParAtt_Old[PAR_MASS][ParID] ); + if ( ParAttFlt_Old[PAR_MASS][ParID] < (real_par)0.0 ) + Aux_Error( ERROR_INFO, "Mass[%ld] = %14.7e < 0.0 !!\n", ParID, ParAttFlt_Old[PAR_MASS][ParID] ); # endif - for (int v=0; vPar->RemoveOneParticle( ParID, PAR_INACTIVE_MPI ); @@ -577,11 +618,12 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R NDone_Patch [TRank] ++; # ifdef PARTICLE - NDone_ParData[TRank] += (long)amr->patch[0][lv][PID]->NPar*(long)PAR_NATT_TOTAL; + NDone_ParFltData[TRank] += (long)amr->patch[0][lv][PID]->NPar*(long)PAR_NATT_FLT_TOTAL; + NDone_ParIntData[TRank] += (long)amr->patch[0][lv][PID]->NPar*(long)PAR_NATT_INT_TOTAL; // detach particles from patches to avoid warning messages when deleting // patches with particles - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; amr->patch[0][lv][PID]->RemoveParticle( NULL_INT, NULL, &amr->Par->NPar_Lv[lv], RemoveAllParticle, PType ); # endif } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) @@ -613,8 +655,9 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R real *RecvBuf_Mag = ( SendGridData ) ? new real [ RecvDataSizeMag1v*NCOMP_MAG ] : NULL; # endif # ifdef PARTICLE - real_par *RecvBuf_ParData = new real_par [ NRecv_Total_ParData ]; - int *RecvBuf_NPar = new int [ NRecv_Total_Patch ]; + real_par *RecvBuf_ParFltData = new real_par [ NRecv_Total_ParFltData ]; + long_par *RecvBuf_ParIntData = new long_par [ NRecv_Total_ParIntData ]; + int *RecvBuf_NPar = new int [ NRecv_Total_Patch ]; # endif @@ -664,8 +707,10 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R RecvBuf_NPar, Recv_NCount_Patch, Recv_NDisp_Patch, MPI_INT, MPI_COMM_WORLD ); // 4.7 particle data - MPI_Alltoallv_GAMER( SendBuf_ParData, Send_NCount_ParData, Send_NDisp_ParData, MPI_GAMER_REAL_PAR, - RecvBuf_ParData, Recv_NCount_ParData, Recv_NDisp_ParData, MPI_GAMER_REAL_PAR, MPI_COMM_WORLD ); + MPI_Alltoallv_GAMER( SendBuf_ParFltData, Send_NCount_ParFltData, Send_NDisp_ParFltData, MPI_GAMER_REAL_PAR, + RecvBuf_ParFltData, Recv_NCount_ParFltData, Recv_NDisp_ParFltData, MPI_GAMER_REAL_PAR, MPI_COMM_WORLD ); + MPI_Alltoallv_GAMER( SendBuf_ParIntData, Send_NCount_ParIntData, Send_NDisp_ParIntData, MPI_GAMER_LONG_PAR, + RecvBuf_ParIntData, Recv_NCount_ParIntData, Recv_NDisp_ParIntData, MPI_GAMER_LONG_PAR, MPI_COMM_WORLD ); # endif // #ifdef PARTICLE @@ -696,10 +741,14 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R delete [] SendBuf_Mag; # endif # ifdef PARTICLE - delete [] Send_NCount_ParData; - delete [] Send_NDisp_ParData; - delete [] NDone_ParData; - delete [] SendBuf_ParData; + delete [] Send_NCount_ParFltData; + delete [] Send_NDisp_ParFltData; + delete [] NDone_ParFltData; + delete [] SendBuf_ParFltData; + delete [] Send_NCount_ParIntData; + delete [] Send_NDisp_ParIntData; + delete [] NDone_ParIntData; + delete [] SendBuf_ParIntData; delete [] SendBuf_NPar; # endif @@ -716,14 +765,15 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R // check: for RemoveParFromRepo == false, the size of particle repository should be exactly equal to the received particles // --> see LB_RedistributeParticle_Init() # ifdef DEBUG_PARTICLE - const long NParExpect = amr->Par->NPar_AcPlusInac + NRecv_Total_ParData/(long)PAR_NATT_TOTAL; + const long NParExpect = amr->Par->NPar_AcPlusInac + NRecv_Total_ParFltData/(long)PAR_NATT_FLT_TOTAL; if ( !RemoveParFromRepo && NParExpect > amr->Par->ParListSize ) Aux_Error( ERROR_INFO, "NParExpect (%ld) > ParListSize (%ld) !!\n", NParExpect, amr->Par->ParListSize ); # endif - const real_par *RecvPtr_Par = RecvBuf_ParData; - long *ParList = NULL; - int ParListSizeMax = 0; // must NOT be negative to deal with the case NRecv_Total_Patch == 0 + const real_par *RecvPtr_ParFlt = RecvBuf_ParFltData; + const long_par *RecvPtr_ParInt = RecvBuf_ParIntData; + long *ParList = NULL; + int ParListSizeMax = 0; // must NOT be negative to deal with the case NRecv_Total_Patch == 0 for (int t=0; tPar->AddOneParticle( RecvPtr_Par ); - RecvPtr_Par += PAR_NATT_TOTAL; + ParID = amr->Par->AddOneParticle( RecvPtr_ParFlt, RecvPtr_ParInt ); + RecvPtr_ParFlt += PAR_NATT_FLT_TOTAL; + RecvPtr_ParInt += PAR_NATT_INT_TOTAL; // store the new particle index ParList[p] = ParID; // we do not transfer inactive particles # ifdef DEBUG_PARTICLE - if ( amr->Par->Attribute[PAR_MASS][ParID] < (real)0.0 ) + if ( amr->Par->AttributeFlt[PAR_MASS][ParID] < (real)0.0 ) Aux_Error( ERROR_INFO, "Transferring inactive particle (ParID %d, Mass %14.7e) !!\n", - ParID, amr->Par->Attribute[PAR_MASS][ParID] ); + ParID, amr->Par->AttributeFlt[PAR_MASS][ParID] ); # endif } // 6.3 associate particles with their home patches - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; # ifdef DEBUG_PARTICLE // do not set ParPos too early since pointers to the particle repository (e.g., amr->Par->PosX) // may change after calling amr->Par->AddOneParticle() @@ -862,9 +913,12 @@ void LB_RedistributeRealPatch( const int lv, real_par **ParAtt_Old, const bool R delete [] RecvBuf_Mag; # endif # ifdef PARTICLE - delete [] Recv_NCount_ParData; - delete [] Recv_NDisp_ParData; - delete [] RecvBuf_ParData; + delete [] Recv_NCount_ParFltData; + delete [] Recv_NDisp_ParFltData; + delete [] RecvBuf_ParFltData; + delete [] Recv_NCount_ParIntData; + delete [] Recv_NDisp_ParIntData; + delete [] RecvBuf_ParIntData; delete [] RecvBuf_NPar; delete [] ParList; # endif @@ -986,19 +1040,25 @@ void LB_SortRealPatch( const int lv ) // when calling LB_RedistributeRealPatch() later. // 3. One must call LB_SetCutPoint() for all levels in advance // -// Parameter : ParAtt_Old : Pointers for backing up the old particle attribute arrays (amr->Par->Attribute[]) +// Parameter : ParAttFlt_Old : Pointers for backing up the old particle floating-point attribute arrays (amr->Par->AttributeFlt[]) +// ParAttInt_Old : Pointers for backing up the old particle integer attribute arrays (amr->Par->AttributeInt[]) // // Return : None //------------------------------------------------------------------------------------------------------- -void LB_RedistributeParticle_Init( real_par **ParAtt_Old ) +void LB_RedistributeParticle_Init( real_par **ParAttFlt_Old, long_par **ParAttInt_Old ) { // backup the old particle attribute arrays -// remember to reset Attribute[] to NULL so that amr->Par->InitRepo will NOT delete these arrays - for (int v=0; vPar->InitRepo will NOT delete these arrays + for (int v=0; vPar->AttributeFlt[v]; + amr->Par->AttributeFlt[v] = NULL; + } + for (int v=0; vPar->Attribute[v]; - amr->Par->Attribute[v] = NULL; + ParAttInt_Old [v] = amr->Par->AttributeInt[v]; + amr->Par->AttributeInt[v] = NULL; } @@ -1041,15 +1101,17 @@ void LB_RedistributeParticle_Init( real_par **ParAtt_Old ) // // Note : 1. Free old particle attribute arrays // -// Parameter : ParAtt_Old : Pointers for backing up the old particle attribute arrays (amr->Par->Attribute[]) +// Parameter : ParAttFlt_Old : Pointers for backing up the old particle floating-point attribute arrays (amr->Par->AttributeFlt[]) +// ParAttInt_Old : Pointers for backing up the old particle integer attribute arrays (amr->Par->AttributeInt[]) // // Return : None //------------------------------------------------------------------------------------------------------- -void LB_RedistributeParticle_End( real_par **ParAtt_Old ) +void LB_RedistributeParticle_End( real_par **ParAttFlt_Old, long_par **ParAttInt_Old ) { // remove old particle attribute arrays - for (int v=0; vnum[SonLv] ); -// loop over all **real** patches on FaLv +// loop over all **real** patches on level FaLv for (int FaPID=0; FaPIDNPatchComma[FaLv][1]; FaPID++) { if ( amr->patch[0][FaLv][FaPID]->flag ) @@ -62,11 +62,28 @@ void LB_Init_Refine( const int FaLv, const bool AllocData ) Par_PassParticle2Son_SinglePatch( FaLv, FaPID ); # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->patch[0][FaLv][FaPID]->switch_to_wave_flag ) { + amr->use_wave_flag[SonLv] = true; + } + +// if father level uses wave flag, also use wave solver on son level + if ( amr->use_wave_flag[FaLv] ) { + amr->use_wave_flag[SonLv] = true; + } + +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->patch[0][FaLv][FaPID]->flag ) } // for (int FaPID=0; FaPIDNPatchComma[FaLv][1]; FaPID++) for (int m=1; m<28; m++) amr->NPatchComma[SonLv][m] = amr->num[SonLv]; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// ensure that all MPI ranks see the same use_wave_flag + Sync_UseWaveFlag( SonLv ); +# endif + } // FUNCTION : LB_Init_Refine diff --git a/src/LoadBalance/LB_RecordExchangeDataPatchID.cpp b/src/LoadBalance/LB_RecordExchangeDataPatchID.cpp index 36010806ae..71941b0858 100644 --- a/src/LoadBalance/LB_RecordExchangeDataPatchID.cpp +++ b/src/LoadBalance/LB_RecordExchangeDataPatchID.cpp @@ -199,6 +199,35 @@ void LB_RecordExchangeDataPatchID( const int Lv, const bool AfterRefine ) if ( FaPID == -1 ) Aux_Error( ERROR_INFO, "SonLv %d, SonPID0 %d has no father patch !!\n", SonLv, SonPID0 ); # endif +// exchange complete father patch if option OPT__LB_EXCHANGE_FATHER is set + if ( OPT__LB_EXCHANGE_FATHER ) { + + TPID = FaPID; + + if ( TPID >= NReal ) + { + RSib = 26; + SibIdx = TPID - NReal; + + if ( ( SibList_H[SibIdx] & SibMask_Check[RSib] ) == false ) + { + SibList_H[SibIdx] |= ( 1 << RSib ); + SibList_H[SibIdx] &= SibMask_Clear[RSib]; + } + +// allocate memory for the buffer patches that will receive data + for (int Sg=0; Sg<2; Sg++) amr->patch[Sg][Lv][TPID]->hnew(); + +# ifdef MHD + for (int Sg=0; Sg<2; Sg++) amr->patch[Sg][Lv][TPID]->mnew(); +# endif + +# ifdef GRAVITY // so that the XXX_H lists can also be applied to the potential data + for (int Sg=0; Sg<2; Sg++) amr->patch[Sg][Lv][TPID]->gnew(); +# endif + } // if ( TPID >= NReal ) + } // if ( OPT__LB_EXCHANGE_FATHER ) + TABLE_GetSibPID_Based( SonLv, SonPID0, SibPID0_List ); for (int s=0; spatch[Sg][Lv][TPID]->gnew(); # endif - } // if ( TPID >= NReal ) } // for (int f=0; f hold for Hilbert curve method, but may not hold for other methods +//###NOTE: here we have assumed that the newly-created son patches will have LB_Idx ~ 8*(father LB_Idx) +// --> hold for Hilbert curve method, but may not hold for other methods if ( NPatchTotal[SonLv] == 0 ) for (int r=0; rLB->CutPoint[SonLv][r] = amr->LB->CutPoint[FaLv][r]*8; @@ -91,10 +92,23 @@ void LB_Refine( const int FaLv ) long CFB_NSibEachRank[MPI_NRank]; real *CFB_BField=NULL; + bool SwitchFinerLevelsToWaveScheme = false; + LB_Refine_GetNewRealPatchList( FaLv, NNew_Home, NewPID_Home, NNew_Away, NewCr1D_Away, NewCr1D_Away_IdxTable, NewCData_Away, NDel_Home, DelPID_Home, NDel_Away, DelCr1D_Away, RefineF2S_Send_NPatchTotal, RefineF2S_Send_PIDList, - CFB_SibLBIdx_Home, CFB_SibLBIdx_Away ); + CFB_SibLBIdx_Home, CFB_SibLBIdx_Away, + SwitchFinerLevelsToWaveScheme ); + +// sync information whether refined levels are switched to wave scheme +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + bool Send = SwitchFinerLevelsToWaveScheme; + bool Recv; + + MPI_Allreduce( &Send, &Recv, 1, MPI_C_BOOL, MPI_LOR, MPI_COMM_WORLD ); + + SwitchFinerLevelsToWaveScheme = Recv; +# endif // 3. get the magnetic field on the coarse-fine interfaces for the divergence-free interpolation @@ -181,13 +195,47 @@ void LB_Refine( const int FaLv ) # endif -// 7. miscellaneous +// 7. convert density/phase to density/real part/imaginary part in hybrid scheme if we switch the level from fluid to wave +// ========================================================================================== +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( SwitchFinerLevelsToWaveScheme ) { + for (int ChildLv=SonLv; ChildLv<=TOP_LEVEL; ++ChildLv) { +// set use_wave_flag + amr->use_wave_flag[ChildLv] = true; + +// iterate over real and buffer patches + for (int PID=0; PIDNPatchComma[ChildLv][27]; PID++) + { +// convert both sandglasses + for (int FluSg=0; FluSg<2; ++FluSg) + { + for (int k=0; kpatch[FluSg][ChildLv][PID]->fluid != NULL && amr->FluSgTime[ChildLv][FluSg] >= 0.0 ) + { +//###REVISE: at this point, we should check whether dB wavelength is resolved after conversion to wave representation + const real Amp = SQRT( amr->patch[FluSg][ChildLv][PID]->fluid[DENS][k][j][i] ); + const real Phase = amr->patch[FluSg][ChildLv][PID]->fluid[PHAS][k][j][i]; + amr->patch[FluSg][ChildLv][PID]->fluid[REAL][k][j][i] = Amp*COS( Phase ); + amr->patch[FluSg][ChildLv][PID]->fluid[IMAG][k][j][i] = Amp*SIN( Phase ); + } + } // FluSg + }}} // k,j,i + } // for (int PID=0; PIDNPatchComma[ChildLv][27]; PID++) + } // for (int ChildLv=SonLv; ChildLv<=TOP_LEVEL; ++ChildLv) + } // if ( SwitchFinerLevelsToWaveScheme ) +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + + +// 8. miscellaneous // ========================================================================================== -// 7.1 reset LB_CutPoint to the default values (-1) if SonLv has been totally removed +// 8.1 reset LB_CutPoint to the default values (-1) if SonLv has been totally removed if ( NPatchTotal[SonLv] == 0 ) for (int r=0; rLB->CutPoint[SonLv][r] = -1; -// 7.2 free memory +// 8.2 free memory if ( NewPID_Home == NULL && NNew_Home != 0 ) Aux_Error( ERROR_INFO, "%s has not been allocated !!\n", "NewPID_Home" ); @@ -245,6 +293,27 @@ void LB_Refine( const int FaLv ) delete [] RefineF2S_Send_PIDList; # endif + +// 9. construct the global AMR structure if required +// ========================================================================================== +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +//###NOTE: the following criterion must be adjusted if another part of GAMER wants to use the global tree +// update the global tree only after updating the first wave level +// --> the fluid scheme currently only uses the global tree in two places: +// (a) velocity time-step calculation +// (b) fluid solver itself +// --> in both cases, we only need information about which fluid cells have refined wave counterparts +// --> only need to update the global tree if the patches on the first wave level have changed and +// don't care what happens on higher refinement levels +// --> having said that, it is actually necessary to do it after updating all fluid levels to +// ensure that all fluid patches have been registered in the global tree + if ( SonLv <= ELBDM_FIRST_WAVE_LEVEL ) + { + delete GlobalTree; // in case it has been allocated already + GlobalTree = new LB_GlobalTree; + } +# endif + } // FUNCTION : LB_Refine diff --git a/src/LoadBalance/LB_Refine_AllocateNewPatch.cpp b/src/LoadBalance/LB_Refine_AllocateNewPatch.cpp index 949ad57e56..76a808b6d7 100644 --- a/src/LoadBalance/LB_Refine_AllocateNewPatch.cpp +++ b/src/LoadBalance/LB_Refine_AllocateNewPatch.cpp @@ -816,13 +816,22 @@ int AllocateSonPatch( const int FaLv, const int *Cr, const int PScale, const int Monotonicity[v] = Monotonicity_Yes; # elif ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[FaLv] ) { +# endif if ( v != REAL && v != IMAG ) Monotonicity[v] = Monotonicity_Yes; else Monotonicity[v] = Monotonicity_No; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { // if ( amr->use_wave_flag[FaLv] ) + if ( v != PHAS && v != STUB ) Monotonicity[v] = Monotonicity_Yes; + else Monotonicity[v] = Monotonicity_No; + } // if ( amr->use_wave_flag[FaLv] ) ... else ... +# endif # else # error : DO YOU WANT TO ENSURE THE POSITIVITY OF INTERPOLATION IN THIS NEW MODEL ?? # endif // MODEL - } + } // for (int v=0; vuse_wave_flag[FaLv] ) { +# endif + if ( OPT__INT_PHASE ) { // get the wrapped phase (store in the REAL component) for (int t=0; tuse_wave_flag[FaLv] ) +// interpolate density + Interpolate( CData_Dens, CSize_Flu3, CStart_Flu, CRange_CC, &FData_Flu[DENS][0][0][0], + FSize_CC3, FStart_CC, 1, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_No, &Monotonicity_Yes, + IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + +// interpolate phase + Interpolate( CData_Phas, CSize_Flu3, CStart_Flu, CRange_CC, &FData_Flu[PHAS][0][0][0], + FSize_CC3, FStart_CC, 1, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_No, &Monotonicity_No, + IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + + } // if ( amr->use_wave_flag[FaLv] ) ... else ... +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) # else // #if ( MODEL == ELBDM ) @@ -996,6 +1039,22 @@ int AllocateSonPatch( const int FaLv, const int *Cr, const int PScale, const int CData_Next += NCOMP_MAG*CSize_Mag_N*SQR( CSize_Mag_T ); // skip the B field since it has been prepared already (3.2.2-1) # endif +// (c1.3.4.3) convert density/phase to real and imaginary parts if patches were refined from phase to wave level +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !amr->use_wave_flag[FaLv] && amr->use_wave_flag[SonLv] ) { + real Amp, Phase, Re, Im; + + for (int k=0; k note that it's unnecessary to check negative passive scalars thanks to the monotonic interpolation @@ -1010,8 +1069,11 @@ int AllocateSonPatch( const int FaLv, const int *Cr, const int PScale, const int if ( DensOld < MIN_DENS ) { -// rescale wave function (unnecessary if OPT__INT_PHASE if off, in which case we will rescale all wave functions later) +// rescale wave function (unnecessary if OPT__INT_PHASE is disabled, in which case we will rescale all wave functions later) # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[SonLv] ) +# endif if ( OPT__INT_PHASE ) { const real Rescale = SQRT( (real)MIN_DENS / DensOld ); @@ -1127,31 +1189,39 @@ int AllocateSonPatch( const int FaLv, const int *Cr, const int PScale, const int // rescale real and imaginary parts to get the correct density in ELBDM if OPT__INT_PHASE is off # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[SonLv] ) { +# endif real Real, Imag, Rho_Corr, Rho_Wrong, Rescale; - if ( !OPT__INT_PHASE ) - for (int k=0; kpatch[FSg_Flu][SonLv][SonPID]->fluid[REAL][k][j][i]; - Imag = amr->patch[FSg_Flu][SonLv][SonPID]->fluid[IMAG][k][j][i]; - Rho_Wrong = Real*Real + Imag*Imag; - Rho_Corr = amr->patch[FSg_Flu][SonLv][SonPID]->fluid[DENS][k][j][i]; - -// be careful about the negative density introduced from the round-off errors - if ( Rho_Wrong <= (real)0.0 || Rho_Corr <= (real)0.0 ) + if ( !OPT__INT_PHASE ) { + for (int k=0; kpatch[FSg_Flu][SonLv][SonPID]->fluid[DENS][k][j][i] = (real)0.0; - Rescale = (real)0.0; + Real = amr->patch[FSg_Flu][SonLv][SonPID]->fluid[REAL][k][j][i]; + Imag = amr->patch[FSg_Flu][SonLv][SonPID]->fluid[IMAG][k][j][i]; + Rho_Wrong = Real*Real + Imag*Imag; + Rho_Corr = amr->patch[FSg_Flu][SonLv][SonPID]->fluid[DENS][k][j][i]; + +// be careful about the negative density introduced from the round-off errors + if ( Rho_Wrong <= (real)0.0 || Rho_Corr <= (real)0.0 ) + { + amr->patch[FSg_Flu][SonLv][SonPID]->fluid[DENS][k][j][i] = (real)0.0; + Rescale = (real)0.0; + } + else + Rescale = SQRT( Rho_Corr/Rho_Wrong ); + + amr->patch[FSg_Flu][SonLv][SonPID]->fluid[REAL][k][j][i] *= Rescale; + amr->patch[FSg_Flu][SonLv][SonPID]->fluid[IMAG][k][j][i] *= Rescale; } - else - Rescale = SQRT( Rho_Corr/Rho_Wrong ); + } // if ( !OPT__INT_PHASE ) - amr->patch[FSg_Flu][SonLv][SonPID]->fluid[REAL][k][j][i] *= Rescale; - amr->patch[FSg_Flu][SonLv][SonPID]->fluid[IMAG][k][j][i] *= Rescale; - } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[SonLv] ) # endif +# endif // #if ( MODEL == ELBDM ) } // for (int LocalID=0; LocalID<8; LocalID++) diff --git a/src/LoadBalance/LB_Refine_GetNewRealPatchList.cpp b/src/LoadBalance/LB_Refine_GetNewRealPatchList.cpp index 6e67ab214c..e5522244f5 100644 --- a/src/LoadBalance/LB_Refine_GetNewRealPatchList.cpp +++ b/src/LoadBalance/LB_Refine_GetNewRealPatchList.cpp @@ -45,6 +45,9 @@ void PrepareCData( const int FaLv, const int FaPID, real *const FaData, // CFB_SibLBIdx_Home : Load-balance indices of the siblings of home patches // CFB_SibLBIdx_Away : Load-balance indices of the siblings of away patches // +// Hybrid-scheme-only parameters (call-by-reference) +// SwitchFinerLevelsToWaveScheme : Convert levels above level "FaLv"´ to wave scheme +// // Return : NNew_Home, NewPID_Home, NNew_Away, NewCr1D_Away, NewCr1D_Away_IdxTable, NewCData_Away, // NDel_Home, DelPID_Home, NDel_Away, DelCr1D_Away, RefineF2S_Send_NPatchTotal, RefineF2S_Send_PIDList, // CFB_SibLBIdx_Home, CFB_SibLBIdx_Away @@ -53,7 +56,8 @@ void LB_Refine_GetNewRealPatchList( const int FaLv, int &NNew_Home, int *&NewPID ulong *&NewCr1D_Away, int *&NewCr1D_Away_IdxTable, real *&NewCData_Away, int &NDel_Home, int *&DelPID_Home, int &NDel_Away, ulong *&DelCr1D_Away, int &RefineF2S_Send_NPatchTotal, int *&RefineF2S_Send_PIDList, - long (*&CFB_SibLBIdx_Home)[6], long (*&CFB_SibLBIdx_Away)[6] ) + long (*&CFB_SibLBIdx_Home)[6], long (*&CFB_SibLBIdx_Away)[6], + bool &SwitchFinerLevelsToWaveScheme ) { // 1. construct the unsorted new/delete lists for real patches @@ -158,6 +162,12 @@ void LB_Refine_GetNewRealPatchList( const int FaLv, int &NNew_Home, int *&NewPID } # endif // #ifdef MHD +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !amr->use_wave_flag[SonLv] && TP->switch_to_wave_flag ) { + SwitchFinerLevelsToWaveScheme = true; + } +# endif + // record the new lists if ( TRank == MPI_Rank ) // target son patches are home diff --git a/src/MPI/Init_MPI.cpp b/src/MPI/Init_MPI.cpp index 2d361901fd..c521d04bfb 100644 --- a/src/MPI/Init_MPI.cpp +++ b/src/MPI/Init_MPI.cpp @@ -50,6 +50,19 @@ void Init_MPI( int *argc, char ***argv ) if ( MPI_Rank == 0 ) Aux_Message( stdout, "Init_MPI ... done\n" ); # endif +// detect the number of MPI ranks per node and issue a warning if each node has only one rank +// (assume all nodes have the same number of MPI ranks per node) +// reference: https://stackoverflow.com/questions/9022496/how-to-determine-mpi-rank-process-number-local-to-a-socket-node + int MPI_SizePerNode; + MPI_Comm shmcomm; + MPI_Comm_split_type( MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &shmcomm ); + MPI_Comm_size( shmcomm, &MPI_SizePerNode ); + + if ( MPI_SizePerNode == 1 && MPI_Rank == 0 ) + Aux_Message( stderr, "WARNING : Each node has only one MPI rank. Using more ranks per node may improve performance !!\n" ); + + MPI_Comm_free( &shmcomm ); + } // FUNCTION : Init_MPI diff --git a/src/MPI/MPI_Alltoallv_GAMER.cpp b/src/MPI/MPI_Alltoallv_GAMER.cpp index a99277c8c9..9a329a1454 100644 --- a/src/MPI/MPI_Alltoallv_GAMER.cpp +++ b/src/MPI/MPI_Alltoallv_GAMER.cpp @@ -18,7 +18,7 @@ // Recv_NCount: Number of elements to be received by each rank from other ranks in RecvBuf; length equals MPI_NRank // Recv_NDisp: Displacement indicating the stride where the received data (from other ranks) starts in RecvdBuf for each rank; // length equals MPI_NRank -// Recv_Datatype: Received data type for MPI (MPI_GAMER_REAL/MPI_GAMER_REAL_PAR) +// Recv_Datatype: Received data type for MPI (MPI_GAMER_REAL/MPI_GAMER_REAL_PAR/MPI_GAMER_LONG_PAR) // comm: MPI communicator // // Return : RecvBuf diff --git a/src/Main/EvolveLevel.cpp b/src/Main/EvolveLevel.cpp index 378ffc1011..3305379464 100644 --- a/src/Main/EvolveLevel.cpp +++ b/src/Main/EvolveLevel.cpp @@ -635,9 +635,18 @@ void EvolveLevel( const int lv, const double dTime_FaLv ) // exchange the updated density and momentum fields in the buffer patches for computing the tracer particle velocity if ( amr->Par->GhostSizeTracer > Flu_ParaBuf ) - TIMING_FUNC( Buf_GetBufferData( lv, SaveSg_Flu, NULL_INT, NULL_INT, DATA_GENERAL, - _DENS|_MOMX|_MOMY|_MOMZ, _NONE, amr->Par->GhostSizeTracer, USELB_YES ), - Timer_GetBuf[lv][2], TIMER_ON ); + { +# if ( MODEL == HYDRO ) + const long TVarCC = _DENS | _MOMX | _MOMY | _MOMZ; +# elif ( MODEL == ELBDM ) + const long TVarCC = _DENS | _REAL | _IMAG; +# else +# error : unsupported MODEL !! +# endif + TIMING_FUNC( Buf_GetBufferData( lv, SaveSg_Flu, NULL_INT, NULL_INT, DATA_GENERAL, + TVarCC, _NONE, amr->Par->GhostSizeTracer, USELB_YES ), + Timer_GetBuf[lv][2], TIMER_ON ); + } TIMING_FUNC( Par_UpdateTracerParticle( lv, TimeNew, TimeOld, false ), Timer_Par_Update[lv][0], TIMER_ON ); @@ -716,6 +725,23 @@ void EvolveLevel( const int lv, const double dTime_FaLv ) // 12-1. use the average data on fine grids to correct the coarse-grid data if ( OPT__FIXUP_RESTRICT ) { +// exchange the entire phase field (not only the updated parts) in buffers on level lv if level lv + 1 uses wave scheme +// this is required for backward matching during fixup +# if ( defined( LOAD_BALANCE ) && ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !amr->use_wave_flag[lv] && amr->use_wave_flag[lv+1] && ELBDM_MATCH_PHASE ) + { + int FaLv = lv; + int FaFluSg = amr->FluSg[FaLv]; +// if available, use the phase information from the previous time step (1 - amr->FluSg[FaLv]) for this purpose + if ( amr->FluSgTime[FaLv][1-FaFluSg] >= 0.0 ) { + FaFluSg = 1 - FaFluSg; + } + TIMING_FUNC( Buf_GetBufferData( FaLv, FaFluSg, NULL_INT, NULL_INT, DATA_GENERAL, + _PHAS, _NONE, 0, USELB_YES ), + Timer_GetBuf[lv][2], TIMER_ON ); + } +# endif // # if ( defined( LOAD_BALANCE ) && ELBDM_SCHEME == ELBDM_HYBRID ) + TIMING_FUNC( Flu_FixUp_Restrict( lv, amr->FluSg[lv+1], amr->FluSg[lv], amr->MagSg[lv+1], amr->MagSg[lv], NULL_INT, NULL_INT, FixUpVar_Restrict, _MAG ), Timer_FixUp[lv], TIMER_ON ); @@ -745,7 +771,28 @@ void EvolveLevel( const int lv, const double dTime_FaLv ) // 12-3. use the fine-grid fluxes across the coarse-fine boundaries to correct the coarse-grid data // --> apply AFTER other fix-up operations since it will check negative pressure as well // (which requires the coarse-grid B field updated by Flu_FixUp_Restrict() and MHD_FixUp_Electric()) - if ( OPT__FIXUP_FLUX ) +// --> do not apply the flux fix-up on base level when ELBDM_BASE_SPECTRAL is enabled +// --> do not apply the flux fix-up when using the local spectral method + + bool DisableFixupFlux = false; + +# if ( MODEL == ELBDM ) +// disable fixup for base level spectral solver on base-level + DisableFixupFlux |= (ELBDM_BASE_SPECTRAL && lv == 0); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv + 1] ) { +# endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# if ( WAVE_SCHEME == WAVE_GRAMFE ) +// disable fixup for local spectral method on wave levels + DisableFixupFlux |= true; +# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } +# endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) +# endif // # if ( MODEL == ELBDM ) + + if ( OPT__FIXUP_FLUX && !(DisableFixupFlux) ) { # ifdef LOAD_BALANCE TIMING_FUNC( Buf_GetBufferData( lv, NULL_INT, NULL_INT, NULL_INT, COARSE_FINE_FLUX, @@ -758,13 +805,15 @@ void EvolveLevel( const int lv, const double dTime_FaLv ) } // 12-4. exchange the updated data +// use data exchange mode DATA_GENERAL for Flu_ParaBuf == PATCH_SIZE in order to support MPI # ifdef MHD if ( OPT__FIXUP_FLUX || OPT__FIXUP_RESTRICT || OPT__FIXUP_ELECTRIC ) # else if ( OPT__FIXUP_FLUX || OPT__FIXUP_RESTRICT ) # endif - TIMING_FUNC( Buf_GetBufferData( lv, amr->FluSg[lv], amr->MagSg[lv], NULL_INT, DATA_AFTER_FIXUP, - FixUpVar_Flux | FixUpVar_Restrict, _MAG, Flu_ParaBuf, USELB_YES ), + TIMING_FUNC( Buf_GetBufferData( lv, amr->FluSg[lv], amr->MagSg[lv], NULL_INT, + (Flu_ParaBuf1 allows for refining multiple levels at once - const int lv_refine_max = MIN( lv+REFINE_NLEVEL, TOP_LEVEL ) - 1; + int Refine_NLevel = REFINE_NLEVEL; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// always refine at least until first wave level when using fluid scheme + if ( !amr->use_wave_flag[lv] && lv < ELBDM_FIRST_WAVE_LEVEL ) + Refine_NLevel = MAX( ELBDM_FIRST_WAVE_LEVEL-lv, REFINE_NLEVEL ); +# endif + + const int lv_refine_max = MIN( lv+Refine_NLevel, TOP_LEVEL ) - 1; for (int lv_refine=lv; lv_refine<=lv_refine_max; lv_refine++) { @@ -805,6 +862,11 @@ void EvolveLevel( const int lv, const double dTime_FaLv ) // 13-2. refine if ( OPT__VERBOSE && MPI_Rank == 0 ) Aux_Message( stdout, " Lv %2d: Refine %27s... ", lv_refine, "" ); +// store wave flag in buffer to determine whether fluid scheme data was converted to wave scheme +# if ( MODEL == ELBDM && ELBDM_SCHEME == ELBDM_HYBRID && defined LOAD_BALANCE ) + const bool old_wave_flag = amr->use_wave_flag[ lv_refine + 1 ]; +# endif + TIMING_FUNC( Refine( lv_refine, USELB_YES ), Timer_Refine[lv_refine], TIMER_ON ); @@ -848,6 +910,22 @@ void EvolveLevel( const int lv, const double dTime_FaLv ) Timer_Refine[lv_refine], TIMER_ON ); # endif +# ifdef LOAD_BALANCE +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// exchange all fluid data on refined wave levels after switching to wave scheme + if ( old_wave_flag != amr->use_wave_flag[lv_refine+1] ) { + for (int i=lv_refine+1; i<=TOP_LEVEL; ++i) { + TIMING_FUNC( Buf_GetBufferData( i, amr->FluSg[i], NULL_INT, NULL_INT, DATA_GENERAL, + _TOTAL, _NONE, Flu_ParaBuf, USELB_YES ), + Timer_GetBuf[lv_refine][4], TIMER_ON ); + TIMING_FUNC( Buf_GetBufferData( i, 1-amr->FluSg[i], NULL_INT, NULL_INT, DATA_GENERAL, + _TOTAL, _NONE, Flu_ParaBuf, USELB_YES ), + Timer_GetBuf[lv_refine][4], TIMER_ON ); + } + } +# endif +# endif // #ifdef LOAD_BALANCE + if ( OPT__VERBOSE && MPI_Rank == 0 ) Aux_Message( stdout, "done\n" ); if ( OPT__PATCH_COUNT == 2 ) Aux_Record_PatchCount(); diff --git a/src/Main/InterpolateGhostZone.cpp b/src/Main/InterpolateGhostZone.cpp index d1cefd5ba6..7506672dac 100644 --- a/src/Main/InterpolateGhostZone.cpp +++ b/src/Main/InterpolateGhostZone.cpp @@ -52,9 +52,10 @@ void SetTempIntPara( const int lv, const int Sg0, const double PrepTime, const d // TSib : Target sibling indices along different sibling directions // TVarCC : Target cell-centered variables to be prepared // --> Supported variables in different models: -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY, _VELX, _VELY, _VELZ, _PRES, _TEMP, _ENTR, _EINT -// [, _POTE] [, _MAGX_CC, _MAGY_CC, _MAGZ_CC, _MAGE_CC] -// ELBDM : _DENS, _REAL, _IMAG [, _POTE] +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY, _VELX, _VELY, _VELZ, _PRES, _TEMP, _ENTR, _EINT +// [, _POTE] [, _MAGX_CC, _MAGY_CC, _MAGZ_CC, _MAGE_CC] +// ELBDM_WAVE : _DENS, _REAL, _IMAG [, _POTE] +// ELBDM_HYBRID : _DENS, _PHAS [, _POTE] // --> _FLUID, _PASSIVE, _TOTAL, and _DERIVED apply to all models // NVarCC_Tot : Total number of cell-centered variables to be prepared // NVarCC_Flu : Number of cell-centered fluid variables to be prepared @@ -74,6 +75,7 @@ void SetTempIntPara( const int lv, const int Sg0, const double PrepTime, const d // TVarFCIdxList : List recording the target face-centered variable indices // ( = [0 ... NCOMP_MAG-1] ) // IntPhase : true --> Perform interpolation on rho/phase instead of real/imag parts in ELBDM +// This parameter is useless for the ELBDM hybrid solver, which always interpolates rho/phase // FluBC : Fluid boundary condition // PotBC : Gravity boundary condition (not used currently) // BC_Face : Priority of the B.C. along different boundary faces (z>y>x) @@ -338,10 +340,16 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real // temporal interpolation // --> for IntPhase, apply temporal interpolation to density/phase instead of real/imaginary parts for better accuracy # if ( MODEL == ELBDM ) - if ( FluIntTime && !IntPhase ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// for fluid patches, we do not require the IntPhase flag and therefore only check whether FluIntTime is set + if ( ( amr->use_wave_flag[lv] == true && FluIntTime && !IntPhase ) + || ( amr->use_wave_flag[lv] == false && FluIntTime ) ) # else - if ( FluIntTime ) + if ( FluIntTime && !IntPhase ) # endif +# else // #if ( MODEL == ELBDM ) + if ( FluIntTime ) +# endif // #if ( MODEL == ELBDM ) ... else ... CData_CC_Ptr[Idx] = FluWeighting *CData_CC_Ptr[Idx] + FluWeighting_IntT*amr->patch[FluSg_IntT][lv][PID]->fluid[TVarCCIdx_Flu][k1][j1][i1]; Idx ++; @@ -785,10 +793,15 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real // temporal interpolation // --> for IntPhase, apply temporal interpolation to density/phase instead of real/imaginary parts for better accuracy # if ( MODEL == ELBDM ) - if ( FluIntTime && !IntPhase ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( ( amr->use_wave_flag[lv] == true && FluIntTime && !IntPhase ) + || ( amr->use_wave_flag[lv] == false && FluIntTime ) ) # else - if ( FluIntTime ) + if ( FluIntTime && !IntPhase ) # endif +# else // #if ( MODEL == ELBDM ) + if ( FluIntTime ) +# endif // #if ( MODEL == ELBDM ) ... else ... CData_CC_Ptr[Idx] = FluWeighting *CData_CC_Ptr[Idx] + FluWeighting_IntT*amr->patch[FluSg_IntT][lv][SibPID]->fluid[TVarCCIdx_Flu][k2][j2][i2]; @@ -1412,7 +1425,12 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real # elif ( MODEL == ELBDM ) // apply monotonic interpolation to density and all passive scalars +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( ( TVarCCIdx_Flu != REAL && TVarCCIdx_Flu != IMAG && amr->use_wave_flag[lv] == true ) + || ( TVarCCIdx_Flu != PHAS && TVarCCIdx_Flu != STUB && amr->use_wave_flag[lv] == false ) ) +# else if ( TVarCCIdx_Flu != REAL && TVarCCIdx_Flu != IMAG ) +# endif Monotonicity_CC[v] = Monotonicity_Yes; else Monotonicity_CC[v] = Monotonicity_No; @@ -1420,7 +1438,7 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real # else # error : DO YOU WANT TO ENSURE THE POSITIVITY OF INTERPOLATION IN THIS NEW MODEL ?? # endif // MODEL - } + } // for (int v=0; vuse_wave_flag[lv] == true ) +# else if ( IntPhase ) +# endif { // determine the array indices - real *CData_Real = NULL; - real *CData_Imag = NULL; - real *CData_Dens = NULL; - real *CData_Phas = NULL; - - real *FData_Real = NULL; - real *FData_Imag = NULL; - real *FData_Dens = NULL; - real *FData_Phas = NULL; - int DensIdx=-1, RealIdx=-1, ImagIdx=-1; for (int v=0; v using SATAN2() in Macro.h seems to provide a temporary fix (but needs to be checked further) @@ -1520,6 +1557,15 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real CData_Dens[t] = Re*Re + Im*Im; } + if ( IntScheme_CC == INT_SPECTRAL ) { +// interpolate density & phase +// INT_SPECTRAL with PhaseUnwrapping_Yes assumes that the density and phase fields are stored consecutively in memory + const bool Monotonicity_Spec[2] = { true, false }; + Interpolate( CData_CC, CSize_CC, CStart_CC, CRange_CC, + IntData_CC, FSize_CC, FStart_CC, + 2, IntScheme_CC, PhaseUnwrapping_Yes, Monotonicity_Spec, IntOppSign0thOrder_No, + ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } else { // interpolate density Interpolate( CData_Dens, CSize_CC, CStart_CC, CRange_CC, FData_Dens, FSize_CC, FStart_CC, 1, IntScheme_CC, PhaseUnwrapping_No, &Monotonicity_Yes, IntOppSign0thOrder_No, @@ -1530,6 +1576,7 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real 1, IntScheme_CC, PhaseUnwrapping_Yes, &Monotonicity_No, IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } // temporal interpolation // --> apply it to density/phase instead of real/imaginary parts for better accuracy @@ -1649,8 +1696,8 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real for (int t=0; t using SATAN2() in Macro.h seems to provide a temporary fix (but needs to be checked further) @@ -1662,6 +1709,15 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real CData_Dens_IntTime[t] = Re*Re + Im*Im; } + if ( IntScheme_CC == INT_SPECTRAL ) { +// interpolate density & phase +// INT_SPECTRAL with PhaseUnwrapping_Yes assumes that the density and phase fields are stored consecutively in memory + const bool Monotonicity_Spec[2] = { true, false }; + Interpolate( CData_CC, CSize_CC, CStart_CC, CRange_CC, + IntData_CC_IntTime, FSize_CC, FStart_CC, + 2, IntScheme_CC, PhaseUnwrapping_Yes, Monotonicity_Spec, IntOppSign0thOrder_No, + ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } else { // interpolate density Interpolate( CData_Dens_IntTime, CSize_CC, CStart_CC, CRange_CC, FData_Dens_IntTime, FSize_CC, FStart_CC, @@ -1674,6 +1730,7 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real 1, IntScheme_CC, PhaseUnwrapping_Yes, &Monotonicity_No, IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } // temporal interpolation for (int t=0; tuse_wave_flag[lv] == true ) in hybrid scheme // c3. interpolation on original variables - else // if ( IntPhase ) + else # endif // if ( MODEL == ELBDM ) { // c3-1. prepare the fine-grid, cell-centered B field for IntIter @@ -1754,7 +1810,7 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real CMag_CC_IntIter, FMag_CC_IntIter ); delete [] FMag_CC_IntIter; - } // if ( IntPhase ) ... else ... + } // if ( IntPhase ) || if ( IntPhase && amr->use_wave_flag[lv] == true ) in hybrid scheme ... else ... NVarCC_SoFar = NVarCC_Flu; diff --git a/src/Main/InvokeSolver.cpp b/src/Main/InvokeSolver.cpp index aae00a5e46..cccfba3010 100644 --- a/src/Main/InvokeSolver.cpp +++ b/src/Main/InvokeSolver.cpp @@ -1,7 +1,7 @@ #include "GAMER.h" static void Preparation_Step( const Solver_t TSolver, const int lv, const double TimeNew, const double TimeOld, const int NPG, - const int *PID0_List, const int ArrayID ); + const int *PID0_List, const int ArrayID, LB_GlobalTree* GlobalTree ); static void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const double TimeOld, const int NPG, const int ArrayID, const double dt, const double Poi_Coeff ); static void Closing_Step( const Solver_t TSolver, const int lv, const int SaveSg_Flu, const int SaveSg_Mag, const int SaveSg_Pot, @@ -196,8 +196,14 @@ void InvokeSolver( const Solver_t TSolver, const int lv, const double TimeNew, c NPG[ArrayID] = ( NPG_Max < NTotal ) ? NPG_Max : NTotal; +// evaluate time evolution matrix (once per level per timestep) +# if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + ELBDM_GramFE_ComputeTimeEvolutionMatrix( h_GramFE_TimeEvo, dt, amr->dh[lv], ELBDM_ETA ); +# endif + + //------------------------------------------------------------------------------------------------------------- - TIMING_SYNC( Preparation_Step( TSolver, lv, TimeNew, TimeOld, NPG[ArrayID], PID0_List, ArrayID ), + TIMING_SYNC( Preparation_Step( TSolver, lv, TimeNew, TimeOld, NPG[ArrayID], PID0_List, ArrayID, GlobalTree ), Timer_Pre[lv][TSolver] ); //------------------------------------------------------------------------------------------------------------- @@ -216,7 +222,7 @@ void InvokeSolver( const Solver_t TSolver, const int lv, const double TimeNew, c //------------------------------------------------------------------------------------------------------------- - TIMING_SYNC( Preparation_Step( TSolver, lv, TimeNew, TimeOld, NPG[ArrayID], PID0_List+Disp, ArrayID ), + TIMING_SYNC( Preparation_Step( TSolver, lv, TimeNew, TimeOld, NPG[ArrayID], PID0_List+Disp, ArrayID, GlobalTree ), Timer_Pre[lv][TSolver] ); //------------------------------------------------------------------------------------------------------------- @@ -292,7 +298,7 @@ void InvokeSolver( const Solver_t TSolver, const int lv, const double TimeNew, c // ArrayID : Array index to load and store data ( 0 or 1 ) //------------------------------------------------------------------------------------------------------- void Preparation_Step( const Solver_t TSolver, const int lv, const double TimeNew, const double TimeOld, const int NPG, - const int *PID0_List, const int ArrayID ) + const int *PID0_List, const int ArrayID, LB_GlobalTree* GlobalTree ) { # ifndef UNSPLIT_GRAVITY @@ -309,13 +315,21 @@ void Preparation_Step( const Solver_t TSolver, const int lv, const double TimeNe # if ( defined GRAVITY && !defined MHD ) real (*h_Emag_Array_G [2])[PS1][PS1][PS1] = { NULL, NULL }; # endif +# if ( MODEL != ELBDM ) + bool (*h_IsCompletelyRefined[2]) = { NULL, NULL }; +# endif +# if ( MODEL != ELBDM || ELBDM_SCHEME != ELBDM_HYBRID ) + bool (*h_HasWaveCounterpart [2])[ CUBE(HYB_NXT) ] = { NULL, NULL }; +# endif switch ( TSolver ) { case FLUID_SOLVER : Flu_Prepare( lv, TimeOld, h_Flu_Array_F_In[ArrayID], h_Mag_Array_F_In[ArrayID], - h_Pot_Array_USG_F[ArrayID], h_Corner_Array_F[ArrayID], NPG, PID0_List ); + h_Pot_Array_USG_F[ArrayID], h_Corner_Array_F[ArrayID], + h_IsCompletelyRefined[ArrayID], h_HasWaveCounterpart[ArrayID], + NPG, PID0_List, GlobalTree ); break; # ifdef GRAVITY @@ -511,11 +525,21 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d real (*h_Ele_Array [2])[9][NCOMP_ELE][ PS2P1*PS2 ] = { NULL, NULL }; real (*h_Mag_Array_T [2])[NCOMP_MAG][ PS1P1*SQR(PS1) ] = { NULL, NULL }; # ifdef GRAVITY - real (*h_Emag_Array_G [2])[PS1][PS1][PS1] = { NULL, NULL }; + real (*h_Emag_Array_G [2])[PS1][PS1][PS1] = { NULL, NULL }; # endif real (*h_Mag_Array_S_In [2])[NCOMP_MAG][ SRC_NXT_P1*SQR(SRC_NXT) ] = { NULL, NULL }; # endif +# if ( MODEL != ELBDM ) + bool (*h_IsCompletelyRefined[2]) = { NULL, NULL }; +# endif +# if ( ELBDM_SCHEME != ELBDM_HYBRID ) + bool (*h_HasWaveCounterpart [2])[ CUBE(HYB_NXT) ] = { NULL, NULL }; +# endif +# if ( GRAMFE_SCHEME != GRAMFE_MATMUL ) + gramfe_matmul_float (*h_GramFE_TimeEvo)[ 2*FLU_NXT ] = NULL; +# endif + # if ( MODEL != HYDRO && MODEL != ELBDM ) # error : ERROR : ADD MODEL-DEPENDENT USELESS VARIABLES FOR THE NEW MODELS HERE !! # endif @@ -528,6 +552,12 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d const real JeansMinPres_Coeff = NULL_REAL; # endif +// support hybrid scheme; flag is only used for ELBDM_SCHEME == ELBDM_HYBRID +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + const bool UseWaveFlag = amr->use_wave_flag[lv]; +# else + const bool UseWaveFlag = NULL_BOOL; +# endif switch ( TSolver ) { @@ -538,6 +568,8 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d h_Mag_Array_F_In[ArrayID], h_Mag_Array_F_Out[ArrayID], h_DE_Array_F_Out[ArrayID], h_Flux_Array[ArrayID], h_Ele_Array[ArrayID], h_Corner_Array_F[ArrayID], h_Pot_Array_USG_F[ArrayID], + h_IsCompletelyRefined[ArrayID], + h_HasWaveCounterpart[ArrayID], NPG, dt, dh, OPT__FIXUP_FLUX, OPT__FIXUP_ELECTRIC, Flu_XYZ, OPT__LR_LIMITER, MINMOD_COEFF, MINMOD_MAX_ITER, ELBDM_ETA, ELBDM_TAYLOR3_COEFF, ELBDM_TAYLOR3_AUTO, @@ -546,12 +578,15 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d OPT__NORMALIZE_PASSIVE, PassiveNorm_NVar, OPT__INT_FRAC_PASSIVE_LR, PassiveIntFrac_NVar, JEANS_MIN_PRES, JeansMinPres_Coeff, - GPU_NSTREAM ); + GPU_NSTREAM, UseWaveFlag ); # else CPU_FluidSolver ( h_Flu_Array_F_In[ArrayID], h_Flu_Array_F_Out[ArrayID], h_Mag_Array_F_In[ArrayID], h_Mag_Array_F_Out[ArrayID], h_DE_Array_F_Out[ArrayID], h_Flux_Array[ArrayID], h_Ele_Array[ArrayID], h_Corner_Array_F[ArrayID], h_Pot_Array_USG_F[ArrayID], + h_IsCompletelyRefined[ArrayID], + h_HasWaveCounterpart[ArrayID], + h_GramFE_TimeEvo, NPG, dt, dh, OPT__FIXUP_FLUX, OPT__FIXUP_ELECTRIC, Flu_XYZ, OPT__LR_LIMITER, MINMOD_COEFF, MINMOD_MAX_ITER, ELBDM_ETA, ELBDM_TAYLOR3_COEFF, ELBDM_TAYLOR3_AUTO, @@ -559,7 +594,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d MIN_DENS, MIN_PRES, MIN_EINT, DUAL_ENERGY_SWITCH, OPT__NORMALIZE_PASSIVE, PassiveNorm_NVar, PassiveNorm_VarIdx, OPT__INT_FRAC_PASSIVE_LR, PassiveIntFrac_NVar, PassiveIntFrac_VarIdx, - JEANS_MIN_PRES, JeansMinPres_Coeff ); + JEANS_MIN_PRES, JeansMinPres_Coeff, UseWaveFlag ); # endif break; @@ -577,7 +612,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d NULL_BOOL, ELBDM_ETA, NULL_REAL, POISSON_ON, GRAVITY_OFF, OPT__SELF_GRAVITY, OPT__EXT_POT, OPT__EXT_ACC, TimeNew, TimeOld, NULL_REAL, - GPU_NSTREAM ); + GPU_NSTREAM, UseWaveFlag ); # else CPU_PoissonGravitySolver ( h_Rho_Array_P[ArrayID], h_Pot_Array_P_In[ArrayID], h_Pot_Array_P_Out[ArrayID], NULL, h_Corner_Array_PGT[ArrayID], @@ -587,7 +622,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d MG_TOLERATED_ERROR, Poi_Coeff, OPT__POT_INT_SCHEME, NULL_BOOL, ELBDM_ETA, NULL_REAL, POISSON_ON, GRAVITY_OFF, OPT__SELF_GRAVITY, OPT__EXT_POT, OPT__EXT_ACC, - TimeNew, TimeOld, NULL_REAL ); + TimeNew, TimeOld, NULL_REAL, UseWaveFlag ); # endif break; @@ -605,7 +640,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d OPT__GRA_P5_GRADIENT, ELBDM_ETA, ELBDM_LAMBDA, POISSON_OFF, GRAVITY_ON, OPT__SELF_GRAVITY, OPT__EXT_POT, OPT__EXT_ACC, TimeNew, TimeOld, MIN_EINT, - GPU_NSTREAM ); + GPU_NSTREAM, UseWaveFlag ); # else CPU_PoissonGravitySolver ( NULL, NULL, h_Pot_Array_P_Out[ArrayID], h_Flu_Array_G[ArrayID], h_Corner_Array_PGT[ArrayID], @@ -616,7 +651,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d NULL_REAL, NULL_REAL, (IntScheme_t)NULL_INT, OPT__GRA_P5_GRADIENT, ELBDM_ETA, ELBDM_LAMBDA, POISSON_OFF, GRAVITY_ON, OPT__SELF_GRAVITY, OPT__EXT_POT, OPT__EXT_ACC, - TimeNew, TimeOld, MIN_EINT ); + TimeNew, TimeOld, MIN_EINT, UseWaveFlag ); # endif break; @@ -634,7 +669,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d OPT__GRA_P5_GRADIENT, ELBDM_ETA, ELBDM_LAMBDA, POISSON_ON, GRAVITY_ON, OPT__SELF_GRAVITY, OPT__EXT_POT, OPT__EXT_ACC, TimeNew, TimeOld, MIN_EINT, - GPU_NSTREAM ); + GPU_NSTREAM, UseWaveFlag ); # else CPU_PoissonGravitySolver ( h_Rho_Array_P[ArrayID], h_Pot_Array_P_In[ArrayID], h_Pot_Array_P_Out[ArrayID], h_Flu_Array_G[ArrayID], h_Corner_Array_PGT[ArrayID], @@ -645,7 +680,7 @@ void Solver( const Solver_t TSolver, const int lv, const double TimeNew, const d MG_TOLERATED_ERROR, Poi_Coeff, OPT__POT_INT_SCHEME, OPT__GRA_P5_GRADIENT, ELBDM_ETA, ELBDM_LAMBDA, POISSON_ON, GRAVITY_ON, OPT__SELF_GRAVITY, OPT__EXT_POT, OPT__EXT_ACC, - TimeNew, TimeOld, MIN_EINT ); + TimeNew, TimeOld, MIN_EINT, UseWaveFlag ); # endif break; # endif // #ifdef GRAVITY diff --git a/src/Main/Main.cpp b/src/Main/Main.cpp index 884ac461a2..8cdbe9629f 100644 --- a/src/Main/Main.cpp +++ b/src/Main/Main.cpp @@ -17,6 +17,7 @@ // 1. common global variables // ======================================================================================================= AMR_t *amr = NULL; +LB_GlobalTree *GlobalTree = NULL; double Time[NLEVEL] = { 0.0 }; double dTime_AllLv[NLEVEL] = { 0.0 }; @@ -31,6 +32,8 @@ double Time_Prev [NLEVEL]; double FlagTable_Rho [NLEVEL-1]; double FlagTable_RhoGradient[NLEVEL-1]; double FlagTable_Lohner [NLEVEL-1][5]; +double FlagTable_Angular [NLEVEL-1][3]; +double FlagTable_Radial [NLEVEL-1]; double *FlagTable_User [NLEVEL-1]; double *DumpTable = NULL; int DumpTable_NDump; @@ -57,7 +60,7 @@ double AUTO_REDUCE_INT_MONO_FACTOR, AUTO_REDUCE_INT_MONO_MIN; double OPT__CK_MEMFREE, INT_MONO_COEFF, UNIT_L, UNIT_M, UNIT_T, UNIT_V, UNIT_D, UNIT_E, UNIT_P; int OPT__UM_IC_LEVEL, OPT__UM_IC_NLEVEL, OPT__UM_IC_NVAR, OPT__UM_IC_LOAD_NRANK, OPT__GPUID_SELECT, OPT__PATCH_COUNT; int INIT_DUMPID, INIT_SUBSAMPLING_NCELL, OPT__TIMING_BARRIER, OPT__REUSE_MEMORY, RESTART_LOAD_NRANK; -bool OPT__FLAG_RHO, OPT__FLAG_RHO_GRADIENT, OPT__FLAG_USER, OPT__FLAG_LOHNER_DENS, OPT__FLAG_REGION; +bool OPT__FLAG_RHO, OPT__FLAG_RHO_GRADIENT, OPT__FLAG_USER, OPT__FLAG_LOHNER_DENS, OPT__FLAG_REGION, OPT__FLAG_ANGULAR, OPT__FLAG_RADIAL; int OPT__FLAG_USER_NUM, MONO_MAX_ITER, OPT__RESET_FLUID_INIT; bool OPT__DT_USER, OPT__RECORD_DT, OPT__RECORD_MEMORY, OPT__MEMORY_POOL, OPT__RESTART_RESET; bool OPT__FIXUP_RESTRICT, OPT__INIT_RESTRICT, OPT__VERBOSE, OPT__MANUAL_CONTROL, OPT__UNIT; @@ -70,10 +73,14 @@ bool OPT__OPTIMIZE_AGGRESSIVE, OPT__INIT_GRID_WITH_OMP, OPT__NO_ bool OPT__RECORD_NOTE, OPT__RECORD_UNPHY, INT_OPP_SIGN_0TH_ORDER; bool OPT__INT_FRAC_PASSIVE_LR, OPT__CK_INPUT_FLUID, OPT__SORT_PATCH_BY_LBIDX; char OPT__OUTPUT_TEXT_FORMAT_FLT[MAX_STRING]; +int OPT__OUTPUT_TEXT_LENGTH_INT; int OPT__UM_IC_FLOAT8; double COM_CEN_X, COM_CEN_Y, COM_CEN_Z, COM_MAX_R, COM_MIN_RHO, COM_TOLERR_R; int COM_MAX_ITER; double ANGMOM_ORIGIN_X, ANGMOM_ORIGIN_Y, ANGMOM_ORIGIN_Z; +char OUTPUT_DIR[MAX_STRING-100]; +double FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, FLAG_ANGULAR_CEN_Z; +double FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, FLAG_RADIAL_CEN_Z; UM_IC_Format_t OPT__UM_IC_FORMAT; TestProbID_t TESTPROB_ID; @@ -128,13 +135,28 @@ bool OPT__OUTPUT_ENTHALPY; #elif ( MODEL == ELBDM ) double DT__PHASE, FlagTable_EngyDensity[NLEVEL-1][2]; -bool OPT__FLAG_ENGY_DENSITY, OPT__INT_PHASE; +bool OPT__FLAG_ENGY_DENSITY, OPT__INT_PHASE, OPT__RES_PHASE; bool ELBDM_TAYLOR3_AUTO; double ELBDM_TAYLOR3_COEFF; double ELBDM_MASS, ELBDM_PLANCK_CONST, ELBDM_ETA, MIN_DENS; + +bool OPT__FLAG_SPECTRAL; +int OPT__FLAG_SPECTRAL_N; +double FlagTable_Spectral[NLEVEL-1][2]; + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +bool OPT__FLAG_INTERFERENCE; +double FlagTable_Interference[NLEVEL-1][4]; +int ELBDM_FIRST_WAVE_LEVEL; +bool ELBDM_MATCH_PHASE; +double DT__HYBRID_CFL, DT__HYBRID_CFL_INIT, DT__HYBRID_VELOCITY, DT__HYBRID_VELOCITY_INIT; +#endif + #ifdef QUARTIC_SELF_INTERACTION double ELBDM_LAMBDA; #endif +ELBDMRemoveMotionCM_t ELBDM_REMOVE_MOTION_CM; +bool ELBDM_BASE_SPECTRAL; #else #error : unsupported MODEL !! @@ -190,6 +212,7 @@ double LB_INPUT__WLI_MAX; double LB_INPUT__PAR_WEIGHT; #endif bool OPT__RECORD_LOAD_BALANCE; +bool OPT__LB_EXCHANGE_FATHER; #endif bool OPT__MINIMIZE_MPI_BARRIER; #ifdef SUPPORT_FFTW @@ -202,8 +225,8 @@ bool FFTW3_Double_OMP_Enabled, FFTW3_Single_OMP_Enabled; // (2-5) particle #ifdef PARTICLE double DT__PARVEL, DT__PARVEL_MAX, DT__PARACC; -bool OPT__CK_PARTICLE, OPT__FLAG_NPAR_CELL, OPT__FLAG_PAR_MASS_CELL, OPT__FREEZE_PAR; -int OPT__OUTPUT_PAR_MODE, OPT__PARTICLE_COUNT, OPT__FLAG_NPAR_PATCH, PAR_IC_FLOAT8, FlagTable_NParPatch[NLEVEL-1], FlagTable_NParCell[NLEVEL-1]; +bool OPT__CK_PARTICLE, OPT__FLAG_NPAR_CELL, OPT__FLAG_PAR_MASS_CELL, OPT__FREEZE_PAR, OPT__OUTPUT_PAR_MESH; +int OPT__OUTPUT_PAR_MODE, OPT__PARTICLE_COUNT, OPT__FLAG_NPAR_PATCH, PAR_IC_FLOAT8, PAR_IC_INT8, FlagTable_NParPatch[NLEVEL-1], FlagTable_NParCell[NLEVEL-1]; double FlagTable_ParMassCell[NLEVEL-1]; ParOutputDens_t OPT__OUTPUT_PAR_DENS; #endif @@ -312,14 +335,25 @@ bool FB_Any; int FB_ParaBuf; #endif -// (2-13) cosmic ray +// (2-13) spectral interpolation +#ifdef SUPPORT_SPECTRAL_INT +char SPEC_INT_TABLE_PATH[MAX_STRING]; +int SPEC_INT_GHOST_BOUNDARY; +#if ( MODEL == ELBDM ) +bool SPEC_INT_XY_INSTEAD_DEPHA; +double SPEC_INT_VORTEX_THRESHOLD; +#endif +InterpolationHandler Int_InterpolationHandler; +#endif // #ifdef SUPPORT_SPECTRAL_INT + +// (2-14) cosmic ray #ifdef COSMIC_RAY double GAMMA_CR; bool OPT__FLAG_CRAY, OPT__FLAG_LOHNER_CRAY; double FlagTable_CRay[NLEVEL-1]; #endif -// (2-14) microphysics +// (2-15) microphysics // a. data structure for the CPU/GPU solvers MicroPhy_t MicroPhy; @@ -357,6 +391,15 @@ real (*h_FC_Mag_Half)[NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ] = NULL; real (*h_EC_Ele )[NCOMP_MAG][ CUBE(N_EC_ELE) ] = NULL; #endif #endif // FLU_SCHEME +#if ( MODEL == ELBDM ) +bool (*h_IsCompletelyRefined[2]) = { NULL, NULL }; +#endif +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +bool (*h_HasWaveCounterpart[2])[ CUBE(HYB_NXT) ] = { NULL, NULL }; +#endif +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +gramfe_matmul_float (*h_GramFE_TimeEvo)[ 2*FLU_NXT ] = NULL; +#endif #ifdef GRAVITY // (3-2) Poisson and gravity solver @@ -384,7 +427,7 @@ real (*h_Flu_Array_USG_G[2])[GRA_NIN-1][PS1][PS1][PS1] = { NULL, NUL // (3-4) Grackle chemistry #ifdef SUPPORT_GRACKLE -real (*h_Che_Array[2]) = { NULL, NULL }; +real_che (*h_Che_Array[2]) = { NULL, NULL }; grackle_field_data *Che_FieldData = NULL; code_units Che_Units; #endif @@ -417,6 +460,7 @@ real *h_SrcDlepProf_Radius = NULL; #endif + // 4. GPU (device) global memory arrays // ======================================================================================================= #ifdef GPU @@ -426,7 +470,7 @@ real (*d_Flu_Array_F_Out)[FLU_NOUT][ CUBE(PS2) ] = NULL; real (*d_Flux_Array)[9][NFLUX_TOTAL][ SQR(PS2) ] = NULL; double (*d_Corner_Array_F)[3] = NULL; #ifdef DUAL_ENERGY -char (*d_DE_Array_F_Out)[ PS2*PS2*PS2 ] = NULL; +char (*d_DE_Array_F_Out)[ CUBE(PS2) ] = NULL; #endif #ifdef MHD real (*d_Mag_Array_F_In )[NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ] = NULL; @@ -443,6 +487,15 @@ real (*d_FC_Mag_Half)[NCOMP_MAG][ FLU_NXT_P1*SQR(FLU_NXT) ] = NULL; real (*d_EC_Ele )[NCOMP_MAG][ CUBE(N_EC_ELE) ] = NULL; #endif #endif // FLU_SCHEME +#if ( MODEL == ELBDM ) +bool (*d_IsCompletelyRefined) = NULL; +#endif +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +bool (*d_HasWaveCounterpart)[ CUBE(HYB_NXT) ] = NULL; +#endif +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) +gramfe_matmul_float (*d_Flu_TimeEvo)[ 2*FLU_NXT ] = NULL; +#endif #ifdef GRAVITY // (4-2) Poisson and gravity solver @@ -584,8 +637,18 @@ int main( int argc, char *argv[] ) if ( OPT__PARTICLE_COUNT > 0 ) Par_Aux_Record_ParticleCount(); # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + ELBDM_Aux_Record_Hybrid(); +# endif + Aux_Check(); +# if ( MODEL == ELBDM ) + if ( ( ELBDM_REMOVE_MOTION_CM == ELBDM_REMOVE_MOTION_CM_INIT && (OPT__INIT != INIT_BY_RESTART || OPT__RESTART_RESET) ) || + ELBDM_REMOVE_MOTION_CM == ELBDM_REMOVE_MOTION_CM_EVERY_STEP ) + ELBDM_RemoveMotionCM(); +# endif + # ifdef TIMING Aux_ResetTimer(); # endif @@ -671,6 +734,15 @@ int main( int argc, char *argv[] ) TIMING_FUNC( Aux_Record_Center(), Timer_Main[4], TIMER_ON ); TIMING_FUNC( Aux_Check(), Timer_Main[4], TIMER_ON ); + +# if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + TIMING_FUNC( ELBDM_Aux_Record_Hybrid(), Timer_Main[4], TIMER_ON ); +# endif + + if ( ELBDM_REMOVE_MOTION_CM == ELBDM_REMOVE_MOTION_CM_EVERY_STEP ) + TIMING_FUNC( ELBDM_RemoveMotionCM(), Timer_Main[4], TIMER_ON ); +# endif // #if ( MODEL == ELBDM ) // --------------------------------------------------------------------------------------------------- @@ -784,7 +856,10 @@ int main( int argc, char *argv[] ) if ( MPI_Rank == 0 && OPT__RECORD_NOTE ) { - FILE *Note = fopen( "Record__Note", "a" ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Note", OUTPUT_DIR ); + + FILE *Note = fopen( FileName, "a" ); fprintf( Note, "\n" ); fprintf( Note, "Total Processing Time : %lf s\n", Timer_Total.GetValue() ); fprintf( Note, "\n" ); diff --git a/src/Main/Prepare_PatchData.cpp b/src/Main/Prepare_PatchData.cpp index 609bfd6067..3688f751f1 100644 --- a/src/Main/Prepare_PatchData.cpp +++ b/src/Main/Prepare_PatchData.cpp @@ -11,8 +11,9 @@ void InterpolateGhostZone( const int lv, const int PID, real IntData_CC[], real const int BC_Face[], const real MinPres, const real MinTemp, const real MinEntr, const bool DE_Consistency, const real *FInterface[6] ); static void SetTargetSibling( int NTSib[], int *TSib[] ); -static int Table_01( const int SibID, const char dim, const int Count, const int GhostSize ); -static int Table_02( const int lv, const int PID, const int Side ); +static int Table_01( const int SibID, const char dim, const int Count, const int GhostSize ); +static int Table_02( const int lv, const int PID, const int Side ); +static long Table_03( const int lv, const long GID, const int Side, LB_GlobalPatch* Tree ); void SetTempIntPara( const int lv, const int Sg0, const double PrepTime, const double Time0, const double Time1, bool &IntTime, int &Sg, int &Sg_IntT, real &Weighting, real &Weighting_IntT ); #ifdef MHD @@ -97,9 +98,10 @@ static void MHD_CheckDivB( const real *Data1PG_FC, const int GhostSize, const re // PID0_List : List recording the patch indices with LocalID==0 to be prepared // TVarCC : Target cell-centered variables to be prepared // --> Supported variables in different models: -// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY, _VELX, _VELY, _VELZ, _PRES, _TEMP, _ENTR, _EINT -// [, _POTE] [, _MAGX_CC, _MAGY_CC, _MAGZ_CC, _MAGE_CC] -// ELBDM : _DENS, _REAL, _IMAG [, _POTE] +// HYDRO : _DENS, _MOMX, _MOMY, _MOMZ, _ENGY, _VELX, _VELY, _VELZ, _PRES, _TEMP, _ENTR, _EINT +// [, _POTE] [, _MAGX_CC, _MAGY_CC, _MAGZ_CC, _MAGE_CC] +// ELBDM_WAVE : _DENS, _REAL, _IMAG [, _POTE] +// ELBDM_HYBRID : _DENS, _PHAS [, _POTE] // --> _FLUID, _PASSIVE, _TOTAL, and _DERIVED apply to all models // TVarFC : Target face-centered variables to be prepared // --> Supported variables in different models: @@ -114,6 +116,7 @@ static void MHD_CheckDivB( const real *Data1PG_FC, const int GhostSize, const re // INT_QUAD : quadratic // INT_CQUAR : conservative quartic // INT_QUAR : quartic +// INT_SPECTRAL : spectral // IntScheme_FC : Interpolation scheme for the face-centered variables // --> Supported schemes include // INT_MINMOD1D : MinMod-1D @@ -127,8 +130,12 @@ static void MHD_CheckDivB( const real *Data1PG_FC, const int GhostSize, const re // --> NSIDE_00 (= 0) : do not prepare any sibling direction (equivalent to GhostSize=0) // NSIDE_06 (= 6) : prepare only sibling directions 0~5 // NSIDE_26 (= 26) : prepare all sibling directions 0~25 -// IntPhase : true --> Perform interpolation on rho/phase instead of real/imag parts in ELBDM -// --> TVarCC must contain _REAL and _IMAG +// IntPhase : true --> ELBDM_WAVE : Perform interpolation on rho/phase instead of real/imag parts +// --> TVarCC must contain _REAL and _IMAG +// --> ELBDM_HYBRID: Perform interpolation on rho/phase instead of real/imag parts on wave levels +// --> TVarCC must contain _REAL and _IMAG +// Perform interpolation on rho/phase regardless of IntPhase on fluid levels +// --> TVarCC must contain _DENS and _PHAS // FluBC : Fluid boundary condition // PotBC : Gravity boundary condition // MinDens : See MinEntr @@ -201,9 +208,12 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea # endif # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) +# endif if ( ( TVarCC & _REAL ) || ( TVarCC & _IMAG ) ) Aux_Message( stderr, "WARNING : real and imaginary parts are NOT rescaled after applying the minimum density check !!\n" ); -# endif +# endif // #if ( MODEL == ELBDM ) } if ( MinPres >= (real)0.0 && MPI_Rank == 0 ) @@ -236,20 +246,37 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea # endif } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( ( ( (TVarCC & _REAL) && !(TVarCC & _IMAG) ) || ( !(TVarCC & _REAL) && (TVarCC & _IMAG) ) ) + && amr->use_wave_flag[lv] ) + Aux_Error( ERROR_INFO, "%s() for hybrid scheme currently requires that the real and imaginary parts of the wave function are prepared together !!\n" + "This is probably due to operation (b2-3-1) and can probably be easily fixed.\n", __FUNCTION__ ); +# endif + if ( IntPhase ) { # if ( MODEL == ELBDM ) - if ( !(TVarCC & _REAL) || !(TVarCC & _IMAG) ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + if ( !(TVarCC & _REAL) || !(TVarCC & _IMAG) ) Aux_Error( ERROR_INFO, "real and/or imag parts are not found for phase interpolation in ELBDM !!\n" ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv] ) +# endif // we have assumed in InterpolateGhostZone() that when adopting IntPhase this function will NOT prepare // anything other than wave function and, optionally, density // --> e.g., one cannot prepare wave function and potential at the same time when enabling IntPhase +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) +# endif if ( TVarCC & ~( _REAL | _IMAG | _DENS ) ) Aux_Error( ERROR_INFO, "unsupported parameter %s = %d for IntPhase !!\n", "TVarCC", TVarCC ); -# else + +# else // #if ( MODEL == ELBDM ) Aux_Error( ERROR_INFO, "\"interpolation on phase\" is useful only in ELBDM !!\n" ); -# endif +# endif // #if ( MODEL == ELBDM ) ... else ... } if ( FluBC == NULL ) Aux_Error( ERROR_INFO, "FluBC == NULL !!\n" ); @@ -1066,7 +1093,7 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea } //###OPTIMIZATION: simplify TABLE_03 and TABLE_04 - for (int Count=0; Count= 0 ) } // for (int Side=0; Sideuse_wave_flag[lv] && !amr->use_wave_flag[lv-1] && ( TVarCC & (_REAL | _IMAG) ) ); + if ( ConvertWaveToFluid ) { + TVarCCBuffer = _DENS | _PHAS | _PASSIVE; + NVarCC_FluBuffer = 0; + for (int v=0; v must get rid of NUseless-cell-wide useless data returned by InterpolateGhostZone() +// (b2-3-1) convert density and phase in IntData_CC[] in hybrid scheme if we interpolate from fluid to wave scheme +// --> do not convert NUseless-cell-wide useless data returned by InterpolateGhostZone() const int NUseless = GhostSize & 1; int loop[3], disp1[3], disp2[3]; @@ -1576,6 +1622,30 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea Data1PG_CC_Ptr = Data1PG_CC; IntData_CC_Ptr = IntData_CC; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// set target variables correctly to convert density and phase to real and imaginary parts + if ( ConvertWaveToFluid ) { +// density and phase --> real and imaginary parts + const int FSize3D_CC = FSize[0]*FSize[1]*FSize[2]; + real Dens, Phase, Amp; + + for (int k=0; k must get rid of NUseless-cell-wide useless data returned by InterpolateGhostZone() for (int v=0; vpatch[0][lv][SibPID]->rho_ext[k][j][i]; }}} - } // for (int Count=0; Count= 0 ) @@ -1916,6 +1986,7 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea int NPar; bool UseInputMassPos; real_par **InputMassPos = NULL; + long_par **InputType = NULL; # ifdef DEBUG_PARTICLE if ( FaSibPID < 0 ) Aux_Error( ERROR_INFO, "FaSibPID = %d < 0 (lv %d, PID0 %d, FaPID %d, sib %d) !!\n", @@ -1933,6 +2004,7 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea ParList = amr->patch[0][lv-1][FaSibPID]->ParList; UseInputMassPos = false; InputMassPos = NULL; + InputType = NULL; } else @@ -1941,7 +2013,8 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea NPar = amr->patch[0][lv-1][FaSibPID]->NPar_Copy; ParList = NULL; UseInputMassPos = true; - InputMassPos = amr->patch[0][lv-1][FaSibPID]->ParAtt_Copy; + InputMassPos = amr->patch[0][lv-1][FaSibPID]->ParAttFlt_Copy; + InputType = amr->patch[0][lv-1][FaSibPID]->ParAttInt_Copy; # else Aux_Error( ERROR_INFO, "FaSibPID (%d) is not a real patch (NReal %d) !!\n", FaSibPID, amr->NPatchComma[lv-1][1] ); @@ -1958,9 +2031,11 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea if ( UseInputMassPos ) { if ( InputMassPos[PAR_MASS] == NULL || InputMassPos[PAR_POSX] == NULL || - InputMassPos[PAR_POSY] == NULL || InputMassPos[PAR_POSZ] == NULL || - InputMassPos[PAR_TYPE] == NULL ) - Aux_Error( ERROR_INFO, "InputMassPos[0/1/2/3/4] == NULL for NPar (%d) > 0 (lv %d, FaSibPID %d) !!\n", + InputMassPos[PAR_POSY] == NULL || InputMassPos[PAR_POSZ] == NULL ) + Aux_Error( ERROR_INFO, "InputMassPos[0/1/2/3] == NULL for NPar (%d) > 0 (lv %d, FaSibPID %d) !!\n", + NPar, lv-1, FaSibPID ); + if ( InputType[PAR_TYPE] == NULL ) + Aux_Error( ERROR_INFO, "InputType[0] == NULL for NPar (%d) > 0 (lv %d, FaSibPID %d) !!\n", NPar, lv-1, FaSibPID ); } @@ -1978,7 +2053,7 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea Par_MassAssignment( ParList, NPar, amr->Par->Interp, ArrayDens, PGSize1D_CC, EdgeL, dh, (amr->Par->PredictPos && !UseInputMassPos), PrepTime, InitZero_No, Periodic_Check, PeriodicNCell, UnitDens_No, CheckFarAway_Yes, - UseInputMassPos, InputMassPos ); + UseInputMassPos, InputMassPos, InputType ); } // else if ( SibPID0 == -1 ) } // for (int Side=0; Side<26; Side++) if ( amr->Par->GhostSize > 0 || GhostSize > 0 ) } // if ( PrepParOnlyDens || PrepTotalDens ) @@ -2127,7 +2202,7 @@ void Prepare_PatchData( const int lv, const double PrepTime, real *OutputCC, rea } // end of OpenMP parallel region -// free memroy +// free memory for (int s=0; s<26; s++) delete [] TSib[s]; } // FUNCTION : Prepare_PatchData @@ -2562,6 +2637,168 @@ int Table_02( const int lv, const int PID, const int Side ) +//------------------------------------------------------------------------------------------------------- +// Function : Table_03 +// Description : Return the patch GID of the 0th patch (local ID = 0) of the sibling patch group +// +// Note : Work for Prepare_PatchData_HasWaveCounterpart() +// +// Parameter : lv : Target refinement level +// GID : Target patch GID to find its sibling patches +// Side : Sibling index (0~25) +// Tree : Array of LB_GlobalPatches with GID information +// +// Return : Sib +//------------------------------------------------------------------------------------------------------- +long Table_03( const int lv, const long GID, const int Side, LB_GlobalTree& Tree ) +{ + + int Sib; + + switch ( Side ) + { + case 0: + Sib = Tree[GID ].sibling[0]; + if ( Sib >= 0 ) return Sib-1; + else return Sib; + + case 1: + Sib = Tree[GID+1].sibling[1]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + case 2: + Sib = Tree[GID ].sibling[2]; + if ( Sib >= 0 ) return Sib-2; + else return Sib; + + case 3: + Sib = Tree[GID+2].sibling[3]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + case 4: + Sib = Tree[GID ].sibling[4]; + if ( Sib >= 0 ) return Sib-3; + else return Sib; + + case 5: + Sib = Tree[GID+3].sibling[5]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + case 6: + Sib = Tree[GID ].sibling[6]; + if ( Sib >= 0 ) return Sib-4; + else return Sib; + + case 7: + Sib = Tree[GID+1].sibling[7]; + if ( Sib >= 0 ) return Sib-2; + else return Sib; + + case 8: + Sib = Tree[GID+2].sibling[8]; + if ( Sib >= 0 ) return Sib-1; + else return Sib; + + case 9: + Sib = Tree[GID+4].sibling[9]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + case 10: + Sib = Tree[GID ].sibling[10]; + if ( Sib >= 0 ) return Sib-5; + else return Sib; + + case 11: + Sib = Tree[GID+2].sibling[11]; + if ( Sib >= 0 ) return Sib-3; + else return Sib; + + case 12: + Sib = Tree[GID+3].sibling[12]; + if ( Sib >= 0 ) return Sib-2; + else return Sib; + + case 13: + Sib = Tree[GID+5].sibling[13]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + case 14: + Sib = Tree[GID ].sibling[14]; + if ( Sib >= 0 ) return Sib-6; + else return Sib; + + case 15: + Sib = Tree[GID+3].sibling[15]; + if ( Sib >= 0 ) return Sib-1; + else return Sib; + + case 16: + Sib = Tree[GID+1].sibling[16]; + if ( Sib >= 0 ) return Sib-3; + else return Sib; + + case 17: + Sib = Tree[GID+6].sibling[17]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + case 18: + Sib = Tree[GID ].sibling[18]; + if ( Sib >= 0 ) return Sib-7; + else return Sib; + + case 19: + Sib = Tree[GID+1].sibling[19]; + if ( Sib >= 0 ) return Sib-5; + else return Sib; + + case 20: + Sib = Tree[GID+2].sibling[20]; + if ( Sib >= 0 ) return Sib-6; + else return Sib; + + case 21: + Sib = Tree[GID+4].sibling[21]; + if ( Sib >= 0 ) return Sib-3; + else return Sib; + + case 22: + Sib = Tree[GID+3].sibling[22]; + if ( Sib >= 0 ) return Sib-4; + else return Sib; + + case 23: + Sib = Tree[GID+6].sibling[23]; + if ( Sib >= 0 ) return Sib-2; + else return Sib; + + case 24: + Sib = Tree[GID+5].sibling[24]; + if ( Sib >= 0 ) return Sib-1; + else return Sib; + + case 25: + Sib = Tree[GID+7].sibling[25]; + if ( Sib >= 0 ) return Sib; + else return Sib; + + default: + Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "Side", Side ); + exit(1); + + } // switch ( Side ) + + return NULL_INT; + +} // FUNCTION : Table_03 + + + //------------------------------------------------------------------------------------------------------- // Function : SetTargetSibling // Description : Set the target sibling directions for preparing the ghost-zone data at the coarse-grid level @@ -2972,6 +3209,7 @@ void Prepare_PatchData_InitParticleDensityArray( const int lv, const double Prep double EdgeL[3]; bool UseInputMassPos; real_par **InputMassPos = NULL; + long_par **InputType = NULL; // loop over all patches including buffer patches # pragma omp for schedule( runtime ) @@ -2984,6 +3222,7 @@ void Prepare_PatchData_InitParticleDensityArray( const int lv, const double Prep ParList = amr->patch[0][lv][PID]->ParList; UseInputMassPos = false; InputMassPos = NULL; + InputType = NULL; # ifdef DEBUG_PARTICLE if ( amr->patch[0][lv][PID]->NPar_Copy != -1 ) @@ -2999,11 +3238,13 @@ void Prepare_PatchData_InitParticleDensityArray( const int lv, const double Prep # ifdef LOAD_BALANCE ParList = NULL; UseInputMassPos = true; - InputMassPos = amr->patch[0][lv][PID]->ParAtt_Copy; + InputMassPos = amr->patch[0][lv][PID]->ParAttFlt_Copy; + InputType = amr->patch[0][lv][PID]->ParAttInt_Copy; # else ParList = amr->patch[0][lv][PID]->ParList_Copy; UseInputMassPos = false; InputMassPos = NULL; + InputType = NULL; # endif } @@ -3035,9 +3276,11 @@ void Prepare_PatchData_InitParticleDensityArray( const int lv, const double Prep if ( UseInputMassPos ) { if ( InputMassPos[PAR_MASS] == NULL || InputMassPos[PAR_POSX] == NULL || - InputMassPos[PAR_POSY] == NULL || InputMassPos[PAR_POSZ] == NULL || - InputMassPos[PAR_TYPE] == NULL ) - Aux_Error( ERROR_INFO, "InputMassPos[0/1/2/3/4] == NULL for NPar (%d) > 0 (lv %d, PID %d) !!\n", + InputMassPos[PAR_POSY] == NULL || InputMassPos[PAR_POSZ] == NULL ) + Aux_Error( ERROR_INFO, "InputMassPos[0/1/2/3] == NULL for NPar (%d) > 0 (lv %d, PID %d) !!\n", + NPar, lv, PID ); + if ( InputType[PAR_TYPE] == NULL ) + Aux_Error( ERROR_INFO, "InputType[0] == NULL for NPar (%d) > 0 (lv %d, PID %d) !!\n", NPar, lv, PID ); } @@ -3061,7 +3304,7 @@ void Prepare_PatchData_InitParticleDensityArray( const int lv, const double Prep // --> must initialize rho_ext[] as zero by InitZero_Yes Par_MassAssignment( ParList, NPar, amr->Par->Interp, amr->patch[0][lv][PID]->rho_ext[0][0], RHOEXT_NXT, EdgeL, dh, (amr->Par->PredictPos && !UseInputMassPos), PrepTime, InitZero_Yes, - Periodic_No, NULL, UnitDens_No, CheckFarAway_No, UseInputMassPos, InputMassPos ); + Periodic_No, NULL, UnitDens_No, CheckFarAway_No, UseInputMassPos, InputMassPos, InputType ); } // if ( NPar > 0 ) else @@ -3471,3 +3714,119 @@ void MHD_CheckDivB( const real *Data1PG_FC, const int GhostSize, const real Tole #endif // #ifdef MHD_CHECK_DIV_B #endif // #ifdef MHD + + + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +//------------------------------------------------------------------------------------------------------- +// Function : Prepare_PatchData_HasWaveCounterpart +// Description : Prepare a uniform array indicating which cells have a refined wave counterpart including +// ghost zones for the target patches or patch groups +// +// Note : 1. Use "patch group" as the preparation unit +// --> The data of all patches within the same patch group will be prepared +// 2. Patches stored in PID0_List must be real patches (must NOT be buffer patches) +// +// Parameter : lv : Target refinement level +// h_HasWaveCounterpart : Array to store the prepared booleans indicating which cells have +// wave counterparts on refined levels +// GhostSize : Number of ghost zones to be prepared +// NPG : Number of patch groups prepared at a time +// PID0_List : List recording the patch indices with LocalID==0 to be prepared +// NSide : Number of sibling directions to prepare data +// --> NSIDE_00 (= 0) : do not prepare any sibling direction (equivalent to GhostSize=0) +// NSIDE_06 (= 6) : prepare only sibling directions 0~5 +// NSIDE_26 (= 26) : prepare all sibling directions 0~25 +// GlobalTree : LB_GlobalTree object for indexing patches with their GID +//------------------------------------------------------------------------------------------------------- +void Prepare_PatchData_HasWaveCounterpart( const int lv, bool h_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + const int GhostSize, const int NPG, const int *PID0_List, + const NSide_t NSide, LB_GlobalTree* GlobalTree ) +{ + +// nothing to do if there is no target patch group + if ( NPG == 0 ) return; + + const double dh = amr->dh[lv]; + const int PGSize1D_CC = 2*( PS1 + GhostSize ); // width of a single patch group including ghost zones + +# pragma omp parallel + { +// thread-private variables + int J, K, I2, J2, K2, Idx1, Idx2, PID0; + long GID0; + +// prepare eight nearby patches (one patch group) at a time +# pragma omp for schedule( runtime ) + for (int TID=0; TIDPID2GID( PID0, lv ); + +// 1. reset h_HasWaveCounterpart + for (int i=0; i if it does not exist, the respective cells do not have any children or lie outside the simulation domain +// --> in both cases, we leave h_HasWaveCounterpart as false + if ( SibGID0 >= 0 ) + { + int loop[3], disp2[3]; + for (int d=0; d<3; d++) + { + loop [d] = TABLE_01( Side, 'x'+d, GhostSize, PS1, GhostSize ); + disp2[d] = TABLE_01( Side, 'x'+d, PS1-GhostSize, 0, 0 ); + } + + for (int Count=0; Count= 0 ) + } // for (int Side=0; Sideuse_wave_flag[lv] ) { +# endif + dTime[NdTime] = dTime_dt * ELBDM_GetTimeStep_Fluid( lv ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + dTime[NdTime] = HUGE_NUMBER; + } +# endif sprintf( dTime_Name[NdTime++], "%s", "ELBDM_CFL" ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { + dTime[NdTime] = HUGE_NUMBER; + } else { + dTime[NdTime] = dTime_dt * ELBDM_GetTimeStep_Hybrid_CFL( lv ); + } + sprintf( dTime_Name[NdTime++], "%s", "Hybrid_CFL" ); +# endif + # else # error : ERROR : unsupported MODEL !! # endif // MODEL @@ -178,10 +196,10 @@ double Mis_GetTimeStep( const int lv, const double dTime_SyncFaLv, const double { dTime[NdTime] = dTime_dt * ELBDM_GetTimeStep_Phase( lv ); sprintf( dTime_Name[NdTime++], "%s", "ELBDM_Phase" ); - } -// when fluid is freezed, disable this criterion by resetting it to a huge value - if ( OPT__FREEZE_FLUID ) dTime[NdTime-1] = HUGE_NUMBER; +// when fluid is freezed, disable this criterion by resetting it to a huge value + if ( OPT__FREEZE_FLUID ) dTime[NdTime-1] = HUGE_NUMBER; + } # endif @@ -205,6 +223,19 @@ double Mis_GetTimeStep( const int lv, const double dTime_SyncFaLv, const double # endif +// 1.9 CRITERION NINE : maximum velocity dS/dx ##ELBDM PHASE SOLVER ONLY## +// ============================================================================================================= +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { + dTime[NdTime] = HUGE_NUMBER; + } else { + dTime[NdTime] = dTime_dt * ELBDM_GetTimeStep_Hybrid_Velocity( lv ); + } + + sprintf( dTime_Name[NdTime++], "%s", "Hybrid_Vel" ); +# endif + + // 2. get the minimum time-step from all criteria // ============================================================================================================= diff --git a/src/Model_ELBDM/CPU_ELBDM/CPU_ELBDMSolver_FD.cpp b/src/Model_ELBDM/CPU_ELBDM/CPU_ELBDMSolver_FD.cpp new file mode 100644 index 0000000000..9d94f196eb --- /dev/null +++ b/src/Model_ELBDM/CPU_ELBDM/CPU_ELBDMSolver_FD.cpp @@ -0,0 +1,378 @@ +#include "GAMER.h" +#include "CUFLU.h" + +#if ( !defined GPU && MODEL == ELBDM && WAVE_SCHEME == WAVE_FD ) + + + +// useful macros +#define to1D(z,y,x) ( z*FLU_NXT*FLU_NXT + y*FLU_NXT + x ) + +#ifdef LAPLACIAN_4TH +# define LAP1(In,t) ( real(1.0/ 12.0)*( - In[t-2] + (real)16.0*In[t-1] - (real)30.0*In[t] + \ + - In[t+2] + (real)16.0*In[t+1] ) ) +# define LAP2(In,t) ( real(1.0/144.0)*( In[t-4] - (real)32.0*In[t-3] + (real)316.0*In[t-2] - (real)992.0*In[t-1] + \ + In[t+4] - (real)32.0*In[t+3] + (real)316.0*In[t+2] - (real)992.0*In[t+1] + \ + (real)1414.0*In[t] ) ) +#else +# define LAP1(In,t) ( In[t-1] - (real)2.0*In[t] + In[t+1] ) +# define LAP2(In,t) ( In[t-2] - (real)4.0*In[t-1] + (real)6.0*In[t] - (real)4.0*In[t+1] + In[t+2] ) +#endif + + +static void CPU_AdvanceX( real u[][ CUBE(FLU_NXT) ], real Flux_Array[][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real dh, const real Eta, const bool StoreFlux, const real Taylor3_Coeff, + const int j_gap, const int k_gap, const int Flux_XYZ ); +static void TransposeXY( real u[][ CUBE(FLU_NXT) ] ); +static void TransposeXZ( real u[][ CUBE(FLU_NXT) ] ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : CPU_ELBDMSolver_FD +// Description : CPU ELBDM kinematic solver based on expanding the propagator to the 3rd order +// +// Note : 1. The three-dimensional evolution is achieved by applying x, y, and z operators successively. +// Since these operators commute, the order of applying them are irrelevant. +// --> Input pamameter "XYZ" is actually meaningless (if CONSERVE_MASS is off) +// --> Nevertheless, the symmetry in different directions will be broken if CONSERVE_MASS is on +// 2. The implementation is very similar to the function "CPU_FluidSolver_RTVD" +// +// Parameter : Flu_Array_In : Array storing the input variables (only REAL/IMAG) +// Flu_Array_Out : Array to store the output variables (DENS/REAL/IMAG) +// Flux_Array : Array to store the output flux +// NPatchGroup : Number of patch groups to be evaluated +// dt : Time interval to advance solution +// dh : Grid size +// Eta : Particle mass / Planck constant +// StoreFlux : true --> store the coarse-fine fluxes +// --> useful only if CONSERVE_MASS is defined +// Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion +// XYZ : true : x->y->z ( forward sweep) +// false : z->y->x (backward sweep) +// --> Meaningless if CONSERVE_MASS is off since the operators along different directions +// commute +// --> Meaningful if CONSERVE_MASS is on, in which the symmetry along different directions +// are broken ... +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +void CPU_ELBDMSolver_FD( real Flu_Array_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real Flu_Array_Out[][FLU_NOUT][ CUBE(PS2) ], + real Flux_Array[][9][NFLUX_TOTAL][ SQR(PS2) ], + const int NPatchGroup, const real dt, const real dh, const real Eta, const bool StoreFlux, + const real Taylor3_Coeff, const bool XYZ, const real MinDens ) +{ + + if ( XYZ ) + { +# pragma omp parallel for schedule( runtime ) + for (int P=0; P store the coarse-fine fluxes +// --> useful only if CONSERVE_MASS is defined +// Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion +// j_gap : Number of cells to be skipped on each side in the y direction +// k_gap : Number of cells to be skipped on each side in the z direction +// Flux_XYZ : Parameter used to determine the place to store the output fluxes +// --> (0,3,6) <-> (x/y/z) fluxes +// --> useful only if CONSERVE_MASS is defined +//------------------------------------------------------------------------------------------------------- +void CPU_AdvanceX( real u[][ CUBE(FLU_NXT) ], real Flux_Array[][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real dh, const real Eta, const bool StoreFlux, const real Taylor3_Coeff, + const int j_gap, const int k_gap, const int Flux_XYZ ) +{ + + const real _dh = (real)1.0/dh; + const real dT = (real)0.5*dt/Eta; + const real _Eta2_dh = (real)0.5*_dh/Eta; + const real Coeff1 = dT*_dh*_dh; + const real Coeff2 = Taylor3_Coeff*Coeff1*Coeff1; + const int j_start = j_gap; + const int k_start = k_gap; + const int j_end = FLU_NXT - j_gap; + const int k_end = FLU_NXT - k_gap; + + real Re_Old [FLU_NXT]; // one column of the real part in the input array "u" + real Im_Old [FLU_NXT]; // one column of the imaginary part in the input array "u" + real Re_Half[FLU_NXT]; // one column of the real part at the half time-step + real Im_Half[FLU_NXT]; // one column of the imaginary part at the half time-step + real *Re_New = NULL; // pointer to store the full-step real part + real *Im_New = NULL; // pointer to store the full-step imaginary part + int Idx; + +# ifdef CONSERVE_MASS + const real dT_dh2 = dT*_dh*_dh; + real R, I, dR, dI, Flux[PS2+1]; + double Amp_Old, Amp_New, Amp_Corr; // use double precision to reduce the round-off error in the mass conservation + int Idx2, Idx3; +# endif + + +// loop over all target columns + for (int k=k_start; k (real)0.0 && Amp_New > (real)0.0 ) + if ( Amp_Corr > 0.0 && Amp_New > 0.0 ) + { + /* + Re_New[i] *= SQRT( Amp_Corr / Amp_New ); + Im_New[i] *= SQRT( Amp_Corr / Amp_New ); + */ + Re_New[i] *= sqrt( Amp_Corr / Amp_New ); // use double precision to improve the mass conservation further + Im_New[i] *= sqrt( Amp_Corr / Amp_New ); + } + + Idx2 ++; + } + +// 4.3. save the fluxes across all patch boundaries (remeber to put the coefficient "1/(2*Eta*dh)" back) + if ( StoreFlux ) + if ( ( j>=FLU_GHOST_SIZE && j=FLU_GHOST_SIZE && kdh[0]; + const real Dt_2Eta = (real)0.5*dt/ELBDM_ETA; + + real PsiKR, PsiKI, DtKK_2Eta; + gamer_fftw::fft_complex *PsiK; + PsiK = (gamer_fftw::fft_complex*)root_fftw::fft_malloc( PsiK_Size*sizeof(gamer_fftw::fft_complex) ); + + for (long t=0; t __INT_MAX__ ) || total_local_size < 0 ) + Aux_Error( ERROR_INFO, "local_nx*local_ny*local_nz = %d*%d*%d = %ld > __INT_MAX__ (%d)\n" + " and/or total_local_size (%ld) < 0 for FFT, suggesting integer overflow !!\n" + " --> Try using more MPI processes or switching to FFTW3\n", + local_nx, local_ny, local_nz, local_nxyz, __INT_MAX__, total_local_size ); + + +// collect "local_nz" from all ranks and set the corresponding list "List_z_start" + int List_nz [MPI_NRank ]; // slab thickness of each rank in the FFTW slab decomposition + int List_z_start[MPI_NRank+1]; // starting z coordinate of each rank in the FFTW slab decomposition + + const int local_nz_int = local_nz; // necessary since "mpi_index_int" maps to "long int" for FFTW3 + MPI_Allgather( &local_nz_int, 1, MPI_INT, List_nz, 1, MPI_INT, MPI_COMM_WORLD ); + + List_z_start[0] = 0; + for (int r=0; rNPatchComma[0][1]*CUBE(PS1) ]; // MPI send buffer + real *RecvBuf = new real [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice ]; // MPI recv buffer + long *SendBuf_SIdx = new long [ (long)amr->NPatchComma[0][1]*PS1 ]; // MPI send buffer for 1D coordinate in slab + long *RecvBuf_SIdx = new long [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice/SQR(PS1) ]; // MPI recv buffer for 1D coordinate in slab + + int *List_PID_R [MPI_NRank]; // PID of each patch slice sent to each rank for the real part + int *List_k_R [MPI_NRank]; // local z coordinate of each patch slice sent to each rank for the real part + int *List_PID_I [MPI_NRank]; // PID of each patch slice sent to each rank for the imag part + int *List_k_I [MPI_NRank]; // local z coordinate of each patch slice sent to each rank for the imag part + long List_NSend [MPI_NRank]; // size of data sent to each rank + long List_NRecv [MPI_NRank]; // size of data received from each rank + + +// rearrange data from patch to slab + Patch2Slab( PsiR, SendBuf, RecvBuf, SendBuf_SIdx, RecvBuf_SIdx, List_PID_R, List_k_R, List_NSend, List_NRecv, List_z_start, + local_nz, FFT_Size, NRecvSlice, PrepTime, _REAL, InPlacePad_No, ForPoisson_No, false ); + Patch2Slab( PsiI, SendBuf, RecvBuf, SendBuf_SIdx, RecvBuf_SIdx, List_PID_I, List_k_I, List_NSend, List_NRecv, List_z_start, + local_nz, FFT_Size, NRecvSlice, PrepTime, _IMAG, InPlacePad_No, ForPoisson_No, false ); + + +// advance wave function by exp( -i*dt*k^2/(2*ELBDM_ETA) ) in the k-space using FFT + Psi_Advance_FFT( PsiR, PsiI, local_y_start_after_transpose, local_ny_after_transpose, total_local_size, dt ); + + +// rearrange data from slab back to patch + Slab2Patch( PsiR, RecvBuf, SendBuf, SaveSg, RecvBuf_SIdx, List_PID_R, List_k_R, List_NRecv, List_NSend, + local_nz, FFT_Size, NRecvSlice, _REAL, InPlacePad_No ); + Slab2Patch( PsiI, RecvBuf, SendBuf, SaveSg, RecvBuf_SIdx, List_PID_I, List_k_I, List_NRecv, List_NSend, + local_nz, FFT_Size, NRecvSlice, _IMAG, InPlacePad_No ); + + +// update density according to the updated wave function +# pragma omp parallel for schedule( runtime ) + for (int PID=0; PIDNPatchComma[0][1]; PID++) + for (int k=0; kpatch[SaveSg][0][PID]->fluid[REAL][k][j][i]; + const real NewImag = amr->patch[SaveSg][0][PID]->fluid[IMAG][k][j][i]; + const real NewDens = SQR( NewReal ) + SQR( NewImag ); + + amr->patch[SaveSg][0][PID]->fluid[DENS][k][j][i] = NewDens; + } // PID,i,j,k + + +// free memory + root_fftw::fft_free( PsiR ); + root_fftw::fft_free( PsiI ); + delete [] SendBuf; + delete [] RecvBuf; + delete [] SendBuf_SIdx; + delete [] RecvBuf_SIdx; + +} // FUNCTION : CPU_ELBDMSolver_FFT + + + +#endif // #if ( MODEL == ELBDM && defined SUPPORT_FFTW ) diff --git a/src/Model_ELBDM/CPU_ELBDM/CPU_ELBDMSolver_GramFE_FFT.cpp b/src/Model_ELBDM/CPU_ELBDM/CPU_ELBDMSolver_GramFE_FFT.cpp new file mode 100644 index 0000000000..694ada8524 --- /dev/null +++ b/src/Model_ELBDM/CPU_ELBDM/CPU_ELBDMSolver_GramFE_FFT.cpp @@ -0,0 +1,632 @@ +#include "GAMER.h" +#include "CUFLU.h" + +#if ( ( !defined(__CUDACC__) && defined(SUPPORT_FFTW) ) || defined(__CUDACC__) ) + +#if ( GRAMFE_SCHEME == GRAMFE_FFT ) + + +#include "GramFE_ExtensionTables.h" + +// useful macros + +// convert to 1D index with ghost boundary +# define to1D1(z,y,x) ( (z) * FLU_NXT * FLU_NXT + (y) * FLU_NXT + (x) ) +// convert to 1D index without ghost boundary +# define to1D2(z,y,x) ( ((z)-FLU_GHOST_SIZE) * PS2 * PS2 + ((y)-FLU_GHOST_SIZE) * PS2 + ((x)-FLU_GHOST_SIZE) ) + +// use cufftdx library for FFTs on GPU +#ifdef __CUDACC__ + +using forward_workspace_type = typename FFT::workspace_type; +using inverse_workspace_type = typename IFFT::workspace_type; + +// overload cufftdx's complex_type to allow for multiplication, addition and subtraction of complex and real numbers + +// multiplication of complex and real +template +__device__ __forceinline__ complex_type operator*(const complex_type& a, const OtherType& other) { + complex_type result(a); + result *= other; + return result; +} + +// multiplication of real and complex +template +__device__ __forceinline__ complex_type operator*(const OtherType& other, const complex_type& a) { + return a * other; +} + +// multiplication of complex and complex +__device__ __forceinline__ complex_type operator*(const complex_type& a, const complex_type& b) { + complex_type result(a); + result *= b; + return result; +} + +// addition of complex and complex +__device__ __forceinline__ complex_type operator+(const complex_type& a, const complex_type& b) { + complex_type result(a); + result += b; + return result; +} + +// subtraction of complex and complex +__device__ __forceinline__ complex_type operator-(const complex_type& a, const complex_type& b) { + complex_type result(a); + result -= b; + return result; +} + +#else // #ifdef __CUDACC__ + +extern gramfe_fftw::complex_plan_1d FFTW_Plan_ExtPsi, FFTW_Plan_ExtPsi_Inv; + +#if ( SUPPORT_FFTW == FFTW3 ) + +#include + +using complex_type = std::complex; + +#else // #if ( SUPPORT_FFTW == FFTW3 ) + +// derive from gramfe_fftw::fft_complex which is an alias for FFTW2's complex_type in gramfe_fft_float precision +// to allow for complex arithmetic operations +struct complex_type : public gramfe_fftw::fft_complex { + complex_type() { + } + + complex_type(gramfe_fft_float re, gramfe_fft_float im) { + real(re); + imag(im); + } + + complex_type& operator=(const complex_type& other) { + real(other.real()); + imag(other.imag()); + return *this; + } + + gramfe_fft_float real() const { + return c_re(*this); + } + + gramfe_fft_float imag() const { + return c_im(*this); + } + + void real(gramfe_fft_float re) { + c_re(*this) = re; + } + + void imag(gramfe_fft_float im) { + c_im(*this) = im; + } + + complex_type operator*(const complex_type& other) { + return complex_type(this->real() * other.real() - this->imag() * other.imag(), this->real() * other.imag() + this->imag() * other.real()); + } + + complex_type operator+(const complex_type& other) { + return complex_type(this->real() + other.real(), this->imag() + other.imag()); + } + + complex_type operator-(const complex_type& other) { + return complex_type(this->real() - other.real(), this->imag() - other.imag()); + } + + complex_type& operator*=(const complex_type& other) { + (*this) = (*this) * other; + return *this; + } + + complex_type& operator+=(const complex_type& other) { + (*this) = (*this) + other; + return *this; + } +}; // struct complex_type : public gramfe_fftw::fft_complex + + +template +complex_type operator*(const complex_type& a, const OtherType& other) { + return complex_type (a.real() * other, a.imag() * other); +} + +template +complex_type operator*(const OtherType& other, const complex_type& a) { + return a * other; +} +#endif // #if ( SUPPORT_FFTW == FFTW3 ) ... else ... + + +// no workspaces required in CPU solver +using forward_workspace_type = bool; +using inverse_workspace_type = bool; +#endif // #ifdef __CUDACC__ + + + +#ifdef __CUDACC__ +# define CGPU_FLU_BLOCK_SIZE_X FFT::block_dim.x +# define CGPU_FLU_BLOCK_SIZE_Y FFT::block_dim.y +#else +# define CGPU_FLU_BLOCK_SIZE_X 1 +# define CGPU_FLU_BLOCK_SIZE_Y 1 +#endif + + + +GPU_DEVICE +static uint get1D1(uint k, uint j, uint i, int XYZ) { + switch ( XYZ ) + { + case 0: return to1D1( k, j, i ); + case 3: return to1D1( k, i, j ); + case 6: return to1D1( i, k, j ); + } + return 0; +} + +GPU_DEVICE +static uint get1D2(uint k, uint j, uint i, int XYZ) { + switch ( XYZ ) + { + case 0: return to1D2( k, j, i ); + case 3: return to1D2( k, i, j ); + case 6: return to1D2( i, k, j ); + } + return 0; +} + +// multithreaded CPU/GPU loop over array respecting left and right ghost zones +#define CELL_LOOP( NCell, leftGhost, rightGhost ) for ( (Idx = tid, \ + (NStep = (NCell) - (leftGhost) - (rightGhost), \ + (si = Idx % NStep + (leftGhost), \ + sj = Idx / NStep))); \ + Idx < NColumnOnce * NStep; \ + (Idx += NThread, (si = Idx % NStep + (leftGhost), sj = Idx / NStep)) ) + + +GPU_DEVICE +static void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + int NPatchGroup, + const gramfe_fft_float dt, const gramfe_fft_float _dh, const gramfe_fft_float Eta, + const uint j_gap, const uint k_gap, + complex_type s_In [][GRAMFE_FLU_NXT], + complex_type s_Ae [][GRAMFE_NDELTA], + complex_type s_Ao [][GRAMFE_NDELTA], + complex_type ExpCoeff[], + const bool FinalOut, const int XYZ, const gramfe_fft_float MinDens, + forward_workspace_type Workspace, + inverse_workspace_type WorkspaceInv ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Factorial +// Description : Compute the factorial of n. +// Parameter : n : integer +// Return : n! +//------------------------------------------------------------------------------------------------------- +GPU_DEVICE +int Factorial(int n) { + return (n==0) || (n==1) ? 1 : n* Factorial(n-1); +} // FUNCTION : Factorial + + + +//------------------------------------------------------------------------------------------------------- +// Function : CosineTaylorExpansion +// Description : Compute the Taylor expansion of the cosine function at the point x with Nterms terms +// Parameter : x : Point at which to evaluate Taylor expansion +// NTerms : Number of terms to retain in expansion +// Return : Value of expansion +//------------------------------------------------------------------------------------------------------- +GPU_DEVICE +gramfe_fft_float CosineTaylorExpansion(gramfe_fft_float x, int Nterms) { + gramfe_fft_float result = 0; + + for (int i = 0; i < Nterms; ++i) { + result += pow(-1, i) * (1 / ((gramfe_fft_float) Factorial(2 * i))) * pow(x, 2 * i ); + } + + return result; +} // FUNCTION : CosineTaylorExpansion + + + +//------------------------------------------------------------------------------------------------------- +// Function : SineTaylorExpansion +// Description : Compute the Taylor expansion of the sine function at the point x with Nterms terms +// Parameter : x : Point at which to evaluate Taylor expansion +// NTerms : Number of terms to retain in expansion +// Return : Value of expansion +//------------------------------------------------------------------------------------------------------- +GPU_DEVICE +gramfe_fft_float SineTaylorExpansion(gramfe_fft_float x, int Nterms) { + gramfe_fft_float result = 0; + + for (int i = 0; i < Nterms; ++i) { + result += pow(-1, i) * ( 1 / ((gramfe_fft_float) Factorial(2 * i + 1)) ) * pow(x, 2 * i + 1); + } + + return result; +} // FUNCTION : SineTaylorExpansion + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUFLU_ELBDMSolver_GramFE_FFT +// Description : CPU and GPU ELBDM kinematic solver based on computing Gram (FE) extension and evolving wave function +// using pseudo-spectral method on extended domain +// +// Note : 1. The three-dimensional evolution is achieved by applying x, y, and z operators successively. +// Since these operators commute, the order of applying them are irrelevant. +// --> Input pamameter "XYZ" is actually meaningless (if CONSERVE_MASS is off) +// --> Nevertheless, the symmetry in different directions will be broken if CONSERVE_MASS is on +// 2. The implementation is very similar to the function "CPU_FluidSolver_RTVD" +// +// Parameter : Flu_Array_In : Array storing the input variables (only REAL/IMAG) +// Flu_Array_Out : Array to store the output variables (DENS/REAL/IMAG) +// NPatchGroup : Number of patch groups to be evaluated +// dt : Time interval to advance solution +// dh : Grid size +// Eta : Particle mass / Planck constant +// XYZ : true : x->y->z ( forward sweep) +// false : z->y->x (backward sweep) +// --> Meaningless since the operators along different directions +// commute +// MinDens : Minimum allowed density +// Only in GPU mode: +// Workspace : Workspace for forward GPU FFT +// WorkspaceInv : Workspace for inverse GPU FFT +//------------------------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__launch_bounds__(FFT::max_threads_per_block) +__global__ +void CUFLU_ELBDMSolver_GramFE_FFT( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT ][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens, + typename FFT::workspace_type Workspace, + typename IFFT::workspace_type WorkspaceInv ) +#else +void CPU_ELBDMSolver_GramFE_FFT( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const int NPatchGroup, const real dt, const real dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ) +#endif +{ + +# ifdef __CUDACC__ +// shared memory array for cufftdx + extern __shared__ complex_type shared_mem[]; + +// create memories for columns of various intermediate fields in shared GPU memory + complex_type (*s_In)[GRAMFE_FLU_NXT] = (complex_type (*)[GRAMFE_FLU_NXT]) (shared_mem); +// even extension coefficients + complex_type (*s_Ae)[GRAMFE_NDELTA] = (complex_type (*)[GRAMFE_NDELTA]) (shared_mem + CGPU_FLU_BLOCK_SIZE_Y * (GRAMFE_FLU_NXT )); +// odd extension coefficients + complex_type (*s_Ao)[GRAMFE_NDELTA] = (complex_type (*)[GRAMFE_NDELTA]) (shared_mem + CGPU_FLU_BLOCK_SIZE_Y * (GRAMFE_FLU_NXT + GRAMFE_NDELTA)); + const int NPatchGroup = NULL_INT; + +# else // #ifdef __CUDACC__ +// allocate memory on heap within loop for CPU run + complex_type (*s_In) [GRAMFE_FLU_NXT] = NULL; + complex_type (*s_Ae) [GRAMFE_NDELTA] = NULL; + complex_type (*s_Ao) [GRAMFE_NDELTA] = NULL; + const gramfe_fft_float _dh = gramfe_fft_float(1.0)/dh; + bool Workspace = NULL_BOOL; + bool WorkspaceInv = NULL_BOOL; +# endif // #ifdef __CUDACC__ ... else ... + + +// set up time evolution operator and filter + gramfe_fft_float K; + gramfe_fft_float Filter; // exp(-filterDecay * (k/kMax)**(2*filterDegree)) + gramfe_fft_float Coeff; // dT * k^2 + complex_type ExpCoeff[GRAMFE_FLU_NXT]; // exp(- 1j * dt/(2*ELBDM_ETA) * k^2) + + const gramfe_fft_float filterDecay = (gramfe_fft_float) 32.0 * (gramfe_fft_float) 2.302585092994046; // decay of k-space filter (32*log(10)) + const gramfe_fft_float filterDegree = (gramfe_fft_float) 100; // degree of k-space filter + const gramfe_fft_float kmax = (gramfe_fft_float) M_PI * _dh; // maximum value of k + const gramfe_fft_float dk = (gramfe_fft_float) + 2.0 * kmax / GRAMFE_FLU_NXT; // k steps in k-space + const gramfe_fft_float dT = (gramfe_fft_float) - 0.5 * dt / Eta; // coefficient in time evolution operator + const gramfe_fft_float Norm = (gramfe_fft_float) + 1.0 / GRAMFE_FLU_NXT; // norm for inverse Fourier transform + +// naively "exp(1j * Coeff)" should give the exact time evolution of the free Schrödinger equation +// however, the time-evolution operator depends on higher-order derivatives +// since these are unavailable for a finite ghost boundary size, the series needs to be truncated +// the ideal Taylor expansion order using all available derivatives is FLU_GHOST_SIZE - 1 +// for FLU_GHOST_SIZE == 8, 4 terms in the cosine series and 3 terms in the sine series are retained + const int cosineNTerms = FLU_GHOST_SIZE / 2; + const int sineNTerms = cosineNTerms - (int) ((FLU_GHOST_SIZE % 2) == 0); + +// set up momentum, filter and time evolution array + for (int i=0; i store the updated data to g_Fluid_Out +// XYZ : 0 : Update the solution in the x direction +// 3 : Update the solution in the y direction +// 6 : Update the solution in the z direction +// --> This parameter is also used to determine the place to store the output fluxes +// MinDens : Minimum allowed density +// Workspace : Workspace for forward GPU FFT (useless in CPU mode) +// WorkspaceInv : Workspace for inverse GPU FFT (useless in CPU mode) +//------------------------------------------------------------------------------------------------------- +GPU_DEVICE +void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT ][ CUBE(PS2) ], + int NPatchGroup, + const gramfe_fft_float dt, const gramfe_fft_float _dh, const gramfe_fft_float Eta, + const uint j_gap, const uint k_gap, + complex_type s_In [][GRAMFE_FLU_NXT], + complex_type s_Ae [][GRAMFE_NDELTA], + complex_type s_Ao [][GRAMFE_NDELTA], + complex_type ExpCoeff[], + const bool FinalOut, + const int XYZ, const gramfe_fft_float MinDens, + forward_workspace_type Workspace, + inverse_workspace_type WorkspaceInv ) +{ + + const uint size_j = FLU_NXT - j_gap * 2; // number of y-columns to be updated + const uint size_k = FLU_NXT - k_gap * 2; // number of z-columns to be updated + const uint NColumnTotal = size_j * size_k; // total number of data columns to be updated + +// openmp pragma for the CPU solver +# ifndef __CUDACC__ +# pragma omp parallel +# endif + { +# ifdef __CUDACC__ + const int bx = blockIdx.x; +# else + +// create arrays for columns of various intermediate fields on the stack + complex_type* s_In_1PG = (complex_type*) gramfe_fftw::fft_malloc( GRAMFE_FLU_NXT*sizeof(complex_type) ); // allocate memory for fourier transform + + complex_type s_Ae_1PG [CGPU_FLU_BLOCK_SIZE_Y][GRAMFE_NDELTA]; // left projection polynomials + complex_type s_Ao_1PG [CGPU_FLU_BLOCK_SIZE_Y][GRAMFE_NDELTA]; // right projection polynomials + +// in CPU mode, every thread works on one patch group at a time and corresponds to one block in the grid of the GPU solver +# pragma omp for schedule( runtime ) private ( s_In, s_Ae, s_Ao ) + for (int bx=0; bx(s_In), Workspace); +# else + gramfe_fftw_c2c( FFTW_Plan_ExtPsi, s_In ); +# endif + +# ifdef __CUDACC__ + __syncthreads(); +# endif + +// 3.2 evolve wave function via time evolution operator with filter + CELL_LOOP(GRAMFE_FLU_NXT, 0, 0) + { + s_In[sj][si] *= ExpCoeff[si]; + } + +# ifdef __CUDACC__ + __syncthreads(); +# endif + + +// 3.3 backward FFT +# ifdef __CUDACC__ + IFFT().execute(reinterpret_cast(s_In), WorkspaceInv); +# else + gramfe_fftw_c2c( FFTW_Plan_ExtPsi_Inv, s_In ); +# endif + +# ifdef __CUDACC__ + __syncthreads(); +# endif + +// 4.1 write FFT array back to output array + if ( FinalOut ) + { + CELL_LOOP(FLU_NXT, FLU_GHOST_SIZE, FLU_GHOST_SIZE) + { + j = j_gap + ( sj + Column0 ) % size_j ; + k = k_gap + ( sj + Column0 ) / size_j; + + Idx2 = get1D2( k, j, si, XYZ ); + + Amp_New = SQR(s_In[sj][si].real()) + SQR(s_In[sj][si].imag()); + Re_New = s_In[sj][si].real(); + Im_New = s_In[sj][si].imag(); + +// apply the the minimum density check + if ( Amp_New < MinDens ) + { + const real Rescale = SQRT( MinDens / (real)Amp_New ); + + Re_New *= Rescale; + Im_New *= Rescale; + Amp_New = MinDens; + } + g_Fluid_Out[bx][DENS][Idx2] = Amp_New; + g_Fluid_Out[bx][REAL][Idx2] = Re_New; + g_Fluid_Out[bx][IMAG][Idx2] = Im_New; + } // CELL_LOOP(FLU_NXT, FLU_GHOST_SIZE, FLU_GHOST_SIZE) + } else { // if ( FinalOut ) + CELL_LOOP(FLU_NXT, FLU_GHOST_SIZE, FLU_GHOST_SIZE) + { + j = j_gap + ( sj + Column0 ) % size_j ; + k = k_gap + ( sj + Column0 ) / size_j; + + Idx1 = get1D1( k, j,si, XYZ ); + g_Fluid_In[bx][0][Idx1] = s_In[sj][si].real(); + g_Fluid_In[bx][1][Idx1] = s_In[sj][si].imag(); + } // CELL_LOOP(FLU_NXT, FLU_GHOST_SIZE, FLU_GHOST_SIZE) + } // if ( FinalOut ) ... else + +# ifdef __CUDACC__ + __syncthreads(); +# endif + +// 4.2 update remaining number of columns + Column0 += NColumnOnce; + NColumnOnce = MIN( NColumnTotal - Column0, CGPU_FLU_BLOCK_SIZE_Y ); + + } // while ( Column0 < NColumnTotal ) + } // #pragma for (int bx=0; bx +class complex { +public: + T re; + T im; + +// unfortunately, we cannot defined custom constructors here +// otherwise, CUDA will complain about unsupported dynamic initialisation of shared arrays + + __device__ complex operator+(const complex& other) const { + return complex(re + other.re, im + other.im); + } + + __device__ complex operator*(const complex& other) const { + complex out; + out.real(re * other.re - im * other.im); + out.imag(re * other.im + im * other.re); + return out; + } + + __device__ complex& operator+=(const complex& other) { + re += other.re; + im += other.im; + return *this; + } + + __device__ T real() const {return re;} + __device__ T imag() const {return im;} + __device__ void real(T r) {re = r;} + __device__ void imag(T i) {im = i;} +}; + +using gramfe_matmul_complex_type = complex; +// matrix-multiplication is carried out manually +// therefore the types of the input vector (gramfe_input_complex_type) and the matrix (gramfe_matmul_complex_type) can be different +using gramfe_input_complex_type = complex; + +#else // #ifdef __CUDACC__ + +#include +#include "GSL.h" + + +// for matrix-multiplication via GSL using BLAS the types of the input vector (gramfe_input_complex_type) +// and the matrix (gramfe_matmul_complex_type) must be the same +using gramfe_matmul_complex_type = std::complex; +using gramfe_input_complex_type = std::complex; + +// precision of matrix multiplication +#ifdef GRAMFE_MATMUL_FLOAT8 +namespace gramfe_matmul_gsl = gsl_double_precision; +#else +namespace gramfe_matmul_gsl = gsl_single_precision; +#endif + +#endif // #ifdef __CUDACC__ ... else ... + +#ifdef __CUDACC__ +# define CGPU_FLU_BLOCK_SIZE_X FLU_BLOCK_SIZE_X +# define CGPU_FLU_BLOCK_SIZE_Y FLU_BLOCK_SIZE_Y +#else +# define CGPU_FLU_BLOCK_SIZE_X 1 +# define CGPU_FLU_BLOCK_SIZE_Y 1 +#endif + +// useful macros +// convert to 1D index with ghost boundary +# define to1D1(z,y,x) ( (z) * FLU_NXT * FLU_NXT + (y) * FLU_NXT + (x) ) +// convert to 1D index without ghost boundary +# define to1D2(z,y,x) ( ((z)-FLU_GHOST_SIZE) * PS2 * PS2 + ((y)-FLU_GHOST_SIZE) * PS2 + ((x)-FLU_GHOST_SIZE) ) + + +GPU_DEVICE +static uint get1D1(uint k, uint j, uint i, int XYZ) { + switch ( XYZ ) + { + case 0: return to1D1( k, j, i ); + case 3: return to1D1( k, i, j ); + case 6: return to1D1( i, k, j ); + } + return 0; +} + +GPU_DEVICE +static uint get1D2(uint k, uint j, uint i, int XYZ) { + switch ( XYZ ) + { + case 0: return to1D2( k, j, i ); + case 3: return to1D2( k, i, j ); + case 6: return to1D2( i, k, j ); + } + return 0; +} + +// multithreaded CPU/GPU loop over array respecting left and right ghost zones +#define CELL_LOOP( NCell, leftGhost, rightGhost ) for ( (Idx = tid, \ + (NStep = (NCell) - (leftGhost) - (rightGhost), \ + (si = Idx % NStep + (leftGhost), \ + sj = Idx / NStep))); \ + Idx < NColumnOnce * NStep; \ + (Idx += NThread, (si = Idx % NStep + (leftGhost), sj = Idx / NStep)) ) + + +GPU_DEVICE +static void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT ][ CUBE(PS2) ], + int NPatchGroup, + const uint j_gap, const uint k_gap, + gramfe_input_complex_type s_In [][FLU_NXT], + gramfe_input_complex_type s_Out [][PS2], + gramfe_matmul_complex_type* s_TimeEvo, + const bool FinalOut, const int XYZ, const real MinDens ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUFLU_ELBDMSolver_GramFE_MAMTUL +// Description : CPU and GPU ELBDM kinematic solver based on computing Gram (FE) extension and evolving wave function +// using pseudo-spectral method on extended domain using matrix multiplication +// +// Note : 1. The three-dimensional evolution is achieved by applying x, y, and z operators successively. +// +// Parameter : g_Fluid_In : Array storing the input variables (only REAL/IMAG) +// g_Fluid_Out : Array to store the output variables (DENS/REAL/IMAG) +// g_Flux : Useless +// g_TimeEvo : Array to store complex PS2 * FLU_NXT matrix that evolves wave function in time +// NPatchGroup : Number of patch groups to be evaluated +// dt : Time interval to advance solution +// dh : Grid size +// Eta : Particle mass / Planck constant +// XYZ : true : x->y->z ( forward sweep) +// false : z->y->x (backward sweep) +// --> Meaningless since the operators along different directions +// commute +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__global__ +void CUFLU_ELBDMSolver_GramFE_MATMUL( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + gramfe_matmul_float g_TimeEvo[][ FLU_NXT*2 ], + const real dt, const real dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ) +#else +void CPU_ELBDMSolver_GramFE_MATMUL( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + gramfe_matmul_float g_TimeEvo[][ FLU_NXT*2 ], + const int NPatchGroup, const real dt, const real dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ) +#endif +{ + +# ifdef __CUDACC__ +// create memories for columns of input field + __shared__ gramfe_input_complex_type s_In [FLU_BLOCK_SIZE_Y][FLU_NXT]; + __shared__ gramfe_input_complex_type s_Out[FLU_BLOCK_SIZE_Y][PS2]; + + const int NPatchGroup = NULL_INT; + +# else +// allocate memory on heap within loop for CPU run +//###OPTIMIZATION: allocate memory only once right here + gramfe_input_complex_type (*s_In) [FLU_NXT] = NULL; + gramfe_input_complex_type (*s_Out)[PS2] = NULL; +# endif + +// time evolution matrix +// GPU: transpose input evolution matrix from PS2 x FLU_NXT to FLU_NXT x PS2 for it to be in row-major order +// CPU: no transposition since matrix already is in column-major order +# ifdef __CUDACC__ + __shared__ gramfe_matmul_complex_type s_TimeEvo[PS2 * FLU_NXT]; + + gramfe_matmul_complex_type* s_LinEvolve = (gramfe_matmul_complex_type *) s_TimeEvo; + gramfe_matmul_complex_type* g_LinEvolve = (gramfe_matmul_complex_type *) g_TimeEvo; + uint row, col; + + const uint tx = threadIdx.x; + const uint ty = threadIdx.y; + const uint tid = ty * CGPU_FLU_BLOCK_SIZE_X + tx; // thread ID within block + const uint NThread = CGPU_FLU_BLOCK_SIZE_X * CGPU_FLU_BLOCK_SIZE_Y; // total number of threads within block + + for (uint i=tid; i store the updated data to g_Fluid_Out +// XYZ : 0 : Update the solution in the x direction +// 3 : Update the solution in the y direction +// 6 : Update the solution in the z direction +// --> This parameter is also used to determine the place to store the output fluxes +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +GPU_DEVICE +void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT ][ CUBE(PS2) ], + int NPatchGroup, + const uint j_gap, const uint k_gap, + gramfe_input_complex_type s_In [][FLU_NXT], + gramfe_input_complex_type s_Out[][PS2], + gramfe_matmul_complex_type* s_TimeEvo, + const bool FinalOut, + const int XYZ, const real MinDens ) +{ + + const uint size_j = FLU_NXT - j_gap * 2; // number of y-columns to be updated + const uint size_k = FLU_NXT - k_gap * 2; // number of z-columns to be updated + const uint NColumnTotal = size_j * size_k; // total number of data columns to be updated + +// openmp pragma for the CPU solver +# ifndef __CUDACC__ +# pragma omp parallel +# endif + { +# ifdef __CUDACC__ + const int bx = blockIdx.x; +# else +// create arrays for columns of various intermediate fields on the heap + gramfe_matmul_complex_type* s_In_1PG = (gramfe_matmul_complex_type*) malloc( FLU_NXT * sizeof(gramfe_matmul_complex_type) ); + gramfe_matmul_complex_type* s_Out_1PG = (gramfe_matmul_complex_type*) malloc( PS2 * sizeof(gramfe_matmul_complex_type) ); + + gramfe_matmul_gsl::vector_complex_const_view Input_view = gramfe_matmul_gsl::vector_complex_const_view_array ( (gramfe_matmul_gsl::gsl_real*) s_In_1PG , FLU_NXT ); + gramfe_matmul_gsl::vector_complex_view Output_view = gramfe_matmul_gsl::vector_complex_view_array ( (gramfe_matmul_gsl::gsl_real*) s_Out_1PG, PS2 ); + gramfe_matmul_gsl::matrix_complex_const_view Evo_view = gramfe_matmul_gsl::matrix_complex_const_view_array ( (gramfe_matmul_gsl::gsl_real*) s_TimeEvo, PS2, FLU_NXT ); + +// in CPU mode, every thread works on one patch group at a time and corresponds to one block in the grid of the GPU solver +# pragma omp for schedule( runtime ) private ( s_In, s_Out ) + for (int bx=0; bx (b) ) ? (1) : (0) ) +# define LSS( a, b ) ( ( (a) < (b) ) ? (1) : (0) ) +# define SGN( a ) ( ( (a) > (0) ) ? (1) : ( (a) < (0) ) ? (-1) : (0) ) + +# define TWOPI ( real( 2 * M_PI ) ) +# define _TWOPI ( real( 1.0 ) / TWOPI ) +# define UNWRAP( ref, wrap ) ( round(((ref) - (wrap)) * _TWOPI) ) +# define EQUALISE( ref, wrap ) ( (wrap) + UNWRAP(ref, wrap) * TWOPI ) +# define GRADIENT_RATIO(f, t) ( (f[t+1] - f[t ]) / (f[t] - f[t-1] + (((f[t] - f[t-1]) == 0) ? 1e-8 : 0))) + +// First-order forward and backward gradient +# define GRADF1(In, t) ( In[t + 1] - In[t ] ) +# define GRADB1(In, t) ( In[t ] - In[t - 1] ) + +// First-order forward and backward gradient with phase unwrapping +# define UNWRAPGRADF1(In, t) ( In[t + 1] - EQUALISE(In[ t + 1], In[t ] ) ) +# define UNWRAPGRADB1(In, t) ( In[t ] - EQUALISE(In[ t ], In[t - 1] ) ) + +// Second-order forward and backward gradient +# define GRADF2(In, t) ( real(1.0/2.0) * ( -3*In[t] + 4*In[t+1] - In[t+2])) +# define GRADB2(In, t) ( real(1.0/2.0) * ( 3*In[t] - 4*In[t-1] + In[t-2])) + + +// Second-order forward and backward gradient with phase unwrapping +# define UNWRAPGRADF2(In, t) ( real(1.0/2.0) * ( -3*In[t] + 4*EQUALISE(In[t], In[t+1]) - EQUALISE(In[t], In[t+2]))) +# define UNWRAPGRADB2(In, t) ( real(1.0/2.0) * ( 3*In[t] - 4*EQUALISE(In[t], In[t-1]) + EQUALISE(In[t], In[t-2]))) + +// Third-order forward and backward gradient +# define GRADF3(In, t) ( real(1.0/6.0) * ( -2*In[t-1] - 3*In[t] + 6*In[t+1] - In[t+2])) +# define GRADB3(In, t) ( real(1.0/6.0) * ( 2*In[t+1] + 3*In[t] - 6*In[t-1] + In[t-2])) + + +// Third-order forward and backward gradient with phase unwrapping +# define UNWRAPGRADF3(In, t) ( real(1.0/6.0) * ( -2*EQUALISE(In[t], In[t-1]) - 3*In[t] + 6*EQUALISE(In[t], In[t+1]) - EQUALISE(In[t], In[t+2]))) +# define UNWRAPGRADB3(In, t) ( real(1.0/6.0) * ( 2*EQUALISE(In[t], In[t+1]) + 3*In[t] - 6*EQUALISE(In[t], In[t-1]) + EQUALISE(In[t], In[t-2]))) + +// Second- and fourth-order laplacian +# define LAP2(In, t) ( real(1.0/1.0 ) * ( + 1 *In[t-1] - 2 *In[t] + 1 *In[t+1] )) +# define LAP4(In, t) ( real(1.0/12.0) * ( -1*In[t-2] + 16*In[t-1] - 30*In[t] + 16*In[t+1] - 1*In[t+2] )) + +// Second- and fourth-order centered gradient +# define GRADC2(In, t) ( real(1.0/2.0 ) * ( - 1*In[t-1] + 1*In[t+1] )) +# define GRADC4(In, t) ( real(1.0/12.0) * ( 1*In[t-2] - 8*In[t-1] + 8*In[t+1] - 1*In[t+2] )) + +//First-order upwind flux reconstruction +# define UPWIND_FM(Rc, Vb, t) ( MAX(Vb, 0) * Rc[t-1] \ + + MIN(Vb, 0) * Rc[t ] ) + +// VAN ALBADA LIMITER ( works best, VAN LEER also good, smooth functions are better then SUPERBEE for instance ) +# define LIMITER(In) ( (SQR(In) + In)/((real)1. + SQR(In)) ) +// MC: # define LIMITER(r) MAX(0, MIN(MIN((1. + r) / 2., 2.), 2. * r)) +// VAN LEER: # define LIMITER(r) ((r + FABS(r))/(1.0 + FABS(r))) +// SUPERBEE: # define LIMITER(r) MAX(MAX(0, MIN(2*r, 1)), MIN(r, 2)) + +# define UPWIND_GRADIENT_RATIO(Rc, Vb, t) ( ((Rc[t-1] - Rc[t-2]) * GTR(Vb, 0) \ + + (Rc[t+1] - Rc[t ]) * LSS(Vb, 0)) \ + / (Rc[t] - Rc[t-1] + (((Rc[t] - Rc[t-1]) == 0) ? 1e-8 : 0))) + +# define MUSCL_FM(Rc, Vb, t, _v) ( MAX(Vb, 0) * Rc[t-1] \ + + MIN(Vb, 0) * Rc[t ] \ + + real(0.5) * FABS(Vb) * (1. - FABS(Vb * _v)) * LIMITER(UPWIND_GRADIENT_RATIO(Rc, Vb, t)) * (Rc[t] - Rc[t - 1]) ) + +# define FROMM_FM(Rc, Vb, t, _v) ( MAX(Vb, 0) * ( Rc[t-1] + real(0.25) * ( Rc[t ] - Rc[t-2] ) * (1.0 - Vb * _v)) \ + + MIN(Vb, 0) * ( Rc[t ] - real(0.25) * ( Rc[t+1] - Rc[t-1] ) * (1.0 + Vb * _v)) ) + + +# define GHOST_ZONE_PER_STAGE 2 // ghost zone per Runge-Kutta stage + +// Osher-Sethian flux for Hamilton-Jacobi equation +# define OSHER_SETHIAN_FLUX(Vel_p, Vel_m) ((real) 0.5 * (pow(MIN(Vel_p, 0), 2) + pow(MAX(Vel_m, 0), 2))) + + +// use third-order Runge-Kutta scheme since it provides a good compromise between the required ghost zone +// (6 for the second-order spatial discretisation) and the achievable time steps (close to finite-difference scheme) +// --> lower-order Runge-Kutta methods suffer from small time steps (CFL condition < 0.01 for first-order +// and <= 0.05 for second-order methods according to empirical tests) +// --> using double precision for the following three constant coefficients improves the mass conservation errors +// from ~1e-5 to ~1e-8 but deteriorates the performance by ~10% +#define ELBDM_HJ_RK_ORDER 3 +GPU_DEVICE_VARIABLE +const static double TIME_COEFFS[ELBDM_HJ_RK_ORDER] = {1.0, 1.0/4.0, 2.0/3.0}; + +GPU_DEVICE_VARIABLE +const static double RK_COEFFS [ELBDM_HJ_RK_ORDER][ELBDM_HJ_RK_ORDER] = { {1.0, 0.0, 0.0}, {3.0/4.0, 1.0/4.0, 0.0}, {1.0/3.0, 0.0, 2.0/3.0} }; + +#ifdef CONSERVE_MASS +GPU_DEVICE_VARIABLE +const static double FLUX_COEFFS[ELBDM_HJ_RK_ORDER] = {1.0/6.0, 1.0/6.0, 2.0/3.0}; +#endif + +// density floor for computation of quantum pressure from input density +// should be small so as to not affect the accuracy of the quantum pressure +// --> must be positive and larger than machine precision to ensure that density close to machine precision +// does not lead to nan in logarithm +#define QP_DENSITY_FLOOR TINY_NUMBER + +GPU_DEVICE +static void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(HYB_NXT) ], +# ifdef GAMER_DEBUG + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], +# else + real g_Fluid_Out[][FLU_NIN ][ CUBE(PS2) ], +# endif + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const bool g_IsCompletelyRefined [], + const bool g_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + int NPatchGroup, + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const uint j_gap, const uint k_gap, + const bool FinalOut, const int XYZ, const real MinDens ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUFLU_ELBDMSolver_HamiltonJacobi +// Description : GPU solver for kinetic term in Hamilton Jacobi-Madelung equations +// +// Note : 1. The three-dimensional evolution is achieved by applying x, y, and z operators successively. +// Since these operators commute, the order of applying them are irrelevant. +// --> Input parameter "XYZ" is actually useless# +// 2. Currently supports 3 modes: HYBRID_SCHEME == HYBRID_UPWIND, HYBRID_FROMM, HYBRID_MUSCL set by global compile-time constants +// They respectively use first-order upwinding, second-order PLM flux reconstructions without and with limiters +// 2. Prefix "g" for pointers pointing to the "Global" memory space +// Prefix "s" for pointers pointing to the "Shared" memory space +// +// Parameter : g_Fluid_In : Global memory array storing the input variables +// g_Fluid_Out : Global memory array to store the output variables +// g_Flux : Global memory array to store the output fluxes (useful only if StoreFlux == true) +// dt : Time interval to advance solution +// _dh : 1 / grid size +// Eta : Particle mass / Planck constant +// StoreFlux : true --> store the coarse-fine fluxes +// --> useful only if CONSERVE_MASS is defined +// XYZ : true : x->y->z ( forward sweep) +// false : z->y->x (backward sweep) +// --> Meaningless if CONSERVE_MASS is off since the operators along different directions +// commute +// --> Meaningful if CONSERVE_MASS is on, in which the symmetry along different directions +// are broken ... +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__global__ +void CUFLU_ELBDMSolver_HamiltonJacobi( real g_Fluid_In [][FLU_NIN ][ CUBE(HYB_NXT) ], +# ifdef GAMER_DEBUG + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], +# else + real g_Fluid_Out[][FLU_NIN ][ CUBE(PS2) ], +# endif + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const bool g_IsCompletelyRefined[], + const bool g_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ) +#else +void CPU_ELBDMSolver_HamiltonJacobi( real g_Fluid_In [][FLU_NIN ][ CUBE(HYB_NXT)], +# ifdef GAMER_DEBUG + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], +# else + real g_Fluid_Out[][FLU_NIN ][ CUBE(PS2) ], +# endif + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const bool g_IsCompletelyRefined[], + const bool g_HasWaveCounterpart[][ CUBE(HYB_NXT) ], + const int NPatchGroup, + const real dt, const real dh, const real Eta, const bool StoreFlux, + const bool XYZ, const real MinDens ) +#endif +{ + +# ifdef __CUDACC__ +// parameter useless when GPU is used + const int NPatchGroup = NULL_INT; +# else + const real _dh = real(1.0)/dh; +# endif + + if ( XYZ ) + { + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, g_IsCompletelyRefined, g_HasWaveCounterpart, NPatchGroup, dt, _dh, Eta, StoreFlux, + 0, 0, false, 0, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, g_IsCompletelyRefined, g_HasWaveCounterpart, NPatchGroup, dt, _dh, Eta, StoreFlux, + HYB_GHOST_SIZE, 0, false, 3, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, g_IsCompletelyRefined, g_HasWaveCounterpart, NPatchGroup, dt, _dh, Eta, StoreFlux, + HYB_GHOST_SIZE, HYB_GHOST_SIZE, true, 6, MinDens ); + } + else + { + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, g_IsCompletelyRefined, g_HasWaveCounterpart, NPatchGroup, dt, _dh, Eta, StoreFlux, + 0, 0, false, 6, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, g_IsCompletelyRefined, g_HasWaveCounterpart, NPatchGroup, dt, _dh, Eta, StoreFlux, + 0, HYB_GHOST_SIZE, false, 3, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, g_IsCompletelyRefined, g_HasWaveCounterpart, NPatchGroup, dt, _dh, Eta, StoreFlux, + HYB_GHOST_SIZE, HYB_GHOST_SIZE, true, 0, MinDens ); + } + +} // FUNCTION : CUFLU_ELBDMSolver_HamiltonJacobi + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUFLU_Advance +// Description : Use CPU/GPU to advance solutions by one time-step +// +// Note : 1. Based on solving the continuity equation via upwinding and higher-order flux reconstruction and the Hamilton-Jacobi equation via upwinding with higher-order central differences +// 2. Prefix "g" for pointers pointing to the "Global" memory space +// Prefix "s" for pointers pointing to the "Shared" memory space +// 3. The direction of the one dimensional sweep is determined by the input parameter "XYZ" +// +// Parameter : g_Fluid_In : Global memory array storing the input variables +// g_Fluid_Out : Global memory array to store the output variables +// g_Flux : Global memory array to store the output fluxes (useful only if StoreFlux == true) +// g_IsCompletelyRefined : Global memory array storing whether PG is completely refined +// g_HasWaveCounterpart : Global memory array storing which cells have wave counterpart +// dt : Time interval to advance solution +// _dh : 1 / grid size +// Eta : Particle mass / Planck constant +// StoreFlux : true --> store the coarse-fine fluxes +// --> useful only if CONSERVE_MASS is defined +// j_gap : Number of useless grids on each side in the j direction (j may not be equal to y) +// k_gap : Number of useless grids on each side in the k direction (k mya not be equal to z) +// s_In : Shared memory array to store the input data and the solutions at different times +// s_Flux : Shared memory array to store the boundary fluxes +// s_HasWaveCounterpart : Shared memory array to store where cells have wave counterpart +// FinalOut : true --> store the updated data to g_Fluid_Out +// XYZ : 0 : Update the solution in the x direction +// 3 : Update the solution in the y direction +// 6 : Update the solution in the z direction +// --> This parameter is also used to determine the place to store the output fluxes +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +GPU_DEVICE +void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(HYB_NXT) ], +# ifdef GAMER_DEBUG + real g_Fluid_Out[][FLU_NOUT ][ CUBE(PS2) ], +# else + real g_Fluid_Out[][FLU_NIN ][ CUBE(PS2) ], +# endif + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const bool g_IsCompletelyRefined[], + const bool g_HasWaveCounterpart [][ CUBE(HYB_NXT) ], + int NPatchGroup, + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const uint j_gap, const uint k_gap, + const bool FinalOut, + const int XYZ, const real MinDens ) +{ + + const real dh = real(1.0)/_dh; // grid spacing + const real Coeff1 = real(1.0) * dt /(dh * Eta); // coefficient for continuity equation + const real Coeff2 = real(0.5) * dt /(dh * dh * Eta); // coefficient for HJ-equation + + const uint size_j = HYB_NXT - 2 * j_gap; // number of y-columns to be updated + const uint size_k = HYB_NXT - 2 * k_gap; // number of z-columns to be updated + const uint NColumnTotal = size_j * size_k; // total number of data columns to be updated + const uint NThread = CGPU_FLU_BLOCK_SIZE_X * CGPU_FLU_BLOCK_SIZE_Y; // total number of threads in thread block + + +// openmp pragma for the CPU solver +# ifndef __CUDACC__ +# pragma omp parallel +# endif + { +//###OPTIMIZATION: change the order of different dimensions to [N_TIME_LEVELS + 1][FLU_NIN][CGPU_FLU_BLOCK_SIZE_Y][HYB_NXT] +// create memories for columns of various intermediate fields on stack or shared GPU memory + CGPU_SHARED real s_In [CGPU_FLU_BLOCK_SIZE_Y][ELBDM_HJ_RK_ORDER+1][FLU_NIN][HYB_NXT]; + CGPU_SHARED int s_HasWaveCounterpart[CGPU_FLU_BLOCK_SIZE_Y] [HYB_NXT]; // booleans indicating where to switch to first-order + +# ifdef CONSERVE_MASS + CGPU_SHARED real s_Flux [CGPU_FLU_BLOCK_SIZE_Y] [HYB_NXT]; // the average density fluxes +# endif + +# ifdef __CUDACC__ +// use two-dimensional thread blocks in GPU mode + const uint tx = threadIdx.x; + const uint ty = threadIdx.y; + const uint tid = ty * CGPU_FLU_BLOCK_SIZE_X + tx; // thread ID within block + const int bx = blockIdx.x; +# else +// every block just has a single thread with temporary memory on the stack in CPU mode + const uint tx = 0; + const uint ty = 0; + const uint tid = 0; +// in CPU mode, every thread works on one patch group at a time and corresponds to one block in the grid of the GPU solver +# pragma omp for schedule( runtime ) + for (int bx=0; bx M_PI )) { +// compute real and imaginary parts + const real Re_c = SQRT(s_In[sj][0][DENS][si ]) * COS(s_In[sj][0][PHAS][si ]); + const real Re_p1 = SQRT(s_In[sj][0][DENS][si + 1]) * COS(s_In[sj][0][PHAS][si + 1]); + const real Re_m1 = SQRT(s_In[sj][0][DENS][si - 1]) * COS(s_In[sj][0][PHAS][si - 1]); + const real Im_c = SQRT(s_In[sj][0][DENS][si ]) * SIN(s_In[sj][0][PHAS][si ]); + const real Im_p1 = SQRT(s_In[sj][0][DENS][si + 1]) * SIN(s_In[sj][0][PHAS][si + 1]); + const real Im_m1 = SQRT(s_In[sj][0][DENS][si - 1]) * SIN(s_In[sj][0][PHAS][si - 1]); +// compute laplacians + const real Re_Lap = Re_p1 - 2 * Re_c + Re_m1; + const real Im_Lap = Im_p1 - 2 * Im_c + Im_m1; +// second-order centered in space forward in time wave equation update + const real Re_New = Re_c - Coeff2 * Im_Lap; + const real Im_New = Im_c + Coeff2 * Re_Lap; +// convert back to phase and match to old phase + Ph_New = EQUALISE( Ph_Old, SATAN2(Im_New, Re_New) ); + De_New = SQR(Re_New) + SQR(Im_New); + + +# ifdef CONSERVE_MASS +// 4.1.2 set fluxes of cells where fluid scheme fails to zero + s_Flux[sj][si] = 0; + if ( si == HYB_NXT - HYB_GHOST_SIZE - 1) { + s_Flux[sj][si + 1] = 0; + } +# endif + } // if ( s_HasWaveCounterpart[sj][si] && ... ) + + if ( FinalOut ) + { +// apply the the minimum density check + De_New = (De_New < MinDens) ? MinDens : De_New; + + Idx2 = get1D2( k, j, si, XYZ ); + + g_Fluid_Out[bx][DENS][Idx2] = De_New; + g_Fluid_Out[bx][PHAS][Idx2] = Ph_New; +# ifdef GAMER_DEBUG + g_Fluid_Out[bx][STUB][Idx2] = s_HasWaveCounterpart[sj][si]; +# endif + } else { + Idx1 = get1D1( k, j, si, XYZ ); + + g_Fluid_In[bx][DENS][Idx1] = De_New; + g_Fluid_In[bx][PHAS][Idx1] = Ph_New; + } + + } // CELL_LOOP(HYB_NXT, HYB_GHOST_SIZE, HYB_GHOST_SIZE) + +# ifdef __CUDACC__ + __syncthreads(); +# endif + +// 4.2 write shared memory flux arrays back to global memory +# ifdef CONSERVE_MASS + CELL_LOOP(HYB_NXT, HYB_GHOST_SIZE, HYB_GHOST_SIZE) + { + if ( StoreFlux && tx == 0 ) + if ( k >= HYB_GHOST_SIZE && k < HYB_NXT-HYB_GHOST_SIZE ) + if ( j >= HYB_GHOST_SIZE && j < HYB_NXT-HYB_GHOST_SIZE ) + { + Idx3 = ( k - HYB_GHOST_SIZE ) * PS2 + ( j - HYB_GHOST_SIZE ); + + g_Flux[bx][XYZ+0][0][Idx3] = s_Flux[ty][ 0 + HYB_GHOST_SIZE] / Eta; + g_Flux[bx][XYZ+1][0][Idx3] = s_Flux[ty][PS1 + HYB_GHOST_SIZE] / Eta; + g_Flux[bx][XYZ+2][0][Idx3] = s_Flux[ty][PS2 + HYB_GHOST_SIZE] / Eta; + } + } + +# ifdef __CUDACC__ + __syncthreads(); +# endif +# endif // # ifdef CONSERVE_MASS + +// 4.3 update remaining number of columns + Column0 += NColumnOnce; + NColumnOnce = MIN( NColumnTotal - Column0, CGPU_FLU_BLOCK_SIZE_Y ); + + } // while ( Column0 < NColumnTotal ) + } // for (int bx=0; bx BEFORE "Macro.h" to avoid conflicting definition of the symbolic constant "REAL" +// --> for example, it's also defined in "openmpi-1.4.3-qlc/include/openmpi/ompi/mpi/cxx/constants.h(119)" +#if ( !defined __CUDACC__ && !defined SERIAL ) +#include +#endif + +#include "CUPOT.h" + +#if ( MODEL == ELBDM && defined GRAVITY ) + + + + +//----------------------------------------------------------------------------------------- +// Function : CPU/CUPOT_ELBDMGravitySolver +// Description : CPU/GPU ELBDM gravity solver for advancing wave function by exp( -i*Eta*(Phi+Lambda*Rho)*dt ) +// +// Note : 1. ELBDM gravity solver requires NO potential and fluid ghost zone +// --> Optimized performance can be achieved if GRA_GHOST_SIZE==0 (and thus GRA_NXT==PATCH_SIZE) +// --> But the code supports GRA_GHOST_SIZE>0 as well +// --> Mainly for the STORE_POT_GHOST option +// 2. ELBDM gravity solver does NOT need the density information (if QUARTIC_SELF_INTERACTION is off) +// --> DENS component will NOT be sent in and out in this solver +// --> GRA_NIN==2 (only store the real and imaginary parts) +// --> If QUARTIC_SELF_INTERACTION is on, the density is *calculated* here to be REAL^2+IMAG^2 +// 3. Arrays with a prefix "g_" are stored in the global memory of GPU +// 4. No GPU shared memory is used in this kernel since no computational stencil is required +// and hence no data needed to be shared +// +// +// Parameter : g_Flu_Array : Array to store the input and output data +// g_Pot_Array : Array storing the input potential for evaluating the gravitational acceleration +// NPatchGroup : Number of patch groups to be evaluated (for CPU only) +// EtaDt : Particle mass / Planck constant * dt +// dh : Cell size +// Lambda : Quartic self-interaction coefficient in ELBDM +// +// Return : g_Flu_Array[] +//----------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__global__ +void CUPOT_ELBDMGravitySolver( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const real EtaDt, const real dh, const real Lambda ) +#else +void CPU_ELBDMGravitySolver ( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const int NPatchGroup, + const real EtaDt, const real dh, const real Lambda ) +#endif +{ + + const int PS1_sqr = SQR(PS1); + + +// loop over all patches +// --> CPU/GPU solver: use different (OpenMP threads) / (CUDA thread blocks) +// to work on different patches +# ifdef __CUDACC__ + const int P = blockIdx.x; +# else +# pragma omp parallel for schedule( runtime ) + for (int P=0; P BEFORE "Macro.h" to avoid conflicting definition of the symbolic constant "REAL" +// --> for example, it's also defined in "openmpi-1.4.3-qlc/include/openmpi/ompi/mpi/cxx/constants.h(119)" +#if ( !defined __CUDACC__ && !defined SERIAL ) +#include +#endif + +#include "CUPOT.h" + +#if ( MODEL == ELBDM && defined GRAVITY && ELBDM_SCHEME == ELBDM_HYBRID ) + + + + +//----------------------------------------------------------------------------------------- +// Function : CPU/CUPOT_ELBDMGravitySolver_HamiltonJacobi +// Description : CPU/GPU ELBDM gravity solver for advancing the phase S by S = S - Eta*(Phi + Lambda*Rho)*dt +// +// Note : 1. ELBDM gravity solver requires NO potential and fluid ghost zone +// --> Optimized performance can be achieved if GRA_GHOST_SIZE==0 (and thus GRA_NXT==PATCH_SIZE) +// --> But the code supports GRA_GHOST_SIZE>0 as well +// --> Mainly for the STORE_POT_GHOST option +// 2. ELBDM gravity solver does only need the density information if QUARTIC_SELF_INTERACTION is on +// --> GRA_NIN==2 (only store the density and phase) +// 3. Arrays with a prefix "g_" are stored in the global memory of GPU +// 4. No GPU shared memory is used in this kernel since no computational stencil is required +// and hence no data needed to be shared +// +// Parameter : g_Flu_Array : Array to store the input and output data +// g_Pot_Array : Array storing the input potential for evaluating the gravitational acceleration +// NPatchGroup : Number of patch groups to be evaluated (for CPU only) +// EtaDt : Particle mass / Planck constant * dt +// dh : Cell size +// Lambda : Quartic self-interaction coefficient in ELBDM +// +// Return : g_Flu_Array[] +//----------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__global__ +void CUPOT_ELBDMGravitySolver_HamiltonJacobi( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const real EtaDt, const real dh, const real Lambda ) +#else +void CPU_ELBDMGravitySolver_HamiltonJacobi ( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const int NPatchGroup, + const real EtaDt, const real dh, const real Lambda ) +#endif +{ + + const int PS1_sqr = SQR(PS1); + +// loop over all patches +// --> CPU/GPU solver: use different (OpenMP threads) / (CUDA thread blocks) +// to work on different patches +# ifdef __CUDACC__ + const int P = blockIdx.x; +# else +# pragma omp parallel for schedule( runtime ) + for (int P=0; Puse_wave_flag[lv] ) { + if ( WaveLevel == -1 ) WaveLevel = lv; // store the first level using wave scheme + WavePatchCount += NPatch; + } + + TotalPatchCount += NPatch; + } + + +// output to file + const double TotalVolume = NPatchTotal[0] * CUBE( amr->dh[0] ); + const double WaveVolume = ( WaveLevel == -1 ) ? 0.0 : NPatchTotal[WaveLevel] * CUBE( amr->dh[WaveLevel] ); + + File = fopen( FileName, "a" ); + fprintf( File, "%14.7e %8ld %10ld %9d %17.4f %17.4f\n", + Time[0], Step, TotalPatchCount, WaveLevel, (double)WavePatchCount/(double)TotalPatchCount, WaveVolume/TotalVolume ); + fclose( File ); + + + if ( FirstTime ) FirstTime = false; + +} // FUNCTION : ELBDM_Aux_Record_Hybrid + + + +#endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) diff --git a/src/Model_ELBDM/ELBDM_Flag_EngyDensity.cpp b/src/Model_ELBDM/ELBDM_Flag_EngyDensity.cpp new file mode 100644 index 0000000000..5b5fa7bfb7 --- /dev/null +++ b/src/Model_ELBDM/ELBDM_Flag_EngyDensity.cpp @@ -0,0 +1,79 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_Flag_EngyDensity +// Description : Flag according to the energy density criterion +// +// Note : 1. Flag the input cell if its energy density exceeds Angle^2 +// 2. A soften factor "Eps" is added to the denominator when evaluating energy density +// to prevent flagging in the extremely low density region +// 3. Size of the input arrays "Real & Imag" should be PATCH_SIZE^3 +// +// Parameter : i,j,k : Indices of the target cell in the arrays "Real & Imag" +// Real_Array : Real -part array of the target patch +// Imag_Array : Imaginary-part array of the target patch +// Angle_2pi : Angle/2/PI (refinement threshold = Angle^2) +// Eps : Soften factor +// +// Return : "true" if the flag criterion is fulfilled +// "false" if the flag criterion is NOT fulfilled +//------------------------------------------------------------------------------------------------------- +bool ELBDM_Flag_EngyDensity( const int i, const int j, const int k, const real Real_Array[], + const real Imag_Array[], const double Angle_2pi, const double Eps ) +{ + +// check +# ifdef GAMER_DEBUG + if ( i < 0 || i >= PS1 || j < 0 || j >= PS1 || k < 0 || k >= PS1 ) + Aux_Error( ERROR_INFO, "incorrect index (i,j,k) = (%d,%d,%d) !!\n", i, j, k ); +# endif + + + const double Angle = Angle_2pi*2.0*M_PI; + const double Threshold = Angle*Angle; + const int ijk[3] = { i, j, k }; + const int Idx = k*PS1*PS1 + j*PS1 + i; + const int dIdx[3] = { 1, PS1, PS1*PS1 }; + const real Real = Real_Array[Idx]; + const real Imag = Imag_Array[Idx]; + const real Deno = Real*Real + Imag*Imag + Eps; + + int Idx_p, Idx_m; + real _dh, Grad_Real[3], Grad_Imag[3], Nume, EngyDensity; + bool Flag; + + +// evaluate gradients + for (int d=0; d<3; d++) + { + switch ( ijk[d] ) + { + case 0 : Idx_m = Idx; Idx_p = Idx+dIdx[d]; _dh = (real)1.0; break; + case PS1-1 : Idx_m = Idx-dIdx[d]; Idx_p = Idx; _dh = (real)1.0; break; + default : Idx_m = Idx-dIdx[d]; Idx_p = Idx+dIdx[d]; _dh = (real)0.5; break; + } + + Grad_Real[d] = _dh*( Real_Array[Idx_p] - Real_Array[Idx_m] ); + Grad_Imag[d] = _dh*( Imag_Array[Idx_p] - Imag_Array[Idx_m] ); + + } // for (int d=0; d<3; d++) + + +// evaluate energy density and check the flag criterion + Nume = Grad_Real[0]*Grad_Real[0] + Grad_Real[1]*Grad_Real[1] + Grad_Real[2]*Grad_Real[2] + + Grad_Imag[0]*Grad_Imag[0] + Grad_Imag[1]*Grad_Imag[1] + Grad_Imag[2]*Grad_Imag[2]; + EngyDensity = Nume/Deno; + Flag = EngyDensity > Threshold; + + return Flag; + +} // FUNCTION : ELBDM_Flag_EngyDensity + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/ELBDM_Flag_Interference.cpp b/src/Model_ELBDM/ELBDM_Flag_Interference.cpp new file mode 100644 index 0000000000..7f3f385f62 --- /dev/null +++ b/src/Model_ELBDM/ELBDM_Flag_Interference.cpp @@ -0,0 +1,94 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_Flag_Interference +// Description : Flag according to the interference criterion +// +// Note : 1. Flag the input cell if one of the following criteria is met: +// - minimum density + quantum pressure + local extremum in density field +// - second derivative in phase + local extremum in phase field +// 2. Size of the input array "Var1D" should be 2*(PS1+2)^3 +// +// Parameter : i,j,k : Indices of the target cell in the array "Var1D" +// Var1D : Input array holding the density and phase field +// QPThreshold : Refinement threshold for quantum pressure +// Refines when dimensionless quantum pressure in any dimension exceeds QPThreshold + (DensThreshold and OnlyAtExtrema if set) +// Ensure stability and correctness of hybrid scheme by refining regions where fluid approach produces high errors and fails to wave scheme +// QPThreshold <= 0.03 avoids spurious halos and yields good agreement with wave-only simulations +// DensThreshold : Minimum density at which to check quantum pressure threshold +// Should be set to zero by default, but can be used to avoid refinement of low-density regions with small density oscillations +// Use values > 0 with care since they may lead to instability. +// LapPhaseThreshold : Refinement threshold for second derivative of phase field +// Refines when dimensionless second derivative of phase in any dimension exceeds LapPhaseThreshold +// OnlyAtExtrema : Boolean flag indicating whether only extrema are refined +// Should be set to False, but can be used to avoid refinement of regions with high quantum pressure and phase curvature without destructive interference +// The motivation behind this flag is that destructive interference where the fluid scheme fails happens at extrema of the density and phase fields +// Use with care since it has been shown to lead to instability in some cases +// +// Return : "true" if the flag criterion is fulfilled +// "false" if the flag criterion is NOT fulfilled +//------------------------------------------------------------------------------------------------------- +bool ELBDM_Flag_Interference( const int i, const int j, const int k, const real Var1D[], const double QPThreshold, + const double DensThreshold, const double LapPhaseThreshold, const bool OnlyAtExtrema ) +{ + +// check +# ifdef GAMER_DEBUG + if ( i < 0 || i >= PS1 || j < 0 || j >= PS1 || k < 0 || k >= PS1 ) + Aux_Error( ERROR_INFO, "incorrect index (i,j,k) = (%d,%d,%d) !!\n", i, j, k ); +# endif + + + const int NGhost = 1; + const int NCell = PS1 + 2*NGhost; // size of the array Var + + int ii, jj, kk, iim, jjm, kkm, iip, jjp, kkp; + + +// convert the 1D array + real (*Var)[NCell][NCell][NCell] = ( real(*)[NCell][NCell][NCell] )Var1D; + + kk = k + NGhost; kkp = kk + 1; kkm = kk - 1; + jj = j + NGhost; jjp = jj + 1; jjm = jj - 1; + ii = i + NGhost; iip = ii + 1; iim = ii - 1; + + +// check minimum density + const bool DensCond = ( Var[0][kk][jj][ii] > DensThreshold ); + + +// check whether density and phase fields have local extrema + const bool DensChangeSignX = ( !OnlyAtExtrema ) || ( ( Var[0][kk ][jj ][iip] - Var[0][kk][jj][ii] ) * ( Var[0][kk][jj][ii] - Var[0][kk ][jj ][iim] ) < 0.0 ); + const bool DensChangeSignY = ( !OnlyAtExtrema ) || ( ( Var[0][kk ][jjp][ii ] - Var[0][kk][jj][ii] ) * ( Var[0][kk][jj][ii] - Var[0][kk ][jjm][ii ] ) < 0.0 ); + const bool DensChangeSignZ = ( !OnlyAtExtrema ) || ( ( Var[0][kkp][jj ][ii ] - Var[0][kk][jj][ii] ) * ( Var[0][kk][jj][ii] - Var[0][kkm][jj ][ii ] ) < 0.0 ); + const bool PhaseChangeSignX = ( !OnlyAtExtrema ) || ( ( Var[1][kk ][jj ][iip] - Var[1][kk][jj][ii] ) * ( Var[1][kk][jj][ii] - Var[1][kk ][jj ][iim] ) < 0.0 ); + const bool PhaseChangeSignY = ( !OnlyAtExtrema ) || ( ( Var[1][kk ][jjp][ii ] - Var[1][kk][jj][ii] ) * ( Var[1][kk][jj][ii] - Var[1][kk ][jjm][ii ] ) < 0.0 ); + const bool PhaseChangeSignZ = ( !OnlyAtExtrema ) || ( ( Var[1][kkp][jj ][ii ] - Var[1][kk][jj][ii] ) * ( Var[1][kk][jj][ii] - Var[1][kkm][jj ][ii ] ) < 0.0 ); + + +// compute second derivative of phase field + const bool LapPhaseX = PhaseChangeSignX && ( FABS( Var[1][kk ][jj ][iip] - (real)2.0*Var[1][kk][jj][ii] + Var[1][kk ][jj ][iim] ) > LapPhaseThreshold ); + const bool LapPhaseY = PhaseChangeSignY && ( FABS( Var[1][kk ][jjp][ii ] - (real)2.0*Var[1][kk][jj][ii] + Var[1][kk ][jjm][ii ] ) > LapPhaseThreshold ); + const bool LapPhaseZ = PhaseChangeSignZ && ( FABS( Var[1][kkp][jj ][ii ] - (real)2.0*Var[1][kk][jj][ii] + Var[1][kkm][jj ][ii ] ) > LapPhaseThreshold ); + + +// compute quantum pressure + const real SqrtRhoC = SQRT( MAX( Var[0][kk][jj][ii], TINY_NUMBER ) ); + + const bool QPX = DensCond && DensChangeSignX && ( FABS( SQRT(Var[0][kk ][jj ][iip]) - (real)2.0*SqrtRhoC + SQRT(Var[0][kk ][jj ][iim]) ) / SqrtRhoC > QPThreshold ); + const bool QPY = DensCond && DensChangeSignY && ( FABS( SQRT(Var[0][kk ][jjp][ii ]) - (real)2.0*SqrtRhoC + SQRT(Var[0][kk ][jjm][ii ]) ) / SqrtRhoC > QPThreshold ); + const bool QPZ = DensCond && DensChangeSignZ && ( FABS( SQRT(Var[0][kkp][jj ][ii ]) - (real)2.0*SqrtRhoC + SQRT(Var[0][kkm][jj ][ii ]) ) / SqrtRhoC > QPThreshold ); + + + return ( QPX || QPY || QPZ || LapPhaseX || LapPhaseY || LapPhaseZ ); + +} // FUNCTION : ELBDM_Flag_Interference + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp b/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp new file mode 100644 index 0000000000..811981d67b --- /dev/null +++ b/src/Model_ELBDM/ELBDM_Flag_Spectral.cpp @@ -0,0 +1,129 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + +#include + +#define flag_spectral_float double +typedef std::complex complex_type; +typedef std::complex flag_spectral_complex_type; + + +// GramFE parameters for extension of size 14 +#define FLAG_SPECTRAL_ORDER 14 +#define FLAG_SPECTRAL_NDELTA 14 +#define FLAG_SPECTRAL_ND 32 + +const static flag_spectral_float Flag_Spectral_Polynomials[FLAG_SPECTRAL_ORDER][FLAG_SPECTRAL_NDELTA] = { +{0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000, 0.2672612419124243965384835064469370990991592407226562500000000000}, +{-0.4309458036856673168735198942158604040741920471191406250000000000, -0.3646464492724877382023862537607783451676368713378906250000000000, -0.2983470948593081595312526133056962862610816955566406250000000000, -0.2320477404461285531045433572217007167637348175048828125000000000, -0.1657483860329489744334097167666186578571796417236328125000000000, -0.0994490316197693818844882684970798436552286148071289062500000000, -0.0331496772065897962744607241347694071009755134582519531250000000, 0.0331496772065897962744607241347694071009755134582519531250000000, 0.0994490316197693818844882684970798436552286148071289062500000000, 0.1657483860329489744334097167666186578571796417236328125000000000, 0.2320477404461285531045433572217007167637348175048828125000000000, 0.2983470948593081595312526133056962862610816955566406250000000000, 0.3646464492724877382023862537607783451676368713378906250000000000, 0.4309458036856673168735198942158604040741920471191406250000000000}, +{0.4818120558297157574045854744326788932085037231445312500000000000, 0.2594372608313854078332383323868270963430404663085937500000000000, 0.0741249316661101165237823806819505989551544189453125000000000000, -0.0741249316661101165237823806819505989551544189453125000000000000, -0.1853123291652752913094559517048764973878860473632812500000000000, -0.2594372608313854078332383323868270963430404663085937500000000000, -0.2964997266644404660951295227278023958206176757812500000000000000, -0.2964997266644404660951295227278023958206176757812500000000000000, -0.2594372608313854078332383323868270963430404663085937500000000000, -0.1853123291652752913094559517048764973878860473632812500000000000, -0.0741249316661101165237823806819505989551544189453125000000000000, 0.0741249316661101165237823806819505989551544189453125000000000000, 0.2594372608313854078332383323868270963430404663085937500000000000, 0.4818120558297157574045854744326788932085037231445312500000000000}, +{-0.4585783658733355583336788185988552868366241455078125000000000000, -0.0352752589133335028859228543751669349148869514465332031250000000, 0.2116515534800010311933249340654583647847175598144531250000000000, 0.3142704885006075699038774473592638969421386718750000000000000000, 0.3046499633424257225122744330292334780097007751464843750000000000, 0.2148583951993949803238592721754685044288635253906250000000000000, 0.0769642012654549179107021927848109044134616851806640625000000000, -0.0769642012654549179107021927848109044134616851806640625000000000, -0.2148583951993949803238592721754685044288635253906250000000000000, -0.3046499633424257225122744330292334780097007751464843750000000000, -0.3142704885006075699038774473592638969421386718750000000000000000, -0.2116515534800010311933249340654583647847175598144531250000000000, 0.0352752589133335028859228543751669349148869514465332031250000000, 0.4585783658733355583336788185988552868366241455078125000000000000}, +{0.3875694570442999031811837085115257650613784790039062500000000000, -0.2086912461007768837539799733349354937672615051269531250000000000, -0.3577564218870460943655587016110075637698173522949218750000000000, -0.2493453849515775699874353676932514645159244537353515625000000000, -0.0352335870040272683412219123511022189632058143615722656250000000, 0.1707473831733629099360882719338405877351760864257812500000000000, 0.2927097997257649963920300706377020105719566345214843750000000000, 0.2927097997257649963920300706377020105719566345214843750000000000, 0.1707473831733629099360882719338405877351760864257812500000000000, -0.0352335870040272683412219123511022189632058143615722656250000000, -0.2493453849515775699874353676932514645159244537353515625000000000, -0.3577564218870460943655587016110075637698173522949218750000000000, -0.2086912461007768837539799733349354937672615051269531250000000000, 0.3875694570442999031811837085115257650613784790039062500000000000}, +{-0.2948961391092899120280890201684087514877319335937500000000000000, 0.3856334126813791285393051566643407568335533142089843750000000000, 0.2722118207162676495336484094877960160374641418457031250000000000, -0.0577419013640567690970328840194270014762878417968750000000000000, -0.2866472960572818418079066304926527664065361022949218750000000000, -0.2990205606352939748937558306352002546191215515136718750000000000, -0.1237326457801216500476115811579802539199590682983398437500000000, 0.1237326457801216500476115811579802539199590682983398437500000000, 0.2990205606352939748937558306352002546191215515136718750000000000, 0.2866472960572818418079066304926527664065361022949218750000000000, 0.0577419013640567690970328840194270014762878417968750000000000000, -0.2722118207162676495336484094877960160374641418457031250000000000, -0.3856334126813791285393051566643407568335533142089843750000000000, 0.2948961391092899120280890201684087514877319335937500000000000000}, +{0.2027563273040598468277551091887289658188819885253906250000000000, -0.4523025762936719873508195632894057780504226684570312500000000000, -0.0155966405618507587826915283812923007644712924957275390625000000, 0.3218579461400111196844875394162954762578010559082031250000000000, 0.2623071367220354832561213243025122210383415222167968750000000000, -0.0354469103678426294967707121941202785819768905639648437500000000, -0.2835752829427410359741656975529622286558151245117187500000000000, -0.2835752829427410359741656975529622286558151245117187500000000000, -0.0354469103678426294967707121941202785819768905639648437500000000, 0.2623071367220354832561213243025122210383415222167968750000000000, 0.3218579461400111196844875394162954762578010559082031250000000000, -0.0155966405618507587826915283812923007644712924957275390625000000, -0.4523025762936719873508195632894057780504226684570312500000000000, 0.2027563273040598468277551091887289658188819885253906250000000000}, +{-0.1257441362172087295778766247167368419468402862548828125000000000, 0.4159229121030749709575502492953091859817504882812500000000000000, -0.2611608982972796755284150549414334818720817565917968750000000000, -0.3104033572354872316800822318327846005558967590332031250000000000, 0.0835363142701736199891016099172702524811029434204101562500000000, 0.3297486089612116644254058428487041965126991271972656250000000000, 0.1758659247793128987957800291042076423764228820800781250000000000, -0.1758659247793128987957800291042076423764228820800781250000000000, -0.3297486089612116644254058428487041965126991271972656250000000000, -0.0835363142701736199891016099172702524811029434204101562500000000, 0.3104033572354872316800822318327846005558967590332031250000000000, 0.2611608982972796755284150549414334818720817565917968750000000000, -0.4159229121030749709575502492953091859817504882812500000000000000, 0.1257441362172087295778766247167368419468402862548828125000000000}, +{0.0699086407042275592704783093722653575241565704345703125000000000, -0.3172776770422635062018912321946118026971817016601562500000000000, 0.4248294319718443623479231519013410434126853942871093750000000000, 0.0376431142253532968755536103344638831913471221923828125000000000, -0.3495432035211377685968159312324132770299911499023437500000000000, -0.1344396936619760840603277074478683061897754669189453125000000000, 0.2688793873239521681206554148957366123795509338378906250000000000, 0.2688793873239521681206554148957366123795509338378906250000000000, -0.1344396936619760840603277074478683061897754669189453125000000000, -0.3495432035211377685968159312324132770299911499023437500000000000, 0.0376431142253532968755536103344638831913471221923828125000000000, 0.4248294319718443623479231519013410434126853942871093750000000000, -0.3172776770422635062018912321946118026971817016601562500000000000, 0.0699086407042275592704783093722653575241565704345703125000000000}, +{-0.0344591278812576007339885109104216098785400390625000000000000000, 0.2041040651428334962158572807311429642140865325927734375000000000, -0.4320644495880761049022567021893337368965148925781250000000000000, 0.2836251294841972137028562883642734959721565246582031250000000000, 0.2359124908793789887617720069101778790354728698730468750000000000, -0.2783237251947729418155574876436730846762657165527343750000000000, -0.2385631930240910969498457916415645740926265716552734375000000000, 0.2385631930240910969498457916415645740926265716552734375000000000, 0.2783237251947729418155574876436730846762657165527343750000000000, -0.2359124908793789887617720069101778790354728698730468750000000000, -0.2836251294841972137028562883642734959721565246582031250000000000, 0.4320644495880761049022567021893337368965148925781250000000000000, -0.2041040651428334962158572807311429642140865325927734375000000000, 0.0344591278812576007339885109104216098785400390625000000000000000}, +{0.0147897728358395794817647939112248423043638467788696289062500000, -0.1103544588520337932369130840015714056789875030517578125000000000, 0.3276503520555230086763742747280048206448554992675781250000000000, -0.4459685347422396306527048182033468037843704223632812500000000000, 0.1422093541907651914613097687833942472934722900390625000000000000, 0.3174112785537879233288549585267901420593261718750000000000000000, -0.2457377640416422426294928982315468601882457733154296875000000000, -0.2457377640416422426294928982315468601882457733154296875000000000, 0.3174112785537879233288549585267901420593261718750000000000000000, 0.1422093541907651914613097687833942472934722900390625000000000000, -0.4459685347422396306527048182033468037843704223632812500000000000, 0.3276503520555230086763742747280048206448554992675781250000000000, -0.1103544588520337932369130840015714056789875030517578125000000000, 0.0147897728358395794817647939112248423043638467788696289062500000}, +{-0.0053617479838052716639706929413478064816445112228393554687500000, 0.0490806161594482537324779514165129512548446655273437500000000000, -0.1913731588065881450422267562316847033798694610595703125000000000, 0.3992440037171925415471207543305354192852973937988281250000000000, -0.4310020494674237645504888405412202700972557067871093750000000000, 0.0952741372506936690101042586320545524358749389648437500000000000, 0.3266541848595211350314571063790936022996902465820312500000000000, -0.3266541848595211350314571063790936022996902465820312500000000000, -0.0952741372506936690101042586320545524358749389648437500000000000, 0.4310020494674237645504888405412202700972557067871093750000000000, -0.3992440037171925415471207543305354192852973937988281250000000000, 0.1913731588065881450422267562316847033798694610595703125000000000, -0.0490806161594482537324779514165129512548446655273437500000000000, 0.0053617479838052716639706929413478064816445112228393554687500000}, +{0.0015503894602372355823738381275234132772311568260192871093750000, -0.0170542840626095905387504814143539988435804843902587890625000000, 0.0837210308528107266523576868166856002062559127807617187500000000, -0.2387599768765342744814006437081843614578247070312500000000000000, 0.4263571015652398155104663146630628034472465515136718750000000000, -0.4604656696904589896490733735845424234867095947265625000000000000, 0.2046514087513151003427935847867047414183616638183593750000000000, 0.2046514087513151003427935847867047414183616638183593750000000000, -0.4604656696904589896490733735845424234867095947265625000000000000, 0.4263571015652398155104663146630628034472465515136718750000000000, -0.2387599768765342744814006437081843614578247070312500000000000000, 0.0837210308528107266523576868166856002062559127807617187500000000, -0.0170542840626095905387504814143539988435804843902587890625000000, 0.0015503894602372355823738381275234132772311568260192871093750000}, +{-0.0003100778920474471056327459006496383153717033565044403076171875, 0.0040310125966168128611166743269222934031859040260314941406250000, -0.0241860755797008754319765699847266660071909427642822265625000000, 0.0886822771255698777403964072618691716343164443969726562500000000, -0.2217056928139246874120971142474445514380931854248046875000000000, 0.3990702470650644428928899287711828947067260742187500000000000000, -0.5320936627534192941979540592001285403966903686523437500000000000, 0.5320936627534192941979540592001285403966903686523437500000000000, -0.3990702470650644428928899287711828947067260742187500000000000000, 0.2217056928139246874120971142474445514380931854248046875000000000, -0.0886822771255698777403964072618691716343164443969726562500000000, 0.0241860755797008754319765699847266660071909427642822265625000000, -0.0040310125966168128611166743269222934031859040260314941406250000, 0.0003100778920474471056327459006496383153717033565044403076171875}, +}; + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Prepare_for_Spectral_Criterion +// Description : Evaluate the magnitude of the coefficients of a polynomial expansion of the wave function. +// The coefficients of the polynomials can be shown to decay exponentially for a well-resolved function. +// Therefore, one can check whether the coefficients of the higher-order polynomials are sufficiently small. +// This function checks the polynomial coefficients of order (13 - OPT__FLAG_SPECTRAL_N + 1) to order 13. +// If the function is not well-resolved, they will be large. +// +// Note : 1. This function is called once per patch group by Flag_Real() +// 2. The size of the array Var1D must be PS2 + 2 +// --> Assume a ghost size of 1 +// +// Parameter : Var1D : Array storing the input real and imaginary parts +// Cond : Reference to a floating-point variable storing the magnitude +// of the largest coefficient +// +// Return : Cond +//------------------------------------------------------------------------------------------------------- +void Prepare_for_Spectral_Criterion( const real *Var1D, real& Cond ) +{ + +// set the stride to a small value to sample the wave function evenly + const size_t Stride = 1; + const size_t GhostSize = 1; + const size_t Size1D = PS2 + 2*GhostSize; + const size_t MaxOrder = 14; + const size_t NField = 2; +// number of coefficients to consider for checking whether expansion has converged + const size_t NCutoff = OPT__FLAG_SPECTRAL_N; + + +// check +# ifdef GAMER_DEBUG + if ( NCutoff < 1 || NCutoff > MaxOrder ) + Aux_Error( ERROR_INFO, "OPT__FLAG_SPECTRAL_N = %d outside of valid range [1, %d] !!\n", + OPT__FLAG_SPECTRAL_N, MaxOrder ); +# endif + + const real* Re1D = Var1D; + const real* Im1D = Var1D + CUBE(Size1D); + + real Row[NField][Size1D]; // array for reading input data + +// initialise with 0 + Cond = 0; + +// iterate over 3 dimensions and sample the physical 2D arrays with a stride + for (size_t XYZ=0; XYZ<3; ++XYZ) + for (size_t k=GhostSize; k Physical coordinates : dt = physical time interval +// Comoving coordinates : dt = delta(scale_factor) / ( Hubble_parameter*scale_factor^3 ) +// --> We convert dt back to the physical time interval, which equals "delta(scale_factor)" +// in the comoving coordinates, in Mis_GetTimeStep() +// 2. Time-step is set to restrict the 1D k-space rotation angle to be "DT__FLUID*2*pi" +// +// Parameter : lv : Target refinement level +// +// Return : dt +//------------------------------------------------------------------------------------------------------- +double ELBDM_GetTimeStep_Fluid( const int lv ) +{ + + const double dh = amr->dh[lv]; + double dt; + + dt = 4.0/M_PI*ELBDM_ETA*SQR(dh); +/* +# ifdef GRAVITY + dt = 4.0/3.0/M_PI*ELBDM_ETA*SQR(dh); // 3D k-space rotation angle +# else + dt = 0.5*sqrt(3.0)*ELBDM_ETA*SQR(dh); // CFL condition +# endif +*/ + + dt *= (Step==0) ? DT__FLUID_INIT : DT__FLUID; + + return dt; + +} // FUNCTION : ELBDM_GetTimeStep_Fluid + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/ELBDM_GetTimeStep_Gravity.cpp b/src/Model_ELBDM/ELBDM_GetTimeStep_Gravity.cpp new file mode 100644 index 0000000000..59fb2669cc --- /dev/null +++ b/src/Model_ELBDM/ELBDM_GetTimeStep_Gravity.cpp @@ -0,0 +1,155 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM && defined GRAVITY ) + +#include "CUPOT.h" + +static real GetMaxPot( const int lv ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_GetTimeStep_Gravity +// Description : Estimate the evolution time-step from the ELBDM potential energy solver +// +// Note : 1. This function should be applied to both physical and comoving coordinates and always +// return the evolution time-step (dt) actually used in various solvers +// --> Physical coordinates : dt = physical time interval +// Comoving coordinates : dt = delta(scale_factor) / ( Hubble_parameter*scale_factor^3 ) +// --> We convert dt back to the physical time interval, which equals "delta(scale_factor)" +// in the comoving coordinates, in Mis_GetTimeStep() +// 2. Time-step is set to restrict the real-space rotation angle to be "DT__GRAVITY*2*pi" +// --> dt = DT__GRAVITY*2*pi/Eta/Max(Pot) +// +// Parameter : lv : Target refinement level +// +// Return : dt +//------------------------------------------------------------------------------------------------------- +double ELBDM_GetTimeStep_Gravity( const int lv ) +{ + + real MaxPot; + double dt; + +// get the maximum potential + MaxPot = GetMaxPot( lv ); + +// get the time-step + dt = DT__GRAVITY*2.0*M_PI/(ELBDM_ETA*MaxPot); + + return dt; + +} // FUNCTION : ELBDM_GetTimeStep_Gravity + + + +//------------------------------------------------------------------------------------------------------- +// Function : GetMaxPot +// Description : Get the maximum potential at the target level among all MPI ranks +// +// Note : 1. Invoked by ELBDM_GetTimeStep_Gravity() +// 2. Include gravitational and self-interaction potentials +// +// Parameter : lv : Target refinement level +// +// Return : MaxPot +//------------------------------------------------------------------------------------------------------- +real GetMaxPot( const int lv ) +{ + + real PotG, PotS; // PotG/S: gravitational (both self- and external gravity) / self-interaction potential + real Pot, MaxPot=0.0; // Pot = PotG + PotS + double x0, y0, z0, x, y, z; + int SibPID; + bool Skip, AnyCell=false; + + +// get the maximum potential in this rank +# pragma omp parallel for private( PotG, PotS, Pot, x0, y0, z0, x, y, z, SibPID, Skip ) \ + reduction( max:MaxPot ) reduction( ||:AnyCell ) schedule( runtime ) + for (int PID=0; PIDNPatchComma[lv][1]; PID++) + { +// if OPT__FIXUP_RESTRICT is enabled, skip all non-leaf patches not adjacent to any coarse-fine boundaries +// because their data is not used for providing ghost boundaries and they are later overwritten by the refined patches +// we still need to update their mass density for the Poisson solver but their phase is irrelevant +// so they need not be considered in the gravity time step calculation +// note that this leads to the gravity timestep being "inf" when a level is completely refined + if ( OPT__FIXUP_RESTRICT ) { + Skip = true; + + if ( amr->patch[0][lv][PID]->son == -1 ) Skip = false; + else + { + for (int s=0; s<26; s++) + { + SibPID = amr->patch[0][lv][PID]->sibling[s]; + +// proper-nesting check +# ifdef GAMER_DEBUG + if ( SibPID == -1 ) Aux_Error( ERROR_INFO, "SibPID == -1 (Lv %d, PID %d) !!\n", lv, PID ); +# endif + +// non-periodic BC. + if ( SibPID < -1 ) continue; + +// check whether this patch is adjacent to a coarse-fine boundary + if ( amr->patch[0][lv][SibPID]->son == -1 ) + { + Skip = false; + break; + } + } // for (int s=0; s<26; s++) + } // if ( amr->patch[0][lv][PID]->son == -1 ) ... else ... + } else { // if ( OPT__FIXUP_RESTRICT ) { + Skip = false; + } // if ( OPT__FIXUP_RESTRICT ) { ... else + + if ( Skip ) continue; + else AnyCell = true; + + +// calculate the potential + const double dh = amr->dh[lv]; + + x0 = amr->patch[0][lv][PID]->EdgeL[0] + 0.5*dh; + y0 = amr->patch[0][lv][PID]->EdgeL[1] + 0.5*dh; + z0 = amr->patch[0][lv][PID]->EdgeL[2] + 0.5*dh; + + for (int k=0; kpatch[ amr->PotSg[lv] ][lv][PID]->pot[k][j][i]; +# ifdef QUARTIC_SELF_INTERACTION + PotS = ELBDM_LAMBDA*amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[DENS][k][j][i]; +# else + PotS = (real)0.0; +# endif + + Pot = FABS( PotG + PotS ); // remember to take the absolute value + MaxPot = MAX( MaxPot, Pot ); + }}} // k,j,i + } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) + + +// get the maximum potential in all ranks + real MaxPot_AllRank; + bool AnyCell_AllRank; + + MPI_Allreduce( &MaxPot, &MaxPot_AllRank, 1, MPI_GAMER_REAL, MPI_MAX, MPI_COMM_WORLD ); + MPI_Reduce( &AnyCell, &AnyCell_AllRank, 1, MPI_C_BOOL, MPI_LOR, 0, MPI_COMM_WORLD ); + + +// check + if ( MaxPot_AllRank == 0.0 && AnyCell && MPI_Rank == 0 ) + Aux_Error( ERROR_INFO, "MaxPot == 0.0 at lv %d !!\n", lv ); + + + return MaxPot_AllRank; + +} // FUNCTION : GetMaxPot + + + +#endif // #if ( MODEL == ELBDM && defined GRAVITY ) diff --git a/src/Model_ELBDM/ELBDM_GetTimeStep_Hybrid_CFL.cpp b/src/Model_ELBDM/ELBDM_GetTimeStep_Hybrid_CFL.cpp new file mode 100644 index 0000000000..90e9d153ec --- /dev/null +++ b/src/Model_ELBDM/ELBDM_GetTimeStep_Hybrid_CFL.cpp @@ -0,0 +1,42 @@ +#include "GAMER.h" +#include "CUFLU.h" + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_GetTimeStep_Hybrid_CFL +// Description : Estimate the evolution time-step from the CFL condition of the Hamilton-Jacobi solver +// +// Note : 1. This function should be applied to both physical and comoving coordinates and always +// return the evolution time-step (dt) actually used in various solvers +// --> Physical coordinates : dt = physical time interval +// Comoving coordinates : dt = delta(scale_factor) / ( Hubble_parameter*scale_factor^3 ) +// --> We convert dt back to the physical time interval, which equals "delta(scale_factor)" +// in the comoving coordinates, in Mis_GetTimeStep() +// 2. CFL constant purely empirical, a value of C_CFL = 0.4 seems to work for the 3rd-order RK phase scheme +// a fourth-order RK method allows a value of up to C_CFL = 0.8, the second-order scheme requires a value of C_CFL = 0.05 +// +// Parameter : lv : Target refinement level +// +// Return : dt +//------------------------------------------------------------------------------------------------------- +double ELBDM_GetTimeStep_Hybrid_CFL( const int lv ) +{ + + const double dh = amr->dh[lv]; + double dt; + + dt = ELBDM_ETA*SQR(dh); + + dt *= (Step==0) ? DT__HYBRID_CFL_INIT : DT__HYBRID_CFL; + + return dt; + +} // FUNCTION : ELBDM_GetTimeStep_Hybrid_CFL + + + +#endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) diff --git a/src/Model_ELBDM/ELBDM_GetTimeStep_Hybrid_Velocity.cpp b/src/Model_ELBDM/ELBDM_GetTimeStep_Hybrid_Velocity.cpp new file mode 100644 index 0000000000..4af08ce877 --- /dev/null +++ b/src/Model_ELBDM/ELBDM_GetTimeStep_Hybrid_Velocity.cpp @@ -0,0 +1,140 @@ +#include "GAMER.h" + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +static real GetMaxVelocity( const int lv, const bool ExcludeWaveCells); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_GetTimeStep_Hybrid_Velocity +// Description : Estimate the evolution time-step via the CFL condition from the Hamilton-Jacobi equation +// +// Note : 1. This function should be applied to both physical and comoving coordinates and always +// return the evolution time-step (dt) actually used in various solvers +// --> Physical Coordinates : dt = physical time interval +// Comoving Coordinates : dt = delta(scale_factor) / ( Hubble_parameter*scale_factor^3 ) +// --> We convert dt back to the physical time interval, which equals "delta(scale_factor)" +// in the comoving Coordinates, in Mis_GetTimeStep() +// 2. dt = 0.5 * dx * m/hbar / sum_i |v_i| +// +// Parameter : lv : Target refinement level +// +// Return : dt +//------------------------------------------------------------------------------------------------------- +double ELBDM_GetTimeStep_Hybrid_Velocity( const int lv ) +{ + + const bool ExcludeWaveCells = true; + +// get the velocity dS/dx * hbar/m as first derivative of phase + const real MaxV = GetMaxVelocity( lv, ExcludeWaveCells ); + +// get the time-step + double dt = 0.5 * amr->dh[lv] / MaxV; + dt *= (Step==0) ? DT__HYBRID_VELOCITY_INIT : DT__HYBRID_VELOCITY; + + return dt; + +} // FUNCTION : ELBDM_GetTimeStep_Hybrid_Velocity + + + + +//------------------------------------------------------------------------------------------------------- +// Function : GetMaxVelocity +// Description : Evaluate the maximum first spatial derivative of phase for the time step estimation +// +// Note : 1. Invoked by ELBDM_GetTimeStep_Hybrid_Velocity() +// +// Parameter : lv : Target refinement level +// ExcludeWaveCells : Do not include cells with refined wave counterpart in time step estimation if set to True +// +// Return : Maximum velocity across all ranks +//------------------------------------------------------------------------------------------------------- +real GetMaxVelocity( const int lv, const bool ExcludeWaveCells ) +{ + +// maximum velocity for calculation of time step is zero for wave patches +// since we are only concerned with a velocity-dependent time step criterion for the fluid solver + if ( amr->use_wave_flag[lv] ) + return 0; + + + const bool IntPhase_No = false; + const bool DE_Consistency_No = false; + const real MinDens_No = -1.0; + const real MinPres_No = -1.0; + const real MinTemp_No = -1.0; + const real MinEntr_No = -1.0; + const int NGhost = 1; // number of ghost zones to calculate V + const int Size_Flu = PS2 + 2*NGhost; // size of the array Flu_Array + const int NPG = 1; // number of patch groups (must be ONE here) + const int NComp1 = 1; // we only need to retrieve phase for velocity criterion + real (*Flu_Array)[NComp1][Size_Flu][Size_Flu][Size_Flu] = NULL; + + real V, MaxV, _dh, _dh2, GradS[3]; + int im, ip, jm, jp, km, kp, I, J, K; + + MaxV = 0.0; + _dh = (real)1.0/amr->dh[lv]; + _dh2 = (real)0.5*_dh; + +# pragma omp parallel private( Flu_Array, V, GradS, im, ip, jm, jp, km, kp, I, J, K ) + { + Flu_Array = new real [NPG][NComp1][Size_Flu][Size_Flu][Size_Flu]; + +// loop over all patches +# pragma omp for reduction( max:MaxV ) schedule( runtime ) + for (int PID0=0; PID0NPatchComma[lv][1]; PID0+=NPG*8) + { +// prepare phase with NGhost ghost zone on each side (any interpolation scheme can be used) + Prepare_PatchData( lv, Time[lv], &Flu_Array[0][0][0][0][0], NULL, NGhost, NPG, &PID0, _PHAS, _NONE, + INT_CQUAD, INT_NONE, UNIT_PATCHGROUP, NSIDE_06, IntPhase_No, OPT__BC_FLU, BC_POT_NONE, + MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + +// evaluate dS_dt + for (int k=NGhost; kPID2GID( PID0, lv ); + bool DoNotCalculateVelocity = false; + if ( ExcludeWaveCells ) + { +// in principle, we only need to check the single patch (I, J, K) belongs to +// however, ELBDM_HasWaveCounterpart automatically returns False if (I, J, K) is outside of the patch GID0 + LocalID + for (int LocalID=0; LocalID<8; LocalID++ ) + { + DoNotCalculateVelocity |= ELBDM_HasWaveCounterpart( I, J, K, GID0, GID0 + LocalID, *GlobalTree ); + } + } + + if ( !DoNotCalculateVelocity ) { + + GradS[0] = _dh2*( Flu_Array[0][0][k ][j ][ip] - Flu_Array[0][0][k ][j ][im] ); + GradS[1] = _dh2*( Flu_Array[0][0][k ][jp][i ] - Flu_Array[0][0][k ][jm][i ] ); + GradS[2] = _dh2*( Flu_Array[0][0][kp][j ][i ] - Flu_Array[0][0][km][j ][i ] ); + + V = FABS( GradS[0] ) + FABS( GradS[1] ) + FABS( GradS[2] ); + MaxV = MAX( MaxV, V ); + } + }}} // i,j,k + } // for (int PID0=0; PID0NPatchComma[lv][1]; PID0+=NPG*8) + + delete [] Flu_Array; + } // OpenMP parallel region + +// get the maximum potential in all ranks + real MaxV_AllRank; + MPI_Allreduce( &MaxV, &MaxV_AllRank, 1, MPI_GAMER_REAL, MPI_MAX, MPI_COMM_WORLD ); + + return MaxV_AllRank / ELBDM_ETA; + +} // FUNCTION : GetMaxVelocity + + + +#endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) diff --git a/src/Model_ELBDM/ELBDM_GetTimeStep_Phase.cpp b/src/Model_ELBDM/ELBDM_GetTimeStep_Phase.cpp new file mode 100644 index 0000000000..225ce24c5c --- /dev/null +++ b/src/Model_ELBDM/ELBDM_GetTimeStep_Phase.cpp @@ -0,0 +1,197 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + +static real GetMaxPhaseDerivative( const int lv ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_GetTimeStep_Phase +// Description : Estimate the evolution time-step by restricting the maximum phase rotation +// +// Note : 1. This function should be applied to both physical and comoving coordinates and always +// return the evolution time-step (dt) actually used in various solvers +// --> Physical coordinates : dt = physical time interval +// Comoving coordinates : dt = delta(scale_factor) / ( Hubble_parameter*scale_factor^3 ) +// --> We convert dt back to the physical time interval, which equals "delta(scale_factor)" +// in the comoving coordinates, in Mis_GetTimeStep() +// 2. dt = DT__PHASE*2*pi/Max(first temporal derivative of phase) +// +// Parameter : lv : Target refinement level +// +// Return : dt +//------------------------------------------------------------------------------------------------------- +double ELBDM_GetTimeStep_Phase( const int lv ) +{ + + real MaxdS_dt; + double dt; + +// get the maximum first temporal derivative of phase + MaxdS_dt = GetMaxPhaseDerivative( lv ); + +// get the time-step + dt = DT__PHASE*2.0*M_PI/MaxdS_dt; + + return dt; + +} // FUNCTION : ELBDM_GetTimeStep_Phase + + + +//------------------------------------------------------------------------------------------------------- +// Function : GetMaxPhaseDerivative +// Description : Evaluate the maximum first temporal derivative of phase for the time-step estimation +// +// Note : 1. Invoked by ELBDM_GetTimeStep_Phase() +// 2. Currently this function does not take into account the self-interaction potential +// +// Parameter : lv : Target refinement level +// +// Return : MaxdS_dt +//------------------------------------------------------------------------------------------------------- +real GetMaxPhaseDerivative( const int lv ) +{ + + const real Eps = 1.0e-2; // soften in the denominator for calculating dS_dt + const bool IntPhase_No = false; + const bool DE_Consistency_No = false; + const real MinDens_No = -1.0; + const real MinPres_No = -1.0; + const real MinTemp_No = -1.0; + const real MinEntr_No = -1.0; + const int NGhost = 1; // number of ghost zones to calculate dS_dt + const int Size_Flu = PS2 + 2*NGhost; // size of the array Flu_Array + const int NPG = 1; // number of patch groups (must be ONE here) + const int AMP = DENS; // array index to store amplitude + + real (*Flu_Array)[NCOMP_FLUID][Size_Flu][Size_Flu][Size_Flu] = NULL; + + real dS_dt, MaxdS_dt, _dh, _dh2, _dh_sqr, Re, Im, GradS[3]; + real LapAmp_Amp, Vel_Sqr; // laplacian(amplitude)/amplitude, -grad(phase)^2 + real _Dens, _Amp; // 0.5/Dens/dh, 1.0/amplitude + int im, ip, jm, jp, km, kp, I, J, K; + +# ifdef GRAVITY + const real PotCoeff = -2.0*SQR(ELBDM_ETA); + const int Size_Pot = PS2; // size of the array Pot_Array + real Pot; // -2.0*ELBDM_ETA^2*potential + real (*Pot_Array)[Size_Pot][Size_Pot][Size_Pot] = NULL; +# endif + + MaxdS_dt = 0.0; + _dh = (real)1.0/amr->dh[lv]; + _dh2 = (real)0.5*_dh; + _dh_sqr = _dh*_dh; + + +# ifdef GRAVITY +# pragma omp parallel private( Flu_Array, dS_dt, Re, Im, GradS, LapAmp_Amp, Vel_Sqr, _Dens, _Amp, Pot_Array, Pot, \ + im, ip, jm, jp, km, kp, I, J, K ) +# else +# pragma omp parallel private( Flu_Array, dS_dt, Re, Im, GradS, LapAmp_Amp, Vel_Sqr, _Dens, _Amp, \ + im, ip, jm, jp, km, kp, I, J, K ) +# endif + { + Flu_Array = new real [NPG][NCOMP_FLUID][Size_Flu][Size_Flu][Size_Flu]; +# ifdef GRAVITY + Pot_Array = new real [NPG] [Size_Pot][Size_Pot][Size_Pot]; +# endif + +// loop over all patches +# pragma omp for reduction( max:MaxdS_dt ) schedule( runtime ) + for (int PID0=0; PID0NPatchComma[lv][1]; PID0+=NPG*8) + { +// prepare real part with NGhost ghost zone on each side (any interpolation scheme can be used) + Prepare_PatchData( lv, Time[lv], &Flu_Array[0][REAL][0][0][0], NULL, NGhost, NPG, &PID0, _REAL, _NONE, + INT_MINMOD1D, INT_NONE, UNIT_PATCHGROUP, NSIDE_06, IntPhase_No, OPT__BC_FLU, BC_POT_NONE, + MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + +// prepare imag part with NGhost ghost zone on each side (any interpolation scheme can be used) + Prepare_PatchData( lv, Time[lv], &Flu_Array[0][IMAG][0][0][0], NULL, NGhost, NPG, &PID0, _IMAG, _NONE, + INT_MINMOD1D, INT_NONE, UNIT_PATCHGROUP, NSIDE_06, IntPhase_No, OPT__BC_FLU, BC_POT_NONE, + MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + +// prepare potential with no ghost zone +# ifdef GRAVITY + Prepare_PatchData( lv, Time[lv], &Pot_Array[0][0][0][0], NULL, 0, NPG, &PID0, _POTE, _NONE, + INT_NONE, INT_NONE, UNIT_PATCHGROUP, NSIDE_00, IntPhase_No, OPT__BC_FLU, BC_POT_NONE, + MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); +# endif + +// evaluate amplitude with soften + for (int k=0; kNPatchComma[lv][1]; PID0+=NPG*8) + + delete [] Flu_Array; +# ifdef GRAVITY + delete [] Pot_Array; +# endif + } // OpenMP parallel region + + +// get the maximum potential in all ranks + real MaxdS_dt_AllRank; + MPI_Allreduce( &MaxdS_dt, &MaxdS_dt_AllRank, 1, MPI_GAMER_REAL, MPI_MAX, MPI_COMM_WORLD ); + + +// check + if ( MaxdS_dt_AllRank == 0.0 && MPI_Rank == 0 ) + Aux_Message( stderr, "WARNING : MaxdS_dt == 0.0 at lv %d !!\n", lv ); + + + return MaxdS_dt_AllRank*0.5/ELBDM_ETA; + +} // FUNCTION : GetMaxPhaseDerivative + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/ELBDM_GramFE_EvolutionMatrix.cpp b/src/Model_ELBDM/ELBDM_GramFE_EvolutionMatrix.cpp new file mode 100644 index 0000000000..b4f0477f05 --- /dev/null +++ b/src/Model_ELBDM/ELBDM_GramFE_EvolutionMatrix.cpp @@ -0,0 +1,175 @@ +#include "CUFLU.h" +#include "GAMER.h" + +#if ( GRAMFE_SCHEME == GRAMFE_MATMUL ) + + +#include "GramFE_ExtensionTables.h" + +#include + +// require at least 128 bit precision in order for calculation of evolution matrix to have an error below single precision +// this is because the extension matrix has a high condition number of 10^15 or higher +// ideally, gramfe_evo_float should be changed to a 256 bit type in the future +// in that case, the GramFE_ExtensionTables should be updated to include more significant digits as well +// also note that some routines use the long double type in the following instead of the quadmath version +// they do not require higher than double precision +#define gramfe_evo_float __float128 + +using gramfe_matmul_complex_type = std::complex; +using gramfe_evo_complex_type = std::complex; + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Factorial +// Description : Compute the factorial of n. +// Parameter : n : integer +// Return : n! +//------------------------------------------------------------------------------------------------------- +static int Factorial( const int n ) { + + return (n==0) || (n==1) ? 1 : n* Factorial(n-1); + +} // FUNCTION : Factorial + + + +//------------------------------------------------------------------------------------------------------- +// Function : CosineTaylorExpansion +// Description : Compute the Taylor expansion of the cosine function at the point x with Nterms terms +// Parameter : x : Point at which to evaluate Taylor expansion +// NTerms : Number of terms to retain in expansion +// Return : Value of expansion +//------------------------------------------------------------------------------------------------------- +static long double CosineTaylorExpansion( const long double x, const int Nterms ) { + + long double result = 0; + + for (int i=0; iuse_wave_flag[ GlobalTree[ChildGID].level ]; + + return HasWaveCounterpart; + +} // FUNCTION : ELBDM_HasWaveCounterpart + + + +#endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) diff --git a/src/Model_ELBDM/ELBDM_Init_ByFunction_AssignData.cpp b/src/Model_ELBDM/ELBDM_Init_ByFunction_AssignData.cpp new file mode 100644 index 0000000000..0f4c2e50ea --- /dev/null +++ b/src/Model_ELBDM/ELBDM_Init_ByFunction_AssignData.cpp @@ -0,0 +1,190 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + +// declare as static so that other functions cannot invoke it directly and must use the function pointer +static void Init_Function_User_Template( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ); + +// this function pointer must be set by a test problem initializer +void (*Init_Function_User_Ptr)( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) = NULL; + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_Function_User_Template +// Description : Function template to initialize the ELBDM field +// +// Note : 1. Invoked by ELBDM_Init_ByFunction_AssignData() using the function pointer +// "Init_Function_User_Ptr", which must be set by a test problem initializer +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// (unless OPT__INIT_GRID_WITH_OMP is disabled) +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : ELBDM field array to be initialized +// x/y/z : Target physical coordinates +// Time : Target physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void Init_Function_User_Template( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + const double C1[3] = { 0.5*amr->BoxSize[0]+100.0, + 0.5*amr->BoxSize[1]+200.0, + 0.5*amr->BoxSize[2]+300.0 }; + const double C2[3] = { 20.0, 40.0, 10.0 }; + const double Height1 = 5.0; + const double Height2 = 8.0; + const double Width1 = 64.0; + const double Width2 = 512.0; + const real Real = 1.0 + Height1*exp( -( SQR(x-C1[0]) + SQR(y-C1[1]) + SQR(z-C1[2]) ) /SQR(Width1) ); + const real Imag = 1.0 + Height2*exp( -( SQR(x-C2[0]) + SQR(y-C2[1]) + SQR(z-C2[2]) ) /SQR(Width2) ); + const real Dens = Real*Real + Imag*Imag; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Real; + fluid[IMAG] = Imag; + fluid[DENS] = Dens; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { // if ( amr->use_wave_flag[lv] ) + fluid[PHAS] = SATAN2(Imag, Real); + fluid[DENS] = Dens; + fluid[STUB] = 0.0; + } // if ( amr->use_wave_flag[lv] == true ) ... else ... +# endif + +// ELBDM does not support passive scalars yet ... + +} // FUNCTION : Init_Function_User_Template + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_Init_ByFunction_AssignData +// Description : Construct the initial condition in ELBDM +// +// Note : 1. Work for the option "OPT__INIT == INIT_BY_FUNCTION" +// 2. Function pointers "Init_Function_User_Ptr/Flu_ResetByUser_Func_Ptr" must be set by a +// test problem initializer +// 3. One can disable OpenMP in this routine by setting OPT__INIT_GRID_WITH_OMP = 0 +// --> Useful if "Init_Function_User_Ptr/Flu_ResetByUser_Func_Ptr" do not support OpenMP +// (e.g., they may not be thread-safe or may involve a random number generator for which +// all threads would share the same random seed when adopting OpenMP) +// +// Parameter : lv : Target refinement level +//------------------------------------------------------------------------------------------------------- +void ELBDM_Init_ByFunction_AssignData( const int lv ) +{ + +// check + if ( Init_Function_User_Ptr == NULL ) Aux_Error( ERROR_INFO, "Init_Function_User_Ptr == NULL !!\n" ); + + if ( OPT__RESET_FLUID_INIT && Flu_ResetByUser_Func_Ptr == NULL ) + Aux_Error( ERROR_INFO, "Flu_ResetByUser_Func_Ptr == NULL for OPT__RESET_FLUID_INIT !!\n" ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( INIT_SUBSAMPLING_NCELL > 1 ) + Aux_Error( ERROR_INFO, "ELBDM_HYBRID currently does not support subsampling !!\n" ); +# endif + +// set the number of OpenMP threads +# ifdef OPENMP + const int OMP_NT = ( OPT__INIT_GRID_WITH_OMP ) ? OMP_NTHREAD : 1; +# else + const int OMP_NT = 1; +# endif + + + const int NSub = ( INIT_SUBSAMPLING_NCELL <= 0 ) ? 1 : INIT_SUBSAMPLING_NCELL; + const double dh = amr->dh[lv]; + const double dh_sub = dh / NSub; + const double _NSub3 = 1.0/(NSub*NSub*NSub); + + real fluid[NCOMP_TOTAL], fluid_sub[NCOMP_TOTAL]; + double x, y, z, x0, y0, z0; + + +# pragma omp parallel for private( fluid, fluid_sub, x, y, z, x0, y0, z0 ) schedule( runtime ) num_threads( OMP_NT ) + for (int PID=0; PIDNPatchComma[lv][1]; PID++) + for (int k=0; kpatch[0][lv][PID]->EdgeL[2] + k*dh + 0.5*dh_sub; + for (int j=0; jpatch[0][lv][PID]->EdgeL[1] + j*dh + 0.5*dh_sub; + for (int i=0; ipatch[0][lv][PID]->EdgeL[0] + i*dh + 0.5*dh_sub; + + for (int v=0; vuse_wave_flag[lv] ) { +# endif +// ensure density = real_part^2 + imaginary_part^2 + fluid[REAL] *= _NSub3; + fluid[IMAG] *= _NSub3; + fluid[DENS] = fluid[REAL]*fluid[REAL] + fluid[IMAG]*fluid[IMAG]; + +// check minimum density (but keep phase fixed) + if ( fluid[DENS] < (real)MIN_DENS ) + { + const real Rescale = SQRT( (real)MIN_DENS/fluid[DENS] ); + + fluid[REAL] *= Rescale; + fluid[IMAG] *= Rescale; + fluid[DENS] = (real)MIN_DENS; + } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { // if ( amr->use_wave_flag[lv] ) + +//********************************************************* +//###REVISE: support rescaling phase for subsampling +//********************************************************* + +// rescale density for subsampling + fluid[DENS] *= SQR(_NSub3); +// check minimum density (but keep phase fixed) + if ( fluid[DENS] < (real)MIN_DENS ) + { + fluid[DENS] = (real)MIN_DENS; + } + + } // if ( amr->use_wave_flag[lv] == true ) ... else ... +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + +// floor and normalize passive scalars (actually passive scalars are NOT supported by ELBDM yet) + /* +# if ( NCOMP_PASSIVE > 0 ) + for (int v=NCOMP_FLUID; vpatch[ amr->FluSg[lv] ][lv][PID]->fluid[v][k][j][i] = fluid[v]; + + }}} + +} // FUNCTION : ELBDM_Init_ByFunction_AssignData + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/ELBDM_RemoveMotionCM.cpp b/src/Model_ELBDM/ELBDM_RemoveMotionCM.cpp new file mode 100644 index 0000000000..878965ca8b --- /dev/null +++ b/src/Model_ELBDM/ELBDM_RemoveMotionCM.cpp @@ -0,0 +1,102 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + + +// global variable to store the ELBDM center-of-mass velocity +double ELBDM_Vcm[3] = { NULL_REAL, NULL_REAL, NULL_REAL }; + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_RemoveMotionCM +// Description : Remove the motion of center-of-mass +// +// Note : 1. Work with the option ELBDM_REMOVE_MOTION_CM +// --> Must also enable OPT__CK_CONSERVATION since it relies on Aux_Check_Conservation() +// to calculate the CM velocity (ELBDM_Vcm) +// 2. Invoked by Main() +// +// Parameter : None +// +// Return : amr->fluid[REAL/IMAG] +//------------------------------------------------------------------------------------------------------- +void ELBDM_RemoveMotionCM() +{ + +// check + for (int d=0; d<3; d++) + { + if ( ELBDM_Vcm[d] == NULL_REAL ) + Aux_Error( ERROR_INFO, "ELBDM_Vcm[%d] == NULL_REAL !!\n", d ); + + if ( ! Aux_IsFinite(ELBDM_Vcm[d]) ) + Aux_Error( ERROR_INFO, "ELBDM_Vcm[%d] = %14.7e !!\n", d, ELBDM_Vcm[d] ); + } + + +// remove the CM velocity + for (int d=0; d<3; d++) ELBDM_Vcm[d] *= ELBDM_ETA; + + for (int lv=0; lvdh[lv]; + +# pragma omp parallel for schedule( runtime ) + for (int PID=0; PIDNPatchComma[lv][1]; PID++) + { + real (*const fluid)[PS1][PS1][PS1] = amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid; + double x, y, z, x0, y0, z0; + real R, I, S; + + x0 = amr->patch[0][lv][PID]->EdgeL[0] + 0.5*dh; + y0 = amr->patch[0][lv][PID]->EdgeL[1] + 0.5*dh; + z0 = amr->patch[0][lv][PID]->EdgeL[2] + 0.5*dh; + + for (int k=0; kuse_wave_flag[lv] ) { +# endif + R = fluid[REAL][k][j][i]; + I = fluid[IMAG][k][j][i]; + + fluid[REAL][k][j][i] = +R*COS(S) + I*SIN(S); + fluid[IMAG][k][j][i] = -R*SIN(S) + I*COS(S); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS][k][j][i] -= S; + } +# endif + + }}} + } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) + +// update the data on MPI buffer patches +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + Buf_GetBufferData( lv, amr->FluSg[lv], NULL_INT, NULL_INT, DATA_GENERAL, _REAL|_IMAG, _NONE, Flu_ParaBuf, USELB_YES ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + Buf_GetBufferData( lv, amr->FluSg[lv], NULL_INT, NULL_INT, DATA_GENERAL, _PHAS, _NONE, Flu_ParaBuf, USELB_YES ); + } +# endif + + } // for (int lv=0; lv= 0.0 ) + Taylor3_Coeff = Damping * ( 9.0 - SQRT(Temp) ) / ( 256.0*Alpha2 ); + + else + { + Taylor3_Coeff = real(1.0/6.0); + +# ifdef GAMER_DEBUG + Aux_Message( stderr, "********************************************************************************\n" ); + Aux_Message( stderr, "WARNING : 81.0-576.0*Alpha2 = %12.5e < 0.0 (dt %12.5e, dh %12.5e, Eta %12.5e) !!\n", + Temp, dt, dh, Eta, __FUNCTION__ ); + Aux_Message( stderr, " --> Program cannot find an optimized Taylor expansion coefficient.\n" ); + Aux_Message( stderr, " Therefore, it is set to %12.5e by default.\n", Taylor3_Coeff ); + Aux_Message( stderr, " --> Perhaps you should set DT__FLUID/DT__FLUID_INIT smaller ...\n" ); + Aux_Message( stderr, " Rank <%d>, file <%s>, line <%d>, function <%s>\n", + MPI_Rank, __FILE__, __LINE__, __FUNCTION__ ); + Aux_Message( stderr, "********************************************************************************\n" ); +# endif + } + +# else // #ifdef LAPLACIAN_4TH + Temp = 1.0 - 4.0*Alpha2; + + if ( Temp >= 0.0 ) + Taylor3_Coeff = Damping * ( 1.0 - SQRT(Temp) ) / ( 16.0*Alpha2 ); + + else + { + Taylor3_Coeff = real(1.0/6.0); + +# ifdef GAMER_DEBUG + Aux_Message( stderr, "********************************************************************************\n" ); + Aux_Message( stderr, "ERROR : 1.0-4.0*Alpha2 = %12.5e < 0.0 (dt %12.5e, dh %12.5e, Eta %12.5e) !!\n", + Temp, dt, dh, Eta, __FUNCTION__ ); + Aux_Message( stderr, " --> Program cannot find an optimized Taylor expansion coefficient.\n" ); + Aux_Message( stderr, " Therefore, it is set to %12.5e by default.\n", Taylor3_Coeff ); + Aux_Message( stderr, " --> Perhaps you should set DT__FLUID/DT__FLUID_INIT smaller ...\n" ); + Aux_Message( stderr, " Rank <%d>, file <%s>, line <%d>, function <%s>\n", + MPI_Rank, __FILE__, __LINE__, __FUNCTION__ ); + Aux_Message( stderr, "********************************************************************************\n" ); +# endif + } +# endif // #ifdef LAPLACIAN_4TH ... else ... + + + return Taylor3_Coeff; + +} // FUNCTION : ELBDM_SetTaylor3Coeff + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/ELBDM_UnwrapPhase.cpp b/src/Model_ELBDM/ELBDM_UnwrapPhase.cpp new file mode 100644 index 0000000000..1117eac03b --- /dev/null +++ b/src/Model_ELBDM/ELBDM_UnwrapPhase.cpp @@ -0,0 +1,47 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_UnwrapWindingNumber +// Description : Return the integer multiple of 2*PI that needs to be added to Phase_Wrapped to ensure that the phase difference is <= PI +// +// Note : Phase_Ref is fixed, and Phase_Wrapped will be unwrapped +// +// Parameter : Phase_Ref : Reference phase +// Phase_Wrapped : Phase to be unwrapped +// +// Return : phase winding number from Phase_Ref to Phase_Wrapped as integer +//------------------------------------------------------------------------------------------------------- +static int ELBDM_UnwrapWindingNumber( const real Phase_Ref, const real Phase_Wrapped ) +{ + + return ROUND( (Phase_Ref - Phase_Wrapped) / real(2.0*M_PI) ); + +} // FUNCTION : ELBDM_UnwrapWindingNumber + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_UnwrapPhase +// Description : Unwrap the input two phases to ensure that the phase difference is <= PI +// +// Note : Phase_Ref is fixed, and Phase_Wrapped will be unwrapped +// +// Parameter : Phase_Ref : Reference phase +// Phase_Wrapped : Phase to be unwrapped +// +// Return : Phase_Unwrapped +//------------------------------------------------------------------------------------------------------- +real ELBDM_UnwrapPhase( const real Phase_Ref, const real Phase_Wrapped ) +{ + return Phase_Wrapped + ELBDM_UnwrapWindingNumber(Phase_Ref, Phase_Wrapped) * real(2.0*M_PI); + +} // FUNCTION : ELBDM_UnwrapPhase + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_FD.cu b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_FD.cu new file mode 100644 index 0000000000..0eefd4e0d2 --- /dev/null +++ b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_FD.cu @@ -0,0 +1,424 @@ +#include "Macro.h" +#include "CUFLU.h" + +#if ( defined GPU && MODEL == ELBDM && WAVE_SCHEME == WAVE_FD ) + + + +// useful macros +#define to1D1(z,y,x) ( __umul24(z, FLU_NXT*FLU_NXT) + __umul24(y, FLU_NXT) + x ) +#define to1D2(z,y,x) ( __umul24(z-FLU_GHOST_SIZE, PS2*PS2) + __umul24(y-FLU_GHOST_SIZE, PS2) + x-FLU_GHOST_SIZE ) + +#ifdef LAPLACIAN_4TH +# define LAP_GHOST 2 +# define LAP1(In,i) ( real(1.0/ 12.0)*( - In[i-2] + (real)16.0*In[i-1] - (real)30.0*In[i ] \ + - In[i+2] + (real)16.0*In[i+1] ) ) +# define LAP2(In,i) ( real(1.0/144.0)*( + In[i-4] - (real)32.0*In[i-3] + (real)316.0*In[i-2] - (real)992.0*In[i-1] \ + + In[i+4] - (real)32.0*In[i+3] + (real)316.0*In[i+2] - (real)992.0*In[i+1] \ + + (real)1414.0*In[i ] ) ) +# ifndef CONSERVE_MASS +# define LAP3(In,i) ( real(1.0/1728.0)* \ + ( -In[i-6] + (real)48*In[i-5] - (real)858*In[i-4] + (real)7024*In[i-3] - (real)27279*In[i-2] + (real)58464*In[i-1] \ + -In[i+6] + (real)48*In[i+5] - (real)858*In[i+4] + (real)7024*In[i+3] - (real)27279*In[i+2] + (real)58464*In[i+1] \ + - (real)74796*In[i ] ) ) +# endif + +#else // #ifdef LAPLACIAN_4TH + +# define LAP_GHOST 1 +# define LAP1(In,i) ( + In[i-1] - (real)2.0*In[i ] + In[i+1] ) +# define LAP2(In,i) ( + In[i-2] - (real)4.0*In[i-1] + (real)6.0*In[i ] - (real)4.0*In[i+1] + In[i+2] ) +# ifndef CONSERVE_MASS +# define LAP3(In,i) ( + In[i-3] - (real)6.0*In[i-2] + (real)15.0*In[i-1] - (real)20.0*In[i ] \ + + In[i+3] - (real)6.0*In[i+2] + (real)15.0*In[i+1] ) + +# endif + +#endif // #ifdef LAPLACIAN_4TH ... else ... + + +static __device__ void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const real Taylor3_Coeff, const uint j_gap, const uint k_gap, + real s_In[][FLU_BLOCK_SIZE_Y][FLU_NXT], real s_Half[][FLU_BLOCK_SIZE_Y][FLU_NXT], + real s_Flux[][PS2+1], const bool FinalOut, const int XYZ, const real MinDens ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUFLU_ELBDMSolver_FD +// Description : GPU ELBDM kinematic solver based on expanding the propagator to 3rd order +// +// Note : 1. The three-dimensional evolution is achieved by applying x, y, and z operators successively. +// Since these operators commute, the order of applying them are irrelevant. +// --> Input pamameter "XYZ" is actually useless +// --> Nevertheless, the symmetry in different directions will be broken if CONSERVE_MASS is on +// 2. The implementation is very similar to the function " CUFLU_FluidSolver_RTVD" +// 4. Prefix "g" for pointers pointing to the "Global" memory space +// Prefix "s" for pointers pointing to the "Shared" memory space +// +// Parameter : g_Fluid_In : Global memory array storing the input variables +// g_Fluid_Out : Global memory array to store the output variables +// g_Flux : Global memory array to store the output fluxes (useful only if StoreFlux == true) +// dt : Time interval to advance solution +// _dh : 1 / grid size +// Eta : Particle mass / Planck constant +// StoreFlux : true --> store the coarse-fine fluxes +// --> useful only if CONSERVE_MASS is defined +// Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion +// XYZ : true : x->y->z ( forward sweep) +// false : z->y->x (backward sweep) +// --> Meaningless if CONSERVE_MASS is off since the operators along different directions +// commute +// --> Meaningful if CONSERVE_MASS is on, in which the symmetry along different directions +// are broken ... +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +__global__ void CUFLU_ELBDMSolver_FD( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, + const real Taylor3_Coeff, const bool XYZ, const real MinDens ) +{ + + __shared__ real s_In [FLU_NIN][FLU_BLOCK_SIZE_Y][FLU_NXT]; +# ifdef CONSERVE_MASS + __shared__ real s_Half[FLU_NIN][FLU_BLOCK_SIZE_Y][FLU_NXT]; + __shared__ real s_Flux[FLU_BLOCK_SIZE_Y][PS2+1]; +# else + real (*s_Half)[FLU_BLOCK_SIZE_Y][FLU_NXT] = NULL; // useless if CONSERVE_MASS is off + real (*s_Flux)[PS2+1] = NULL; // useless if CONSERVE_MASS is off +# endif + + if ( XYZ ) + { + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, dt, _dh, Eta, StoreFlux, Taylor3_Coeff, + 0, 0, s_In, s_Half, s_Flux, false, 0, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, dt, _dh, Eta, StoreFlux, Taylor3_Coeff, + FLU_GHOST_SIZE, 0, s_In, s_Half, s_Flux, false, 3, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, dt, _dh, Eta, StoreFlux, Taylor3_Coeff, + FLU_GHOST_SIZE, FLU_GHOST_SIZE, s_In, s_Half, s_Flux, true, 6, MinDens ); + } + + else + { + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, dt, _dh, Eta, StoreFlux, Taylor3_Coeff, + 0, 0, s_In, s_Half, s_Flux, false, 6, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, dt, _dh, Eta, StoreFlux, Taylor3_Coeff, + 0, FLU_GHOST_SIZE, s_In, s_Half, s_Flux, false, 3, MinDens ); + CUFLU_Advance( g_Fluid_In, g_Fluid_Out, g_Flux, dt, _dh, Eta, StoreFlux, Taylor3_Coeff, + FLU_GHOST_SIZE, FLU_GHOST_SIZE, s_In, s_Half, s_Flux, true, 0, MinDens ); + } + +} // FUNCTION : CUFLU_ELBDMSolver_FD + + + +//------------------------------------------------------------------------------------------------------- +// Function : CUFLU_Advance +// Description : Use GPU to advance solutions by one time-step +// +// Note : 1. Based on expanding the kinematic propagator to 3rd order +// 2. Prefix "g" for pointers pointing to the "Global" memory space +// Prefix "s" for pointers pointing to the "Shared" memory space +// 3. The direction of the one dimensional sweep is determined by the input parameter "XYZ" +// +// Parameter : g_Fluid_In : Global memory array storing the input variables +// g_Fluid_Out : Global memory array to store the output variables +// g_Flux : Global memory array to store the output fluxes (useful only if StoreFlux == true) +// dt : Time interval to advance solution +// _dh : 1 / grid size +// Eta : Particle mass / Planck constant +// StoreFlux : true --> store the coarse-fine fluxes +// --> useful only if CONSERVE_MASS is defined +// Taylor3_Coeff : Coefficient in front of the third term in the Taylor expansion +// j_gap : Number of useless grids on each side in the j direction (j may not be equal to y) +// k_gap : Number of useless grids on each side in the k direction (k mya not be equal to z) +// s_In : Shared memory array to store the input data +// s_Half : Shared memory array to store the half-step solution +// s_Flux : Shared memory array to store the boundary fluxes +// FinalOut : true --> store the updated data to g_Fluid_Out +// XYZ : 0 : Update the solution in the x direction +// 3 : Update the solution in the y direction +// 6 : Update the solution in the z direction +// --> This parameter is also used to determine the place to store the output fluxes +// MinDens : Minimum allowed density +//------------------------------------------------------------------------------------------------------- +__device__ void CUFLU_Advance( real g_Fluid_In [][FLU_NIN ][ CUBE(FLU_NXT) ], + real g_Fluid_Out[][FLU_NOUT][ CUBE(PS2) ], + real g_Flux [][9][NFLUX_TOTAL][ SQR(PS2) ], + const real dt, const real _dh, const real Eta, const bool StoreFlux, const real Taylor3_Coeff, + const uint j_gap, const uint k_gap, real s_In[][FLU_BLOCK_SIZE_Y][FLU_NXT], + real s_Half[][FLU_BLOCK_SIZE_Y][FLU_NXT], real s_Flux[][PS2+1], const bool FinalOut, + const int XYZ, const real MinDens ) +{ + + const real _Eta = (real)1.0/Eta; + const real dT = (real)0.5*dt*_Eta; + const real _Eta2_dh = (real)0.5*_dh*_Eta; + const real Coeff1 = dT*_dh*_dh; +# ifdef CONSERVE_MASS + const real Coeff2 = Taylor3_Coeff*SQR(Coeff1); +# else + const real Coeff2 = (real)0.5*SQR(Coeff1); + const real Coeff3 = Taylor3_Coeff*CUBE(Coeff1); +# endif + + const uint bx = blockIdx.x; + const uint tx = threadIdx.x; + const uint ty = threadIdx.y; + const uint tid = __umul24(ty,FLU_BLOCK_SIZE_X) + tx; + const uint size_j = FLU_NXT - (j_gap<<1); + const uint size_k = FLU_NXT - (k_gap<<1); + const uint NColumnTotal = __umul24( size_j, size_k ); // total number of data columns to be updated + const uint i = tx + FLU_GHOST_SIZE; // (i,j,k): array indices used in g_Fluid_In + const uint j_end = FLU_NXT - j_gap; + uint j = j_gap + ty%size_j; + uint k = k_gap + ty/size_j; + uint Column0 = 0; // the total number of columns that have been updated + uint NColumnOnce = MIN( NColumnTotal, FLU_BLOCK_SIZE_Y ); + + double Amp_New; // use double precision to reduce the round-off error in the mass conservation + real Re_Old, Im_Old, Re_New, Im_New; + uint Idx1, Idx2, Idx3, delta_k; + +# ifdef CONSERVE_MASS + const uint NThread = FLU_BLOCK_SIZE_X*FLU_BLOCK_SIZE_Y; + const uint NHalf = FLU_NXT - 4*LAP_GHOST; + const real dT_dh2 = dT*_dh*_dh; + const uint txp = tx + 1; + + double Amp_Old, Amp_Corr; // use double precision to reduce the round-off error in the mass conservation + real R, I, dR, dI; + uint Idx; + uint si, sj; // array indices used in the shared memory array + uint f, fp1; // array indices used in the s_Flux array +# ifdef LAPLACIAN_4TH + uint fm1, fp2; +# endif +# endif // #ifdef CONSERVE_MASS + + +// determine the array indices for loading the ghost-zone data + bool LoadGhost = false; // true --> load the ghost-zone data + uint LoadGhost_i; + int LoadGhost_di, LoadGhost_dIdx1; + + if ( tx < 2*FLU_GHOST_SIZE ) + { + LoadGhost = true; + + if ( tx < FLU_GHOST_SIZE ) LoadGhost_di = -FLU_GHOST_SIZE; + else LoadGhost_di = -FLU_GHOST_SIZE + PS2; + + switch ( XYZ ) + { + case 0: LoadGhost_dIdx1 = LoadGhost_di; break; + case 3: LoadGhost_dIdx1 = __mul24( LoadGhost_di, FLU_NXT ); break; + case 6: LoadGhost_dIdx1 = __mul24( LoadGhost_di, FLU_NXT*FLU_NXT ); break; + } + + LoadGhost_i = (int)i + LoadGhost_di; + } // if ( tx < 2*FLU_GHOST_SIZE ) + + +// loop over all data columns + while ( Column0 < NColumnTotal ) + { +// 1. load data into shared memory + if ( tid < NColumnOnce*PS2 ) + { +// 1.1 determine the array indices for loading global memory data along different directions + switch ( XYZ ) + { + case 0: Idx1 = to1D1( k, j, i ); break; + case 3: Idx1 = to1D1( k, i, j ); break; + case 6: Idx1 = to1D1( i, k, j ); break; + } + +// 1.2 load the interior data into shared memory + Re_Old = g_Fluid_In[bx][0][Idx1]; + Im_Old = g_Fluid_In[bx][1][Idx1]; + + s_In[0][ty][i] = Re_Old; + s_In[1][ty][i] = Im_Old; + +// 1.3 load the ghost-zone data into shared memory + if ( LoadGhost ) + { + s_In[0][ty][LoadGhost_i] = g_Fluid_In[bx][0][ (int)Idx1 + LoadGhost_dIdx1 ]; + s_In[1][ty][LoadGhost_i] = g_Fluid_In[bx][1][ (int)Idx1 + LoadGhost_dIdx1 ]; + } + } // if ( tid < NColumnOnce*PS2 ) + + __syncthreads(); + + +# ifdef CONSERVE_MASS + + +// 2. half-step solution + Idx = tid; + while ( Idx < NColumnOnce*NHalf ) + { + si = Idx % NHalf + 2*LAP_GHOST; + sj = Idx / NHalf; + + s_Half[0][sj][si] = s_In[0][sj][si] - (real)0.5*Coeff1*LAP1( s_In[1][sj], si ) - Coeff2*LAP2( s_In[0][sj], si ); + s_Half[1][sj][si] = s_In[1][sj][si] + (real)0.5*Coeff1*LAP1( s_In[0][sj], si ) - Coeff2*LAP2( s_In[1][sj], si ); + + Idx += NThread; + } // while ( Idx < NColumnOnce*NHalf ) + + __syncthreads(); + + +// 3. calculate the face-center fluxes (the coefficient _dh has been absorted into the constant dT_dh2) + Idx = tid; + while ( Idx < NColumnOnce*(PS2+1) ) + { + si = Idx % (PS2+1); + sj = Idx / (PS2+1); + f = si + FLU_GHOST_SIZE - 1; + fp1 = f + 1; + +# ifdef LAPLACIAN_4TH + fm1 = f - 1; + fp2 = f + 2; + + R = real(1./28.)*( -s_Half[0][sj][fm1]+(real)15*s_Half[0][sj][f]+(real)15*s_Half[0][sj][fp1]-s_Half[0][sj][fp2] ); + I = real(1./28.)*( -s_Half[1][sj][fm1]+(real)15*s_Half[1][sj][f]+(real)15*s_Half[1][sj][fp1]-s_Half[1][sj][fp2] ); + dR = real(1./12.)*( +s_Half[0][sj][fm1]-(real)15*s_Half[0][sj][f]+(real)15*s_Half[0][sj][fp1]-s_Half[0][sj][fp2] ); + dI = real(1./12.)*( +s_Half[1][sj][fm1]-(real)15*s_Half[1][sj][f]+(real)15*s_Half[1][sj][fp1]-s_Half[1][sj][fp2] ); + +# else + + R = real(0.5)*( + s_Half[0][sj][f] + s_Half[0][sj][fp1] ); + I = real(0.5)*( + s_Half[1][sj][f] + s_Half[1][sj][fp1] ); + dR = ( - s_Half[0][sj][f] + s_Half[0][sj][fp1] ); + dI = ( - s_Half[1][sj][f] + s_Half[1][sj][fp1] ); +# endif + + s_Flux[sj][si] = (real)2.0*( R*dI - I*dR ); + + Idx += NThread; + } // while ( Idx < NColumnOnce*(PS2+1) ) + + __syncthreads(); + + +// 4a. full-step solution (equivalent to the 3rd-order Taylor expansion) + if ( tid < NColumnOnce*PS2 ) + { + Re_New = Re_Old - Coeff1*LAP1( s_Half[1][ty], i ); + Im_New = Im_Old + Coeff1*LAP1( s_Half[0][ty], i ); + + Amp_Old = SQR( Re_Old ) + SQR( Im_Old ); + Amp_New = SQR( Re_New ) + SQR( Im_New ); + Amp_Corr = Amp_Old - dT_dh2*( s_Flux[ty][txp] - s_Flux[ty][tx] ); + +// be careful about the negative density and the vacuum (where we might have Amp_New == 0.0) +// if ( Amp_Corr > (real)0.0 && Amp_New > (real)0.0 ) + if ( Amp_Corr > 0.0 && Amp_New > 0.0 ) + { + /* + Re_New *= SQRT( Amp_Corr / Amp_New ); + Im_New *= SQRT( Amp_Corr / Amp_New ); + */ + Re_New *= sqrt( Amp_Corr / Amp_New ); // use double precision to improve the mass conservation further + Im_New *= sqrt( Amp_Corr / Amp_New ); + Amp_New = Amp_Corr; + } + } // if if ( tid < NColumnOnce*PS2 ) + + +# else // CONSERVE_MASS + + +// 4b. full-step solution if CONSERVE_MASS is not defined (equivalent to the 3rd-order Taylor expansion) + if ( tid < NColumnOnce*PS2 ) + { + Re_New = Re_Old - Coeff1*LAP1( s_In[1][ty], i ) - Coeff2*LAP2( s_In[0][ty], i ) + Coeff3*LAP3( s_In[1][ty], i ); + Im_New = Im_Old + Coeff1*LAP1( s_In[0][ty], i ) - Coeff2*LAP2( s_In[1][ty], i ) - Coeff3*LAP3( s_In[0][ty], i ); + Amp_New = SQR( Re_New ) + SQR( Im_New ); + } + + +# endif // CONSERVE_MASS ... else ... + + +// 5. store the updated data (and fluxes) back to the global memory + if ( tid < NColumnOnce*PS2 ) + { +// 5.1 data + if ( FinalOut ) + { +// apply the the minimum density check +// --> to be consistent with the CPU solver, we apply it just before storing the output results to g_Fluid_Out + if ( Amp_New < MinDens ) + { + const real Rescale = SQRT( MinDens / (real)Amp_New ); + + Re_New *= Rescale; + Im_New *= Rescale; + Amp_New = MinDens; + } + + switch ( XYZ ) + { + case 0: Idx2 = to1D2( k, j, i ); break; + case 3: Idx2 = to1D2( k, i, j ); break; + case 6: Idx2 = to1D2( i, k, j ); break; + } + + g_Fluid_Out[bx][0][Idx2] = Amp_New; + g_Fluid_Out[bx][1][Idx2] = Re_New; + g_Fluid_Out[bx][2][Idx2] = Im_New; + } + + else + { + g_Fluid_In[bx][0][Idx1] = Re_New; + g_Fluid_In[bx][1][Idx1] = Im_New; + } + + +// 5.2 fluxes (for the flux-correction operation) + if ( StoreFlux && tx == 0 ) + if ( k >= FLU_GHOST_SIZE && k < FLU_NXT-FLU_GHOST_SIZE ) + if ( j >= FLU_GHOST_SIZE && j < FLU_NXT-FLU_GHOST_SIZE ) + { + Idx3 = __umul24( k-FLU_GHOST_SIZE, PS2 ) + (j-FLU_GHOST_SIZE); + + g_Flux[bx][XYZ+0][0][Idx3] = s_Flux[ty][ 0]*_Eta2_dh; + g_Flux[bx][XYZ+1][0][Idx3] = s_Flux[ty][PS1]*_Eta2_dh; + g_Flux[bx][XYZ+2][0][Idx3] = s_Flux[ty][PS2]*_Eta2_dh; + } + + +// 5.3 reset the target array indices + j += NColumnOnce; + + if ( j >= j_end ) + { + delta_k = ( j - j_end )/size_j + 1; + k += delta_k; + j -= __umul24( size_j, delta_k ); + } + } // if ( tid < NColumnOnce*PS2 ) + + __syncthreads(); + + Column0 += NColumnOnce; + NColumnOnce = MIN( NColumnTotal - Column0, FLU_BLOCK_SIZE_Y ); + + } // while ( Column0 < NColumnTotal ) + +} // FUNCTION : CUFLU_Advance + + + +#endif // #if ( defined GPU && MODEL == ELBDM && WAVE_SCHEME == WAVE_FD ) diff --git a/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_GramFE_FFT.cu b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_GramFE_FFT.cu new file mode 120000 index 0000000000..6b159767d4 --- /dev/null +++ b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_GramFE_FFT.cu @@ -0,0 +1 @@ +../CPU_ELBDM/CPU_ELBDMSolver_GramFE_FFT.cpp \ No newline at end of file diff --git a/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_GramFE_MATMUL.cu b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_GramFE_MATMUL.cu new file mode 120000 index 0000000000..67502e5e48 --- /dev/null +++ b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_GramFE_MATMUL.cu @@ -0,0 +1 @@ +../CPU_ELBDM/CPU_ELBDMSolver_GramFE_MATMUL.cpp \ No newline at end of file diff --git a/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_HJ.cu b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_HJ.cu new file mode 120000 index 0000000000..5e82a8c2b0 --- /dev/null +++ b/src/Model_ELBDM/GPU_ELBDM/CUFLU_ELBDMSolver_HJ.cu @@ -0,0 +1 @@ +../CPU_ELBDM/CPU_ELBDMSolver_HJ.cpp \ No newline at end of file diff --git a/src/Model_ELBDM/GPU_ELBDMGravity/CUPOT_ELBDMGravitySolver.cu b/src/Model_ELBDM/GPU_ELBDMGravity/CUPOT_ELBDMGravitySolver.cu new file mode 120000 index 0000000000..82fb664bae --- /dev/null +++ b/src/Model_ELBDM/GPU_ELBDMGravity/CUPOT_ELBDMGravitySolver.cu @@ -0,0 +1 @@ +../CPU_ELBDMGravity/CPU_ELBDMGravitySolver.cpp \ No newline at end of file diff --git a/src/Model_ELBDM/GPU_ELBDMGravity/CUPOT_ELBDMGravitySolver_HJ.cu b/src/Model_ELBDM/GPU_ELBDMGravity/CUPOT_ELBDMGravitySolver_HJ.cu new file mode 120000 index 0000000000..eedfa85ae6 --- /dev/null +++ b/src/Model_ELBDM/GPU_ELBDMGravity/CUPOT_ELBDMGravitySolver_HJ.cu @@ -0,0 +1 @@ +../CPU_ELBDMGravity/CPU_ELBDMGravitySolver_HJ.cpp \ No newline at end of file diff --git a/src/Model_Hydro/CPU_Hydro/CPU_Shared_DataReconstruction.cpp b/src/Model_Hydro/CPU_Hydro/CPU_Shared_DataReconstruction.cpp index 3ada061132..a1257bda5a 100644 --- a/src/Model_Hydro/CPU_Hydro/CPU_Shared_DataReconstruction.cpp +++ b/src/Model_Hydro/CPU_Hydro/CPU_Shared_DataReconstruction.cpp @@ -199,7 +199,7 @@ void Hydro_DataReconstruction( const real g_ConVar [][ CUBE(FLU_NXT) ], const EoS_t *EoS ) { -//### NOTE: temporary solution to the bug in cuda 10.1 and 10.2 that incorrectly overwrites didx_cc[] +//###NOTE: temporary solution to the bug in cuda 10.1 and 10.2 that incorrectly overwrites didx_cc[] # if ( FLU_SCHEME == MHM ) const int NIn = FLU_NXT; # elif ( FLU_SCHEME == MHM_RP ) @@ -713,7 +713,7 @@ void Hydro_DataReconstruction( const real g_ConVar [][ CUBE(FLU_NXT) ], const EoS_t *EoS ) { -//### NOTE: temporary solution to the bug in cuda 10.1 and 10.2 that incorrectly overwrites didx_cc[] +//###NOTE: temporary solution to the bug in cuda 10.1 and 10.2 that incorrectly overwrites didx_cc[] # if ( FLU_SCHEME == MHM ) const int NIn = FLU_NXT; # elif ( FLU_SCHEME == MHM_RP ) diff --git a/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp b/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp index 69cf5d8e3f..b789b151a3 100644 --- a/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp +++ b/src/Model_Hydro/MHD_Aux_Check_DivergenceB.cpp @@ -129,7 +129,8 @@ void MHD_Aux_Check_DivergenceB( const bool Verbose, const char *comment ) if ( MPI_Rank == 0 ) { static bool FirstTime = true; - const char *FileName = "Record__DivB"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__DivB", OUTPUT_DIR ); // output header if ( FirstTime ) diff --git a/src/Model_Hydro/MHD_Aux_Check_InterfaceB.cpp b/src/Model_Hydro/MHD_Aux_Check_InterfaceB.cpp index 90d9e76e2a..b5bcb2569e 100644 --- a/src/Model_Hydro/MHD_Aux_Check_InterfaceB.cpp +++ b/src/Model_Hydro/MHD_Aux_Check_InterfaceB.cpp @@ -106,7 +106,7 @@ void MHD_Aux_Check_InterfaceB( const char *comment ) if ( Pass && MPI_Rank == 0 ) - Aux_Message( stdout, "\"%s\" : <%s> PASSED, Time = %13.7e, Step = %ld \n", + Aux_Message( stdout, "\"%s\" : <%s> PASSED, Time = %13.7e, Step = %ld\n", comment, __FUNCTION__, Time[0], Step ); } // FUNCTION : MHD_Aux_Check_InterfaceB diff --git a/src/Output/Output_BasePowerSpectrum.cpp b/src/Output/Output_BasePowerSpectrum.cpp index 97658b4d4a..e9565aa517 100644 --- a/src/Output/Output_BasePowerSpectrum.cpp +++ b/src/Output/Output_BasePowerSpectrum.cpp @@ -5,10 +5,12 @@ //output the dimensionless power spectrum //#define DIMENSIONLESS_FORM - static void GetBasePowerSpectrum( real *VarK, const int j_start, const int dj, double *PS_total, double *NormDC ); -extern root_fftw::real_plan_nd FFTW_Plan_PS; +extern root_fftw::real_plan_nd FFTW_Plan_PS; + + + //------------------------------------------------------------------------------------------------------- // Function : Output_BasePowerSpectrum @@ -48,26 +50,27 @@ void Output_BasePowerSpectrum( const char *FileName, const long TVar ) local_ny_after_transpose = NULL_INT; local_y_start_after_transpose = NULL_INT; total_local_size = local_nx*local_ny*local_nz; -# else // # ifdef SERIAL +# else // #ifdef SERIAL # if ( SUPPORT_FFTW == FFTW3 ) total_local_size = fftw_mpi_local_size_3d_transposed( FFT_Size[2], local_ny, local_nx, MPI_COMM_WORLD, - &local_nz, &local_z_start, &local_ny_after_transpose, &local_y_start_after_transpose ); -# else // # if ( SUPPORT_FFTW == FFTW3 ) + &local_nz, &local_z_start, &local_ny_after_transpose, + &local_y_start_after_transpose ); +# else rfftwnd_mpi_local_sizes( FFTW_Plan_PS, &local_nz, &local_z_start, &local_ny_after_transpose, &local_y_start_after_transpose, &total_local_size ); -# endif // # if ( SUPPORT_FFTW == FFTW3 ) ... # else -# endif // # ifdef SERIAL ... # else +# endif +# endif // #ifdef SERIAL ... else ... // check integer overflow (assuming local_nx*local_ny*local_nz ~ total_local_size) const long local_nxyz = (long)local_nx*(long)local_ny*(long)local_nz; - if ( local_nx < 0 || local_ny < 0 || local_nz < 0 ) - Aux_Error( ERROR_INFO, "local_nx/y/z (%ld, %ld, %ld) < 0 for FFT !!", local_nx, local_ny, local_nz ); + if ( local_nx < 0 || local_ny < 0 || local_nz < 0 ) + Aux_Error( ERROR_INFO, "local_nx/y/z (%ld, %ld, %ld) < 0 for FFT !!\n", local_nx, local_ny, local_nz ); if ( ( sizeof(mpi_index_int) == sizeof(int) && local_nxyz > __INT_MAX__ ) || total_local_size < 0 ) Aux_Error( ERROR_INFO, "local_nx*local_ny*local_nz = %d*%d*%d = %ld > __INT_MAX__ (%d)\n" " and/or total_local_size (%ld) < 0 for FFT, suggesting integer overflow !!\n" - " --> Try using more MPI processes\n", + " --> Try using more MPI processes or switching to FFTW3\n", local_nx, local_ny, local_nz, local_nxyz, __INT_MAX__, total_local_size ); // collect "local_nz" from all ranks and set the corresponding list "List_z_start" @@ -89,7 +92,7 @@ void Output_BasePowerSpectrum( const char *FileName, const long TVar ) const int NRecvSlice = MIN( List_z_start[MPI_Rank]+local_nz, NX0_TOT[2] ) - MIN( List_z_start[MPI_Rank], NX0_TOT[2] ); double *PS_total = NULL; - real *VarK = (real*) root_fftw::fft_malloc(sizeof(real) * total_local_size); // array storing data + real *VarK = (real*)root_fftw::fft_malloc( sizeof(real)*total_local_size ); // array storing data real *SendBuf = new real [ (long)amr->NPatchComma[0][1]*CUBE(PS1) ]; // MPI send buffer for data real *RecvBuf = new real [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice ]; // MPI recv buffer for data long *SendBuf_SIdx = new long [ (long)amr->NPatchComma[0][1]*PS1 ]; // MPI send buffer for 1D coordinate in slab @@ -120,7 +123,7 @@ void Output_BasePowerSpectrum( const char *FileName, const long TVar ) # endif if ( TVar == _TOTAL_DENS ) { - Par_CollectParticle2OneLevel( 0, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ|_PAR_TYPE, PredictPos, Time[0], + Par_CollectParticle2OneLevel( 0, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ, _PAR_TYPE, PredictPos, Time[0], SibBufPatch, FaSibBufPatch, JustCountNPar_No, TimingSendPar_No ); Prepare_PatchData_InitParticleDensityArray( 0, Time[0] ); @@ -165,7 +168,7 @@ void Output_BasePowerSpectrum( const char *FileName, const long TVar ) // 7. free memory - root_fftw::fft_free(VarK); + root_fftw::fft_free( VarK ); delete [] SendBuf; delete [] RecvBuf; delete [] SendBuf_SIdx; diff --git a/src/Output/Output_BoundaryFlagList.cpp b/src/Output/Output_BoundaryFlagList.cpp index 7c665b98c0..ab3d26fe59 100644 --- a/src/Output/Output_BoundaryFlagList.cpp +++ b/src/Output/Output_BoundaryFlagList.cpp @@ -20,9 +20,9 @@ void Output_BoundaryFlagList( const int option, const int lv, const char *commen Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "option", option ); - char FileName[100]; - if ( option ) sprintf( FileName, "BoundaryFlagList_%d_%d", MPI_Rank, lv ); - else sprintf( FileName, "BufferFlagList_%d_%d", MPI_Rank, lv ); + char FileName[MAX_STRING]; + if ( option ) sprintf( FileName, "%s/BoundaryFlagList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); + else sprintf( FileName, "%s/BufferFlagList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); if ( comment != NULL ) { diff --git a/src/Output/Output_DumpData.cpp b/src/Output/Output_DumpData.cpp index 9e6961956b..676f5875b8 100644 --- a/src/Output/Output_DumpData.cpp +++ b/src/Output/Output_DumpData.cpp @@ -103,45 +103,50 @@ void Output_DumpData( const int Stage ) // set the file names for all output functions - char FileName_Total[50], FileName_Part[50], FileName_Temp[50], FileName_PS[50]; + char FileName_Total[MAX_STRING], FileName_Part[MAX_STRING], FileName_Temp[MAX_STRING], FileName_PS[MAX_STRING]; # ifdef PARTICLE - char FileName_Particle[50]; + char FileName_Particle[MAX_STRING]; # endif - if ( OPT__OUTPUT_TOTAL ) sprintf( FileName_Total, "Data_%06d", DumpID ); + if ( OPT__OUTPUT_TOTAL ) + { + sprintf( FileName_Total, "%s/Data_%06d", OUTPUT_DIR, DumpID ); + } if ( OPT__OUTPUT_PART ) { + sprintf( FileName_Part, "%s/", OUTPUT_DIR ); switch ( OPT__OUTPUT_PART ) { - case OUTPUT_XY : sprintf( FileName_Temp, "XYslice_z%.3f_%06d", OUTPUT_PART_Z, DumpID ); break; - case OUTPUT_YZ : sprintf( FileName_Temp, "YZslice_x%.3f_%06d", OUTPUT_PART_X, DumpID ); break; - case OUTPUT_XZ : sprintf( FileName_Temp, "XZslice_y%.3f_%06d", OUTPUT_PART_Y, DumpID ); break; - case OUTPUT_X : sprintf( FileName_Temp, "Xline_y%.3f_z%.3f_%06d", OUTPUT_PART_Y, OUTPUT_PART_Z, DumpID ); break; - case OUTPUT_Y : sprintf( FileName_Temp, "Yline_x%.3f_z%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Z, DumpID ); break; - case OUTPUT_Z : sprintf( FileName_Temp, "Zline_x%.3f_y%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Y, DumpID ); break; + case OUTPUT_XY : sprintf( FileName_Temp, "XYslice_z%.3f_%06d", OUTPUT_PART_Z, DumpID ); break; + case OUTPUT_YZ : sprintf( FileName_Temp, "YZslice_x%.3f_%06d", OUTPUT_PART_X, DumpID ); break; + case OUTPUT_XZ : sprintf( FileName_Temp, "XZslice_y%.3f_%06d", OUTPUT_PART_Y, DumpID ); break; + case OUTPUT_X : sprintf( FileName_Temp, "Xline_y%.3f_z%.3f_%06d", OUTPUT_PART_Y, OUTPUT_PART_Z, DumpID ); break; + case OUTPUT_Y : sprintf( FileName_Temp, "Yline_x%.3f_z%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Z, DumpID ); break; + case OUTPUT_Z : sprintf( FileName_Temp, "Zline_x%.3f_y%.3f_%06d", OUTPUT_PART_X, OUTPUT_PART_Y, DumpID ); break; case OUTPUT_DIAG : sprintf( FileName_Temp, "Diag_%06d", DumpID ); break; + case OUTPUT_BOX : sprintf( FileName_Temp, "Box_%06d", DumpID ); break; default : Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "OPT__OUTPUT_PART", OPT__OUTPUT_PART ); } // switch ( OPT__OUTPUT_PART ) if ( OPT__OUTPUT_BASE ) { - sprintf( FileName_Part, "%s", "Base" ); + strcat( FileName_Part, "Base" ); strcat( FileName_Part, FileName_Temp ); } else - strcpy( FileName_Part, FileName_Temp ); + strcat( FileName_Part, FileName_Temp ); } // if ( OPT__OUTPUT_PART ) if ( OPT__OUTPUT_BASEPS ) - sprintf( FileName_PS, "PowerSpec_%06d", DumpID ); + sprintf( FileName_PS, "%s/PowerSpec_%06d", OUTPUT_DIR, DumpID ); # ifdef PARTICLE if ( OPT__OUTPUT_PAR_MODE == OUTPUT_PAR_TEXT ) - sprintf( FileName_Particle, "Particle_%06d.txt", DumpID ); + sprintf( FileName_Particle, "%s/Particle_%06d.txt", OUTPUT_DIR, DumpID ); if ( OPT__OUTPUT_PAR_MODE == OUTPUT_PAR_CBIN ) - sprintf( FileName_Particle, "Particle_%06d.cbin", DumpID ); + sprintf( FileName_Particle, "%s/Particle_%06d.cbin", OUTPUT_DIR, DumpID ); # endif @@ -313,7 +318,8 @@ void Output_DumpData( const int Stage ) void Write_DumpRecord() { - const char FileName[] = "Record__Dump"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__Dump", OUTPUT_DIR ); // create the "Record__Dump" file at the first dump diff --git a/src/Output/Output_DumpData_Part.cpp b/src/Output/Output_DumpData_Part.cpp index 8940b65724..ddd269c27d 100644 --- a/src/Output/Output_DumpData_Part.cpp +++ b/src/Output/Output_DumpData_Part.cpp @@ -25,6 +25,7 @@ static void GetDerivedField( real (*Der_FluIn)[NCOMP_TOTAL][ CUBE(DER_NXT) // OUTPUT_Y : y line // OUTPUT_Z : z line // OUTPUT_DIAG : diagonal along (+1,+1,+1) +// OUTPUT_BOX : entire box // // BaseOnly : Only output the base-level data // @@ -42,9 +43,10 @@ void Output_DumpData_Part( const OptOutputPart_t Part, const bool BaseOnly, cons // check the input parameters - if ( Part != OUTPUT_XY && Part != OUTPUT_YZ && Part != OUTPUT_XZ && - Part != OUTPUT_X && Part != OUTPUT_Y && Part != OUTPUT_Z && Part != OUTPUT_DIAG ) - Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [0 ~ 6] !!\n", Part ); + if ( Part != OUTPUT_XY && Part != OUTPUT_YZ && Part != OUTPUT_XZ && + Part != OUTPUT_X && Part != OUTPUT_Y && Part != OUTPUT_Z && + Part != OUTPUT_DIAG && Part != OUTPUT_BOX ) + Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [0 ~ 8] !!\n", Part ); if ( ( Part == OUTPUT_YZ || Part == OUTPUT_Y || Part == OUTPUT_Z ) && ( x < 0.0 || x >= amr->BoxSize[0] ) ) @@ -93,14 +95,15 @@ void Output_DumpData_Part( const OptOutputPart_t Part, const bool BaseOnly, cons switch ( Part ) { - case OUTPUT_XY : Check_z = true; break; - case OUTPUT_YZ : Check_x = true; break; - case OUTPUT_XZ : Check_y = true; break; - case OUTPUT_X : Check_y = true; Check_z = true; break; - case OUTPUT_Y : Check_x = true; Check_z = true; break; - case OUTPUT_Z : Check_x = true; Check_y = true; break; + case OUTPUT_XY : Check_z = true; break; + case OUTPUT_YZ : Check_x = true; break; + case OUTPUT_XZ : Check_y = true; break; + case OUTPUT_X : Check_y = true; Check_z = true; break; + case OUTPUT_Y : Check_x = true; Check_z = true; break; + case OUTPUT_Z : Check_x = true; Check_y = true; break; case OUTPUT_DIAG : + case OUTPUT_BOX : case OUTPUT_PART_NONE : break; // do nothing } @@ -241,7 +244,7 @@ void Output_DumpData_Part( const OptOutputPart_t Part, const bool BaseOnly, cons }}} } // if patch corner is within the target range - } // if ( Part == OUTPUT_DIAG ... else ... ) + } // if ( Part == OUTPUT_DIAG ) ... else ... } // if ( amr->patch[0][lv][PID]->son == -1 ) } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) } // for (int lv=0; lv replace GRA_BLOCK_SIZE_Z by GRA_BLOCK_SIZE // 2210 : 2019/06/07 --> support MHD // 2220 : 2020/08/25 --> output EOS +// 2300 : 2024/08/25 --> output particle integer attributes //------------------------------------------------------------------------------------------------------- void Output_DumpData_Total( const char *FileName ) { @@ -55,14 +56,6 @@ void Output_DumpData_Total( const char *FileName ) if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s (DumpID = %d) ...\n", __FUNCTION__, DumpID ); -// when snapshot is output as binary format, only support identical floating-point precision between field and particle data -# ifdef PARTICLE -# if ( (defined FLOAT8 && !defined FLOAT8_PAR) || (!defined FLOAT8 && defined FLOAT8_PAR) ) - Aux_Error( ERROR_INFO, "Must adopt FLOAT8_PAR=FLOAT8 for OPT__OUTPUT_TOTAL=2 (C-binary) !!\n" ); -# endif -# endif - - // check the synchronization for (int lv=1; lvPar->NPar_Active_AllRank*sizeof(real); + ExpectFileSize += (long)PAR_NATT_FLT_STORED*amr->Par->NPar_Active_AllRank*sizeof(real_par); + ExpectFileSize += (long)PAR_NATT_INT_STORED*amr->Par->NPar_Active_AllRank*sizeof(long_par); # endif // a. output the information of data format // ================================================================================================= - const long FormatVersion = 2220; + const long FormatVersion = 2300; const long CheckCode = 123456789; fseek( File, HeaderOffset_Format, SEEK_SET ); @@ -504,11 +498,15 @@ void Output_DumpData_Total( const char *FileName ) # endif # ifdef PARTICLE - const int par_natt_stored = PAR_NATT_STORED; - const int par_natt_user = PAR_NATT_USER; + const int par_natt_flt_stored = PAR_NATT_FLT_STORED; + const int par_natt_flt_user = PAR_NATT_FLT_USER; + const int par_natt_int_stored = PAR_NATT_INT_STORED; + const int par_natt_int_user = PAR_NATT_INT_USER; # else - const int par_natt_stored = NULL_INT; - const int par_natt_user = NULL_INT; + const int par_natt_flt_stored = NULL_INT; + const int par_natt_flt_user = NULL_INT; + const int par_natt_int_stored = NULL_INT; + const int par_natt_int_user = NULL_INT; # endif fwrite( &ncomp_fluid, sizeof(int), 1, File ); @@ -530,8 +528,10 @@ void Output_DumpData_Total( const char *FileName ) fwrite( &pot_block_size_x, sizeof(int), 1, File ); fwrite( &pot_block_size_z, sizeof(int), 1, File ); fwrite( &gra_block_size, sizeof(int), 1, File ); - fwrite( &par_natt_stored, sizeof(int), 1, File ); - fwrite( &par_natt_user, sizeof(int), 1, File ); + fwrite( &par_natt_flt_stored, sizeof(int), 1, File ); + fwrite( &par_natt_flt_user, sizeof(int), 1, File ); + fwrite( &par_natt_int_stored, sizeof(int), 1, File ); + fwrite( &par_natt_int_user, sizeof(int), 1, File ); // d. output the simulation parameters recorded in the file "Input__Parameter" @@ -790,7 +790,7 @@ void Output_DumpData_Total( const char *FileName ) # ifdef MASSIVE_PARTICLES if ( OPT__OUTPUT_PAR_DENS != PAR_OUTPUT_DENS_NONE ) { - Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ|_PAR_TYPE, PredictParPos_No, + Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ, _PAR_TYPE, PredictParPos_No, NULL_REAL, SibBufPatch, FaSibBufPatch, JustCountNPar_No, TimingSendPar_No ); Prepare_PatchData_InitParticleDensityArray( lv, Time[lv] ); @@ -938,9 +938,11 @@ void Output_DumpData_Total( const char *FileName ) // allocate I/O buffer (just for better I/O performance) - const long ParBufSize = 10000000; // number of particles dumped at a time + const long ParFltBufSize = 10000000; // number of particles dumped at a time + const long ParIntBufSize = 10000000; - real *ParBuf = new real [ParBufSize]; + real_par *ParFltBuf = new real_par [ParFltBufSize]; + long_par *ParIntBuf = new long_par [ParIntBufSize]; // set the file offset of particle data for each rank @@ -948,12 +950,69 @@ void Output_DumpData_Total( const char *FileName ) // output particle data (one attribute at a time to avoid creating holes in the file) - const long ParDataSize1v = amr->Par->NPar_Active_AllRank*sizeof(real); + const long ParFltDataSize1v = amr->Par->NPar_Active_AllRank*sizeof(real_par); + const long ParIntDataSize1v = amr->Par->NPar_Active_AllRank*sizeof(long_par); long NParInBuf, ParID, FileOffset_ThisVar; int NParThisPatch; - for (int v=0; v = %ld != expect = %ld !!\n", + FileName, ftell(File), FileOffset_ThisVar ); + + for (int lv=0; lvNPatchComma[lv][1]; PID++) + { + NParThisPatch = amr->patch[0][lv][PID]->NPar; + +// check if the particle I/O buffer is exceeded (possible only if the number of particles in this patch > ParFltBufSize) + if ( NParInBuf + NParThisPatch > ParFltBufSize ) + { + Aux_Message( stderr, "ERROR : NParInBuf (%ld) + NParThisPatch (%d) = %ld > ParFltBufSize (%ld) ...\n", + NParInBuf, NParThisPatch, NParInBuf+NParThisPatch, ParFltBufSize ); + Aux_Message( stderr, " ==> Please increase ParFltBufSize in the file \"%s\" !!\n", __FILE__ ); + MPI_Exit(); + } + +// store particle data into the I/O buffer + for (int p=0; ppatch[0][lv][PID]->ParList[p]; + + ParFltBuf[ NParInBuf ++ ] = amr->Par->AttributeFlt[v][ParID]; + } + +// store particle data from I/O buffer to disk + if ( PID+1 == amr->NPatchComma[lv][1] || NParInBuf + amr->patch[0][lv][PID+1]->NPar > ParFltBufSize ) + { + fwrite( ParFltBuf, sizeof(real_par), NParInBuf, File ); + + NParInBuf = 0; + } + } // for PID, lv + + fclose( File ); + } // if ( MPI_Rank == TargetMPIRank ) + + MPI_Barrier( MPI_COMM_WORLD ); + } // for (int TargetMPIRank=0; TargetMPIRankpatch[0][lv][PID]->NPar; -// check if the particle I/O buffer is exceeded (possible only if the number of particles in this patch > ParBufSize) - if ( NParInBuf + NParThisPatch > ParBufSize ) +// check if the particle I/O buffer is exceeded (possible only if the number of particles in this patch > ParIntBufSize) + if ( NParInBuf + NParThisPatch > ParIntBufSize ) { - Aux_Message( stderr, "ERROR : NParInBuf (%ld) + NParThisPatch (%d) = %ld > ParBufSize (%ld) ...\n", - NParInBuf, NParThisPatch, NParInBuf+NParThisPatch, ParBufSize ); - Aux_Message( stderr, " ==> Please increase ParBufSize in the file \"%s\" !!\n", __FILE__ ); + Aux_Message( stderr, "ERROR : NParInBuf (%ld) + NParThisPatch (%d) = %ld > ParIntBufSize (%ld) ...\n", + NParInBuf, NParThisPatch, NParInBuf+NParThisPatch, ParIntBufSize ); + Aux_Message( stderr, " ==> Please increase ParIntBufSize in the file \"%s\" !!\n", __FILE__ ); MPI_Exit(); } @@ -989,13 +1048,13 @@ void Output_DumpData_Total( const char *FileName ) { ParID = amr->patch[0][lv][PID]->ParList[p]; - ParBuf[ NParInBuf ++ ] = amr->Par->Attribute[v][ParID]; + ParIntBuf[ NParInBuf ++ ] = amr->Par->AttributeInt[v][ParID]; } // store particle data from I/O buffer to disk - if ( PID+1 == amr->NPatchComma[lv][1] || NParInBuf + amr->patch[0][lv][PID+1]->NPar > ParBufSize ) + if ( PID+1 == amr->NPatchComma[lv][1] || NParInBuf + amr->patch[0][lv][PID+1]->NPar > ParIntBufSize ) { - fwrite( ParBuf, sizeof(real), NParInBuf, File ); + fwrite( ParIntBuf, sizeof(long_par), NParInBuf, File ); NParInBuf = 0; } @@ -1005,9 +1064,10 @@ void Output_DumpData_Total( const char *FileName ) } // if ( MPI_Rank == TargetMPIRank ) MPI_Barrier( MPI_COMM_WORLD ); - } // for (int TargetMPIRank=0; TargetMPIRank remove variables related to the WAF scheme // 2306 : 2018/12/25 --> replace DT_GRA_BLOCK_SIZE_Z by DT_GRA_BLOCK_SIZE // 2307 : 2018/12/27 --> replace GRA_BLOCK_SIZE_Z by GRA_BLOCK_SIZE -// 2308 : 2019/03/14 --> add OPT__RECORD_NOTE and OPT__RECORD_UNPHY +// 2308a: 2019/01/24 --> add ELBDM_REMOVE_MOTION_CM +// 2308b: 2019/03/14 --> add OPT__RECORD_NOTE and OPT__RECORD_UNPHY // 2309 : 2019/03/27 --> add OPT__FIXUP_ELECTRIC // 2310 : 2019/04/20 --> add OPT__CK_INTERFACE_B // 2311 : 2019/05/22 --> add OPT__CK_DIVERGENCE_B @@ -254,6 +255,15 @@ Procedure for outputting new variables: // 2477 : 2024/04/05 --> output OPT__RECORD_CENTER, COM_CEN_X, COM_CEN_Y, COM_CEN_Z, // COM_MAX_R, COM_MIN_RHO, COM_TOLERR_R, COM_MAX_ITER // 2478 : 2024/04/09 --> output ANGMOM_ORIGIN_X, ANGMOM_ORIGIN_Y, ANGMOM_ORIGIN_Z +// 2479 : 2024/04/23 --> output OPT__RES_PHASE, ELBDM_BASE_SPECTRAL, OPT__FLAG_INTERFERENCE, ELBDM_MATCH_PHASE, +// ELBDM_FIRST_WAVE_LEVEL, OPT__LB_EXCHANGE_FATHER, FlagTable_Interference +// output DENS and PHAS for the hybrid scheme (discard STUB) +// output use_wave_flag[lv] for the hybrid scheme +// 2480 : 2024/07/17 --> output OPT__OUTPUT_PAR_MESH and particle attributes mapped from mesh quantities +// 2481 : 2024/12/11 --> output OPT__FLAG_ANGULAR, FlagTable_Angular, FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, FLAG_ANGULAR_CEN_Z +// OPT__FLAG_RADIAL, FlagTable_Radial, FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, FLAG_RADIAL_CEN_Z +// 2500 : 2024/07/01 --> output particle integer attributes +// 2501 : 2025/01/15 --> output OPT__OUTPUT_TEXT_LENGTH_INT //------------------------------------------------------------------------------------------------------- void Output_DumpData_Total_HDF5( const char *FileName ) { @@ -279,10 +289,17 @@ void Output_DumpData_Total_HDF5( const char *FileName ) int NFieldStored = 0; const int FluDumpIdx0 = NFieldStored; - NFieldStored += NCOMP_TOTAL; - if ( FluDumpIdx0+NCOMP_TOTAL-1 >= NFIELD_STORED_MAX ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID && !defined( GAMER_DEBUG ) ) + const int NCompStore = NCOMP_TOTAL - 1; // do not store STUB field unless we are in debug mode +# else + const int NCompStore = NCOMP_TOTAL; +# endif + + NFieldStored += NCompStore; + + if ( FluDumpIdx0+NCompStore-1 >= NFIELD_STORED_MAX ) Aux_Error( ERROR_INFO, "exceed NFIELD_STORED_MAX (%d) !!\n", NFIELD_STORED_MAX ); - for (int v=0; v= UserDumpIdx0 && v < UserDumpIdx0 + UserDerField_Num ) // e. fluid variables - else if ( v >= FluDumpIdx0 && v < FluDumpIdx0+NCOMP_TOTAL ) + else if ( v >= FluDumpIdx0 && v < FluDumpIdx0+NCompStore ) { +// convert real/imag to density/phase in hybrid scheme +// bitwise reproducibility currently fails in hybrid scheme because of conversion from RE/IM to DENS/PHAS when storing fields in HDF5 +// possible solution could be to convert RE/IM <-> DENS/PHAS using high-precision routines to ensure bitwise identity for significant digits +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] && ( v == REAL || v == IMAG ) ) { + real Re, Im; + for (int PID=0; PIDNPatchComma[lv][1]; PID++) + { + for (int k=0; kpatch[ amr->FluSg[lv] ][lv][PID]->fluid[REAL][k][j][i]; + Im = amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[IMAG][k][j][i]; + + if ( v == REAL ) { + FieldData[PID][k][j][i] = SATAN2( Im, Re ); + } else if ( v == IMAG ) { + FieldData[PID][k][j][i] = (real)0.0; + } + } + } + + } else +# endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) for (int PID=0; PIDNPatchComma[lv][1]; PID++) memcpy( FieldData[PID], amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[v], FieldSizeOnePatch ); - } + } // if ( v >= FluDumpIdx0 && v < FluDumpIdx0+NCompStore ) else Aux_Error( ERROR_INFO, "incorrect index (%d) !!\n", v ); @@ -1231,19 +1275,25 @@ void Output_DumpData_Total_HDF5( const char *FileName ) // which may introduce a large memory overhead // --> solution: we can output a fixed number of particles at a time (see Output_DumpData_Total.cpp) long (*NParLv_EachRank)[NLEVEL] = new long [MPI_NRank][NLEVEL]; // number of particles at each level in each rank - real_par (*ParBuf1v1Lv) = NULL; // buffer storing the data of one particle attribute at one level + real_par (*ParFltBuf1v1Lv) = NULL; // buffer storing the data of one particle floating-point attribute at one level + long_par (*ParIntBuf1v1Lv) = NULL; // buffer storing the data of one particle integer attribute at one level + int Par_NAtt_Mesh = amr->Par->Mesh_Attr_Num; long GParID_Offset[NLEVEL]; // GParID = global particle index (==> unique for each particle) long NParLv_AllRank[NLEVEL]; long MaxNPar1Lv, NParInBuf, ParID; +// prepare particle attributes mapped from mesh quantities + if ( OPT__OUTPUT_PAR_MESH ) Par_Output_TracerParticle_Mesh(); + // 6-1. initialize variables // 6-1-1. allocate I/O buffer for storing particle data MaxNPar1Lv = 0; for (int lv=0; lvPar->NPar_Lv[lv] ); - ParBuf1v1Lv = new real_par [MaxNPar1Lv]; + ParFltBuf1v1Lv = new real_par [MaxNPar1Lv]; + ParIntBuf1v1Lv = new long_par [MaxNPar1Lv]; // 6-1-2. get the starting global particle index (i.e., GParID_Offset[NLEVEL]) for particles at each level in this rank MPI_Allgather( amr->Par->NPar_Lv, NLEVEL, MPI_LONG, NParLv_EachRank[0], NLEVEL, MPI_LONG, MPI_COMM_WORLD ); @@ -1278,12 +1328,22 @@ void Output_DumpData_Total_HDF5( const char *FileName ) if ( H5_GroupID_Particle < 0 ) Aux_Error( ERROR_INFO, "failed to create the group \"%s\" !!\n", "Particle" ); // create the datasets of all particle attributes - for (int v=0; vPar->Mesh_Attr_Label[v - PAR_NATT_FLT_STORED]; + + H5_SetID_ParFltData = H5Dcreate( H5_GroupID_Particle, ParLabel, H5T_GAMER_REAL_PAR, H5_SpaceID_ParData, + H5P_DEFAULT, H5_DataCreatePropList, H5P_DEFAULT ); + if ( H5_SetID_ParFltData < 0 ) Aux_Error( ERROR_INFO, "failed to create the dataset \"%s\" !!\n", ParLabel ); + H5_Status = H5Dclose( H5_SetID_ParFltData ); + } + + for (int v=0; v skip the last PAR_NATT_UNSTORED attributes since we do not want to store them on disk - for (int v=0; v skip the last PAR_NATT_FLT_UNSTORED floating-point attributes since we do not want to store them on disk + for (int v=0; v= NPar_Lv (%ld) !!\n", lv, NParInBuf, amr->Par->NPar_Lv[lv] ); # endif - ParBuf1v1Lv[ NParInBuf ++ ] = amr->Par->Attribute[v][ParID]; + ParFltBuf1v1Lv[ NParInBuf ++ ] = ( v < PAR_NATT_FLT_STORED ) + ? amr->Par->AttributeFlt[v] [ParID] + : amr->Par->Mesh_Attr [v - PAR_NATT_FLT_STORED][ParID]; } // 6-3-4. write data to disk - H5_SetID_ParData = H5Dopen( H5_GroupID_Particle, ParAttLabel[v], H5P_DEFAULT ); + char *ParLabel = ( v < PAR_NATT_FLT_STORED ) ? ParAttFltLabel[v] : amr->Par->Mesh_Attr_Label[v - PAR_NATT_FLT_STORED]; + + H5_SetID_ParFltData = H5Dopen( H5_GroupID_Particle, ParLabel, H5P_DEFAULT ); + + H5_Status = H5Dwrite( H5_SetID_ParFltData, H5T_GAMER_REAL_PAR, H5_MemID_ParData, H5_SpaceID_ParData, H5P_DEFAULT, ParFltBuf1v1Lv ); + if ( H5_Status < 0 ) + Aux_Error( ERROR_INFO, "failed to write a particle floating-point attribute (lv %d, v %d) !!\n", lv, v ); + + H5_Status = H5Dclose( H5_SetID_ParFltData ); + } // for (int v=0; v skip the last PAR_NATT_INT_UNSTORED integer attributes since we do not want to store them on disk + for (int v=0; vNPatchComma[lv][1]; PID++) + for (int p=0; ppatch[0][lv][PID]->NPar; p++) + { + ParID = amr->patch[0][lv][PID]->ParList[p]; - H5_Status = H5Dwrite( H5_SetID_ParData, H5T_GAMER_REAL_PAR, H5_MemID_ParData, H5_SpaceID_ParData, H5P_DEFAULT, ParBuf1v1Lv ); +# ifdef DEBUG_PARTICLE + if ( NParInBuf >= amr->Par->NPar_Lv[lv] ) + Aux_Error( ERROR_INFO, "lv %d, NParInBuf (%ld) >= NPar_Lv (%ld) !!\n", lv, NParInBuf, amr->Par->NPar_Lv[lv] ); +# endif + + ParIntBuf1v1Lv[ NParInBuf ++ ] = amr->Par->AttributeInt[v][ParID]; + } + + +// 6-3-6. write data to disk + H5_SetID_ParIntData = H5Dopen( H5_GroupID_Particle, ParAttIntLabel[v], H5P_DEFAULT ); + + H5_Status = H5Dwrite( H5_SetID_ParIntData, H5T_GAMER_LONG_PAR, H5_MemID_ParData, H5_SpaceID_ParData, H5P_DEFAULT, ParIntBuf1v1Lv ); if ( H5_Status < 0 ) - Aux_Error( ERROR_INFO, "failed to write a particle attribute (lv %d, v %d) !!\n", lv, v ); + Aux_Error( ERROR_INFO, "failed to write a particle integer attribute (lv %d, v %d) !!\n", lv, v ); - H5_Status = H5Dclose( H5_SetID_ParData ); - } // for (int v=0; vPar->NPar_Active_AllRank; - KeyInfo.Par_NAttStored = PAR_NATT_STORED; + KeyInfo.Par_NAttFltStored = PAR_NATT_FLT_STORED; + KeyInfo.Par_NAttIntStored = PAR_NATT_INT_STORED; # ifdef FLOAT8_PAR KeyInfo.Float8_Par = 1; # else KeyInfo.Float8_Par = 0; # endif +# ifdef INT8_PAR + KeyInfo.Int8_Par = 1; +# else + KeyInfo.Int8_Par = 0; +# endif # endif // #ifdef PARTICLE # if ( MODEL == HYDRO ) # ifdef MHD @@ -1570,12 +1672,15 @@ void FillIn_KeyInfo( KeyInfo_t &KeyInfo, const int NFieldStored ) for (int lv=0; lvdh [lv]; - KeyInfo.CellScale [lv] = amr->scale [lv]; - KeyInfo.NPatch [lv] = NPatchTotal [lv]; - KeyInfo.AdvanceCounter[lv] = AdvanceCounter[lv]; - KeyInfo.dTime_AllLv [lv] = dTime_AllLv [lv]; + KeyInfo.Time [lv] = Time [lv]; + KeyInfo.CellSize [lv] = amr->dh [lv]; + KeyInfo.CellScale [lv] = amr->scale [lv]; + KeyInfo.NPatch [lv] = NPatchTotal [lv]; + KeyInfo.AdvanceCounter[lv] = AdvanceCounter [lv]; + KeyInfo.dTime_AllLv [lv] = dTime_AllLv [lv]; +# if ( MODEL == ELBDM && ELBDM_SCHEME == ELBDM_HYBRID ) + KeyInfo.UseWaveScheme [lv] = amr->use_wave_flag[lv]; +# endif } KeyInfo.CodeVersion = (char*)VERSION; @@ -1709,6 +1814,12 @@ void FillIn_Makefile( Makefile_t &Makefile ) Makefile.SupportGSL = 0; # endif +# ifdef SUPPORT_SPECTRAL_INT + Makefile.SupportSpectralInt = 1; +# else + Makefile.SupportSpectralInt = 0; +# endif + # ifdef SUPPORT_FFTW Makefile.SupportFFTW = SUPPORT_FFTW; # else @@ -1805,6 +1916,17 @@ void FillIn_Makefile( Makefile_t &Makefile ) Makefile.SRHydrodynamics = 0; # endif +# ifdef COSMIC_RAY + Makefile.CosmicRay = 1; +# ifdef CR_DIFFUSION + Makefile.CR_Diffusion = 1; +# else + Makefile.CR_Diffusion = 0; +# endif +# else // #ifdef COSMIC_RAY + Makefile.CosmicRay = 0; +# endif // #ifdef COSMIC_RAY .. else ... + Makefile.EoS = EOS; # ifdef BAROTROPIC_EOS @@ -1815,6 +1937,10 @@ void FillIn_Makefile( Makefile_t &Makefile ) # elif ( MODEL == ELBDM ) + + Makefile.ELBDMScheme = ELBDM_SCHEME; + Makefile.WaveScheme = WAVE_SCHEME; + # ifdef CONSERVE_MASS Makefile.ConserveMass = 1; # else @@ -1867,26 +1993,21 @@ void FillIn_Makefile( Makefile_t &Makefile ) Makefile.Feedback = 0; # endif - Makefile.Par_NAttUser = PAR_NATT_USER; + Makefile.Par_NAttFltUser = PAR_NATT_FLT_USER; + Makefile.Par_NAttIntUser = PAR_NATT_INT_USER; # ifdef FLOAT8_PAR Makefile.Float8_Par = 1; # else Makefile.Float8_Par = 0; # endif -# endif // #ifdef PARTICLE -# ifdef COSMIC_RAY - Makefile.CosmicRay = 1; -# ifdef CR_DIFFUSION - Makefile.CR_Diffusion = 1; +# ifdef INT8_PAR + Makefile.Int8_Par = 1; # else - Makefile.CR_Diffusion = 0; + Makefile.Int8_Par = 0; # endif -# else // #ifdef COSMIC_RAY - Makefile.CosmicRay = 0; -# endif // #ifdef COSMIC_RAY .. else ... - +# endif // #ifdef PARTICLE } // FUNCTION : FillIn_Makefile @@ -1986,7 +2107,8 @@ void FillIn_SymConst( SymConst_t &SymConst ) # ifdef PARTICLE - SymConst.Par_NAttStored = PAR_NATT_STORED; + SymConst.Par_NAttFltStored = PAR_NATT_FLT_STORED; + SymConst.Par_NAttIntStored = PAR_NATT_INT_STORED; SymConst.Par_NType = PAR_NTYPE; # ifdef GRAVITY SymConst.RhoExt_GhostSize = RHOEXT_GHOST_SIZE; @@ -2097,7 +2219,18 @@ void FillIn_SymConst( SymConst_t &SymConst ) # elif ( MODEL == ELBDM ) SymConst.Flu_BlockSize_x = FLU_BLOCK_SIZE_X; SymConst.Flu_BlockSize_y = FLU_BLOCK_SIZE_Y; - +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + SymConst.Flu_HJ_BlockSize_y = FLU_HJ_BLOCK_SIZE_Y; +# endif +# if ( WAVE_SCHEME == WAVE_GRAMFE ) + SymConst.GramFEScheme = GRAMFE_SCHEME; + SymConst.GramFEGamma = GRAMFE_GAMMA; + SymConst.GramFEG = GRAMFE_G; + SymConst.GramFENDelta = GRAMFE_NDELTA; + SymConst.GramFEOrder = GRAMFE_ORDER; + SymConst.GramFEND = GRAMFE_ND; + SymConst.GramFEFluNxt = GRAMFE_FLU_NXT; +# endif # else # error : ERROR : unsupported MODEL !! # endif // MODEL @@ -2120,9 +2253,11 @@ void FillIn_SymConst( SymConst_t &SymConst ) SymConst.Src_BlockSize = SRC_BLOCK_SIZE; SymConst.Src_GhostSize = SRC_GHOST_SIZE; SymConst.Src_Nxt = SRC_NXT; +# if ( MODEL == HYDRO ) SymConst.Src_NAuxDlep = SRC_NAUX_DLEP; SymConst.Src_DlepProfNVar = SRC_DLEP_PROF_NVAR; SymConst.Src_DlepProfNBinMax = SRC_DLEP_PROF_NBINMAX; +# endif SymConst.Src_NAuxUser = SRC_NAUX_USER; SymConst.Der_GhostSize = DER_GHOST_SIZE; @@ -2196,6 +2331,7 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel InputPara.Par_ICMass = amr->Par->ParICMass; InputPara.Par_ICType = amr->Par->ParICType; InputPara.Par_ICFloat8 = PAR_IC_FLOAT8; + InputPara.Par_ICInt8 = PAR_IC_INT8; InputPara.Par_Interp = amr->Par->Interp; InputPara.Par_InterpTracer = amr->Par->InterpTracer; InputPara.Par_Integ = amr->Par->Integ; @@ -2207,8 +2343,10 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel InputPara.Opt__FreezePar = OPT__FREEZE_PAR; InputPara.Par_GhostSize = amr->Par->GhostSize; InputPara.Par_GhostSizeTracer = amr->Par->GhostSizeTracer; - for (int v=0; vLB->Par_Weight; # endif InputPara.Opt__RecordLoadBalance = OPT__RECORD_LOAD_BALANCE; + InputPara.Opt__LB_ExchangeFather = OPT__LB_EXCHANGE_FATHER; # endif InputPara.Opt__MinimizeMPIBarrier = OPT__MINIMIZE_MPI_BARRIER; @@ -2346,6 +2504,11 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel # endif InputPara.ELBDM_Taylor3_Coeff = ELBDM_TAYLOR3_COEFF; InputPara.ELBDM_Taylor3_Auto = ELBDM_TAYLOR3_AUTO; + InputPara.ELBDM_RemoveMotionCM = ELBDM_REMOVE_MOTION_CM; + InputPara.ELBDM_BaseSpectral = ELBDM_BASE_SPECTRAL; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + InputPara.ELBDM_FirstWaveLevel = ELBDM_FIRST_WAVE_LEVEL; +# endif # endif // ELBDM // fluid solvers in different models @@ -2524,32 +2687,45 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel # ifdef SUPPORT_FFTW InputPara.Opt__FFTW_Startup = OPT__FFTW_STARTUP; # endif + // interpolation schemes - InputPara.Opt__Int_Time = OPT__INT_TIME; + InputPara.Opt__Int_Time = OPT__INT_TIME; # if ( MODEL == HYDRO ) - InputPara.Opt__Int_Prim = OPT__INT_PRIM; + InputPara.Opt__Int_Prim = OPT__INT_PRIM; # endif # if ( MODEL == ELBDM ) - InputPara.Opt__Int_Phase = OPT__INT_PHASE; + InputPara.Opt__Int_Phase = OPT__INT_PHASE; + InputPara.Opt__Res_Phase = OPT__RES_PHASE; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + InputPara.Opt__Hybrid_Match_Phase = ELBDM_MATCH_PHASE; # endif - InputPara.Opt__Flu_IntScheme = OPT__FLU_INT_SCHEME; - InputPara.Opt__RefFlu_IntScheme = OPT__REF_FLU_INT_SCHEME; +# endif // ELBDM + InputPara.Opt__Flu_IntScheme = OPT__FLU_INT_SCHEME; + InputPara.Opt__RefFlu_IntScheme = OPT__REF_FLU_INT_SCHEME; # ifdef MHD - InputPara.Opt__Mag_IntScheme = OPT__MAG_INT_SCHEME; - InputPara.Opt__RefMag_IntScheme = OPT__REF_MAG_INT_SCHEME; + InputPara.Opt__Mag_IntScheme = OPT__MAG_INT_SCHEME; + InputPara.Opt__RefMag_IntScheme = OPT__REF_MAG_INT_SCHEME; # endif # ifdef GRAVITY - InputPara.Opt__Pot_IntScheme = OPT__POT_INT_SCHEME; - InputPara.Opt__Rho_IntScheme = OPT__RHO_INT_SCHEME; - InputPara.Opt__Gra_IntScheme = OPT__GRA_INT_SCHEME; - InputPara.Opt__RefPot_IntScheme = OPT__REF_POT_INT_SCHEME; + InputPara.Opt__Pot_IntScheme = OPT__POT_INT_SCHEME; + InputPara.Opt__Rho_IntScheme = OPT__RHO_INT_SCHEME; + InputPara.Opt__Gra_IntScheme = OPT__GRA_INT_SCHEME; + InputPara.Opt__RefPot_IntScheme = OPT__REF_POT_INT_SCHEME; # endif - InputPara.IntMonoCoeff = INT_MONO_COEFF; + InputPara.IntMonoCoeff = INT_MONO_COEFF; # ifdef MHD - InputPara.IntMonoCoeffB = INT_MONO_COEFF_B; + InputPara.IntMonoCoeffB = INT_MONO_COEFF_B; +# endif + InputPara.Mono_MaxIter = MONO_MAX_ITER; + InputPara.IntOppSign0thOrder = INT_OPP_SIGN_0TH_ORDER; +# ifdef SUPPORT_SPECTRAL_INT + InputPara.SpecInt_TablePath = SPEC_INT_TABLE_PATH; + InputPara.SpecInt_GhostBoundary = SPEC_INT_GHOST_BOUNDARY; +# if ( MODEL == ELBDM ) + InputPara.SpecInt_XY_Instead_DePha = SPEC_INT_XY_INSTEAD_DEPHA; + InputPara.SpecInt_VortexThreshold = SPEC_INT_VORTEX_THRESHOLD; # endif - InputPara.Mono_MaxIter = MONO_MAX_ITER; - InputPara.IntOppSign0thOrder = INT_OPP_SIGN_0TH_ORDER; +# endif // #ifdef SUPPORT_SPECTRAL_INT // data dump InputPara.Opt__Output_Total = OPT__OUTPUT_TOTAL; @@ -2557,6 +2733,7 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel InputPara.Opt__Output_User = OPT__OUTPUT_USER; # ifdef PARTICLE InputPara.Opt__Output_Par_Mode = OPT__OUTPUT_PAR_MODE; + InputPara.Opt__Output_Par_Mesh = OPT__OUTPUT_PAR_MESH; # endif InputPara.Opt__Output_BasePS = OPT__OUTPUT_BASEPS; InputPara.Opt__Output_Base = OPT__OUTPUT_BASE; @@ -2591,6 +2768,7 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel InputPara.Opt__Output_Step = OUTPUT_STEP; InputPara.Opt__Output_Dt = OUTPUT_DT; InputPara.Opt__Output_Text_Format_Flt = OPT__OUTPUT_TEXT_FORMAT_FLT; + InputPara.Opt__Output_Text_Length_Int = OPT__OUTPUT_TEXT_LENGTH_INT; InputPara.Output_PartX = OUTPUT_PART_X; InputPara.Output_PartY = OUTPUT_PART_Y; InputPara.Output_PartZ = OUTPUT_PART_Z; @@ -2657,6 +2835,11 @@ void FillIn_InputPara( InputPara_t &InputPara, const int NFieldStored, char Fiel for (int t=0; t<5; t++) InputPara.FlagTable_Lohner [lv][t] = FlagTable_Lohner [lv][t]; + for (int t=0; t<3; t++) + InputPara.FlagTable_Angular [lv][t] = FlagTable_Angular [lv][t]; + + InputPara.FlagTable_Radial [lv] = FlagTable_Radial [lv]; + InputPara.FlagTable_User [lv].p = malloc( OPT__FLAG_USER_NUM*sizeof(double) ); InputPara.FlagTable_User [lv].len = OPT__FLAG_USER_NUM; for (int t=0; t 1 ) const hsize_t H5_ArrDims_NLvM1 = NLEVEL-1; // array size of [NLEVEL-1] const hsize_t H5_ArrDims_NLvM1_2[2] = { NLEVEL-1, 2 }; // array size of [NLEVEL-1][2] + const hsize_t H5_ArrDims_NLvM1_3[2] = { NLEVEL-1, 3 }; // array size of [NLEVEL-1][3] + const hsize_t H5_ArrDims_NLvM1_4[2] = { NLEVEL-1, 4 }; // array size of [NLEVEL-1][4] const hsize_t H5_ArrDims_NLvM1_5[2] = { NLEVEL-1, 5 }; // array size of [NLEVEL-1][5] const hsize_t H5_ArrDims_NLvM1_6[2] = { NLEVEL-1, 6 }; // array size of [NLEVEL-1][6] # endif @@ -3079,6 +3299,8 @@ void GetCompound_InputPara( hid_t &H5_TypeID, const int NFieldStored ) const hid_t H5_TypeID_Arr_NLvM1_6Int = H5Tarray_create( H5T_NATIVE_INT, 2, H5_ArrDims_NLvM1_6 ); const hid_t H5_TypeID_Arr_NLvM1Double = H5Tarray_create( H5T_NATIVE_DOUBLE, 1, &H5_ArrDims_NLvM1 ); const hid_t H5_TypeID_Arr_NLvM1_2Double = H5Tarray_create( H5T_NATIVE_DOUBLE, 2, H5_ArrDims_NLvM1_2 ); + const hid_t H5_TypeID_Arr_NLvM1_3Double = H5Tarray_create( H5T_NATIVE_DOUBLE, 2, H5_ArrDims_NLvM1_3 ); + const hid_t H5_TypeID_Arr_NLvM1_4Double = H5Tarray_create( H5T_NATIVE_DOUBLE, 2, H5_ArrDims_NLvM1_4 ); const hid_t H5_TypeID_Arr_NLvM1_5Double = H5Tarray_create( H5T_NATIVE_DOUBLE, 2, H5_ArrDims_NLvM1_5 ); const hid_t H5_TypeID_Arr_NLvM1_VLDouble = H5Tvlen_create ( H5T_NATIVE_DOUBLE ); # endif @@ -3094,7 +3316,7 @@ void GetCompound_InputPara( hid_t &H5_TypeID, const int NFieldStored ) // get the size of a single pointer, which is used for storing the array of variable-length strings -// --> FieldLabel[], MagLabel[], ParAttLabel[] +// --> FieldLabel[], MagLabel[], ParAttFltLabel[], ParAttIntLabel[] const int PtrSize = sizeof( char* ); const int PtrSize_hvl = sizeof( hvl_t ); char Key[MAX_STRING]; @@ -3142,6 +3364,7 @@ void GetCompound_InputPara( hid_t &H5_TypeID, const int NFieldStored ) H5Tinsert( H5_TypeID, "Par_ICMass", HOFFSET(InputPara_t,Par_ICMass ), H5T_NATIVE_DOUBLE ); H5Tinsert( H5_TypeID, "Par_ICType", HOFFSET(InputPara_t,Par_ICType ), H5T_NATIVE_INT ); H5Tinsert( H5_TypeID, "Par_ICFloat8", HOFFSET(InputPara_t,Par_ICFloat8 ), H5T_NATIVE_INT ); + H5Tinsert( H5_TypeID, "Par_ICInt8", HOFFSET(InputPara_t,Par_ICInt8 ), H5T_NATIVE_INT ); H5Tinsert( H5_TypeID, "Par_Interp", HOFFSET(InputPara_t,Par_Interp ), H5T_NATIVE_INT ); H5Tinsert( H5_TypeID, "Par_InterpTracer", HOFFSET(InputPara_t,Par_InterpTracer ), H5T_NATIVE_INT ); H5Tinsert( H5_TypeID, "Par_Integ", HOFFSET(InputPara_t,Par_Integ ), H5T_NATIVE_INT ); @@ -3155,13 +3378,22 @@ void GetCompound_InputPara( hid_t &H5_TypeID, const int NFieldStored ) H5Tinsert( H5_TypeID, "Par_GhostSizeTracer", HOFFSET(InputPara_t,Par_GhostSizeTracer ), H5T_NATIVE_INT ); // store the name of all particle attributes - for (int v=0; v 1 ) // user-defined derived fields H5Tinsert( H5_TypeID, "UserDerField_Num", HOFFSET(InputPara_t,UserDerField_Num ), H5T_NATIVE_INT ); @@ -3670,6 +3948,8 @@ void GetCompound_InputPara( hid_t &H5_TypeID, const int NFieldStored ) H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1Int ); H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1Double ); H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1_2Double ); + H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1_3Double ); + H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1_4Double ); H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1_5Double ); H5_Status = H5Tclose( H5_TypeID_Arr_NLvM1_VLDouble ); # endif diff --git a/src/Output/Output_ExchangeDataPatchList.cpp b/src/Output/Output_ExchangeDataPatchList.cpp index c2757796f7..2be286fe7e 100644 --- a/src/Output/Output_ExchangeDataPatchList.cpp +++ b/src/Output/Output_ExchangeDataPatchList.cpp @@ -20,9 +20,9 @@ void Output_ExchangeDataPatchList( const int option, const int lv, const char *c Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "option", option ); - char FileName[100]; - if ( option ) sprintf( FileName, "SendDataPatchList_%d_%d", MPI_Rank, lv ); - else sprintf( FileName, "RecvDataPatchList_%d_%d", MPI_Rank, lv ); + char FileName[MAX_STRING]; + if ( option ) sprintf( FileName, "%s/SendDataPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); + else sprintf( FileName, "%s/RecvDataPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); if ( comment != NULL ) { diff --git a/src/Output/Output_ExchangeFluxPatchList.cpp b/src/Output/Output_ExchangeFluxPatchList.cpp index d92b5e8d1a..c88c90c8ec 100644 --- a/src/Output/Output_ExchangeFluxPatchList.cpp +++ b/src/Output/Output_ExchangeFluxPatchList.cpp @@ -22,12 +22,12 @@ void Output_ExchangeFluxPatchList( const int option, const int lv, const char *c Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "lv", lv ); - char FileName[100]; + char FileName[MAX_STRING]; switch ( option ) { - case 0: sprintf( FileName, "SendFluxPatchList_%d_%d", MPI_Rank, lv ); + case 0: sprintf( FileName, "%s/SendFluxPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); break; - case 1: sprintf( FileName, "RecvFluxPatchList_%d_%d", MPI_Rank, lv ); + case 1: sprintf( FileName, "%s/RecvFluxPatchList_%d_%d", OUTPUT_DIR, MPI_Rank, lv ); break; } diff --git a/src/Output/Output_ExchangePatchMap.cpp b/src/Output/Output_ExchangePatchMap.cpp index 3921cebb6e..5e06f8e5d1 100644 --- a/src/Output/Output_ExchangePatchMap.cpp +++ b/src/Output/Output_ExchangePatchMap.cpp @@ -58,8 +58,8 @@ void Output_ExchangePatchMap( const int lv, const int xyz, const char *comment ) } - char FileName[100]; - sprintf( FileName, "ExchangePatchMap_%d_%d_%2s", MPI_Rank, lv, Dim[1] ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/ExchangePatchMap_%d_%d_%2s", OUTPUT_DIR, MPI_Rank, lv, Dim[1] ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_FlagMap.cpp b/src/Output/Output_FlagMap.cpp index 05ce0b1750..837db08b51 100644 --- a/src/Output/Output_FlagMap.cpp +++ b/src/Output/Output_FlagMap.cpp @@ -54,8 +54,8 @@ void Output_FlagMap( const int lv, const int xyz, const char *comment ) } - char FileName[100]; - sprintf( FileName, "FlagMap_%d_%d_%2s", MPI_Rank, lv, Dim[1] ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/FlagMap_%d_%d_%2s", OUTPUT_DIR, MPI_Rank, lv, Dim[1] ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_Flux.cpp b/src/Output/Output_Flux.cpp index 8c1abfff6d..45ae17e31e 100644 --- a/src/Output/Output_Flux.cpp +++ b/src/Output/Output_Flux.cpp @@ -34,8 +34,8 @@ void Output_Flux( const int lv, const int PID, const int Sib, const char *commen patch_t *Relation = amr->patch[0][lv][PID]; - char FileName[100]; - sprintf( FileName, "Flux_r%d_lv%d_p%d%c%c", MPI_Rank, lv, PID, 45-2*(Sib%2), 120+Sib/2 ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Flux_r%d_lv%d_p%d%c%c", OUTPUT_DIR, MPI_Rank, lv, PID, 45-2*(Sib%2), 120+Sib/2 ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_L1Error.cpp b/src/Output/Output_L1Error.cpp index 56e08f5c6d..782deab1a9 100644 --- a/src/Output/Output_L1Error.cpp +++ b/src/Output/Output_L1Error.cpp @@ -38,10 +38,14 @@ static void WriteFile( void (*AnalFunc_Flu)( real fluid[], const double x, const // --> Usually set to the same function pointer for initializing B field // (e.g., SetBFieldIC() in various test problems) // Prefix : Prefix of the output filename -// Part : OUTPUT_X : x line +// Part : OUTPUT_XY : x-y plane +// OUTPUT_XZ : x-z plane +// OUTPUT_YZ : y-z plane +// OUTPUT_X : x line // OUTPUT_Y : y line // OUTPUT_Z : z line // OUTPUT_DIAG : diagonal along (+1,+1,+1) +// OUTPUT_BOX : entire box // x/y/z : spatial coordinates for Part // // Return : None @@ -74,30 +78,41 @@ void Output_L1Error( void (*AnalFunc_Flu)( real fluid[], const double x, const d char FileName[NERR][MAX_STRING]; # if ( MODEL == HYDRO ) - sprintf( FileName[ 0], "%s_Dens_%06d", Prefix, DumpID ); - sprintf( FileName[ 1], "%s_MomX_%06d", Prefix, DumpID ); - sprintf( FileName[ 2], "%s_MomY_%06d", Prefix, DumpID ); - sprintf( FileName[ 3], "%s_MomZ_%06d", Prefix, DumpID ); - sprintf( FileName[ 4], "%s_Pres_%06d", Prefix, DumpID ); + sprintf( FileName[ 0], "%s/%s_Dens_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 1], "%s/%s_MomX_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 2], "%s/%s_MomY_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 3], "%s/%s_MomZ_%06d", OUTPUT_DIR, Prefix, DumpID ); + sprintf( FileName[ 4], "%s/%s_Pres_%06d", OUTPUT_DIR, Prefix, DumpID ); for (int v=0; v= 2 ) + fprintf( File[v], " %*s %c", StrLen_Flt, "Coord.", coord2 ); + if ( dim == 3 ) + fprintf( File[v], " %*s %c", StrLen_Flt, "Coord.", coord3 ); + + fprintf( File[v], " %*s %*s %*s\n", + StrLen_Flt, "Numerical", StrLen_Flt, "Analytical", StrLen_Flt, "Error" ); + } } @@ -183,11 +212,11 @@ void Output_L1Error( void (*AnalFunc_Flu)( real fluid[], const double x, const d for (int k=0; kx || xx+dh<=x ) ) continue; WriteFile( AnalFunc_Flu, AnalFunc_Mag, File, lv, PID, i, j, k, L1_Err, Part ); + NGrid++; }}} } - } // if ( Part == OUTPUT_DIAG ... else ... ) + } // if ( Part == OUTPUT_DIAG ) ... else ... } // if ( amr->patch[0][lv][PID]->son == -1 ) } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) } // for (int lv=0; lvBoxSize[0]; break; - case OUTPUT_Y : Norm = amr->BoxSize[1]; break; - case OUTPUT_Z : Norm = amr->BoxSize[2]; break; - case OUTPUT_DIAG : Norm = amr->BoxSize[0]; break; - default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [4/5/6/7] !!\n", Part ); + case OUTPUT_XY : Norm = amr->BoxSize[0]*amr->BoxSize[1]; break; + case OUTPUT_XZ : Norm = amr->BoxSize[0]*amr->BoxSize[2]; break; + case OUTPUT_YZ : Norm = amr->BoxSize[1]*amr->BoxSize[2]; break; + case OUTPUT_X : Norm = amr->BoxSize[0]; break; + case OUTPUT_Y : Norm = amr->BoxSize[1]; break; + case OUTPUT_Z : Norm = amr->BoxSize[2]; break; + case OUTPUT_DIAG : Norm = amr->BoxSize[0]; break; + case OUTPUT_BOX : Norm = amr->BoxSize[0]*amr->BoxSize[1]*amr->BoxSize[2]; break; + default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [1/2/3/4/5/6/7/8] !!\n", Part ); } for (int v=0; vpatch[ amr->FluSg[lv] ][lv][PID]->fluid[v][k][j][i]; + // note that we use the cell-centered B field to compute errors # ifdef MHD MHD_GetCellCenteredBFieldInPatch( Nume+NCOMP_TOTAL, lv, PID, i, j, k, amr->MagSg[lv] ); @@ -348,7 +406,8 @@ void WriteFile( void (*AnalFunc_Flu)( real fluid[], const double x, const double Nume[ENGY], Nume+NCOMP_FLUID, CheckMinPres_No, NULL_REAL, Emag_Nume, EoS_DensEint2Pres_CPUPtr, - EoS_GuessHTilde_CPUPtr, EoS_HTilde2Temp_CPUPtr,EoS_AuxArray_Flt, EoS_AuxArray_Int, h_EoS_Table, NULL ); + EoS_GuessHTilde_CPUPtr, EoS_HTilde2Temp_CPUPtr, + EoS_AuxArray_Flt, EoS_AuxArray_Int, h_EoS_Table, NULL ); const real Temp_Nume = Hydro_Con2Temp( Nume[DENS], Nume[MOMX], Nume[MOMY], Nume[MOMZ], Nume[ENGY], Nume+NCOMP_FLUID, CheckMinTemp_No, NULL_REAL, Emag_Nume, @@ -388,27 +447,50 @@ void WriteFile( void (*AnalFunc_Flu)( real fluid[], const double x, const double Anal[NBASIC+0] = Temp_Anal; # endif +// convert real and imaginary part to phase for wave patches in hybrid scheme +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { + Anal[PHAS] = SATAN2(Anal[IMAG], Anal[REAL]); + Nume[PHAS] = SATAN2(Nume[IMAG], Nume[REAL]); + Anal[STUB] = 0; + Nume[STUB] = 0; + } +# endif -// record the physical coordinate - double r; + +// record the physical coordinate(s) + double r1, r2, r3; + int dim; switch ( Part ) { - case OUTPUT_X : r = x; break; - case OUTPUT_Y : r = y; break; - case OUTPUT_Z : r = z; break; - case OUTPUT_DIAG : r = sqrt(3.0)*x; break; - default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [4/5/6/7] !!\n", Part ); + case OUTPUT_XY : r1 = x; r2 = y; dim = 2; break; + case OUTPUT_XZ : r1 = x; r2 = z; dim = 2; break; + case OUTPUT_YZ : r1 = y; r2 = z; dim = 2; break; + case OUTPUT_X : r1 = x; dim = 1; break; + case OUTPUT_Y : r1 = y; dim = 1; break; + case OUTPUT_Z : r1 = z; dim = 1; break; + case OUTPUT_DIAG : r1 = sqrt(3.0)*x; dim = 1; break; + case OUTPUT_BOX : r1 = x; r2 = y; r3 = z; dim = 3; break; + default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [1/2/3/4/5/6/7/8] !!\n", Part ); } + const double dv = (dim==1) ? dh : (dim==2) ? SQR(dh) : CUBE(dh); // estimate and output errors for (int v=0; v= 2 ) { + fprintf( File[v], " " ); + fprintf( File[v], BlankPlusFormat_Flt, r2 ); } + if ( dim == 3 ) { + fprintf( File[v], " " ); + fprintf( File[v], BlankPlusFormat_Flt, r3 ); } fprintf( File[v], BlankPlusFormat_Flt, Nume[v] ); fprintf( File[v], BlankPlusFormat_Flt, Anal[v] ); fprintf( File[v], BlankPlusFormat_Flt, Err[v] ); diff --git a/src/Output/Output_Patch.cpp b/src/Output/Output_Patch.cpp index 08fd8a76a7..05ec4298e5 100644 --- a/src/Output/Output_Patch.cpp +++ b/src/Output/Output_Patch.cpp @@ -59,8 +59,8 @@ void Output_Patch( const int lv, const int PID, const int FluSg, const int MagSg real (*pot)[PS1][PS1] = amr->patch[PotSg][lv][PID]->pot; # endif - char FileName[100]; - sprintf( FileName, "Patch_r%d_lv%d_p%d", MPI_Rank, lv, PID ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Patch_r%d_lv%d_p%d", OUTPUT_DIR, MPI_Rank, lv, PID ); if ( comment != NULL ) { strcat( FileName, "_" ); @@ -296,7 +296,8 @@ void Output_Patch( const int lv, const int PID, const int FluSg, const int MagSg fprintf( File, "===================\n" ); fprintf( File, "\n" ); fprintf( File, "%5s %10s", "No.", "ParID" ); - for (int v=0; vNPar; p++) @@ -304,7 +305,12 @@ void Output_Patch( const int lv, const int PID, const int FluSg, const int MagSg ParID = Relation->ParList[p]; fprintf( File, "%5d %10ld", p, ParID ); - for (int v=0; vPar->Attribute[v][ParID] ); + for (int v=0; vPar->AttributeFlt[v][ParID] ); +# ifdef INT8_PAR + for (int v=0; vPar->AttributeInt[v][ParID] ); +# else + for (int v=0; vPar->AttributeInt[v][ParID] ); +# endif fprintf( File, "\n" ); } diff --git a/src/Output/Output_PatchCorner.cpp b/src/Output/Output_PatchCorner.cpp index a3e5d9af71..f3f6b4d452 100644 --- a/src/Output/Output_PatchCorner.cpp +++ b/src/Output/Output_PatchCorner.cpp @@ -18,8 +18,8 @@ void Output_PatchCorner( const int lv, const char *comment ) { - char FileName[100]; - sprintf( FileName, "PatchCorner_%05d_%02d", MPI_Rank, lv ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/PatchCorner_%05d_%02d", OUTPUT_DIR, MPI_Rank, lv ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_PatchMap.cpp b/src/Output/Output_PatchMap.cpp index 02cb404320..5c04d91175 100644 --- a/src/Output/Output_PatchMap.cpp +++ b/src/Output/Output_PatchMap.cpp @@ -49,8 +49,8 @@ void Output_PatchMap( const int lv, const int PID, const int TSg, const int Comp patch_t *Relation = amr->patch[ 0][lv][PID]; patch_t *Data = amr->patch[TSg][lv][PID]; - char FileName[100]; - sprintf( FileName, "PatchMap_r%d_lv%d_p%d_v%d", MPI_Rank, lv, PID, Comp ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/PatchMap_r%d_lv%d_p%d_v%d", OUTPUT_DIR, MPI_Rank, lv, PID, Comp ); if ( comment != NULL ) { strcat( FileName, "_" ); diff --git a/src/Output/Output_PreparedPatch_Fluid.cpp b/src/Output/Output_PreparedPatch_Fluid.cpp index 9f520e8448..32c32ddef7 100644 --- a/src/Output/Output_PreparedPatch_Fluid.cpp +++ b/src/Output/Output_PreparedPatch_Fluid.cpp @@ -50,8 +50,8 @@ void Output_PreparedPatch_Fluid( const int TLv, const int TPID, // begin to output the prepared data patch_t *Relation = amr->patch[0][TLv][TPID]; - char FileName[100]; - sprintf( FileName, "PrePatch_Fluid_r%d_lv%d_p%d", MPI_Rank, TLv, TPID ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/PrePatch_Fluid_r%d_lv%d_p%d", OUTPUT_DIR, MPI_Rank, TLv, TPID ); if ( comment != NULL ) { strcat( FileName, "_" ); @@ -98,7 +98,15 @@ void Output_PreparedPatch_Fluid( const int TLv, const int TPID, fprintf( File, "(%3s,%3s,%3s )", "i", "j", "k" ); # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[TLv] ) { +# endif fprintf( File, " %*s %*s", StrLen_Flt, FieldLabel[REAL], StrLen_Flt, FieldLabel[IMAG] ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fprintf( File, " %*s %*s", StrLen_Flt, FieldLabel[DENS], StrLen_Flt, FieldLabel[PHAS] ); + } +# endif # else for (int v=0; vuse_wave_flag[TLv] ) { +# endif + Idx = K*FLU_NXT*FLU_NXT + J*FLU_NXT + I; for (int v=0; vuse_wave_flag[lv] ) + + real (*smaller_h_Flu_Array)[FLU_NIN][CUBE(HYB_NXT)] = (real (*)[FLU_NIN][CUBE(HYB_NXT)]) h_Flu_Array; + Idx = K*HYB_NXT*HYB_NXT + J*HYB_NXT + I; + + for (int v=0; vuse_wave_flag[TLv] ) ... else ... +# endif + // cell indices fprintf( File, "(%3d,%3d,%3d )", i, j, k ); diff --git a/src/Particle/LoadBalance/Par_LB_CollectParticle2OneLevel.cpp b/src/Particle/LoadBalance/Par_LB_CollectParticle2OneLevel.cpp index 55fb9f5968..6d4e4edf35 100644 --- a/src/Particle/LoadBalance/Par_LB_CollectParticle2OneLevel.cpp +++ b/src/Particle/LoadBalance/Par_LB_CollectParticle2OneLevel.cpp @@ -15,7 +15,7 @@ extern Timer_t *Timer_Par_MPI[NLEVEL][6]; // descendants (sons, grandsons, ...) to patches at a target level // // Note : 1. ParList[] in all descendants will NOT be changeed after calling this function -// 2. ParAtt_Copy[] will be allocated for the target patches at FaLv +// 2. ParAttFlt_Copy[] and ParAttInt_Copy[] will be allocated for the target patches at FaLv // --> Must be deallocated afterward by calling Par_LB_CollectParticle2OneLevel_FreeMemory() // 3. Only work on non-leaf real patches and buffer patches (the latter can be either leaf or non-leaf) // --> For leaf real patches the ParList_Copy[] will NOT be allocated @@ -24,33 +24,38 @@ extern Timer_t *Timer_Par_MPI[NLEVEL][6]; // --> It's because particles travelling from coarse to fine grids will stay in coarse grids // temporarily until the velocity correction is done. // --> For these patches, NPar_Copy will be **the sum of NPar and the number of particles -// collected from other patches**, and ParList_Copy[] (or ParAtt_Copy[]) will contain -// information of particles belonging to NPar as well. +// collected from other patches**, and ParList_Copy[] (or ParAttFlt_Copy[] and ParAttInt_Copy[]) +// will contain information of particles belonging to NPar as well. // --> It makes implementation simplier. **For leaf real patches, one only needs to consider // NPar and ParList[]. While for all other patches, one only needs to consider NPar_Copy -// and ParList_Copy[] (or ParAtt_Copy[]). One never needs to consider both.** +// and ParList_Copy[] (or ParAttFlt_Copy[] and ParAttInt_Copy[]). +// One never needs to consider both.** // 4. Invoked by Par_CollectParticle2OneLevel() // 5. For depositing particle mass onto grids, particle position can be predicted before sending to // other ranks (using the option PredictPos) so that we don't have to send particle velocity -// --> Accordingly, if Par->PredictPos is on, ParAtt_Copy[] always stores the data +// --> Accordingly, if Par->PredictPos is on, ParAttFlt_Copy[] always stores the data // after position prediction // 6. When SibBufPatch is on, this function will also collect particles for sibling-buffer patches at FaLv // --> Moreover, if FaSibBufPatch is also on, it will also collect particles for // father-sibling-buffer patches at FaLv-1 (if FaLv > 0) // --> Useful for constructing the density field at FaLv for the Poisson solver at FaLv -// --> These data will be stored in NPar_Copy and ParAtt_Copy[] as well +// --> These data will be stored in NPar_Copy, ParAttFlt_Copy[], and ParAttInt_Copy[] as well // 7. Option "JustCountNPar" can be used to count the number of particles in each real patch at FaLv // --> Do NOT collect other particle data (e.g., particle mass and position) // --> Particle count is stored in NPar_Copy -// --> ParAtt_Copy[] will NOT be allocated +// --> ParAttFlt_Copy[] will NOT be allocated +// --> ParAttInt_Copy[] will NOT be allocated // --> Currently it does NOT work with the options SibBufPatch and FaSibBufPatch // --> It only counts particles for **real** patches at FaLv // --> Does NOT work with "PredictPos" // // Parameter : FaLv : Father's refinement level -// AttBitIdx : Bitwise indices of the target particle attributes (e.g., _PAR_MASS | _PAR_VELX) -// --> A user-defined attribute with an integer index AttIntIdx returned by -// AddParticleAttribute() can be converted to a bitwise index by BIDX(AttIntIdx) +// FltAttBitIdx : Bitwise indices of the target particle floating-point attributes (e.g., _PAR_MASS | _PAR_VELX) +// --> A user-defined attribute with an integer index FltAttIntIdx returned by +// AddParticleAttributeFlt() can be converted to a bitwise index by BIDX(FltAttIntIdx) +// IntAttBitIdx : Bitwise indices of the target particle integer attributes (e.g., _PAR_TYPE) +// --> A user-defined attribute with an integer index IntAttIntIdx returned by +// AddParticleAttributeInt() can be converted to a bitwise index by BIDX(IntAttIntIdx) // PredictPos : Predict particle position, which is useful for particle mass assignement // --> We send particle position **after** prediction so that we don't have to // send particle velocity @@ -62,13 +67,13 @@ extern Timer_t *Timer_Par_MPI[NLEVEL][6]; // other particle data (e.g., particle mass and position) // TimingSendPar : Measure the elapsed time of the routine "Par_LB_SendParticleData" // -// Return : NPar_Copy and ParAtt_Copy[] (if JustCountNPar == false) for all non-leaf patches at FaLv -// (and for sibling-buffer patches at FaLv if SibBufPatch is on, and for father-sibling-buffer +// Return : NPar_Copy, ParAttFlt_Copy[], and ParAttInt_Copy[] (if JustCountNPar == false) for all non-leaf +// patches at FaLv (and for sibling-buffer patches at FaLv if SibBufPatch is on, and for father-sibling-buffer // patches at FaLv-1 if FaSibBufPatch is on and FaLv>0) //------------------------------------------------------------------------------------------------------- -void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, const bool PredictPos, const double TargetTime, - const bool SibBufPatch, const bool FaSibBufPatch, const bool JustCountNPar, - const bool TimingSendPar ) +void Par_LB_CollectParticle2OneLevel( const int FaLv, const long FltAttBitIdx, const long IntAttBitIdx, const bool PredictPos, + const double TargetTime, const bool SibBufPatch, const bool FaSibBufPatch, + const bool JustCountNPar, const bool TimingSendPar ) { // nothing to do for levels above the max level @@ -80,19 +85,24 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // determine the target particle attributes // --> assuming _VAR_NAME = 1L< PosSendIdx[] is used by Par_PredictPos() - int NAtt=0, AttIntIdx[PAR_NATT_TOTAL], PosSendIdx[3]={-1, -1, -1}; + int NAttFlt=0, FltAttIntIdx[PAR_NATT_FLT_TOTAL], PosSendIdx[3]={-1, -1, -1}; + int NAttInt=0, IntAttIntIdx[PAR_NATT_INT_TOTAL]; if ( !JustCountNPar ) - for (int v=0; vpatch[0][FaLv][FaPID]->NPar_Copy ); - for (int v=0; vpatch[0][FaLv][FaPID]->ParAttFlt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "particle parameters have been initialized already (FaLv %d, FaPID %d, NPar_Copy %d, v %d) !!\n", + FaLv, FaPID, amr->patch[0][FaLv][FaPID]->NPar_Copy, v ); + } + + for (int v=0; vpatch[0][FaLv][FaPID]->ParAtt_Copy[v] != NULL ) + if ( amr->patch[0][FaLv][FaPID]->ParAttInt_Copy[v] != NULL ) Aux_Error( ERROR_INFO, "particle parameters have been initialized already (FaLv %d, FaPID %d, NPar_Copy %d, v %d) !!\n", FaLv, FaPID, amr->patch[0][FaLv][FaPID]->NPar_Copy, v ); } @@ -142,7 +159,7 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons # endif // #ifdef DEBUG_PARTICLE -// 0. jump to step 5 if FaLv+1 is guaranteed to have no particle +// 0. jump to step 6 if FaLv+1 is guaranteed to have no particle // --> just collect particles for buffer patches // --> note that we don't have to set NPar_Copy here since leaf real patches always have NPar_Copy == -1 if ( FaLv == TOP_LEVEL || NPatchTotal[FaLv+1] == 0 ) @@ -154,7 +171,7 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons sprintf( Timer_Comment, "%3d %15s", FaLv, "Par_Coll2Sib" ); Par_LB_CollectParticleFromRealPatch( - FaLv, AttBitIdx, + FaLv, FltAttBitIdx, IntAttBitIdx, amr->Par->R2B_Buff_NPatchTotal[FaLv][0], amr->Par->R2B_Buff_PIDList[FaLv][0], amr->Par->R2B_Buff_NPatchEachRank[FaLv][0], amr->Par->R2B_Real_NPatchTotal[FaLv][0], amr->Par->R2B_Real_PIDList[FaLv][0], amr->Par->R2B_Real_NPatchEachRank[FaLv][0], PredictPos, TargetTime, Timer[1], Timer_Comment ); @@ -167,7 +184,7 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons sprintf( Timer_Comment, "%3d %15s", FaLv, "Par_Coll2FaSib" ); Par_LB_CollectParticleFromRealPatch( - FaLv-1, AttBitIdx, + FaLv-1, FltAttBitIdx, IntAttBitIdx, amr->Par->R2B_Buff_NPatchTotal[FaLv][1], amr->Par->R2B_Buff_PIDList[FaLv][1], amr->Par->R2B_Buff_NPatchEachRank[FaLv][1], amr->Par->R2B_Real_NPatchTotal[FaLv][1], amr->Par->R2B_Real_PIDList[FaLv][1], amr->Par->R2B_Real_NPatchEachRank[FaLv][1], PredictPos, TargetTime, Timer[2], Timer_Comment ); @@ -178,12 +195,13 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // 1. prepare the send buffers - int *NParForEachRank = new int [MPI_NRank]; - int *NPatchForEachRank = new int [MPI_NRank]; - int *SendBuf_NPatchEachRank = NPatchForEachRank; - int *SendBuf_NParEachPatch = NULL; - long *SendBuf_LBIdxEachPatch = NULL; - real_par *SendBuf_ParDataEachPatch = NULL; + int *NParForEachRank = new int [MPI_NRank]; + int *NPatchForEachRank = new int [MPI_NRank]; + int *SendBuf_NPatchEachRank = NPatchForEachRank; + int *SendBuf_NParEachPatch = NULL; + long *SendBuf_LBIdxEachPatch = NULL; + real_par *SendBuf_ParFltDataEachPatch = NULL; + long_par *SendBuf_ParIntDataEachPatch = NULL; # if ( LOAD_BALANCE != HILBERT ) const int PatchScaleFaLv = PS1 * amr->scale[FaLv]; @@ -263,26 +281,35 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons SendBuf_LBIdxEachPatch = new long [NSendPatchTotal]; // reuse the MPI send buffer declared in LB_GetBufferData() for better MPI performance - if ( !JustCountNPar ) SendBuf_ParDataEachPatch = (real_par *)LB_GetBufferData_MemAllocate_Send( NSendParTotal*(long)NAtt*sizeof(real_par) ); + if ( !JustCountNPar ) + { + const long ParAllAttSize = NSendParTotal * ( (long)NAttFlt*sizeof(real_par) + (long)NAttInt*sizeof(long_par) ); + SendBuf_ParFltDataEachPatch = (real_par *)LB_GetBufferData_MemAllocate_Send( ParAllAttSize ); + SendBuf_ParIntDataEachPatch = (long_par *)( SendBuf_ParFltDataEachPatch + NSendParTotal*NAttFlt ); + } // 1-3. set the array offsets of the send buffer of each rank - int *OffsetEachRank_Patch = new int [MPI_NRank]; - int *OffsetEachRank_ParData = new int [MPI_NRank]; // actually useless in the JustCountNPar mode + int *OffsetEachRank_Patch = new int [MPI_NRank]; + int *OffsetEachRank_ParFltData = new int [MPI_NRank]; // actually useless in the JustCountNPar mode + int *OffsetEachRank_ParIntData = new int [MPI_NRank]; // actually useless in the JustCountNPar mode - OffsetEachRank_Patch [0] = 0; - OffsetEachRank_ParData[0] = 0; + OffsetEachRank_Patch [0] = 0; + OffsetEachRank_ParFltData[0] = 0; + OffsetEachRank_ParIntData[0] = 0; for (int r=1; rNPatchComma[lv][1]; PID++) @@ -294,15 +321,18 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // skip patches without particles (must skip since OffsetEachRank_* are not set for patches without particles) if ( NParThisPatch == 0 ) continue; - OffsetEachPatch_Patch [AccIdx] = OffsetEachRank_Patch [TRank]; - OffsetEachPatch_ParData[AccIdx] = (long)OffsetEachRank_ParData[TRank]; + OffsetEachPatch_Patch [AccIdx] = OffsetEachRank_Patch [TRank]; + OffsetEachPatch_ParFltData[AccIdx] = (long)OffsetEachRank_ParFltData[TRank]; + OffsetEachPatch_ParIntData[AccIdx] = (long)OffsetEachRank_ParIntData[TRank]; - OffsetEachRank_Patch [TRank] += 1; - OffsetEachRank_ParData[TRank] += NParThisPatch*NAtt; + OffsetEachRank_Patch [TRank] += 1; + OffsetEachRank_ParFltData[TRank] += NParThisPatch*NAttFlt; + OffsetEachRank_ParIntData[TRank] += NParThisPatch*NAttInt; } delete [] OffsetEachRank_Patch; - delete [] OffsetEachRank_ParData; + delete [] OffsetEachRank_ParFltData; + delete [] OffsetEachRank_ParIntData; // 1-5. fill the send buffers @@ -324,9 +354,13 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons Aux_Error( ERROR_INFO, "OffsetEachPatch_Patch[%d] (%d) >= max (%d) !!\n", AccIdx, OffsetEachPatch_Patch[AccIdx], NSendPatchTotal ); - if ( OffsetEachPatch_ParData[AccIdx] + (long)NAtt > NSendParTotal*(long)NAtt ) - Aux_Error( ERROR_INFO, "OffsetEachPatch_ParData[%d] + NAtt (%ld) > max (%ld) !!\n", - AccIdx, OffsetEachPatch_ParData[AccIdx] + (long)NAtt, NSendParTotal*(long)NAtt ); + if ( OffsetEachPatch_ParFltData[AccIdx] + (long)NAttFlt > NSendParTotal*(long)NAttFlt ) + Aux_Error( ERROR_INFO, "OffsetEachPatch_ParFltData[%d] + NAttFlt (%ld) > max (%ld) !!\n", + AccIdx, OffsetEachPatch_ParFltData[AccIdx] + (long)NAttFlt, NSendParTotal*(long)NAttFlt ); + + if ( OffsetEachPatch_ParIntData[AccIdx] + (long)NAttInt > NSendParTotal*(long)NAttInt ) + Aux_Error( ERROR_INFO, "OffsetEachPatch_ParIntData[%d] + NAttInt (%ld) > max (%ld) !!\n", + AccIdx, OffsetEachPatch_ParIntData[AccIdx] + (long)NAttInt, NSendParTotal*(long)NAttInt ); # endif SendBuf_NParEachPatch [ OffsetEachPatch_Patch[AccIdx] ] = NParThisPatch; @@ -334,13 +368,15 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons if ( !JustCountNPar ) { - real_par *SendPtr = SendBuf_ParDataEachPatch + OffsetEachPatch_ParData[AccIdx]; + real_par *SendPtr_Flt = SendBuf_ParFltDataEachPatch + OffsetEachPatch_ParFltData[AccIdx]; + long_par *SendPtr_Int = SendBuf_ParIntDataEachPatch + OffsetEachPatch_ParIntData[AccIdx]; for (int p=0; ppatch[0][lv][PID]->ParList[p]; - for (int v=0; vPar->Attribute[ AttIntIdx[v] ][ParID]; + for (int v=0; vPar->AttributeFlt[ FltAttIntIdx[v] ][ParID]; + for (int v=0; vPar->AttributeInt[ IntAttIntIdx[v] ][ParID]; // predict particle position to TargetTime if ( PredictPos ) @@ -353,11 +389,12 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons # endif // note that we don't have to worry about the periodic BC here (in other words, Pos can lie outside the box) - Par_PredictPos( 1, &ParID, SendPtr+PosSendIdx[0], SendPtr+PosSendIdx[1], SendPtr+PosSendIdx[2], TargetTime ); + Par_PredictPos( 1, &ParID, SendPtr_Flt+PosSendIdx[0], SendPtr_Flt+PosSendIdx[1], SendPtr_Flt+PosSendIdx[2], TargetTime ); } // update array offset - SendPtr += NAtt; + SendPtr_Flt += NAttFlt; + SendPtr_Int += NAttInt; } // for (int p=0; pNPatchComma[lv][1]; PID++) @@ -366,7 +403,8 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // 1-6. free memory delete [] OffsetEachPatch_Patch; - delete [] OffsetEachPatch_ParData; + delete [] OffsetEachPatch_ParFltData; + delete [] OffsetEachPatch_ParIntData; delete [] NParForEachRank; delete [] TRank_AllPatch; delete [] LBIdx_AllPatch; @@ -376,11 +414,13 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // 2. send data to all ranks // these arrays will be allocated by Par_LB_SendParticleData() (using call by reference) and must be free'd later -// --> except for RecvBuf_ParDataEachPatch, which is just a pointer to the MPI recv buffer declared in LB_GetBufferData - int *RecvBuf_NPatchEachRank = NULL; - int *RecvBuf_NParEachPatch = NULL; - long *RecvBuf_LBIdxEachPatch = NULL; - real_par *RecvBuf_ParDataEachPatch = NULL; +// --> except for RecvBuf_ParFltDataEachPatch and RecvBuf_ParIntDataEachPatch, which are just a pointer to +// the MPI recv buffer declared in LB_GetBufferData() + int *RecvBuf_NPatchEachRank = NULL; + int *RecvBuf_NParEachPatch = NULL; + long *RecvBuf_LBIdxEachPatch = NULL; + real_par *RecvBuf_ParFltDataEachPatch = NULL; + long_par *RecvBuf_ParIntDataEachPatch = NULL; // 2-1. exchange data const bool Exchange_NPatchEachRank_Yes = true; @@ -393,9 +433,10 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons sprintf( Timer_Comment, "%3d %15s", FaLv, "Par_Collect" ); // note that Par_LB_SendParticleData will also return the total number of patches and particles received (using call by reference) - Par_LB_SendParticleData( NAtt, SendBuf_NPatchEachRank, SendBuf_NParEachPatch, SendBuf_LBIdxEachPatch, - SendBuf_ParDataEachPatch, NSendParTotal, RecvBuf_NPatchEachRank, RecvBuf_NParEachPatch, - RecvBuf_LBIdxEachPatch, RecvBuf_ParDataEachPatch, NRecvPatchTotal, NRecvParTotal, + Par_LB_SendParticleData( NAttFlt, NAttInt, SendBuf_NPatchEachRank, SendBuf_NParEachPatch, SendBuf_LBIdxEachPatch, + SendBuf_ParFltDataEachPatch, SendBuf_ParIntDataEachPatch, NSendParTotal, + RecvBuf_NPatchEachRank, RecvBuf_NParEachPatch, RecvBuf_LBIdxEachPatch, + RecvBuf_ParFltDataEachPatch, RecvBuf_ParIntDataEachPatch, NRecvPatchTotal, NRecvParTotal, Exchange_NPatchEachRank_Yes, Exchange_LBIdxEachRank_Yes, Exchange_ParDataEachRank, Timer[0], Timer_Comment ); @@ -463,17 +504,20 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons # endif -// 3-3. allocate ParAtt_Copy[] for each patch +// 3-3. allocate ParAttFlt_Copy[] and ParAttInt_Copy[] for each patch if ( !JustCountNPar ) for (int FaPID=0; FaPIDNPatchComma[FaLv][1]; FaPID++) { if ( amr->patch[0][FaLv][FaPID]->NPar_Copy > 0 ) { - for (int v=0; vpatch[0][FaLv][FaPID]->ParAtt_Copy[ AttIntIdx[v] ] = new real_par [ amr->patch[0][FaLv][FaPID]->NPar_Copy ]; + for (int v=0; vpatch[0][FaLv][FaPID]->ParAttFlt_Copy[ FltAttIntIdx[v] ] = new real_par [ amr->patch[0][FaLv][FaPID]->NPar_Copy ]; + + for (int v=0; vpatch[0][FaLv][FaPID]->ParAttInt_Copy[ IntAttIntIdx[v] ] = new long_par [ amr->patch[0][FaLv][FaPID]->NPar_Copy ]; // reset to zero (instead of NPar) since we will use NPar_Copy to record the number of particles that has been -// added to ParAtt_Copy[] +// added to ParAttFlt_Copy[] and ParAttInt_Copy[] amr->patch[0][FaLv][FaPID]->NPar_Copy = 0; } } @@ -482,7 +526,8 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // 3-4. store the received particle data // --> currently we do not implement OpenMP here since different received patches at lv>FaLv may map to the same patch at FaLv // --> one cannot naively parallelize the "for (int t=0; tpatch[0][FaLv][FaPID_Match]->NPar_Copy; p++) { # ifdef DEBUG_PARTICLE - for (int v=0; vpatch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[ FltAttIntIdx[v] ] == NULL ) + Aux_Error( ERROR_INFO, "particle parameters have NOT been initialized (FaLv %d, FaPID %d, NPar_Copy %d, v %d) !!\n", + FaLv, FaPID_Match, amr->patch[0][FaLv][FaPID_Match]->NPar_Copy, v ); + } + + for (int v=0; vpatch[0][FaLv][FaPID_Match]->ParAtt_Copy[ AttIntIdx[v] ] == NULL ) + if ( amr->patch[0][FaLv][FaPID_Match]->ParAttInt_Copy[ IntAttIntIdx[v] ] == NULL ) Aux_Error( ERROR_INFO, "particle parameters have NOT been initialized (FaLv %d, FaPID %d, NPar_Copy %d, v %d) !!\n", FaLv, FaPID_Match, amr->patch[0][FaLv][FaPID_Match]->NPar_Copy, v ); } # endif - for (int v=0; vpatch[0][FaLv][FaPID_Match]->ParAtt_Copy[ AttIntIdx[v] ][p] = *RecvPtr++; + for (int v=0; vpatch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[ FltAttIntIdx[v] ][p] = *RecvPtr_Flt++; + + for (int v=0; vpatch[0][FaLv][FaPID_Match]->ParAttInt_Copy[ IntAttIntIdx[v] ][p] = *RecvPtr_Int++; # ifdef DEBUG_PARTICLE // we do not transfer inactive particles - if ( AttBitIdx & _PAR_MASS ) - if ( amr->patch[0][FaLv][FaPID_Match]->ParAtt_Copy[PAR_MASS][p] < (real_par)0.0 ) + if ( FltAttBitIdx & _PAR_MASS ) + if ( amr->patch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[PAR_MASS][p] < (real_par)0.0 ) Aux_Error( ERROR_INFO, "found inactive particle (FaLv %d, FaPID %d, Mass %14.7e, particle %d) !!\n", - FaLv, FaPID_Match, amr->patch[0][FaLv][FaPID_Match]->ParAtt_Copy[PAR_MASS][p], p ); + FaLv, FaPID_Match, amr->patch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[PAR_MASS][p], p ); // check if the received particle lies within the target patch (may not when PredictPos is on) - if ( !PredictPos && ( AttBitIdx & _PAR_POSX ) && ( AttBitIdx & _PAR_POSY ) && ( AttBitIdx & _PAR_POSZ ) ) + if ( !PredictPos && ( FltAttBitIdx & _PAR_POSX ) && ( FltAttBitIdx & _PAR_POSY ) && ( FltAttBitIdx & _PAR_POSZ ) ) { const double *EdgeL = amr->patch[0][FaLv][FaPID_Match]->EdgeL; const double *EdgeR = amr->patch[0][FaLv][FaPID_Match]->EdgeR; - const real_par ParPos[3] = { amr->patch[0][FaLv][FaPID_Match]->ParAtt_Copy[PAR_POSX][p], - amr->patch[0][FaLv][FaPID_Match]->ParAtt_Copy[PAR_POSY][p], - amr->patch[0][FaLv][FaPID_Match]->ParAtt_Copy[PAR_POSZ][p] }; + const real_par ParPos[3] = { amr->patch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[PAR_POSX][p], + amr->patch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[PAR_POSY][p], + amr->patch[0][FaLv][FaPID_Match]->ParAttFlt_Copy[PAR_POSZ][p] }; for (int d=0; d<3; d++) { @@ -551,7 +606,7 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons -// 4. add particles temporarily residing in this patch to ParAtt_Copy[] +// 4. add particles temporarily residing in this patch to ParAttFlt_Copy[] and ParAttInt_Copy[] if ( !JustCountNPar ) for (int FaPID=0; FaPIDNPatchComma[FaLv][1]; FaPID++) { @@ -572,8 +627,11 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons // 4-2. add particle data // --> no need for position prediction here since these particles are all waiting for velocity correction // and should already be synchronized with TargetTime - for (int v=0; vpatch[0][FaLv][FaPID]->ParAtt_Copy[ AttIntIdx[v] ][idx] = amr->Par->Attribute[ AttIntIdx[v] ][ParID]; + for (int v=0; vpatch[0][FaLv][FaPID]->ParAttFlt_Copy[ FltAttIntIdx[v] ][idx] = amr->Par->AttributeFlt[ FltAttIntIdx[v] ][ParID]; + + for (int v=0; vpatch[0][FaLv][FaPID]->ParAttInt_Copy[ IntAttIntIdx[v] ][idx] = amr->Par->AttributeInt[ IntAttIntIdx[v] ][ParID]; } // for (int p=0; ppatch[0][FaLv][FaPID]->NPar; p++) // 4-3. update NPar_Copy @@ -614,7 +672,7 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons sprintf( Timer_Comment, "%3d %15s", FaLv, "Par_Coll2Sib" ); Par_LB_CollectParticleFromRealPatch( - FaLv, AttBitIdx, + FaLv, FltAttBitIdx, IntAttBitIdx, amr->Par->R2B_Buff_NPatchTotal[FaLv][0], amr->Par->R2B_Buff_PIDList[FaLv][0], amr->Par->R2B_Buff_NPatchEachRank[FaLv][0], amr->Par->R2B_Real_NPatchTotal[FaLv][0], amr->Par->R2B_Real_PIDList[FaLv][0], amr->Par->R2B_Real_NPatchEachRank[FaLv][0], PredictPos, TargetTime, Timer[1], Timer_Comment ); @@ -627,7 +685,7 @@ void Par_LB_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, cons sprintf( Timer_Comment, "%3d %15s", FaLv, "Par_Coll2FaSib" ); Par_LB_CollectParticleFromRealPatch( - FaLv-1, AttBitIdx, + FaLv-1, FltAttBitIdx, IntAttBitIdx, amr->Par->R2B_Buff_NPatchTotal[FaLv][1], amr->Par->R2B_Buff_PIDList[FaLv][1], amr->Par->R2B_Buff_NPatchEachRank[FaLv][1], amr->Par->R2B_Real_NPatchTotal[FaLv][1], amr->Par->R2B_Real_PIDList[FaLv][1], amr->Par->R2B_Real_NPatchEachRank[FaLv][1], PredictPos, TargetTime, Timer[2], Timer_Comment ); @@ -656,10 +714,16 @@ void Par_LB_CollectParticle2OneLevel_FreeMemory( const int lv, const bool SibBuf // 1. real patches at lv for (int PID=0; PIDNPatchComma[lv][1]; PID++) { - for (int v=0; vpatch[0][lv][PID]->ParAtt_Copy[v]; - amr->patch[0][lv][PID]->ParAtt_Copy[v] = NULL; + delete [] amr->patch[0][lv][PID]->ParAttFlt_Copy[v]; + amr->patch[0][lv][PID]->ParAttFlt_Copy[v] = NULL; + } + + for (int v=0; vpatch[0][lv][PID]->ParAttInt_Copy[v]; + amr->patch[0][lv][PID]->ParAttInt_Copy[v] = NULL; } // -1 : indicating that NPar_Copy is not calculated yet @@ -673,10 +737,16 @@ void Par_LB_CollectParticle2OneLevel_FreeMemory( const int lv, const bool SibBuf { const int PID = amr->Par->R2B_Buff_PIDList[lv][0][p]; - for (int v=0; vpatch[0][lv][PID]->ParAtt_Copy[v]; - amr->patch[0][lv][PID]->ParAtt_Copy[v] = NULL; + delete [] amr->patch[0][lv][PID]->ParAttFlt_Copy[v]; + amr->patch[0][lv][PID]->ParAttFlt_Copy[v] = NULL; + } + + for (int v=0; vpatch[0][lv][PID]->ParAttInt_Copy[v]; + amr->patch[0][lv][PID]->ParAttInt_Copy[v] = NULL; } // -1 : indicating that NPar_Copy is not calculated yet @@ -692,10 +762,16 @@ void Par_LB_CollectParticle2OneLevel_FreeMemory( const int lv, const bool SibBuf { const int FaPID = amr->Par->R2B_Buff_PIDList[lv][1][p]; - for (int v=0; vpatch[0][FaLv][FaPID]->ParAtt_Copy[v]; - amr->patch[0][FaLv][FaPID]->ParAtt_Copy[v] = NULL; + delete [] amr->patch[0][FaLv][FaPID]->ParAttFlt_Copy[v]; + amr->patch[0][FaLv][FaPID]->ParAttFlt_Copy[v] = NULL; + } + + for (int v=0; vpatch[0][FaLv][FaPID]->ParAttInt_Copy[v]; + amr->patch[0][FaLv][FaPID]->ParAttInt_Copy[v] = NULL; } // -1 : indicating that NPar_Copy is not calculated yet @@ -703,17 +779,22 @@ void Par_LB_CollectParticle2OneLevel_FreeMemory( const int lv, const bool SibBuf } -// check: if we do everthing correctly, no patches (either real or buffer patches) at lv and lv-1 -// should have ParAtt_Copy[] allocated +// check: if we do everything correctly, no patches (either real or buffer patches) at lv and lv-1 +// should have ParAttFlt_Copy[] and ParAttInt_Copy[] allocated # ifdef DEBUG_PARTICLE for (int TLv=lv; (TLv>=lv-1 && TLv>=0); TLv--) { // loop over all real and buffer patches for (int PID=0; PIDnum[TLv]; PID++) { - for (int v=0; vpatch[0][TLv][PID]->ParAtt_Copy[v] != NULL ) - Aux_Error( ERROR_INFO, "lv %d, PID %d, v %d, ParAtt_Copy != NULL !!\n", + for (int v=0; vpatch[0][TLv][PID]->ParAttFlt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "lv %d, PID %d, v %d, ParAttFlt_Copy != NULL !!\n", + TLv, PID, v ); + + for (int v=0; vpatch[0][TLv][PID]->ParAttInt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "lv %d, PID %d, v %d, ParAttInt_Copy != NULL !!\n", TLv, PID, v ); if ( amr->patch[0][TLv][PID]->NPar_Copy != -1 ) diff --git a/src/Particle/LoadBalance/Par_LB_CollectParticleFromRealPatch.cpp b/src/Particle/LoadBalance/Par_LB_CollectParticleFromRealPatch.cpp index 02615d25e8..71479e7859 100644 --- a/src/Particle/LoadBalance/Par_LB_CollectParticleFromRealPatch.cpp +++ b/src/Particle/LoadBalance/Par_LB_CollectParticleFromRealPatch.cpp @@ -15,14 +15,17 @@ // provided. The information of real patches can be calculated in advance by using Par_LB_MapBuffer2RealPatch() // 2. All Target patches (those in Buff_PIDList[] and Real_PIDList[]) must be patches at the same level "lv" // 3. This function is called by Par_LB_CollectParticle2OneLevel() -// 4. ParAtt_Copy[] will be allocated for all target buffer patches with particles in the +// 4. ParAttFlt_Copy[] and ParAttInt_Copy[] will be allocated for all target buffer patches with particles in the // corresponding real patches // --> Must be deallocated afterward by calling Par_LB_CollectParticle2OneLevel_FreeMemory() // // Parameter : lv : Target refinement level -// AttBitIdx : Bitwise indices of the target particle attributes (e.g., _PAR_MASS | _PAR_VELX) -// --> A user-defined attribute with an integer index AttIntIdx returned by -// AddParticleAttribute() can be converted to a bitwise index by BIDX(AttIntIdx) +// FltAttBitIdx : Bitwise indices of the target particle floating-point attributes (e.g., _PAR_MASS | _PAR_VELX) +// --> A user-defined attribute with an integer index FltAttIntIdx returned by +// AddParticleAttributeFlt() can be converted to a bitwise index by BIDX(FltAttIntIdx) +// IntAttBitIdx : Bitwise indices of the target particle integer attributes (e.g., _PAR_TYPE) +// --> A user-defined attribute with an integer index IntAttIntIdx returned by +// AddParticleAttributeInt() can be converted to a bitwise index by BIDX(IntAttIntIdx) // Buff_NPatchTotal : Total number of buffer patches in Buff_PIDList // Buff_PIDList : Target buffer patch indices // Buff_NPatchEachRank : Number of buffer patches to receive particles from each rank @@ -36,9 +39,9 @@ // Timer : Timer used by Par_LB_SendParticleData() // Timer_Comment : String used by Par_LB_SendParticleData() // -// Return : NPar_Copy and ParAtt_Copy[] (if NPar_Copy > 0) for all buffer patches specified in Buff_PIDList[] +// Return : NPar_Copy and ParAttFlt/Int_Copy[] (if NPar_Copy > 0) for all buffer patches specified in Buff_PIDList[] //------------------------------------------------------------------------------------------------------- -void Par_LB_CollectParticleFromRealPatch( const int lv, const long AttBitIdx, +void Par_LB_CollectParticleFromRealPatch( const int lv, const long FltAttBitIdx, const long IntAttBitIdx, const int Buff_NPatchTotal, const int *Buff_PIDList, int *Buff_NPatchEachRank, const int Real_NPatchTotal, const int *Real_PIDList, int *Real_NPatchEachRank, const bool PredictPos, const double TargetTime, @@ -53,18 +56,22 @@ void Par_LB_CollectParticleFromRealPatch( const int lv, const long AttBitIdx, // 0. determine the target particle attributes // --> assuming _VAR_NAME = 1L< PosSendIdx[] is used by Par_PredictPos() - int NAtt=0, AttIntIdx[PAR_NATT_TOTAL], PosSendIdx[3]={-1, -1, -1}; + int NAttFlt=0, FltAttIntIdx[PAR_NATT_FLT_TOTAL], PosSendIdx[3]={-1, -1, -1}; + int NAttInt=0, IntAttIntIdx[PAR_NATT_INT_TOTAL]; - for (int v=0; v= NLEVEL ) Aux_Error( ERROR_INFO, "incorrect target level (%d) !!\n", lv ); - if ( NAtt == 0 && MPI_Rank == 0 ) Aux_Message( stderr, "WARNING : NAtt == 0 !!\n" ); + if ( NAttFlt == 0 && NAttInt == 0 && MPI_Rank == 0 ) Aux_Message( stderr, "WARNING : NAttFlt/Int == 0 !!\n" ); if ( Buff_NPatchTotal < 0 ) Aux_Error( ERROR_INFO, "Buff_NPatchTotal = %d < 0 !!\n", Buff_NPatchTotal ); else if ( Buff_NPatchTotal > 0 ) @@ -114,9 +121,14 @@ void Par_LB_CollectParticleFromRealPatch( const int lv, const long AttBitIdx, if ( amr->patch[0][lv][PID]->NPar_Copy >= 0 ) Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d >= 0 !!\n", lv, PID, amr->patch[0][lv][PID]->NPar_Copy ); - for (int v=0; vpatch[0][lv][PID]->ParAtt_Copy[v] != NULL ) - Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d, ParAtt_Copy[%d] != NULL !!\n", + for (int v=0; vpatch[0][lv][PID]->ParAttFlt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d, ParAttFlt_Copy[%d] != NULL !!\n", + lv, PID, amr->patch[0][lv][PID]->NPar_Copy, v ); + + for (int v=0; vpatch[0][lv][PID]->ParAttInt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d, ParAttInt_Copy[%d] != NULL !!\n", lv, PID, amr->patch[0][lv][PID]->NPar_Copy, v ); } // for (int t=0; t 0 ) SendBuf_Offset[0] = 0L; - for (int t=0; t 0 ) SendBuf_Offset_Flt[0] = 0L; + for (int t=0; t 0 ) SendBuf_Offset_Int[0] = 0L; + for (int t=0; tPar->Attribute[ AttIntIdx[v] ][ParID]; + for (int v=0; vPar->AttributeFlt[ FltAttIntIdx[v] ][ParID]; + + for (int v=0; vPar->AttributeInt[ IntAttIntIdx[v] ][ParID]; // predict particle position to TargetTime // --> note that we need to skip particles waiting for velocity correction since these are leaf real patches // which may have particles just been updated // --> done in Par_PredictPos() // --> also note that we don't have to worry about the periodic BC here (in other words, Pos can lie outside the box) - if ( PredictPos ) Par_PredictPos( 1, &ParID, SendPtr+PosSendIdx[0], SendPtr+PosSendIdx[1], SendPtr+PosSendIdx[2], + if ( PredictPos ) Par_PredictPos( 1, &ParID, SendPtr_Flt+PosSendIdx[0], SendPtr_Flt+PosSendIdx[1], SendPtr_Flt+PosSendIdx[2], TargetTime ); - SendPtr += NAtt; + SendPtr_Flt += NAttFlt; + SendPtr_Int += NAttInt; } // for (int p=0; ppatch[0][lv][PID]->son == -1 ) else { - ParAtt_Copy = amr->patch[0][lv][PID]->ParAtt_Copy; + ParAttFlt_Copy = amr->patch[0][lv][PID]->ParAttFlt_Copy; + ParAttInt_Copy = amr->patch[0][lv][PID]->ParAttInt_Copy; # ifdef DEBUG_PARTICLE - for (int v=0; v 0 (lv %d, PID %d) !!\n", - AttIntIdx[v], NParThisPatch, lv, PID ); + for (int v=0; v 0 (lv %d, PID %d) !!\n", + FltAttIntIdx[v], NParThisPatch, lv, PID ); + + for (int v=0; v 0 (lv %d, PID %d) !!\n", + IntAttIntIdx[v], NParThisPatch, lv, PID ); # endif for (int p=0; ppatch[0][lv][PID]->son == -1 ) ... else ... } // for (int t=0; t don't have to be free'd here + int *SendBuf_NPatchEachRank = Real_NPatchEachRank; + int *RecvBuf_NPatchEachRank = Buff_NPatchEachRank; + int *RecvBuf_NParEachPatch = NULL; // will be allocated by Par_LB_SendParticleData and must be free'd later + real_par *RecvBuf_ParFltDataEachPatch = NULL; // a pointer to the MPI recv buffer declared in LB_GetBufferData() + // --> don't have to be free'd here + long_par *RecvBuf_ParIntDataEachPatch = NULL; // a pointer to the MPI recv buffer declared in LB_GetBufferData() + // --> don't have to be free'd here - long *SendBuf_LBIdxEachRank = NULL; // useless and does not need to be allocated - long *RecvBuf_LBIdxEachRank = NULL; // useless and will not be allocated by Par_LB_SendParticleData + long *SendBuf_LBIdxEachRank = NULL; // useless and does not need to be allocated + long *RecvBuf_LBIdxEachRank = NULL; // useless and will not be allocated by Par_LB_SendParticleData - int NRecvPatchTotal; // returned from Par_LB_SendParticleData - long NRecvParTotal; // returned from Par_LB_SendParticleData + int NRecvPatchTotal; // returned from Par_LB_SendParticleData + long NRecvParTotal; // returned from Par_LB_SendParticleData // note that we don't exchange NPatchEachRank (which is already known) and LBIdxEachRank (which is useless here) Par_LB_SendParticleData( - NAtt, - SendBuf_NPatchEachRank, SendBuf_NParEachPatch, SendBuf_LBIdxEachRank, SendBuf_ParDataEachPatch, NSendParTotal, - RecvBuf_NPatchEachRank, RecvBuf_NParEachPatch, RecvBuf_LBIdxEachRank, RecvBuf_ParDataEachPatch, + NAttFlt, NAttInt, + SendBuf_NPatchEachRank, SendBuf_NParEachPatch, SendBuf_LBIdxEachRank, SendBuf_ParFltDataEachPatch, SendBuf_ParIntDataEachPatch, NSendParTotal, + RecvBuf_NPatchEachRank, RecvBuf_NParEachPatch, RecvBuf_LBIdxEachRank, RecvBuf_ParFltDataEachPatch, RecvBuf_ParIntDataEachPatch, NRecvPatchTotal, NRecvParTotal, Exchange_NPatchEachRank_No, Exchange_LBIdxEachRank_No, Exchange_ParDataEachRank_Yes, Timer, Timer_Comment ); @@ -301,58 +335,72 @@ void Par_LB_CollectParticleFromRealPatch( const int lv, const long AttBitIdx, // free the send buffer in advance to save memory delete [] SendBuf_NParEachPatch; - delete [] SendBuf_Offset; + delete [] SendBuf_Offset_Flt; + delete [] SendBuf_Offset_Int; // 4. store the received particle data to each patch - const real_par *RecvPtr = NULL; + const real_par *RecvPtr_Flt = NULL; + const long_par *RecvPtr_Int = NULL; // 4-0. get the array offset of each patch (mainly for the OpenMP parallelization) - long *RecvBuf_Offset = new long [Buff_NPatchTotal]; - if ( Buff_NPatchTotal > 0 ) RecvBuf_Offset[0] = 0L; - for (int t=0; t 0 ) RecvBuf_Offset_Flt[0] = 0L; + for (int t=0; t 0 ) RecvBuf_Offset_Int[0] = 0L; + for (int t=0; tpatch[0][lv][PID]->NPar_Copy = NParThisPatch; if ( NParThisPatch > 0 ) { -// 4-2. allocate ParAtt_Copy[] - for (int v=0; vpatch[0][lv][PID]->ParAtt_Copy[ AttIntIdx[v] ] = new real_par [NParThisPatch]; +// 4-2. allocate ParAttFlt_Copy[] and ParAttInt_Copy[] + for (int v=0; vpatch[0][lv][PID]->ParAttFlt_Copy[ FltAttIntIdx[v] ] = new real_par [NParThisPatch]; + + for (int v=0; vpatch[0][lv][PID]->ParAttInt_Copy[ IntAttIntIdx[v] ] = new long_par [NParThisPatch]; for (int p=0; ppatch[0][lv][PID]->ParAtt_Copy[ AttIntIdx[v] ][p] = *RecvPtr++; + for (int v=0; vpatch[0][lv][PID]->ParAttFlt_Copy[ FltAttIntIdx[v] ][p] = *RecvPtr_Flt++; + + for (int v=0; vpatch[0][lv][PID]->ParAttInt_Copy[ IntAttIntIdx[v] ][p] = *RecvPtr_Int++; // 4-4. check # ifdef DEBUG_PARTICLE // we do not transfer inactive particles - if ( AttBitIdx & _PAR_MASS ) - if ( amr->patch[0][lv][PID]->ParAtt_Copy[PAR_MASS][p] < (real_par)0.0 ) + if ( FltAttBitIdx & _PAR_MASS ) + if ( amr->patch[0][lv][PID]->ParAttFlt_Copy[PAR_MASS][p] < (real_par)0.0 ) Aux_Error( ERROR_INFO, "found inactive particle (lv %d, PID %d, Mass %14.7e, particle %d) !!\n", - lv, PID, amr->patch[0][lv][PID]->ParAtt_Copy[PAR_MASS][p], p ); + lv, PID, amr->patch[0][lv][PID]->ParAttFlt_Copy[PAR_MASS][p], p ); // check if the received particle lies within the target patch (may not when PredictPos is on) - if ( !PredictPos && ( AttBitIdx & _PAR_POSX ) && ( AttBitIdx & _PAR_POSY ) && ( AttBitIdx & _PAR_POSZ ) ) + if ( !PredictPos && ( FltAttBitIdx & _PAR_POSX ) && ( FltAttBitIdx & _PAR_POSY ) && ( FltAttBitIdx & _PAR_POSZ ) ) { // always assume periodic B.C. in this check since we don't allocate buffer patches lying outside // the simulation domain for non-periodic B.C. // --> we can use EdgeL/R stored in each patch directly since they assume periodicity as well const double *EdgeL = amr->patch[0][lv][PID]->EdgeL; const double *EdgeR = amr->patch[0][lv][PID]->EdgeR; - const real_par ParPos[3] = { amr->patch[0][lv][PID]->ParAtt_Copy[PAR_POSX][p], - amr->patch[0][lv][PID]->ParAtt_Copy[PAR_POSY][p], - amr->patch[0][lv][PID]->ParAtt_Copy[PAR_POSZ][p] }; + const real_par ParPos[3] = { amr->patch[0][lv][PID]->ParAttFlt_Copy[PAR_POSX][p], + amr->patch[0][lv][PID]->ParAttFlt_Copy[PAR_POSY][p], + amr->patch[0][lv][PID]->ParAttFlt_Copy[PAR_POSZ][p] }; for (int d=0; d<3; d++) { @@ -370,7 +418,8 @@ void Par_LB_CollectParticleFromRealPatch( const int lv, const long AttBitIdx, // 5. free memory delete [] RecvBuf_NParEachPatch; - delete [] RecvBuf_Offset; + delete [] RecvBuf_Offset_Flt; + delete [] RecvBuf_Offset_Int; } // FUNCTION : Par_LB_CollectParticleFromRealPatch diff --git a/src/Particle/LoadBalance/Par_LB_ExchangeParticleBetweenPatch.cpp b/src/Particle/LoadBalance/Par_LB_ExchangeParticleBetweenPatch.cpp index 4873f8fb47..db98e71254 100644 --- a/src/Particle/LoadBalance/Par_LB_ExchangeParticleBetweenPatch.cpp +++ b/src/Particle/LoadBalance/Par_LB_ExchangeParticleBetweenPatch.cpp @@ -84,9 +84,14 @@ void Par_LB_ExchangeParticleBetweenPatch( const int lv, if ( amr->patch[0][lv][PID]->NPar_Copy != -1 ) Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d != -1 !!\n", lv, PID, amr->patch[0][lv][PID]->NPar_Copy ); - for (int v=0; vpatch[0][lv][PID]->ParAtt_Copy[v] != NULL ) - Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d, ParAtt_Copy[%d] != NULL !!\n", + for (int v=0; vpatch[0][lv][PID]->ParAttFlt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d, ParAttFlt_Copy[%d] != NULL !!\n", + lv, PID, amr->patch[0][lv][PID]->NPar_Copy, v ); + + for (int v=0; vpatch[0][lv][PID]->ParAttInt_Copy[v] != NULL ) + Aux_Error( ERROR_INFO, "lv %d, PID %d, NPar_Copy = %d, ParAttInt_Copy[%d] != NULL !!\n", lv, PID, amr->patch[0][lv][PID]->NPar_Copy, v ); } // for m, t @@ -140,10 +145,13 @@ void Par_LB_ExchangeParticleBetweenPatch( const int lv, const bool RemoveAllPar_Yes = true; // reuse the MPI send buffer declared in LB_GetBufferData for better MPI performance - real_par *SendBuf_ParDataEachPatch = (real_par *)LB_GetBufferData_MemAllocate_Send( NSendParTotal*(long)PAR_NATT_TOTAL*sizeof(real_par) ); + const long ParAllAttSize = NSendParTotal * ( (long)PAR_NATT_FLT_TOTAL*sizeof(real_par) + (long)PAR_NATT_INT_TOTAL*sizeof(long_par) ); + real_par *SendBuf_ParFltDataEachPatch = (real_par *)LB_GetBufferData_MemAllocate_Send( ParAllAttSize ); + long_par *SendBuf_ParIntDataEachPatch = (long_par *)( SendBuf_ParFltDataEachPatch + NSendParTotal*PAR_NATT_FLT_TOTAL ); - real_par *SendPtr = SendBuf_ParDataEachPatch; - long *ParList = NULL; + real_par *SendPtr_Flt = SendBuf_ParFltDataEachPatch; + long_par *SendPtr_Int = SendBuf_ParIntDataEachPatch; + long *ParList = NULL; long ParID; for (int t=0; tPar->Attribute[v][ParID]; + for (int v=0; vPar->AttributeFlt[v][ParID]; + for (int v=0; vPar->AttributeInt[v][ParID]; // 2-2. remove this particle from the particle repository of this rank amr->Par->RemoveOneParticle( ParID, PAR_INACTIVE_MPI ); } // 2-3. remove all particles in this send patch - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; amr->patch[0][lv][PID]->RemoveParticle( NULL_INT, NULL, &amr->Par->NPar_Lv[lv], RemoveAllPar_Yes, PType ); } // for (int t=0; t don't have to be free'd here + int *SendBuf_NPatchEachRank = Send_NPatchEachRank; + int *RecvBuf_NPatchEachRank = Recv_NPatchEachRank; + int *RecvBuf_NParEachPatch = NULL; // will be allocated by Par_LB_SendParticleData and must be free'd later + real_par *RecvBuf_ParFltDataEachPatch = NULL; // a pointer to the MPI recv buffer declared in LB_GetBufferData() + // --> don't have to be free'd here + long_par *RecvBuf_ParIntDataEachPatch = NULL; // a pointer to the MPI recv buffer declared in LB_GetBufferData() + // --> don't have to be free'd here - long *SendBuf_LBIdxEachRank = NULL; // useless and does not need to be allocated - long *RecvBuf_LBIdxEachRank = NULL; // useless and will not be allocated by Par_LB_SendParticleData + long *SendBuf_LBIdxEachRank = NULL; // useless and does not need to be allocated + long *RecvBuf_LBIdxEachRank = NULL; // useless and will not be allocated by Par_LB_SendParticleData - int NRecvPatchTotal; // returned from Par_LB_SendParticleData - long NRecvParTotal; // returned from Par_LB_SendParticleData + int NRecvPatchTotal; // returned from Par_LB_SendParticleData + long NRecvParTotal; // returned from Par_LB_SendParticleData // note that we don't exchange NPatchEachRank (which is already known) and LBIdxEachRank (which is useless here) Par_LB_SendParticleData( - PAR_NATT_TOTAL, - SendBuf_NPatchEachRank, SendBuf_NParEachPatch, SendBuf_LBIdxEachRank, SendBuf_ParDataEachPatch, NSendParTotal, - RecvBuf_NPatchEachRank, RecvBuf_NParEachPatch, RecvBuf_LBIdxEachRank, RecvBuf_ParDataEachPatch, + PAR_NATT_FLT_TOTAL, PAR_NATT_INT_TOTAL, + SendBuf_NPatchEachRank, SendBuf_NParEachPatch, SendBuf_LBIdxEachRank, SendBuf_ParFltDataEachPatch, SendBuf_ParIntDataEachPatch, NSendParTotal, + RecvBuf_NPatchEachRank, RecvBuf_NParEachPatch, RecvBuf_LBIdxEachRank, RecvBuf_ParFltDataEachPatch, RecvBuf_ParIntDataEachPatch, NRecvPatchTotal, NRecvParTotal, Exchange_NPatchEachRank_No, Exchange_LBIdxEachRank_No, Exchange_ParDataEachRank_Yes, Timer, Timer_Comment ); @@ -216,7 +227,8 @@ void Par_LB_ExchangeParticleBetweenPatch( const int lv, // 4. store the received particle data to the particle repository and link to each recv patch - const real_par *RecvPtr = RecvBuf_ParDataEachPatch; + const real_par *RecvPtr_Flt = RecvBuf_ParFltDataEachPatch; + const long_par *RecvPtr_Int = RecvBuf_ParIntDataEachPatch; // 4-1. get the maximum number of particles in one recv patch int NParThisPatch_Max; @@ -235,24 +247,25 @@ void Par_LB_ExchangeParticleBetweenPatch( const int lv, // 4-2. add particles to the particle repository for (int p=0; pPar->AddOneParticle( RecvPtr ); - RecvPtr += PAR_NATT_TOTAL; + ParID = amr->Par->AddOneParticle( RecvPtr_Flt, RecvPtr_Int ); + RecvPtr_Flt += PAR_NATT_FLT_TOTAL; + RecvPtr_Int += PAR_NATT_INT_TOTAL; // store the new particle index NewParIDList[p] = ParID; // we do not transfer inactive particles # ifdef DEBUG_PARTICLE - if ( amr->Par->Attribute[PAR_MASS][ParID] < (real_par)0.0 ) + if ( amr->Par->AttributeFlt[PAR_MASS][ParID] < (real_par)0.0 ) Aux_Error( ERROR_INFO, "Find inactive particle (ParID %d, Mass %14.7e) !!\n", - ParID, amr->Par->Attribute[PAR_MASS][ParID] ); + ParID, amr->Par->AttributeFlt[PAR_MASS][ParID] ); # endif } // 4-3. add particles to the recv patch PID = Recv_PIDList[t]; - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; # ifdef DEBUG_PARTICLE // do not set ParPos too early since pointers to the particle repository (e.g., amr->Par->PosX) // may change after calling amr->Par->AddOneParticle diff --git a/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp b/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp index 66efcff038..39dc256946 100644 --- a/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp +++ b/src/Particle/LoadBalance/Par_LB_SendParticleData.cpp @@ -12,62 +12,69 @@ // Note : 1. SendBuf_XXX must be preallocated and will NOT be deallocated in this function // 2. RecvBuf_XXX will be allocated in this function (using call by reference) and must be // deallocated manually after calling this function -// --> Except for RecvBuf_ParDataEachPatch, which is just a pointer to the MPI recv buffer +// --> Except for RecvBuf_ParFlt/IntDataEachPatch, which are just pointers to the MPI recv buffer // declared in LB_GetBufferData -// 3. SendBuf_ParDataEachPatch format: [ParID][ParAttribute] instead of [ParAttribute][ParID] +// 3. SendBuf_ParFlt/IntDataEachPatch format: [ParID][ParAttribute] instead of [ParAttribute][ParID] // 4. Called by Par_LB_CollectParticleFromRealPatch(), Par_LB_CollectParticle2OneLevel(), and // Par_LB_ExchangeParticleBetweenPatch() // --> Par_LB_ExchangeParticleBetweenPatch() is called by // Par_PassParticle2Sibling() and Par_PassParticle2Son_MultiPatch() // -// Parameter : NParAtt : Number of particle attributes to be sent -// SendBuf_NPatchEachRank : MPI send buffer --> number of patches sent to each rank -// SendBuf_NParEachPatch : MPI send buffer --> number of particles in each patch to be sent -// SendBuf_LBIdxEachPatch : MPI send buffer --> load-balance index of each patch to be sent -// SendBuf_ParDataEachPatch : MPI send buffer --> particle data in each patch to be sent -// NSendParTotal : Total number of particles sent to all ranks (used by OPT__TIMING_MPI only) -// RecvBuf_XXX : MPI recv buffer -// NRecvPatchTotal : Total number of patches received from all ranks -// NRecvParTotal : Total number of particles received from all ranks -// Exchange_NPatchEachRank : true : Exchange SendBuf_NPatchEachRank to get RecvBuf_NPatchEachRank -// false : Assuming RecvBuf_NPatchEachRank has already been set properly -// --> But one still needs to provide SendBuf_NPatchEachRank properly -// --> RecvBuf_NPatchEachRank will NOT be reallocated -// --> Useful in Par_LB_CollectParticleFromRealPatch.cpp -// Exchange_LBIdxEachRank : true : Exchange SendBuf_LBIdxEachRank to get RecvBuf_LBIdxEachRank -// false : Does NOT exchange SendBuf_LBIdxEachPatch at all -// --> One does NOT need to provide SendBuf_LBIdxEachPatch -// --> RecvBuf_LBIdxEachPatch will NOT be allocated -// --> Useful in Par_LB_CollectParticleFromRealPatch.cpp -// Exchange_ParDataEachRank : true : Exchange SendBuf_ParDataEachPatch to get RecvBuf_ParDataEachPatch -// Timer : Timer used by the options "TIMING" and "OPT__TIMING_MPI" -// --> Do nothing if Timer == NULL -// Timer_Comment : String used by "OPT__TIMING_MPI" +// Parameter : NParAttFlt : Number of particle floating-point attributes to be sent +// NParAttInt : Number of particle integer attributes to be sent +// SendBuf_NPatchEachRank : MPI send buffer --> number of patches sent to each rank +// SendBuf_NParEachPatch : MPI send buffer --> number of particles in each patch to be sent +// SendBuf_LBIdxEachPatch : MPI send buffer --> load-balance index of each patch to be sent +// SendBuf_ParFltDataEachPatch : MPI send buffer --> particle floating-point data in each patch to be sent +// SendBuf_ParIntDataEachPatch : MPI send buffer --> particle integer data in each patch to be sent +// NSendParTotal : Total number of particles sent to all ranks (used by OPT__TIMING_MPI only) +// RecvBuf_XXX : MPI recv buffer +// NRecvPatchTotal : Total number of patches received from all ranks +// NRecvParTotal : Total number of particles received from all ranks +// Exchange_NPatchEachRank : true : Exchange SendBuf_NPatchEachRank to get RecvBuf_NPatchEachRank +// false : Assuming RecvBuf_NPatchEachRank has already been set properly +// --> But one still needs to provide SendBuf_NPatchEachRank properly +// --> RecvBuf_NPatchEachRank will NOT be reallocated +// --> Useful in Par_LB_CollectParticleFromRealPatch.cpp +// Exchange_LBIdxEachRank : true : Exchange SendBuf_LBIdxEachRank to get RecvBuf_LBIdxEachRank +// false : Does NOT exchange SendBuf_LBIdxEachPatch at all +// --> One does NOT need to provide SendBuf_LBIdxEachPatch +// --> RecvBuf_LBIdxEachPatch will NOT be allocated +// --> Useful in Par_LB_CollectParticleFromRealPatch.cpp +// Exchange_ParDataEachRank : true : Exchange SendBuf_ParFltDataEachPatch to get RecvBuf_ParFltDataEachPatch +// Exchange SendBuf_ParIntDataEachPatch to get RecvBuf_ParIntDataEachPatch +// Timer : Timer used by the options "TIMING" and "OPT__TIMING_MPI" +// --> Do nothing if Timer == NULL +// Timer_Comment : String used by "OPT__TIMING_MPI" // // Return : RecvBuf_NPatchEachRank (if Exchange_NPatchEachRank == true), RecvBuf_NParEachPatch, // RecvBuf_LBIdxEachPatch (if Exchange_LBIdxEachRank == true), -// RecvBuf_ParDataEachPatch (if Exchange_ParDataEachRank == true), +// RecvBuf_ParFltDataEachPatch (if Exchange_ParDataEachRank == true), +// RecvBuf_ParIntDataEachPatch (if Exchange_ParDataEachRank == true), // NRecvPatchTotal, NRecvPatchTotal //------------------------------------------------------------------------------------------------------- -void Par_LB_SendParticleData( const int NParAtt, int *SendBuf_NPatchEachRank, int *SendBuf_NParEachPatch, - long *SendBuf_LBIdxEachPatch, real_par *SendBuf_ParDataEachPatch, const long NSendParTotal, - int *&RecvBuf_NPatchEachRank, int *&RecvBuf_NParEachPatch, long *&RecvBuf_LBIdxEachPatch, - real_par *&RecvBuf_ParDataEachPatch, int &NRecvPatchTotal, long &NRecvParTotal, - const bool Exchange_NPatchEachRank, const bool Exchange_LBIdxEachRank, +void Par_LB_SendParticleData( const int NParAttFlt, const int NParAttInt, int *SendBuf_NPatchEachRank, int *SendBuf_NParEachPatch, + long *SendBuf_LBIdxEachPatch, real_par *SendBuf_ParFltDataEachPatch, long_par *SendBuf_ParIntDataEachPatch, + const long NSendParTotal, int *&RecvBuf_NPatchEachRank, int *&RecvBuf_NParEachPatch, long *&RecvBuf_LBIdxEachPatch, + real_par *&RecvBuf_ParFltDataEachPatch, long_par *&RecvBuf_ParIntDataEachPatch, int &NRecvPatchTotal, + long &NRecvParTotal, const bool Exchange_NPatchEachRank, const bool Exchange_LBIdxEachRank, const bool Exchange_ParDataEachRank, Timer_t *Timer, const char *Timer_Comment ) { // check # ifdef DEBUG_PARTICLE - if ( NParAtt < 0 ) Aux_Error( ERROR_INFO, "NParAtt = %d < 0 !!\n", NParAtt ); - if ( SendBuf_NPatchEachRank == NULL ) Aux_Error( ERROR_INFO, "SendBuf_NPatchEachRank == NULL !!\n" ); - if ( SendBuf_NParEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_NParEachPatch == NULL !!\n" ); + if ( NParAttFlt < 0 ) Aux_Error( ERROR_INFO, "NParAttFlt = %d < 0 !!\n", NParAttFlt ); + if ( NParAttInt < 0 ) Aux_Error( ERROR_INFO, "NParAttInt = %d < 0 !!\n", NParAttInt ); + if ( SendBuf_NPatchEachRank == NULL ) Aux_Error( ERROR_INFO, "SendBuf_NPatchEachRank == NULL !!\n" ); + if ( SendBuf_NParEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_NParEachPatch == NULL !!\n" ); if ( Exchange_ParDataEachRank && - SendBuf_ParDataEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_ParDataEachPatch == NULL !!\n" ); + SendBuf_ParFltDataEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_ParFltDataEachPatch == NULL !!\n" ); + if ( Exchange_ParDataEachRank && + SendBuf_ParIntDataEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_ParIntDataEachPatch == NULL !!\n" ); if ( Exchange_LBIdxEachRank && - SendBuf_LBIdxEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_LBIdxEachPatch == NULL !!\n" ); + SendBuf_LBIdxEachPatch == NULL ) Aux_Error( ERROR_INFO, "SendBuf_LBIdxEachPatch == NULL !!\n" ); if ( !Exchange_NPatchEachRank && - RecvBuf_NPatchEachRank == NULL ) Aux_Error( ERROR_INFO, "RecvBuf_NParEachPatch == NULL !!\n" ); + RecvBuf_NPatchEachRank == NULL ) Aux_Error( ERROR_INFO, "RecvBuf_NParEachPatch == NULL !!\n" ); # ifdef TIMING if ( Timer != NULL && OPT__TIMING_MPI && Timer_Comment == NULL ) Aux_Error( ERROR_INFO, "Timer_Comment == NULL !!\n" ); @@ -148,10 +155,14 @@ void Par_LB_SendParticleData( const int NParAtt, int *SendBuf_NPatchEachRank, in // 4. collect particle attributes from all ranks if ( Exchange_ParDataEachRank ) { - long *SendCount_ParDataEachPatch = new long [MPI_NRank]; - long *RecvCount_ParDataEachPatch = new long [MPI_NRank]; - long *SendDisp_ParDataEachPatch = new long [MPI_NRank]; - long *RecvDisp_ParDataEachPatch = new long [MPI_NRank]; + long *SendCount_ParFltDataEachPatch = new long [MPI_NRank]; + long *RecvCount_ParFltDataEachPatch = new long [MPI_NRank]; + long *SendDisp_ParFltDataEachPatch = new long [MPI_NRank]; + long *RecvDisp_ParFltDataEachPatch = new long [MPI_NRank]; + long *SendCount_ParIntDataEachPatch = new long [MPI_NRank]; + long *RecvCount_ParIntDataEachPatch = new long [MPI_NRank]; + long *SendDisp_ParIntDataEachPatch = new long [MPI_NRank]; + long *RecvDisp_ParIntDataEachPatch = new long [MPI_NRank]; // send/recv count const int *SendPtr = NULL, *RecvPtr = NULL; @@ -159,43 +170,68 @@ void Par_LB_SendParticleData( const int NParAtt, int *SendBuf_NPatchEachRank, in for (int r=0; rGetValue() - time0; // output to the same log file as LB_GetBufferData - char FileName[100]; - sprintf( FileName, "Record__TimingMPI_Rank%05d", MPI_Rank ); + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__TimingMPI_Rank%05d", OUTPUT_DIR, MPI_Rank ); FILE *File = fopen( FileName, "a" ); - const double SendMB = (double)NSendParTotal*NParAtt*sizeof(real_par)*1.0e-6; - const double RecvMB = (double)NRecvParTotal*NParAtt*sizeof(real_par)*1.0e-6; + const double SendMB = (double)NSendParTotal*NParAttFlt*sizeof(real_par)*1.0e-6 + (double)NSendParTotal*NParAttInt*sizeof(long_par)*1.0e-6; + const double RecvMB = (double)NRecvParTotal*NParAttFlt*sizeof(real_par)*1.0e-6 + (double)NRecvParTotal*NParAttInt*sizeof(long_par)*1.0e-6; - fprintf( File, "%19s %4d %4s %10s %10s %10.5f %8.3f %8.3f %10.3f %10.3f\n", - Timer_Comment, NParAtt, "X", "X", "X", dtime, SendMB, RecvMB, SendMB/dtime, RecvMB/dtime ); + fprintf( File, "%19s %2d+%1d %4s %10s %10s %10.5f %8.3f %8.3f %10.3f %10.3f\n", + Timer_Comment, NParAttFlt, NParAttInt, "X", "X", "X", dtime, SendMB, RecvMB, SendMB/dtime, RecvMB/dtime ); fclose( File ); } // if ( OPT__TIMING_MPI ) diff --git a/src/Particle/Par_AddParticleAfterInit.cpp b/src/Particle/Par_AddParticleAfterInit.cpp index 2d3c9224ae..ce78823a41 100644 --- a/src/Particle/Par_AddParticleAfterInit.cpp +++ b/src/Particle/Par_AddParticleAfterInit.cpp @@ -15,22 +15,25 @@ // --> One typical usage is to add new particles after restarting from a simulation // snapshot // -// Parameter : NNewPar : Number of new particles to be added -// NewParAtt : Pointer array storing the data of new particle attributes -// --> Format: real_par *NewParAtt[PAR_NATT_TOTAL] -// --> Must be deallocated manually after invoking this function +// Parameter : NNewPar : Number of new particles to be added +// NewParAttFlt : Pointer array storing the data of new particle floating-point attributes +// --> Format: real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL] +// --> Must be deallocated manually after invoking this function +// NewParAttInt : Pointer array storing the data of new particle integer attributes +// --> Format: long_par *NewParAttInt[PAR_NATT_INT_TOTAL] +// --> Must be deallocated manually after invoking this function // // Return : 1. amr->Par // 2. NPar, ParListSize, and ParList[] of all real patches on lv //------------------------------------------------------------------------------------------------------- -void Par_AddParticleAfterInit( const long NNewPar, real_par *NewParAtt[PAR_NATT_TOTAL] ) +void Par_AddParticleAfterInit( const long NNewPar, real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL], long_par *NewParAttInt[PAR_NATT_INT_TOTAL] ) { const bool OldParOnly_No = false; const bool TimingSendPar_No = false; // add new particles to the base level first - Par_FindHomePatch_UniformGrid( 0, OldParOnly_No, NNewPar, NewParAtt ); + Par_FindHomePatch_UniformGrid( 0, OldParOnly_No, NNewPar, NewParAttFlt, NewParAttInt ); // send particles to their home leaf patches diff --git a/src/Particle/Par_Aux_Check_Particle.cpp b/src/Particle/Par_Aux_Check_Particle.cpp index 5fda42d3b9..d1dbe77aa5 100644 --- a/src/Particle/Par_Aux_Check_Particle.cpp +++ b/src/Particle/Par_Aux_Check_Particle.cpp @@ -147,7 +147,7 @@ void Par_Aux_Check_Particle( const char *comment ) bool CheckTypePass = true; // particle types must be recognizable - if ( amr->Par->Type[ParID] < (real_par)0 || amr->Par->Type[ParID] >= (real_par)PAR_NTYPE ) + if ( amr->Par->Type[ParID] < (long_par)0 || amr->Par->Type[ParID] >= (long_par)PAR_NTYPE ) CheckTypePass = false; // only support tracer particles when disabling GRAVITY diff --git a/src/Particle/Par_Aux_GetConservedQuantity.cpp b/src/Particle/Par_Aux_GetConservedQuantity.cpp index b4c4f4809f..ef662fa05a 100644 --- a/src/Particle/Par_Aux_GetConservedQuantity.cpp +++ b/src/Particle/Par_Aux_GetConservedQuantity.cpp @@ -120,7 +120,7 @@ void Par_Aux_GetConservedQuantity( double &Mass_Total, double &CoMX_Total, doubl const real_par *Pos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; const real_par *Mass = amr->Par->Mass; - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; double Ep_ThisRank = 0.0; double PrepPotTime, dh, _dh, Ep_Coeff; diff --git a/src/Particle/Par_Aux_InitCheck.cpp b/src/Particle/Par_Aux_InitCheck.cpp index b4e36cfffd..901886a81f 100644 --- a/src/Particle/Par_Aux_InitCheck.cpp +++ b/src/Particle/Par_Aux_InitCheck.cpp @@ -25,7 +25,7 @@ void Par_Aux_InitCheck() const real_par *Mass = amr->Par->Mass; const real_par *Pos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; - const real_par *Type = amr->Par->Type; + const long_par *Type = amr->Par->Type; // 1. all active particles should lie within the simulation domain diff --git a/src/Particle/Par_Aux_Record_ParticleCount.cpp b/src/Particle/Par_Aux_Record_ParticleCount.cpp index a92ba99205..3e8327ad48 100644 --- a/src/Particle/Par_Aux_Record_ParticleCount.cpp +++ b/src/Particle/Par_Aux_Record_ParticleCount.cpp @@ -15,8 +15,9 @@ void Par_Aux_Record_ParticleCount() { - const char FileName[] = "Record__ParticleCount"; static bool FirstTime = true; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__ParticleCount", OUTPUT_DIR ); if ( MPI_Rank == 0 && FirstTime ) { diff --git a/src/Particle/Par_CollectParticle2OneLevel.cpp b/src/Particle/Par_CollectParticle2OneLevel.cpp index 0c8e392912..c254c0d485 100644 --- a/src/Particle/Par_CollectParticle2OneLevel.cpp +++ b/src/Particle/Par_CollectParticle2OneLevel.cpp @@ -31,11 +31,11 @@ bool Particle_Collected = false; // It's because particles travelling from coarse to fine grids will stay in coarse grids // temporarily until the velocity correction is done. // --> For these patches, NPar_Copy will be **the sum of NPar and the number of particles -// collected from other patches**, and ParList_Copy (or ParAtt_Copy) will contain +// collected from other patches**, and ParList_Copy (or ParAttFlt_Copy and ParAttInt_Copy) will contain // information of particles belonging to NPar as well. // --> It makes implementation simplier. **For leaf real patches, one only needs to consider -// NPar and ParList. While for all other patches, one only needs to consider NPar_Copy, -// ParList_Copy (or ParAtt_Copy). One never needs to consider both.** +// NPar and ParList. While for all other patches, one only needs to consider NPar_Copy and +// ParList_Copy (or ParAttFlt_Copy and ParAttInt_Copy). One never needs to consider both.** // 5. When using OpenMP, one must ensure that different threads do NOT invoke this function // for the same patch at the same time !!! // --> Because this function will modify "NPar_Copy & ParList_Copy" for the target patch @@ -53,9 +53,13 @@ bool Particle_Collected = false; // 9. Only the master thread in OpenMP is allowed to call this routine // // Parameter : FaLv : Target refinement leve -// AttBitIdx : Bitwise indices of the target particle attributes (e.g., _PAR_MASS | _PAR_VELX) -// --> A user-defined attribute with an integer index AttIntIdx returned by -// AddParticleAttribute() can be converted to a bitwise index by BIDX(AttIntIdx) +// FltAttBitIdx : Bitwise indices of the target particle floating-point attributes (e.g., _PAR_MASS | _PAR_VELX) +// --> A user-defined attribute with an integer index FltAttIntIdx returned by +// AddParticleAttributeFlt() can be converted to a bitwise index by BIDX(FltAttIntIdx) +// --> Used by LOAD_BALANCE only +// IntAttBitIdx : Bitwise indices of the target particle integer attributes (e.g., _PAR_TYPE) +// --> A user-defined attribute with an integer index IntAttIntIdx returned by +// AddParticleAttributeInt() can be converted to a bitwise index by BIDX(IntAttIntIdx) // --> Used by LOAD_BALANCE only // PredictPos : true --> Predict particle position to TargetTime (for LOAD_BALANCE only) // TargetTime : Target time for predicting the particle position (for LOAD_BALANCE only) @@ -70,9 +74,9 @@ bool Particle_Collected = false; // // Return : NPar_Copy and ParList_Copy (if JustCountNPar == false) for all non-leaf real patches at FaLv //------------------------------------------------------------------------------------------------------- -void Par_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, const bool PredictPos, const double TargetTime, - const bool SibBufPatch, const bool FaSibBufPatch, const bool JustCountNPar, - const bool TimingSendPar ) +void Par_CollectParticle2OneLevel( const int FaLv, const long FltAttBitIdx, const long IntAttBitIdx, + const bool PredictPos, const double TargetTime, const bool SibBufPatch, + const bool FaSibBufPatch, const bool JustCountNPar, const bool TimingSendPar ) { // check @@ -91,7 +95,7 @@ void Par_CollectParticle2OneLevel( const int FaLv, const long AttBitIdx, const b # ifdef LOAD_BALANCE // note that if SibBufPatch or FaSibBufPatch is on, we need to call Par_LB_CollectParticle2OneLevel() // even when FaLv == MAX_LEVEL - Par_LB_CollectParticle2OneLevel( FaLv, AttBitIdx, PredictPos, TargetTime, SibBufPatch, FaSibBufPatch, JustCountNPar, TimingSendPar ); + Par_LB_CollectParticle2OneLevel( FaLv, FltAttBitIdx, IntAttBitIdx, PredictPos, TargetTime, SibBufPatch, FaSibBufPatch, JustCountNPar, TimingSendPar ); return; diff --git a/src/Particle/Par_FindHomePatch_UniformGrid.cpp b/src/Particle/Par_FindHomePatch_UniformGrid.cpp index 75a9c5e824..35b1746919 100644 --- a/src/Particle/Par_FindHomePatch_UniformGrid.cpp +++ b/src/Particle/Par_FindHomePatch_UniformGrid.cpp @@ -3,8 +3,9 @@ #ifdef PARTICLE static long ParPos2LBIdx( const int lv, const real_par ParPos[] ); -static void SendParticle2HomeRank( const int lv, const bool OldParOnly, - const long NNewPar, real_par *NewParAtt[PAR_NATT_TOTAL] ); +static void SendParticle2HomeRank( const int lv, const bool OldParOnly, const long NNewPar, + real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL], + long_par *NewParAttInt[PAR_NATT_INT_TOTAL] ); @@ -19,21 +20,25 @@ static void SendParticle2HomeRank( const int lv, const bool OldParOnly, // 3. After calling this function, the amr->Par structure will be reconstructed and // all particles will be associated with their home patches on lv // -// Parameter : lv : Target level -// OldParOnly : true --> only redistribute particles already exist in the current repository -// --> Ignore NNewPar and NewParAtt -// false --> only redistribute newly added particles specified by NNewPar and NewParAtt -// --> Particles already exist in the current repository will not be redistributed -// NNewPar : Number of new particles to be added (for OldParOnly==false only) -// NewParAtt : Pointer array storing the data of new particle attributes (for OldParOnly==false only) -// --> Format: real_par *NewParAtt[PAR_NATT_TOTAL] -// --> Must be deallocated manually after invoking this function +// Parameter : lv : Target level +// OldParOnly : true --> only redistribute particles already exist in the current repository +// --> Ignore NNewPar, NewParAttFlt, and NewParAttInt +// false --> only redistribute newly added particles specified by NNewPar, NewParAttFlt, and NewParAttInt +// --> Particles already exist in the current repository will not be redistributed +// NNewPar : Number of new particles to be added (for OldParOnly==false only) +// NewParAttFlt : Pointer array storing the data of new particle floating-point attributes (for OldParOnly==false only) +// --> Format: real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL] +// --> Must be deallocated manually after invoking this function +// NewParAttInt : Pointer array storing the data of new particle integer attributes (for OldParOnly==false only) +// --> Format: long_par *NewParAttInt[PAR_NATT_INT_TOTAL] +// --> Must be deallocated manually after invoking this function // // Return : 1. amr->Par // 2. NPar, ParListSize, and ParList[] of all real patches on lv //------------------------------------------------------------------------------------------------------- -void Par_FindHomePatch_UniformGrid( const int lv, const bool OldParOnly, - const long NNewPar, real_par *NewParAtt[PAR_NATT_TOTAL] ) +void Par_FindHomePatch_UniformGrid( const int lv, const bool OldParOnly, const long NNewPar, + real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL], + long_par *NewParAttInt[PAR_NATT_INT_TOTAL] ) { // check @@ -46,8 +51,8 @@ void Par_FindHomePatch_UniformGrid( const int lv, const bool OldParOnly, if ( NNewPar < 0 ) Aux_Error( ERROR_INFO, "NNewPar (%ld) < 0 !!\n", NNewPar ); - if ( NNewPar > 0 && NewParAtt[PAR_MASS] == NULL ) - Aux_Error( ERROR_INFO, "NewParAtt[PAR_MASS] == NULL !!\n" ); + if ( NNewPar > 0 && NewParAttFlt[PAR_MASS] == NULL ) + Aux_Error( ERROR_INFO, "NewParAttFlt[PAR_MASS] == NULL !!\n" ); } # endif @@ -57,14 +62,14 @@ void Par_FindHomePatch_UniformGrid( const int lv, const bool OldParOnly, // 1. redistribute all particles to their home ranks - SendParticle2HomeRank( lv, OldParOnly, NNewPar, NewParAtt ); + SendParticle2HomeRank( lv, OldParOnly, NNewPar, NewParAttFlt, NewParAttInt ); // 2. find the home patch const long NewParID0 = NOldPar; const long NTarPar = amr->Par->NPar_AcPlusInac - NOldPar; const real_par *Pos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; const int NReal = amr->NPatchComma[lv][1]; real_par TParPos[3]; @@ -157,7 +162,7 @@ void Par_FindHomePatch_UniformGrid( const int lv, const bool OldParOnly, amr->patch[0][lv][PID]->AddParticle( 1, &ParID, &amr->Par->NPar_Lv[lv], PType, Pos, amr->Par->NPar_AcPlusInac, __FUNCTION__ ); # else - amr->patch[0][lv][PID]->AddParticle( 1, &ParID, &amr->Par->NPar_Lv[lv], PType); + amr->patch[0][lv][PID]->AddParticle( 1, &ParID, &amr->Par->NPar_Lv[lv], PType ); # endif } @@ -181,21 +186,25 @@ void Par_FindHomePatch_UniformGrid( const int lv, const bool OldParOnly, // 2. Invoked by Par_FindHomePatch_UniformGrid() // 3. Inactive particles will NOT be redistributed // -// Parameter : lv : Target level -// OldParOnly : true --> only redistribute particles already exist in the current repository -// --> Ignore NNewPar and NewParAtt -// false --> only redistribute newly added particles specified by NNewPar and NewParAtt -// --> Particles already exist in the current repository will not be redistributed -// NNewPar : Number of new particles to be added (for OldParOnly==false only) -// NewParAtt : Pointer array storing the data of new particle attributes (for OldParOnly==false only) -// --> Format: real_par *NewParAtt[PAR_NATT_TOTAL] -// --> Must be deallocated manually after invoking this function +// Parameter : lv : Target level +// OldParOnly : true --> only redistribute particles already exist in the current repository +// --> Ignore NNewPar, NewParAttFlt, and NewParAttInt +// false --> only redistribute newly added particles specified by NNewPar, NewParAttFlt, and NewParAttInt +// --> Particles already exist in the current repository will not be redistributed +// NNewPar : Number of new particles to be added (for OldParOnly==false only) +// NewParAttFlt : Pointer array storing the data of new particle floating-point attributes (for OldParOnly==false only) +// --> Format: real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL] +// --> Must be deallocated manually after invoking this function +// NewParAttInt : Pointer array storing the data of new particle integer attributes (for OldParOnly==false only) +// --> Format: long_par *NewParAttInt[PAR_NATT_INT_TOTAL] +// --> Must be deallocated manually after invoking this function // // Return : 1. amr->Par // 2. NPar, ParListSize and ParList[] of all real patches on lv //------------------------------------------------------------------------------------------------------- -void SendParticle2HomeRank( const int lv, const bool OldParOnly, - const long NNewPar, real_par *NewParAtt[PAR_NATT_TOTAL] ) +void SendParticle2HomeRank( const int lv, const bool OldParOnly, const long NNewPar, + real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL], + long_par *NewParAttInt[PAR_NATT_INT_TOTAL] ) { real_par *Mass = NULL; @@ -215,10 +224,10 @@ void SendParticle2HomeRank( const int lv, const bool OldParOnly, else { - Mass = NewParAtt[PAR_MASS]; - Pos[0] = NewParAtt[PAR_POSX]; - Pos[1] = NewParAtt[PAR_POSY]; - Pos[2] = NewParAtt[PAR_POSZ]; + Mass = NewParAttFlt[PAR_MASS]; + Pos[0] = NewParAttFlt[PAR_POSX]; + Pos[1] = NewParAttFlt[PAR_POSY]; + Pos[2] = NewParAttFlt[PAR_POSZ]; } for (int r=0; rPar->Attribute[v] : NewParAtt[v]; - OldAttPtrPtr[v] = &amr->Par->Attribute[v]; + SendAttFltPtr [v] = ( OldParOnly ) ? amr->Par->AttributeFlt[v] : NewParAttFlt[v]; + OldAttFltPtrPtr[v] = &amr->Par->AttributeFlt[v]; } - for (int v=0; vPar->AttributeInt[v] : NewParAttInt[v]; + OldAttIntPtrPtr[v] = &amr->Par->AttributeInt[v]; + } + +// 3-2. redistribute floating-point data + for (int v=0; vPar->Mass = amr->Par->Attribute[PAR_MASS]; - amr->Par->PosX = amr->Par->Attribute[PAR_POSX]; - amr->Par->PosY = amr->Par->Attribute[PAR_POSY]; - amr->Par->PosZ = amr->Par->Attribute[PAR_POSZ]; - amr->Par->VelX = amr->Par->Attribute[PAR_VELX]; - amr->Par->VelY = amr->Par->Attribute[PAR_VELY]; - amr->Par->VelZ = amr->Par->Attribute[PAR_VELZ]; - amr->Par->Time = amr->Par->Attribute[PAR_TIME]; - amr->Par->Type = amr->Par->Attribute[PAR_TYPE]; + amr->Par->Mass = amr->Par->AttributeFlt[PAR_MASS]; + amr->Par->PosX = amr->Par->AttributeFlt[PAR_POSX]; + amr->Par->PosY = amr->Par->AttributeFlt[PAR_POSY]; + amr->Par->PosZ = amr->Par->AttributeFlt[PAR_POSZ]; + amr->Par->VelX = amr->Par->AttributeFlt[PAR_VELX]; + amr->Par->VelY = amr->Par->AttributeFlt[PAR_VELY]; + amr->Par->VelZ = amr->Par->AttributeFlt[PAR_VELZ]; + amr->Par->Time = amr->Par->AttributeFlt[PAR_TIME]; # ifdef STORE_PAR_ACC - amr->Par->AccX = amr->Par->Attribute[PAR_ACCX]; - amr->Par->AccY = amr->Par->Attribute[PAR_ACCY]; - amr->Par->AccZ = amr->Par->Attribute[PAR_ACCZ]; + amr->Par->AccX = amr->Par->AttributeFlt[PAR_ACCX]; + amr->Par->AccY = amr->Par->AttributeFlt[PAR_ACCY]; + amr->Par->AccZ = amr->Par->AttributeFlt[PAR_ACCZ]; # endif + amr->Par->Type = amr->Par->AttributeInt[PAR_TYPE]; + // 6. check # ifdef DEBUG_PARTICLE @@ -378,7 +427,8 @@ void SendParticle2HomeRank( const int lv, const bool OldParOnly, // free memory delete [] TRank; - delete [] SendBuf; + delete [] SendBuf_Flt; + delete [] SendBuf_Int; } // FUNCTION : SendParticle2HomeRank diff --git a/src/Particle/Par_GetTimeStep_VelAcc.cpp b/src/Particle/Par_GetTimeStep_VelAcc.cpp index 463fbe405e..fc3c7975c6 100644 --- a/src/Particle/Par_GetTimeStep_VelAcc.cpp +++ b/src/Particle/Par_GetTimeStep_VelAcc.cpp @@ -49,7 +49,7 @@ void Par_GetTimeStep_VelAcc( double &dt_vel, double &dt_acc, const int lv ) # else const int NT = 1; # endif - const real_par *ParType = amr->Par->Type; + const long_par *ParType = amr->Par->Type; # ifndef STORE_PAR_ACC if ( UseAcc ) @@ -70,7 +70,7 @@ void Par_GetTimeStep_VelAcc( double &dt_vel, double &dt_acc, const int lv ) # endif if ( IncNonleaf ) - Par_CollectParticle2OneLevel( lv, _PAR_VEL|((UseAcc)?ParAccBIdx:0)|_PAR_TYPE, PredictPos_No, + Par_CollectParticle2OneLevel( lv, _PAR_VEL|((UseAcc)?ParAccBIdx:0), _PAR_TYPE, PredictPos_No, NULL_REAL, SibBufPatch_No, FaSibBufPatch_No, JustCountNPar_No, TimingSendPar_No ); @@ -139,19 +139,19 @@ void Par_GetTimeStep_VelAcc( double &dt_vel, double &dt_acc, const int lv ) if ( UseCopy ) { -// ParAtt_Copy[] is only defined in LOAD_BALANCE +// ParAttFlt/Int_Copy[] is only defined in LOAD_BALANCE real_par *Vel_Copy[3] = { NULL, NULL, NULL }; real_par *Acc_Copy[3] = { NULL, NULL, NULL }; - real_par *Typ_Copy = NULL; + long_par *Typ_Copy = NULL; # ifdef LOAD_BALANCE for (int d=0; d<3; d++) { - Vel_Copy[d] = amr->patch[0][lv][PID]->ParAtt_Copy[ PAR_VELX + d ]; + Vel_Copy[d] = amr->patch[0][lv][PID]->ParAttFlt_Copy[ PAR_VELX + d ]; # ifdef STORE_PAR_ACC - Acc_Copy[d] = amr->patch[0][lv][PID]->ParAtt_Copy[ PAR_ACCX + d ]; + Acc_Copy[d] = amr->patch[0][lv][PID]->ParAttFlt_Copy[ PAR_ACCX + d ]; # endif } - Typ_Copy = amr->patch[0][lv][PID]->ParAtt_Copy[ PAR_TYPE ]; + Typ_Copy = amr->patch[0][lv][PID]->ParAttInt_Copy[ PAR_TYPE ]; # endif for (int p=0; p must not change the following order of declaration since they must be consistent // with the symbolic constants defined in Macro.h (e.g., PAR_MASS) - Idx_ParMass = AddParticleAttribute( "ParMass" ); - Idx_ParPosX = AddParticleAttribute( "ParPosX" ); - Idx_ParPosY = AddParticleAttribute( "ParPosY" ); - Idx_ParPosZ = AddParticleAttribute( "ParPosZ" ); - Idx_ParVelX = AddParticleAttribute( "ParVelX" ); - Idx_ParVelY = AddParticleAttribute( "ParVelY" ); - Idx_ParVelZ = AddParticleAttribute( "ParVelZ" ); - Idx_ParType = AddParticleAttribute( "ParType" ); + Idx_ParMass = AddParticleAttributeFlt( "ParMass" ); + Idx_ParPosX = AddParticleAttributeFlt( "ParPosX" ); + Idx_ParPosY = AddParticleAttributeFlt( "ParPosY" ); + Idx_ParPosZ = AddParticleAttributeFlt( "ParPosZ" ); + Idx_ParVelX = AddParticleAttributeFlt( "ParVelX" ); + Idx_ParVelY = AddParticleAttributeFlt( "ParVelY" ); + Idx_ParVelZ = AddParticleAttributeFlt( "ParVelZ" ); + + Idx_ParType = AddParticleAttributeInt( "ParType" ); // 2. add other built-in attributes # ifdef STAR_FORMATION - Idx_ParCreTime = AddParticleAttribute( "ParCreTime" ); + Idx_ParCreTime = AddParticleAttributeFlt( "ParCreTime" ); # endif @@ -64,22 +66,27 @@ void Par_Init_Attribute() // 4. must put built-in attributes not to be stored on disk at the END of the attribute list // --> make it easier to discard them when storing data on disk (see Output_DumpData_Total(_HDF5).cpp) // --> must also be consistent with the symbolic constant (e.g., PAR_TIME and PAR_ACC*) defined in Macro.h -// --> total number of attributes not to be stored on disk is set by PAR_NATT_UNSTORED +// --> total number of attributes not to be stored on disk is set by PAR_NATT_FLT/INT_UNSTORED // --> currently including time and acceleration*3 # ifdef STORE_PAR_ACC - Idx_ParAccX = AddParticleAttribute( "ParAccX" ); - Idx_ParAccY = AddParticleAttribute( "ParAccY" ); - Idx_ParAccZ = AddParticleAttribute( "ParAccZ" ); + Idx_ParAccX = AddParticleAttributeFlt( "ParAccX" ); + Idx_ParAccY = AddParticleAttributeFlt( "ParAccY" ); + Idx_ParAccZ = AddParticleAttributeFlt( "ParAccZ" ); # endif - Idx_ParTime = AddParticleAttribute( "ParTime" ); + Idx_ParTime = AddParticleAttributeFlt( "ParTime" ); // 5. validate if all attributes have been set properly - if ( NDefinedAtt != PAR_NATT_TOTAL ) - Aux_Error( ERROR_INFO, "total number of defined attributes (%d) != expectation (%d) !!\n" - " --> Modify PAR_NATT_USER in the Makefile or invoke AddParticleAttribute() properly\n", - NDefinedAtt, PAR_NATT_TOTAL ); + if ( NDefinedAttFlt != PAR_NATT_FLT_TOTAL ) + Aux_Error( ERROR_INFO, "total number of defined floating-point attributes (%d) != expectation (%d) !!\n" + " --> Modify PAR_NATT_FLT_USER in the Makefile or invoke AddParticleAttributeFlt() properly\n", + NDefinedAttFlt, PAR_NATT_FLT_TOTAL ); + + if ( NDefinedAttInt != PAR_NATT_INT_TOTAL ) + Aux_Error( ERROR_INFO, "total number of defined integer attributes (%d) != expectation (%d) !!\n" + " --> Modify PAR_NATT_INT_USER in the Makefile or invoke AddParticleAttributeInt() properly\n", + NDefinedAttInt, PAR_NATT_INT_TOTAL ); if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); @@ -89,58 +96,143 @@ void Par_Init_Attribute() //------------------------------------------------------------------------------------------------------- -// Function : AddParticleAttribute -// Description : Add a new particle attribute to the attribute list +// Function : AddParticleAttributeFlt +// Description : Add a new particle floating-point attribute to the attribute list // // Note : 1. This function will // (1) set the attribute label, which will be used as the output name of the attribute // (2) return the index of the new attribute, which can be used to access the attribute -// data (e.g., amr->Par->Attribute[]) -// 2. One must invoke AddParticleAttribute() exactly PAR_NATT_TOTAL times to set the labels +// data (e.g., amr->Par->AttributeFlt[]) +// 2. One must invoke AddParticleAttributeFlt() exactly PAR_NATT_FLT_TOTAL times to set the labels // of all attributes // 3. Invoked by Par_Init_Attribute() and various test problem initializers // // Parameter : InputLabel : Label (i.e., name) of the new attribute // -// Return : (1) ParAttLabel[] +// Return : (1) ParAttFltLabel[] // (2) Index of the newly added attribute //------------------------------------------------------------------------------------------------------- -FieldIdx_t AddParticleAttribute( const char *InputLabel ) +FieldIdx_t AddParticleAttributeFlt( const char *InputLabel ) { - const FieldIdx_t AttIdx = NDefinedAtt ++; + const FieldIdx_t AttIdx = NDefinedAttFlt ++; // check if ( InputLabel == NULL ) Aux_Error( ERROR_INFO, "InputLabel == NULL !!\n" ); - if ( NDefinedAtt > PAR_NATT_TOTAL ) - Aux_Error( ERROR_INFO, "total number of defined particle attributes (%d) exceeds expectation (%d) after adding \"%s\" !!\n" - " --> Modify PAR_NATT_USER in the Makefile properly\n", - NDefinedAtt, PAR_NATT_TOTAL, InputLabel ); + if ( NDefinedAttFlt > PAR_NATT_FLT_TOTAL ) + Aux_Error( ERROR_INFO, "total number of defined particle floating-point attributes (%d) exceeds expectation (%d) after adding \"%s\" !!\n" + " --> Modify PAR_NATT_FLT_USER in the Makefile properly\n", + NDefinedAttFlt, PAR_NATT_FLT_TOTAL, InputLabel ); - for (int v=0; vPar->AttributeInt[]) +// 2. One must invoke AddParticleAttributeInt() exactly PAR_NATT_INT_TOTAL times to set the labels +// of all attributes +// 3. Invoked by Par_Init_Attribute() and various test problem initializers +// +// Parameter : InputLabel : Label (i.e., name) of the new attribute +// +// Return : (1) ParAttIntLabel[] +// (2) Index of the newly added attribute +//------------------------------------------------------------------------------------------------------- +FieldIdx_t AddParticleAttributeInt( const char *InputLabel ) +{ + + const FieldIdx_t AttIdx = NDefinedAttInt ++; + + +// check + if ( InputLabel == NULL ) + Aux_Error( ERROR_INFO, "InputLabel == NULL !!\n" ); + + if ( NDefinedAttInt > PAR_NATT_INT_TOTAL ) + Aux_Error( ERROR_INFO, "total number of defined particle integer attributes (%d) exceeds expectation (%d) after adding \"%s\" !!\n" + " --> Modify PAR_NATT_INT_USER in the Makefile properly\n", + NDefinedAttInt, PAR_NATT_INT_TOTAL, InputLabel ); + + for (int v=0; v Accepted options: CHECK_ON / CHECK_OFF +// +// Return : Sucess: index of the target attribute +// Failed: Idx_Undefined +//------------------------------------------------------------------------------------------------------- +FieldIdx_t GetParticleAttributeFltIndex( const char *InputLabel, const Check_t Check ) +{ + + FieldIdx_t Idx_Out = Idx_Undefined; + + for (int v=0; vPar->Mesh_Attr_Num = Mesh_NAttr; + + if ( !Mesh_NAttr ) + { + Aux_Message( stderr, "WARNING : no fields have been specified in \"%s\" !!\n", FileName ); + + return; + } + + +// allocate the memory + amr->Par->Mesh_Attr = (real_par**) malloc( Mesh_NAttr*sizeof(real_par*) ); + amr->Par->Mesh_Attr_Label = (char **) malloc( Mesh_NAttr*sizeof(char *) ); + amr->Par->Mesh_Attr_Idx = (long * ) malloc( Mesh_NAttr*sizeof(long ) ); + + for (int v=0; vPar->Mesh_Attr [v] = NULL; + amr->Par->Mesh_Attr_Label[v] = (char*) malloc( MAX_STRING*sizeof(char) ); + } + + +// load data in Input__Par_Mesh and convert the field name to field index + char FirstItem[MAX_STRING]; + int NRow=0, NItem; + + char *Line = new char [MAX_STRING]; + FILE *File = fopen( FileName, "r" ); + + while ( fgets(Line, MAX_STRING, File) != NULL ) + { + NItem = sscanf( Line, "%s", FirstItem ); + +// skip empty lines and lines starting with # + if ( NItem <= 0 || FirstItem[0] == '#' ) continue; + +// initialize the bitwise indices and labels of mesh quantities to be mapped from + const long FieldIdx = Par_Get_MeshIndex( FirstItem ); + + if ( FieldIdx == Idx_Undefined ) + Aux_Error( ERROR_INFO, "unknown input field label (%s) in %s !!\n", FirstItem, FileName ); + + amr->Par->Mesh_Attr_Idx[NRow] = FieldIdx; + + sprintf( amr->Par->Mesh_Attr_Label[NRow], "Mesh%s", FirstItem ); + + NRow++; + } + + + fclose( File ); + delete [] Line; + +} // FUNCTION : Par_Init_Attribute_Mesh + + + +#endif // #ifdef PARTICLE diff --git a/src/Particle/Par_Init_ByFile.cpp b/src/Particle/Par_Init_ByFile.cpp index 93b316a883..5795a7d50e 100644 --- a/src/Particle/Par_Init_ByFile.cpp +++ b/src/Particle/Par_Init_ByFile.cpp @@ -1,6 +1,12 @@ #include "GAMER.h" #ifdef PARTICLE +// declare as static so that other functions cannot invoke it directly and must use the function pointer +static void Par_Init_ByFile_Default(); + +// this function pointer may be overwritten by various test problem initializers +// --> link to Par_Init_ByFile_Default() by default +void (*Par_Init_ByFile_User_Ptr)() = Par_Init_ByFile_Default; @@ -26,7 +32,7 @@ // // mass, position x/y/z, velocity x/y/z, type, // [, creation time (when enabling STAR_FORMATION)] -// [, user-specified attributes (when PAR_NATT_USER>0)] +// [, user-specified attributes (when PAR_NATT_FLT_USER>0 or PAR_NATT_INT_USER>0)] // // --> The mass of all particles can be set to PAR_IC_MASS instead (by having PAR_IC_MASS>=0.0), // in which case PAR_IC should exclude partice mass @@ -38,7 +44,7 @@ // // Parameter : None // -// Return : amr->Par->Attribute[] +// Return : amr->Par->AttributeFlt[], amr->Par->AttributeInt[] //------------------------------------------------------------------------------------------------------- void Par_Init_ByFile() { @@ -51,6 +57,28 @@ void Par_Init_ByFile() Aux_Error( ERROR_INFO, "unknown data format in PAR_IC (%d) !!\n", amr->Par->ParICFormat ); + Par_Init_ByFile_User_Ptr(); + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCITON : Par_Init_ByFile + + + +//------------------------------------------------------------------------------------------------------- +// Function : Par_Init_ByFile_Default +// Description : Initialize particle attributes from a file +// +// Note : 1. Refer to the "Note" section in "Particle/Par_Init_ByFile.cpp -> Par_Init_ByFile()" +// +// Parameter : None +// +// Return : amr->Par->Attribute[] +//------------------------------------------------------------------------------------------------------- +void Par_Init_ByFile_Default() +{ + const char FileName[] = "PAR_IC"; const long NParAllRank = amr->Par->NPar_Active_AllRank; long NParThisRank = amr->Par->NPar_AcPlusInac; // cannot be "const" due to MPI_Allgather() @@ -58,14 +86,13 @@ void Par_Init_ByFile() const bool SingleParType = amr->Par->ParICType >= 0; // determine the number of attributes to be loaded - int NParAtt = PAR_NATT_TOTAL - 1; // exclude time + int NParAttFlt = PAR_NATT_FLT_TOTAL - 1; // exclude time + int NParAttInt = PAR_NATT_INT_TOTAL; # ifdef STORE_PAR_ACC - NParAtt -= 3; // exclude acceleration + NParAttFlt -= 3; // exclude acceleration # endif - if ( SingleParMass ) NParAtt --; // exclude mass - if ( SingleParType ) NParAtt --; // exclude type - - const int NParAttPerLoad = ( amr->Par->ParICFormat == PAR_IC_FORMAT_ID_ATT ) ? NParAtt : 1; + if ( SingleParMass ) NParAttFlt --; // exclude mass + if ( SingleParType ) NParAttInt --; // exclude type // check @@ -73,13 +100,14 @@ void Par_Init_ByFile() Aux_Error( ERROR_INFO, "file \"%s\" does not exist for PAR_INIT == PAR_INIT_BY_FILE !!\n", FileName ); // determine the load_data_size for loading PAR_IC - size_t load_data_size = ( PAR_IC_FLOAT8 ) ? sizeof(double) : sizeof(float); + size_t load_data_size_flt = ( PAR_IC_FLOAT8 ) ? sizeof(double) : sizeof(float); + size_t load_data_size_int = ( PAR_IC_INT8 ) ? sizeof(long) : sizeof(int) ; FILE *FileTemp = fopen( FileName, "rb" ); fseek( FileTemp, 0, SEEK_END ); - const long ExpectSize = long(NParAtt)*NParAllRank*load_data_size; + const long ExpectSize = NParAllRank*( long(NParAttFlt)*load_data_size_flt + long(NParAttInt)*load_data_size_int ); const long FileSize = ftell( FileTemp ); if ( FileSize != ExpectSize ) Aux_Error( ERROR_INFO, "size of the file <%s> = %ld != expect = %ld !!\n", @@ -100,24 +128,49 @@ void Par_Init_ByFile() if ( NPar_Check != NParAllRank ) Aux_Error( ERROR_INFO, "total number of particles found (%ld) != expect (%ld) !!\n", NPar_Check, NParAllRank ); - for (int r=0; rPar->ParICFormat == PAR_IC_FORMAT_ID_ATT ) { - fseek( File, FileOffset+v*NParAllRank*load_data_size, SEEK_SET ); - fread( ParData_ThisRank+v*NParThisRank*load_data_size, load_data_size, long(NParAttPerLoad)*NParThisRank, File ); + for (int r=0; rPar->ParICFormat == PAR_IC_FORMAT_ID_ATT ) ... else ... + fclose( File ); if ( MPI_Rank == 0 ) Aux_Message( stdout, "done\n" ); @@ -126,7 +179,8 @@ void Par_Init_ByFile() // store data into the particle repository if ( MPI_Rank == 0 ) Aux_Message( stdout, " Storing data into particle repository ... " ); - real_par *ParData1 = new real_par [NParAtt]; + real_par *ParFltData1 = new real_par [NParAttFlt]; + long_par *ParIntData1 = new long_par [NParAttInt]; for (long p=0; pPar->ParICFormat == PAR_IC_FORMAT_ID_ATT ) { if ( PAR_IC_FLOAT8 ) - for (int v=0; vAttribute[] are the same +// assuming that the orders of the particle attributes stored on the disk and in Par->AttributeFlt/Int[] are the same // --> no need to skip acceleration and time since they are always put at the end of the attribute list - for (int v_in=0, v_out=0; v_inPar->AttributeFlt[v_out][p] = ParFltData1[v_in]; + } + + for (int v_in=0, v_out=0; v_inPar->Attribute[v_out][p] = ParData1[v_in]; + amr->Par->AttributeInt[v_out][p] = ParIntData1[v_in]; } if ( SingleParMass ) amr->Par->Mass[p] = amr->Par->ParICMass; @@ -164,17 +234,16 @@ void Par_Init_ByFile() // synchronize all particles to the physical time at the base level amr->Par->Time[p] = Time[0]; - } + } // for (long p=0; p Therefore, there is no constraint on which particles should be set by this function // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_Template( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); @@ -69,7 +75,7 @@ void Par_Init_ByFunction_Template( const long NPar_ThisRank, const long NPar_All // initialize the particle creation time by an arbitrary negative value since it is // only used for star particles created during evolution and is useless during initialization # ifdef STAR_FORMATION - for (int p=0; p Used by LOAD_BALANCE, where particle position and mass may be stored in -// ParAtt_Copy[] of each patch +// ParAttFlt_Copy[] of each patch // --> ParList[] becomes useless and must be set to NULL // --> Does not work with PredictPos since we don't have the information of particle // time and velocity // InputMassPos : Particle mass and position arrays used by UseInputMassPos +// InputType : Particle type array used by UseInputMassPos // // Return : Rho //------------------------------------------------------------------------------------------------------- void Par_MassAssignment( const long *ParList, const long NPar, const ParInterp_t IntScheme, real *Rho, const int RhoSize, const double *EdgeL, const double dh, const bool PredictPos, const double TargetTime, const bool InitZero, const bool Periodic[], const int PeriodicSize[3], - const bool UnitDens, const bool CheckFarAway, const bool UseInputMassPos, real_par **InputMassPos ) + const bool UnitDens, const bool CheckFarAway, const bool UseInputMassPos, real_par **InputMassPos, + long_par **InputType ) { // check @@ -98,6 +100,8 @@ void Par_MassAssignment( const long *ParList, const long NPar, const ParInterp_t if ( PredictPos ) Aux_Error( ERROR_INFO, "PredictPos does NOT work with UseInputMassPos !!\n" ); if ( NPar > 0 && InputMassPos == NULL ) Aux_Error( ERROR_INFO, "InputMassPos == NULL for UseInputMassPos (NPar = %ld) !!\n", NPar ); + if ( NPar > 0 && InputType == NULL ) + Aux_Error( ERROR_INFO, "InputType == NULL for UseInputMassPos (NPar = %ld) !!\n", NPar ); # ifndef LOAD_BALANCE Aux_Message( stderr, "WARNING : are you sure you want to use UseInputMassPos when LOAD_BALANCE is off !?\n" ); @@ -108,6 +112,7 @@ void Par_MassAssignment( const long *ParList, const long NPar, const ParInterp_t { if ( NPar > 0 && ParList == NULL ) Aux_Error( ERROR_INFO, "ParList == NULL for NPar = %ld !!\n", NPar ); if ( InputMassPos != NULL ) Aux_Error( ERROR_INFO, "InputMassPos != NULL when UseInputMassPos is off !!\n" ); + if ( InputType != NULL ) Aux_Error( ERROR_INFO, "InputType != NULL when UseInputMassPos is off !!\n" ); } # endif // #ifdef DEBUG_PARTICLE @@ -122,7 +127,7 @@ void Par_MassAssignment( const long *ParList, const long NPar, const ParInterp_t // 2. set up attribute arrays, copy particle position since they might be modified during the position prediction real_par *Mass = NULL; real_par *Pos[3] = { NULL, NULL, NULL }; - real_par *PType = NULL; + long_par *PType = NULL; long ParID, Idx; if ( UseInputMassPos ) @@ -131,7 +136,7 @@ void Par_MassAssignment( const long *ParList, const long NPar, const ParInterp_t Pos[0] = InputMassPos[PAR_POSX]; Pos[1] = InputMassPos[PAR_POSY]; Pos[2] = InputMassPos[PAR_POSZ]; - PType = InputMassPos[PAR_TYPE]; + PType = InputType [PAR_TYPE]; } else @@ -140,7 +145,7 @@ void Par_MassAssignment( const long *ParList, const long NPar, const ParInterp_t for (int d=0; d<3; d++) Pos[d] = new real_par [NPar]; - PType = new real_par [NPar]; + PType = new long_par [NPar]; for (long p=0; pPar->NPar_AcPlusInac ); +// dump floating-point data + real_par *attribute_flt_buff = (real_par*)malloc( sizeof(real_par)*amr->Par->NPar_AcPlusInac ); - for (int v=0; vPar->Mass[p] < 0.0 ) continue; - else attribute_buff[ counter ++ ] = amr->Par->Attribute[v][p]; + else attribute_flt_buff[ counter ++ ] = amr->Par->AttributeFlt[v][p]; } // dump data from the buffer - fwrite( attribute_buff, sizeof(real_par), counter, File ); + fwrite( attribute_flt_buff, sizeof(real_par), counter, File ); fclose( File ); } // if ( MPI_Rank == TargetMPIRank ) MPI_Barrier( MPI_COMM_WORLD ); } // for (int TargetMPIRank=0; TargetMPIRankPar->NPar_AcPlusInac ); + + for (int v=0; vPar->NPar_AcPlusInac; p++) + { +// skip inactive particles + if ( amr->Par->Mass[p] < 0.0 ) continue; + else attribute_int_buff[ counter ++ ] = amr->Par->AttributeInt[v][p]; + } + +// dump data from the buffer + fwrite( attribute_int_buff, sizeof(long_par), counter, File ); + fclose( File ); + } // if ( MPI_Rank == TargetMPIRank ) + + MPI_Barrier( MPI_COMM_WORLD ); + } // for (int TargetMPIRank=0; TargetMPIRankPar->Mass[p] < 0.0 ) continue; - for (int v=0; vPar->Attribute[v][p] ); + for (int v=0; vPar->AttributeFlt[v][p] ); + for (int v=0; vPar->AttributeInt[v][p] ); fprintf( File, "\n" ); } diff --git a/src/Particle/Par_Output_TracerParticle_Mesh.cpp b/src/Particle/Par_Output_TracerParticle_Mesh.cpp new file mode 100644 index 0000000000..29208f5388 --- /dev/null +++ b/src/Particle/Par_Output_TracerParticle_Mesh.cpp @@ -0,0 +1,193 @@ +#include "GAMER.h" + +#ifdef PARTICLE + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Par_Output_TracerParticle_Mesh +// Description : Prepare and map mesh quantities onto tracer particles at their positions +// for storage in HDF5 snapshots +// +// Note : 1. Invoked by Output_DumpData_Total_HDF5() +// 2. The quantities for non-tracer particles are set to __FLT_MAX__ +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Par_Output_TracerParticle_Mesh() +{ + + const bool IntPhase_No = false; + const bool DE_Consistency_No = false; + const real MinDens_No = -1.0; + const real MinPres_No = -1.0; + const real MinTemp_No = -1.0; + const real MinEntr_No = -1.0; + const bool UseTracers_Yes = true; + const bool TracerVelCorr_No = false; +# ifdef GRAVITY + const OptPotBC_t BC_Pot = OPT__BC_POT; +# else + const OptPotBC_t BC_Pot = BC_POT_NONE; +# endif + const int ParGhost = amr->Par->GhostSizeTracer; + const int VarSize = PS1 + 2*ParGhost; + const real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; + const long_par *ParType = amr->Par->Type; + const long ParListSize = amr->Par->ParListSize; + const int ParAttrNum = amr->Par->Mesh_Attr_Num; + const long *ParAttrIdx = amr->Par->Mesh_Attr_Idx; + + long AllVar_PreparePatch = ( _TOTAL | _DERIVED ); + +# ifdef MHD + AllVar_PreparePatch |= _MAG; +# endif +# ifdef GRAVITY + AllVar_PreparePatch |= _POTE; +# endif + + +// nothing to do if no fields have been specified + if ( !ParAttrNum ) return; + + +// allocate enough memory for Mesh_Attr + for (int v=0; vPar->Mesh_Attr[v] = (real_par*) realloc( amr->Par->Mesh_Attr[v], ParListSize*sizeof(real_par) ); + + +// initialize the value to __FLT_MAX__ for all types of particles + for (int v=0; vPar->Mesh_Attr[v][p] = (real_par) __FLT_MAX__; + + +// OpenMP parallel region +# pragma omp parallel + { + + for (int lv=0; lv must use "NPar" instead of "NParType[(int)PTYPE_TRACER]" since currently +// both Var_Temp[] and InterpParPos[] still allocate memory for non-tracer particles + int NParMax = 0; + for (int PID=0; PIDNPatchComma[lv][1]; PID++) NParMax = MAX( NParMax, amr->patch[0][lv][PID]->NPar ); + +// nothing to do if there is no particle + if ( NParMax <= 0 ) continue; + + const double TimeNew = amr->FluSgTime[lv][ amr->FluSg[lv] ]; + const double dh = amr->dh[lv]; + const double _dh = 1.0/dh; + + bool GotYou; + long ParID; + + real *Var = new real [ 8*CUBE(VarSize) ]; // 8: number of patches per patch group + real_par *Var_Temp = new real_par [NParMax]; + + real_par **InterpParPos = NULL; + Aux_AllocateArray2D( InterpParPos, 3, NParMax ); + + +// loop over all **real** patch groups +# pragma omp for schedule( PAR_OMP_SCHED, PAR_OMP_SCHED_CHUNK ) + for (int PID0=0; PID0NPatchComma[lv][1]; PID0+=8) + { +// 1. find the patch groups with target tracer particles +// --> use patch group as the calculation unit since Prepare_PatchData() only works with patch group +// --> disadvantage: some patches may not have tracer particles ... (they will be skipped later) + GotYou = false; + + for (int PID=PID0; PIDpatch[0][lv][PID]->NParType[(int)PTYPE_TRACER] > 0 ) + { + GotYou = true; + break; + } + } + +// nothing to do if there are no target tracer particles in the target patch group + if ( !GotYou ) continue; + + + for (int v=0; v0) + if ( TVar & AllVar_PreparePatch ) + Prepare_PatchData( lv, TimeNew, Var, NULL, ParGhost, 1, &PID0, TVar, _NONE, + OPT__FLU_INT_SCHEME, INT_NONE, UNIT_PATCH, NSIDE_26, IntPhase_No, + OPT__BC_FLU, BC_Pot, MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); + + else + { +//###REVISE: support derived fields defined in Flu_DerivedField_BuiltIn() and Flu_DerivedField_User() + Aux_Error( ERROR_INFO, "unsupported target field (%ld) !!\n", TVar ); + } + + +// 3. map quantities from mesh onto the tracer particles + for (int PID=PID0, t=0; PIDpatch[0][lv][PID]->NParType[(int)PTYPE_TRACER] == 0 ) continue; + + double EdgeL[3], EdgeR[3]; + + for (int d=0; d<3; d++) + { + EdgeL[d] = amr->patch[0][lv][PID]->EdgeL[d] - dh*ParGhost; + EdgeR[d] = amr->patch[0][lv][PID]->EdgeR[d] + dh*ParGhost; + } + +// retrieve the particle position + for (int p=0; ppatch[0][lv][PID]->NPar; p++) + { + ParID = amr->patch[0][lv][PID]->ParList[p]; + + if ( ParType[ParID] != PTYPE_TRACER ) continue; + + for (int d=0; d<3; d++) InterpParPos[d][p] = ParPos[d][ParID]; + } + + Par_MapMesh2Particles( EdgeL, EdgeR, _dh, VarSize, Var+t*CUBE(VarSize), + amr->patch[0][lv][PID]->NPar, InterpParPos, ParType, + amr->patch[0][lv][PID]->ParList, UseTracers_Yes, Var_Temp, + TracerVelCorr_No ); + +// 4. update particles + for (int p=0; ppatch[0][lv][PID]->NPar; p++) + { + ParID = amr->patch[0][lv][PID]->ParList[p]; + + if ( ParType[ParID] != PTYPE_TRACER ) continue; + + amr->Par->Mesh_Attr[v][ParID] = Var_Temp[p]; + } + } // for (int PID=PID0, t=0; PIDNPatchComma[lv][1]; PID0+=8) + + +// 5. free memory + delete [] Var; + delete [] Var_Temp; + + Aux_DeallocateArray2D( InterpParPos ); + } // for (int lv=0; lvPar->NPar_Lv[] - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; # ifdef DEBUG_PARTICLE const real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; amr->patch[0][FaLv][FaPID]->AddParticle( NParSon, ParListSon, &amr->Par->NPar_Lv[FaLv], PType, ParPos, amr->Par->NPar_AcPlusInac, __FUNCTION__ ); @@ -71,7 +71,7 @@ void Par_PassParticle2Father( const int FaLv, const int FaPID ) // 4. remove particles in all sons -//###NOTE : No OpenMP since RemoveParticle will modify amr->Par->NPar_Lv[] +//###NOTE: No OpenMP since RemoveParticle will modify amr->Par->NPar_Lv[] const bool RemoveAllParticle = true; for (int SonPID=SonPID0; SonPIDpatch[0][SonLv][SonPID]->RemoveParticle( NULL_INT, NULL, diff --git a/src/Particle/Par_PassParticle2Sibling.cpp b/src/Particle/Par_PassParticle2Sibling.cpp index 245406377c..c0abbf987d 100644 --- a/src/Particle/Par_PassParticle2Sibling.cpp +++ b/src/Particle/Par_PassParticle2Sibling.cpp @@ -44,9 +44,9 @@ void Par_PassParticle2Sibling( const int lv, const bool TimingSendPar ) const double BoxEdge[3] = { (NX0_TOT[0]*(1<Par->Attribute may be reallocated +// ParPos should NOT be used after calling Par_LB_ExchangeParticleBetweenPatch() since amr->Par->AttributeFlt may be reallocated real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; int NPar_Remove_Tot=0; int NPar, NGuess, NPar_Remove, ArraySize[26], ijk[3], Side, TSib, SibPID, FaPID, FaSib, FaSibPID; @@ -219,7 +219,7 @@ void Par_PassParticle2Sibling( const int lv, const bool TimingSendPar ) // 3. remove the escaping particles (set amr->Par->NPar_Lv later due to OpenMP) - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; amr->patch[0][lv][PID]->RemoveParticle( NPar_Remove, RemoveParList, NULL, RemoveAllPar_No, PType ); delete [] RemoveParList; @@ -246,7 +246,7 @@ void Par_PassParticle2Sibling( const int lv, const bool TimingSendPar ) // SibPID can be negative for non-periodic BC. if ( SibPID >= 0 && amr->patch[0][lv][SibPID]->NPar_Escp[ MirSib[s] ] > 0 ) { -//###NOTE : No OpenMP since AddParticle will modify amr->Par->NPar_Lv[] +//###NOTE: No OpenMP since AddParticle will modify amr->Par->NPar_Lv[] # ifdef DEBUG_PARTICLE if ( SibPID >= amr->NPatchComma[lv][1] ) Aux_Error( ERROR_INFO, "buffer patch cannot have escaping particles (PID %d, s %d, SibPID %d, NPar_Escp %d) !!\n", @@ -274,7 +274,7 @@ void Par_PassParticle2Sibling( const int lv, const bool TimingSendPar ) } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) -//###NOTE : NO OpenMP since particles from different patches can enter the same father-sibling patch +//###NOTE: NO OpenMP since particles from different patches can enter the same father-sibling patch // 6. pass particles to the father-sibling patches (fine --> coarse) if ( lv > 0 ) for (int PID=0; PIDNPatchComma[lv][1]; PID++) @@ -315,7 +315,7 @@ void Par_PassParticle2Sibling( const int lv, const bool TimingSendPar ) // add particles to the target father->sibling patch (which can be real of buffer patches) -//###NOTE : No OpenMP since AddParticle will modify amr->Par->NPar_Lv[] +//###NOTE: No OpenMP since AddParticle will modify amr->Par->NPar_Lv[] # ifdef DEBUG_PARTICLE char Comment[100]; sprintf( Comment, "%s F->C", __FUNCTION__ ); diff --git a/src/Particle/Par_PassParticle2Son_SinglePatch.cpp b/src/Particle/Par_PassParticle2Son_SinglePatch.cpp index ea34e5d990..8ddb454c8b 100644 --- a/src/Particle/Par_PassParticle2Son_SinglePatch.cpp +++ b/src/Particle/Par_PassParticle2Son_SinglePatch.cpp @@ -57,7 +57,7 @@ void Par_PassParticle2Son_SinglePatch( const int FaLv, const int FaPID ) const int Octant[2][2][2] = { { {0,1},{2,4} }, { {3,6},{5,7} } }; // LocalID of sons at different octants const double *FaCen = amr->patch[0][SonLv][SonPID0+7]->EdgeL; // central coordinates of FaPID const real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; long ParID; int ijk[3], LocalID; @@ -78,7 +78,7 @@ void Par_PassParticle2Son_SinglePatch( const int FaLv, const int FaPID ) { SonPID = SonPID0 + LocalID; -//###NOTE : No OpenMP since AddParticle will modify amr->Par->NPar_Lv[] +//###NOTE: No OpenMP since AddParticle will modify amr->Par->NPar_Lv[] # ifdef DEBUG_PARTICLE amr->patch[0][SonLv][SonPID]->AddParticle( NNewForSon[LocalID], NewListForSon[LocalID], &amr->Par->NPar_Lv[SonLv], PType, ParPos, amr->Par->NPar_AcPlusInac, __FUNCTION__ ); @@ -89,7 +89,7 @@ void Par_PassParticle2Son_SinglePatch( const int FaLv, const int FaPID ) // 4. remove particles in the father patch -//###NOTE : No OpenMP since RemoveParticle will modify amr->Par->NPar_Lv[] +//###NOTE: No OpenMP since RemoveParticle will modify amr->Par->NPar_Lv[] const bool RemoveAllParticle = true; amr->patch[0][FaLv][FaPID]->RemoveParticle( NULL_INT, NULL, &amr->Par->NPar_Lv[FaLv], RemoveAllParticle, PType ); diff --git a/src/Particle/Par_ScatterParticleData.cpp b/src/Particle/Par_ScatterParticleData.cpp index 57e9afaa00..b8ff277889 100644 --- a/src/Particle/Par_ScatterParticleData.cpp +++ b/src/Particle/Par_ScatterParticleData.cpp @@ -11,22 +11,31 @@ // // Note : 1. Typically called by a particle initial condition routine like Par_Init_ByFunction_*() // 2. Do not put this file in "Particle/LoadBalance" since we still need to copy data from -// Data_Send[] to Data_Recv[] in the serial mode +// Data_Send_Flt[]/Data_Send_Int[] to Data_Recv_Flt[]/Data_Recv_Int[] in the serial mode // // Parameter : NPar_ThisRank : Number of particles to be received by this MPI rank // NPar_AllRank : Total number of particles in all MPI ranks -// AttBitIdx : Bitwise indices of the target particle attributes (e.g., _PAR_MASS | _PAR_VELX) -// --> A user-defined attribute with an integer index AttIntIdx returned by -// AddParticleAttribute() can be converted to a bitwise index by BIDX(AttIntIdx) -// Data_Send : Pointer array for all particle attributes to be sent -// --> Dimension = [PAR_NATT_TOTAL][NPar_AllRank] -// --> Target particle attributes are set by "AttBitIdx" -// Data_Recv : Pointer array for all particle attributes to be received +// FltAttBitIdx : Bitwise indices of the target particle floating-point attributes (e.g., _PAR_MASS | _PAR_VELX) +// --> A user-defined attribute with an integer index FltAttIntIdx returned by +// AddParticleAttributeFlt() can be converted to a bitwise index by BIDX(FltAttIntIdx) +// IntAttBitIdx : Bitwise indices of the target particle integer attributes (e.g., _PAR_TYPE) +// --> A user-defined attribute with an integer index IntAttIntIdx returned by +// AddParticleAttributeInt() can be converted to a bitwise index by BIDX(IntAttIntIdx) +// Data_Send_Flt : Pointer array for all particle floating-point attributes to be sent +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_AllRank] +// --> Target particle attributes are set by "FltAttBitIdx" +// Data_Send_Int : Pointer array for all particle integer attributes to be sent +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_AllRank] +// --> Target particle attributes are set by "IntAttBitIdx" +// Data_Recv_Flt : Pointer array for all particle floating-point attributes to be received +// Data_Recv_Int : Pointer array for all particle integer attributes to be received // -// Return : Data_Recv +// Return : Data_Recv_Flt, Data_Recv_Int //------------------------------------------------------------------------------------------------------- -void Par_ScatterParticleData( const long NPar_ThisRank, const long NPar_AllRank, const long AttBitIdx, - real_par *Data_Send[PAR_NATT_TOTAL], real_par *Data_Recv[PAR_NATT_TOTAL] ) +void Par_ScatterParticleData( const long NPar_ThisRank, const long NPar_AllRank, + const long FltAttBitIdx, const long IntAttBitIdx, + real_par *Data_Send_Flt[PAR_NATT_FLT_TOTAL], long_par *Data_Send_Int[PAR_NATT_INT_TOTAL], + real_par *Data_Recv_Flt[PAR_NATT_FLT_TOTAL], long_par *Data_Recv_Int[PAR_NATT_INT_TOTAL] ) { // check integer overflow in MPI @@ -36,25 +45,36 @@ void Par_ScatterParticleData( const long NPar_ThisRank, const long NPar_AllRank, // get the number of particles in each rank and set the corresponding offsets - int NSend[MPI_NRank], SendDisp[MPI_NRank]; + int NSend_Flt[MPI_NRank], SendDisp_Flt[MPI_NRank]; + int NSend_Int[MPI_NRank], SendDisp_Int[MPI_NRank]; int NPar_ThisRank_int = NPar_ThisRank; // (i) convert to "int" and (ii) remove the "const" declaration // --> (ii) is necessary for OpenMPI version < 1.7 - MPI_Gather( &NPar_ThisRank_int, 1, MPI_INT, NSend, 1, MPI_INT, 0, MPI_COMM_WORLD ); + MPI_Gather( &NPar_ThisRank_int, 1, MPI_INT, NSend_Flt, 1, MPI_INT, 0, MPI_COMM_WORLD ); + MPI_Gather( &NPar_ThisRank_int, 1, MPI_INT, NSend_Int, 1, MPI_INT, 0, MPI_COMM_WORLD ); if ( MPI_Rank == 0 ) { - SendDisp[0] = 0; - for (int r=1; rPar->Time; - real_par *ParType = amr->Par->Type; + long_par *ParType = amr->Par->Type; real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; real_par *ParVel[3] = { amr->Par->VelX, amr->Par->VelY, amr->Par->VelZ }; # ifdef STORE_PAR_ACC diff --git a/src/Particle/Par_UpdateParticle.cpp b/src/Particle/Par_UpdateParticle.cpp index 86038e90ec..6715e79c44 100644 --- a/src/Particle/Par_UpdateParticle.cpp +++ b/src/Particle/Par_UpdateParticle.cpp @@ -87,7 +87,7 @@ void Par_UpdateParticle( const int lv, const double TimeNew, const double TimeOl real_par *ParAcc[3] = { amr->Par->AccX, amr->Par->AccY, amr->Par->AccZ }; # endif real_par *ParTime = amr->Par->Time; - const real_par *ParType = amr->Par->Type; + const long_par *ParType = amr->Par->Type; // determine PotSg for STORE_POT_GHOST # ifdef STORE_POT_GHOST diff --git a/src/Particle/Par_UpdateTracerParticle.cpp b/src/Particle/Par_UpdateTracerParticle.cpp index 5a5a828113..75c8595eec 100644 --- a/src/Particle/Par_UpdateTracerParticle.cpp +++ b/src/Particle/Par_UpdateTracerParticle.cpp @@ -52,7 +52,7 @@ void Par_UpdateTracerParticle( const int lv, const double TimeNew, const double real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; real_par *ParVel[3] = { amr->Par->VelX, amr->Par->VelY, amr->Par->VelZ }; real_par *ParTime = amr->Par->Time; - const real_par *ParType = amr->Par->Type; + const long_par *ParType = amr->Par->Type; // get the maximum number of particles in a single patch @@ -104,7 +104,7 @@ void Par_UpdateTracerParticle( const int lv, const double TimeNew, const double if ( !GotYou ) continue; -// 2. prepare the velocity data for the patch group with particles (need NSIDE_26 for ParGhost>0 ) +// 2. prepare the velocity data for the patch group with particles (need NSIDE_26 for ParGhost>0) Prepare_PatchData( lv, TimeNew, VelX, NULL, ParGhost, 1, &PID0, _VELX, _NONE, OPT__FLU_INT_SCHEME, INT_NONE, UNIT_PATCH, NSIDE_26, IntPhase_No, OPT__BC_FLU, BC_POT_NONE, MinDens_No, MinPres_No, MinTemp_No, MinEntr_No, DE_Consistency_No ); diff --git a/src/Refine/Flag_Check.cpp b/src/Refine/Flag_Check.cpp index c3e8c0cb55..bcd9de5419 100644 --- a/src/Refine/Flag_Check.cpp +++ b/src/Refine/Flag_Check.cpp @@ -4,6 +4,14 @@ static bool Check_Gradient( const int i, const int j, const int k, const real In static bool Check_Curl( const int i, const int j, const int k, const real vx[][PS1][PS1], const real vy[][PS1][PS1], const real vz[][PS1][PS1], const double Threshold ); +static bool Check_Angular_Max( const int i, const int j, const int k, const int lv, const int PID, + const double CenX, const double CenY, const double CenZ, + const double AngRes_Max, const double AngRes_Max_R ); +static bool Check_Angular_Min( const int i, const int j, const int k, const int lv, const int PID, + const double CenX, const double CenY, const double CenZ, + const double AngRes_Min ); +static bool Check_Radial( const int i, const int j, const int k, const int lv, const int PID, + const double CenX, const double CenY, const double CenZ, const double Refine_Rad ); @@ -16,24 +24,26 @@ static bool Check_Curl( const int i, const int j, const int k, // 2. For OPT__FLAG_USER, the function pointer "Flag_User_Ptr" must be set by a // test problem initializer // -// Parameter : lv : Target refinement level -// PID : Target patch ID -// i,j,k : Indices of the target cell -// dv : Cell volume at the target level -// Fluid : Input fluid array (with NCOMP_TOTAL components) -// Pot : Input potential array -// MagCC : Input cell-centered B field array -// Vel : Input velocity array -// Pres : Input pressure array -// Lrtz : Input Lorentz factor array -// Lohner_Ave : Input array storing the averages for the Lohner error estimator -// Lohner_Slope : Input array storing the slopes for the Lohner error estimator -// Lohner_NVar : Number of variables stored in Lohner_Ave and Lohner_Slope -// ParCount : Input array storing the number of particles on each cell -// (note that it has the **real** type) -// ParDens : Input array storing the particle mass density on each cell -// JeansCoeff : Pi*GAMMA/(SafetyFactor^2*G), where SafetyFactor = FlagTable_Jeans[lv] -// --> Flag if dh^2 > JeansCoeff*Pres/Dens^2 +// Parameter : lv : Target refinement level +// PID : Target patch ID +// i,j,k : Indices of the target cell +// dv : Cell volume at the target level +// Fluid : Input fluid array (with NCOMP_TOTAL components) +// Pot : Input potential array +// MagCC : Input cell-centered B field array +// Vel : Input velocity array +// Pres : Input pressure array +// Lrtz : Input Lorentz factor array +// Lohner_Ave : Input array storing the averages for the Lohner error estimator +// Lohner_Slope : Input array storing the slopes for the Lohner error estimator +// Lohner_NVar : Number of variables stored in Lohner_Ave and Lohner_Slope +// ParCount : Input array storing the number of particles on each cell +// (note that it has the **real** type) +// ParDens : Input array storing the particle mass density on each cell +// JeansCoeff : Pi*GAMMA/(SafetyFactor^2*G), where SafetyFactor = FlagTable_Jeans[lv] +// --> Flag if dh^2 > JeansCoeff*Pres/Dens^2 +// Interf_Var : Input array storing the density and phase for the interference condition +// Spectral_Cond : Input variable storing the spectral refinement condition // // Return : "true" if any of the refinement criteria is satisfied // "false" if none of the refinement criteria is satisfied @@ -42,11 +52,25 @@ bool Flag_Check( const int lv, const int PID, const int i, const int j, const in const real Fluid[][PS1][PS1][PS1], const real Pot[][PS1][PS1], const real MagCC[][PS1][PS1][PS1], const real Vel[][PS1][PS1][PS1], const real Pres[][PS1][PS1], const real Lrtz[][PS1][PS1], const real *Lohner_Var, const real *Lohner_Ave, const real *Lohner_Slope, const int Lohner_NVar, - const real ParCount[][PS1][PS1], const real ParDens[][PS1][PS1], const real JeansCoeff ) + const real ParCount[][PS1][PS1], const real ParDens[][PS1][PS1], const real JeansCoeff, + const real *Interf_Var, const real Spectral_Cond ) { bool Flag = false; + +// ******************************************************************************************* +// refinement flags must be checked in the following order +// 1. no-refinement criteria --> exclude patches outside the regions allowed for refinement +// 2. OPT__FLAG_INTERFERENCE --> ensure amr->patch[0][lv][PID]->switch_to_wave_flag is set correctly +// 3. refinement criteria +// ******************************************************************************************* + + +// ***************************** +// 1. no-refinement criteria +// ***************************** + // check whether the input cell is within the regions allowed to be refined // =========================================================================================== if ( OPT__FLAG_REGION ) @@ -57,6 +81,43 @@ bool Flag_Check( const int lv, const int PID, const int i, const int j, const in } +// check maximum angular resolution +// =========================================================================================== + if ( OPT__FLAG_ANGULAR ) + { + bool Within = Check_Angular_Max( i, j, k, lv, PID, FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, + FLAG_ANGULAR_CEN_Z, FlagTable_Angular[lv][0], + FlagTable_Angular[lv][2] ); + if ( ! Within ) return false; + } + + + +// ***************************** +// 2. OPT__FLAG_INTERFERENCE +// ***************************** + +// ELBDM interference check must be performed before any other refinement checks in order to set switch_to_wave_flag correctly +// =========================================================================================== +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( OPT__FLAG_INTERFERENCE && !amr->use_wave_flag[lv] ) + { + Flag |= ELBDM_Flag_Interference( i, j, k, Interf_Var, FlagTable_Interference[lv][0], FlagTable_Interference[lv][1], + FlagTable_Interference[lv][2], FlagTable_Interference[lv][3]>0.5 ); + +// switch to wave solver when refining to ELBDM_FIRST_WAVE_LEVEL + if ( Flag && lv+1 >= ELBDM_FIRST_WAVE_LEVEL ) amr->patch[0][lv][PID]->switch_to_wave_flag = true; + + if ( Flag ) return Flag; + } +# endif + + + +// ***************************** +// 3. refinement criteria +// ***************************** + # ifdef PARTICLE // check the number of particles on each cell // =========================================================================================== @@ -173,17 +234,43 @@ bool Flag_Check( const int lv, const int PID, const int i, const int j, const in // check ELBDM energy density // =========================================================================================== # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif if ( OPT__FLAG_ENGY_DENSITY ) { Flag |= ELBDM_Flag_EngyDensity( i, j, k, &Fluid[REAL][0][0][0], &Fluid[IMAG][0][0][0], FlagTable_EngyDensity[lv][0], FlagTable_EngyDensity[lv][1] ); if ( Flag ) return Flag; } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv] ) +# endif +# endif // ELBDM + + +// check ELBDM spectral criterion +// =========================================================================================== +# if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + if ( OPT__FLAG_SPECTRAL ) + { + Flag |= ( Spectral_Cond > FlagTable_Spectral[lv][0] ); + if ( Flag ) return Flag; + } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv] ) # endif +# endif // ELBDM // check Lohner's error estimator // =========================================================================================== +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif if ( Lohner_NVar > 0 ) { // check Lohner only if density is greater than the minimum threshold @@ -194,6 +281,29 @@ bool Flag_Check( const int lv, const int PID, const int i, const int j, const in FlagTable_Lohner[lv][0], FlagTable_Lohner[lv][2], FlagTable_Lohner[lv][3] ); if ( Flag ) return Flag; } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv] ) +# endif + + +// check minimum angular resolution +// =========================================================================================== + if ( OPT__FLAG_ANGULAR ) + { + Flag |= Check_Angular_Min( i, j, k, lv, PID, FLAG_ANGULAR_CEN_X, FLAG_ANGULAR_CEN_Y, + FLAG_ANGULAR_CEN_Z, FlagTable_Angular[lv][1] ); + if ( Flag ) return Flag; + } + + +// check radial resolution +// =========================================================================================== + if ( OPT__FLAG_RADIAL ) + { + Flag |= Check_Radial( i, j, k, lv, PID, FLAG_RADIAL_CEN_X, FLAG_RADIAL_CEN_Y, + FLAG_RADIAL_CEN_Z, FlagTable_Radial[lv] ); + if ( Flag ) return Flag; + } // check user-defined criteria @@ -338,3 +448,125 @@ bool Check_Curl( const int i, const int j, const int k, return Flag; } // FUNCTION : Check_Curl + + + +//------------------------------------------------------------------------------------------------------- +// Function : Check_Angular_Max +// Description : Check if dh/R at cell (i,j,k) is smaller than the maximum angular resolution +// +// Note : 1. Enabled by the runtime option "OPT__FLAG_ANGULAR" +// +// Parameter : i,j,k : Target cell indices in the patch amr->patch[0][lv][PID] +// lv : Refinement level of the target patch +// PID : ID of the target patch +// CenX/Y/Z : x/y/z-coordinate of the center for calculating angular resolution +// AngRes_Max : Maximum allowed angular resolution (in radians) +// AngRes_Max_R : Minimum radius to apply AngRes_Max +// +// Return : "true/false" if the input cell "is/is not" within the region allowed for refinement +//------------------------------------------------------------------------------------------------------- +bool Check_Angular_Max( const int i, const int j, const int k, const int lv, const int PID, + const double CenX, const double CenY, const double CenZ, + const double AngRes_Max, const double AngRes_Max_R ) +{ + +// check +# ifdef GAMER_DEBUG + if ( i < 0 || i >= PS1 || j < 0 || j >= PS1 || k < 0 || k >= PS1 ) + Aux_Error( ERROR_INFO, "incorrect index (i,j,k) = (%d,%d,%d) !!\n", i, j, k ); +# endif + + const double dh = amr->dh[lv]; // cell size + const double Pos[3] = { amr->patch[0][lv][PID]->EdgeL[0] + (i+0.5)*dh, // x,y,z position + amr->patch[0][lv][PID]->EdgeL[1] + (j+0.5)*dh, + amr->patch[0][lv][PID]->EdgeL[2] + (k+0.5)*dh }; + const double dR [3] = { Pos[0]-CenX, Pos[1]-CenY, Pos[2]-CenZ }; + const double R = sqrt( SQR(dR[0]) + SQR(dR[1]) + SQR(dR[2]) ); + + return ( AngRes_Max < 0.0 || 2.0 * R * AngRes_Max <= dh || R <= AngRes_Max_R ); + +} // FUNCTION : Check_Angular_Max + + + +//------------------------------------------------------------------------------------------------------- +// Function : Check_Angular_Min +// Description : Check if dh/R at cell (i,j,k) is larger than the minimum angular resolution +// +// Note : 1. Enabled by the runtime option "OPT__FLAG_ANGULAR" +// +// Parameter : i,j,k : Target cell indices in the patch amr->patch[0][lv][PID] +// lv : Refinement level of the target patch +// PID : ID of the target patch +// CenX/Y/Z : x/y/z-coordinate of the center for calculating angular resolution +// AngRes_Min : Minimum allowed angular resolution (in radians) +// +// Return : "true" if the minimum angular resolution is not reached +// "false" if the minimum angular resolution is reached +//------------------------------------------------------------------------------------------------------- +bool Check_Angular_Min( const int i, const int j, const int k, const int lv, const int PID, + const double CenX, const double CenY, const double CenZ, + const double AngRes_Min ) +{ + +// check +# ifdef GAMER_DEBUG + if ( i < 0 || i >= PS1 || j < 0 || j >= PS1 || k < 0 || k >= PS1 ) + Aux_Error( ERROR_INFO, "incorrect index (i,j,k) = (%d,%d,%d) !!\n", i, j, k ); +# endif + + const double dh = amr->dh[lv]; // cell size + const double Pos[3] = { amr->patch[0][lv][PID]->EdgeL[0] + (i+0.5)*dh, // x,y,z position + amr->patch[0][lv][PID]->EdgeL[1] + (j+0.5)*dh, + amr->patch[0][lv][PID]->EdgeL[2] + (k+0.5)*dh }; + const double dR [3] = { Pos[0]-CenX, Pos[1]-CenY, Pos[2]-CenZ }; + const double R = sqrt( SQR(dR[0]) + SQR(dR[1]) + SQR(dR[2]) ); + + return ( AngRes_Min >= 0.0 && R * AngRes_Min < dh ); + +} // FUNCTION : Check_Angular_Min + + + +//------------------------------------------------------------------------------------------------------- +// Function : Check_Radial +// Description : Check if the cell is within the given radius +// +// Note : 1. Enabled by the runtime option "OPT__FLAG_RADIAL" +// +// Parameter : i,j,k : Target cell indices in the patch amr->patch[0][lv][PID] +// lv : Refinement level of the target patch +// PID : ID of the target patch +// CenX/Y/Z : x/y/z-coordinate of the center for calculating radial resolution +// Refine_Rad : Radius at level lv within which grids are refined +// +// Return : "true" if r < Refine_Rad +// "false" if r >= Refine_Rad or Refine_Rad is not set +//------------------------------------------------------------------------------------------------------- +bool Check_Radial( const int i, const int j, const int k, const int lv, const int PID, + const double CenX, const double CenY, const double CenZ, const double Refine_Rad ) +{ + +// check +# ifdef GAMER_DEBUG + if ( i < 0 || i >= PS1 || j < 0 || j >= PS1 || k < 0 || k >= PS1 ) + Aux_Error( ERROR_INFO, "incorrect index (i,j,k) = (%d,%d,%d) !!\n", i, j, k ); +# endif + + const double dh = amr->dh[lv]; // cell size + const double Pos[3] = { amr->patch[0][lv][PID]->EdgeL[0] + (i+0.5)*dh, // x,y,z position + amr->patch[0][lv][PID]->EdgeL[1] + (j+0.5)*dh, + amr->patch[0][lv][PID]->EdgeL[2] + (k+0.5)*dh }; + const double dR [3] = { Pos[0]-CenX, Pos[1]-CenY, Pos[2]-CenZ }; + const double R = sqrt( SQR(dR[0]) + SQR(dR[1]) + SQR(dR[2]) ); + +// do not refine if the target radius is not set + if ( Refine_Rad < 0.0 ) return false; + +// refine the region within r < Refine_Rad and the innermost cells + if ( R < dh || R < Refine_Rad ) return true; + + return false; + +} // FUNCTION : Check_Radial diff --git a/src/Refine/Flag_Lohner.cpp b/src/Refine/Flag_Lohner.cpp index 9a61b532bf..415068e4bf 100644 --- a/src/Refine/Flag_Lohner.cpp +++ b/src/Refine/Flag_Lohner.cpp @@ -31,13 +31,17 @@ bool Flag_Lohner( const int i, const int j, const int k, const OptLohnerForm_t F const real *Slope1D, const int NVar, const double Threshold, const double Filter, const double Soften ) { +// return if there is no target variable (e.g., for fluid levels in ELBDM hybrid scheme) + if ( NVar == 0 ) return false; + + // check # ifdef GAMER_DEBUG if ( i < 0 || i >= PS1 || j < 0 || j >= PS1 || k < 0 || k >= PS1 ) Aux_Error( ERROR_INFO, "incorrect index (i,j,k) = (%d,%d,%d) !!\n", i, j, k ); -# if ( MODEL == ELBDM ) - if ( NVar != 2 ) Aux_Error( ERROR_INFO, "NVar (%d) != 2 in ELBDM !!\n", NVar ); +# if ( ELBDM_SCHEME == ELBDM_WAVE ) + if ( NVar != 2 ) Aux_Error( ERROR_INFO, "NVar (%d) != 2 when ELBDM_SCHEME == ELBDM_WAVE !!\n", NVar ); # endif # endif // #ifdef GAMER_DEBUG diff --git a/src/Refine/Flag_Real.cpp b/src/Refine/Flag_Real.cpp index 727d3ebc69..ec721d8492 100644 --- a/src/Refine/Flag_Real.cpp +++ b/src/Refine/Flag_Real.cpp @@ -3,6 +3,10 @@ void Flag_Grandson( const int lv, const int PID, const int LocalID ); void Prepare_for_Lohner( const OptLohnerForm_t Form, const real *Var1D, real *Ave1D, real *Slope1D, const int NVar ); +#if ( MODEL == ELBDM ) +void Prepare_for_Spectral_Criterion( const real *Var1D, real& Cond1D ); +#endif + @@ -30,31 +34,49 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) if ( lv == NLEVEL-1 ) Aux_Error( ERROR_INFO, "function <%s> should NOT be applied to the finest level\" !!\n", __FUNCTION__ ); +// user-specified operations before flagging + if ( Flag_UserWorkBeforeFlag_Ptr != NULL ) Flag_UserWorkBeforeFlag_Ptr( Time[lv], lv ); + // initialize all flags as false # pragma omp parallel for schedule( static ) for (int PID=0; PIDnum[lv]; PID++) amr->patch[0][lv][PID]->flag = false; - const int SibID_Array[3][3][3] = { { {18, 10, 19}, {14, 4, 16}, {20, 11, 21} }, - { { 6, 2, 7}, { 0, 999, 1}, { 8, 3, 9} }, - { {22, 12, 23}, {15, 5, 17}, {24, 13, 25} } }; // sibling indices - const int FlagBuf = ( lv == MAX_LEVEL-1 ) ? FLAG_BUFFER_SIZE_MAXM1_LV : - ( lv == MAX_LEVEL-2 ) ? FLAG_BUFFER_SIZE_MAXM2_LV : - FLAG_BUFFER_SIZE; - const real dv = CUBE( amr->dh[lv] ); - const bool IntPhase_No = false; // for invoking Prepare_PatchData() - const bool DE_Consistency_No = false; // for invoking Prepare_PatchData() - const int NPG = 1; // for invoking Prepare_PatchData() - const int Lohner_NGhost = 2; // number of ghost cells for the Lohner error estimator - const int Lohner_NCell = PS1 + 2*Lohner_NGhost; // size of the variable array for Lohner - const int Lohner_NAve = Lohner_NCell - 2; // size of the average array for Lohner - const int Lohner_NSlope = Lohner_NAve; // size of the slope array for Lohner - const IntScheme_t Lohner_IntScheme = INT_MINMOD1D; // interpolation scheme for Lohner + const int SibID_Array[3][3][3] = { { {18, 10, 19}, {14, 4, 16}, {20, 11, 21} }, + { { 6, 2, 7}, { 0, 999, 1}, { 8, 3, 9} }, + { {22, 12, 23}, {15, 5, 17}, {24, 13, 25} } }; // sibling indices + const int FlagBuf = ( lv == MAX_LEVEL-1 ) ? FLAG_BUFFER_SIZE_MAXM1_LV : + ( lv == MAX_LEVEL-2 ) ? FLAG_BUFFER_SIZE_MAXM2_LV : + FLAG_BUFFER_SIZE; + const real dv = CUBE( amr->dh[lv] ); + const bool IntPhase_No = false; // for invoking Prepare_PatchData() + const bool DE_Consistency_No = false; // for invoking Prepare_PatchData() + const int NPG = 1; // for invoking Prepare_PatchData() + +// Lohner criterion + const int Lohner_NGhost = 2; // number of ghost cells for the Lohner error estimator + const int Lohner_NCell = PS1 + 2*Lohner_NGhost; // size of the variable array for Lohner + const int Lohner_NAve = Lohner_NCell - 2; // size of the average array for Lohner + const int Lohner_NSlope = Lohner_NAve; // size of the slope array for Lohner + const IntScheme_t Lohner_IntScheme = INT_MINMOD1D; // interpolation scheme for Lohner + +# if ( MODEL == ELBDM ) +// interference criterion +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + const int Interf_NGhost = 1; // number of ghost cells for the interference criterion + const int Interf_NCell = PS1 + 2*Interf_NGhost; // size of the input array + const IntScheme_t Interf_IntScheme = INT_CQUAD; // interpolation scheme +# endif + +// spectral refinement criterion + const int Spectral_NGhost = 1; // number of ghost cells for the spectral refinement criterion + const int Spectral_NCell = PS2 + 2*Spectral_NGhost; // size of the input array + const IntScheme_t Spectral_IntScheme = INT_CQUAD; // interpolation scheme +# endif // # if ( MODEL == ELBDM ) + # if ( MODEL == HYDRO && defined GRAVITY ) - const real JeansCoeff = M_PI*GAMMA/( SQR(FlagTable_Jeans[lv])*NEWTON_G ); // flag if dh^2 > JeansCoeff*Pres/Dens^2 -# else - const real JeansCoeff = NULL_REAL; + const real JeansCoeff_Factor = M_PI/( SQR(FlagTable_Jeans[lv])*NEWTON_G ); // flag if dh^2 > JeansCoeff_Factor*Gamma*Pres/Dens^2 # endif # ifndef GRAVITY const OptPotBC_t OPT__BC_POT = BC_POT_NONE; @@ -78,9 +100,11 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) const int NoRefineBoundaryRegion = ( OPT__NO_FLAG_NEAR_BOUNDARY ) ? PS1*( 1<<(NLEVEL-lv) )*( (1<use_wave_flag[lv] ) { + Lohner_NVar = 2; + Lohner_TVar = _REAL | _IMAG; +// do not use Lohner criterion on fluid levels + } else { + Lohner_NVar = 0; + } + } + + if ( OPT__FLAG_SPECTRAL ) + { +// use spectral criterion on wave levels + if ( amr->use_wave_flag[lv] ) { + Spectral_NVar = 2; +// do not use spectral criterion on fluid levels + } else { + Spectral_NVar = 0; + } + } + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( OPT__FLAG_INTERFERENCE ) + { +// use interference criterion on fluid levels + if ( !amr->use_wave_flag[lv] ) { + Interf_NVar = 2; +// do not use interference criterion on wave levels + } else { + Interf_NVar = 0; + } + Interf_Stride = Interf_NVar*CUBE(Interf_NCell); // stride of array for one interference criterion patch } +# endif // # if ( ELBDM_SCHEME == ELBDM_HYBRID ) # else # error : unsupported MODEL !! # endif // MODEL - Lohner_Stride = Lohner_NVar*Lohner_NCell*Lohner_NCell*Lohner_NCell; // stride of array for one patch + Lohner_Stride = Lohner_NVar*Lohner_NCell*Lohner_NCell*Lohner_NCell; // stride of array for one Lohner patch // collect particles to **real** patches at lv # ifdef PARTICLE if ( OPT__FLAG_NPAR_CELL || OPT__FLAG_PAR_MASS_CELL ) - Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ|_PAR_TYPE, PredictPos_No, + Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ, _PAR_TYPE, PredictPos_No, NULL_REAL, SibBufPatch_No, FaSibBufPatch_No, JustCountNPar_No, TimingSendPar_No ); // Par_CollectParticle2OneLevel() with JustCountNPar_No will set NPar_Copy for each patch as well // --> so call Par_CollectParticle2OneLevel() with JustCountNPar_Yes only when OPT__FLAG_NPAR_CELL == false else if ( OPT__FLAG_NPAR_PATCH != 0 ) - Par_CollectParticle2OneLevel( lv, _NONE, PredictPos_No, + Par_CollectParticle2OneLevel( lv, _NONE, _NONE, PredictPos_No, NULL_REAL, SibBufPatch_No, FaSibBufPatch_No, JustCountNPar_Yes, TimingSendPar_No ); # endif @@ -131,21 +186,27 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) real (*MagCC)[PS1][PS1][PS1] = NULL; real (*Vel)[PS1][PS1][PS1] = NULL; real (*Pres)[PS1][PS1] = NULL; + real (*Cs2)[PS1][PS1] = NULL; real (*Lrtz)[PS1][PS1] = NULL; real (*ParCount)[PS1][PS1] = NULL; // declare as **real** to be consistent with Par_MassAssignment() real (*ParDens )[PS1][PS1] = NULL; - real (*Lohner_Var) = NULL; // array storing the variables for Lohner - real (*Lohner_Ave) = NULL; // array storing the averages of Lohner_Var for Lohner - real (*Lohner_Slope) = NULL; // array storing the slopes of Lohner_Var for Lohner + real *Lohner_Var = NULL; // array storing the variables for Lohner + real *Lohner_Ave = NULL; // array storing the averages of Lohner_Var for Lohner + real *Lohner_Slope = NULL; // array storing the slopes of Lohner_Var for Lohner + real *Interf_Var = NULL; // array storing the density and phase for the interference criterion + real *Spectral_Var = NULL; // array storing a patch group of real and imaginary parts for the spectral criterion + real Spectral_Cond = 0.0; // variable storing the magnitude of the largest coefficient for the spectral criterion int i_start, i_end, j_start, j_end, k_start, k_end, SibID, SibPID, PID; bool ProperNesting, NextPatch; # if ( MODEL == HYDRO ) bool NeedPres = false; + bool NeedCs2 = false; if ( OPT__FLAG_PRES_GRADIENT ) NeedPres = true; # ifdef GRAVITY if ( OPT__FLAG_JEANS ) NeedPres = true; + if ( OPT__FLAG_JEANS ) NeedCs2 = true; # endif # ifdef MHD @@ -156,6 +217,7 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) # endif if ( OPT__FLAG_VORTICITY ) Vel = new real [3][PS1][PS1][PS1]; if ( NeedPres ) Pres = new real [PS1][PS1][PS1]; + if ( NeedCs2 ) Cs2 = new real [PS1][PS1][PS1]; # endif // HYDRO # ifdef PARTICLE @@ -163,11 +225,21 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) if ( OPT__FLAG_PAR_MASS_CELL ) ParDens = new real [PS1][PS1][PS1]; # endif +# if ( MODEL == ELBDM ) + if ( Spectral_NVar > 0 ) + Spectral_Var = new real [ Spectral_NVar*CUBE(Spectral_NCell) ]; // prepare one patch group +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( Interf_NVar > 0 ) + Interf_Var = new real [ 8*Interf_NVar*CUBE(Interf_NCell) ]; // 8: number of local patches +# endif + if ( Lohner_NVar > 0 ) { - Lohner_Var = new real [ 8*Lohner_NVar*Lohner_NCell *Lohner_NCell *Lohner_NCell ]; // 8: number of local patches - Lohner_Ave = new real [ 3*Lohner_NVar*Lohner_NAve *Lohner_NAve *Lohner_NAve ]; // 3: X/Y/Z of 1 patch - Lohner_Slope = new real [ 3*Lohner_NVar*Lohner_NSlope*Lohner_NSlope*Lohner_NSlope ]; // 3: X/Y/Z of 1 patch + Lohner_Var = new real [ 8*Lohner_NVar*CUBE(Lohner_NCell) ]; // 8: number of local patches + Lohner_Ave = new real [ 3*Lohner_NVar*CUBE(Lohner_NAve) ]; // 3: X/Y/Z of 1 patch + Lohner_Slope = new real [ 3*Lohner_NVar*CUBE(Lohner_NSlope) ]; // 3: X/Y/Z of 1 patch } @@ -182,6 +254,25 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) Lohner_IntScheme, INT_NONE, UNIT_PATCH, NSIDE_26, IntPhase_No, OPT__BC_FLU, OPT__BC_POT, MinDens, MinPres, MinTemp, MinEntr, DE_Consistency_No ); +// prepare the ghost-zone data for interference criterion +# if ( MODEL == ELBDM ) + if ( Spectral_NVar > 0 ) + { + Prepare_PatchData( lv, Time[lv], Spectral_Var, NULL, Spectral_NGhost, NPG, &PID0, _REAL|_IMAG, _NONE, + Spectral_IntScheme, INT_NONE, UNIT_PATCHGROUP, NSIDE_26, IntPhase_No, OPT__BC_FLU, OPT__BC_POT, + MinDens, MinPres, MinTemp, MinEntr, DE_Consistency_No ); + +// evaluate the spectral refinement criterion + Prepare_for_Spectral_Criterion( Spectral_Var, Spectral_Cond ); + } +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( Interf_NVar > 0 ) + Prepare_PatchData( lv, Time[lv], Interf_Var, NULL, Interf_NGhost, NPG, &PID0, _DENS|_PHAS, _NONE, + Interf_IntScheme, INT_NONE, UNIT_PATCH, NSIDE_26, IntPhase_No, OPT__BC_FLU, OPT__BC_POT, + MinDens, MinPres, MinTemp, MinEntr, DE_Consistency_No ); +# endif // loop over all local patches within the same patch group for (int LocalID=0; LocalID<8; LocalID++) @@ -310,6 +401,24 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) } // k,j,i } // if ( NeedPres ) +// evaluate sound speed squared + if ( NeedCs2 ) + { + for (int k=0; k 0 ) + real Passive[NCOMP_PASSIVE]; + for (int v=0; vpatch[0][lv][PID]->son == -1 ) @@ -367,6 +477,7 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) ParList = amr->patch[0][lv][PID]->ParList; UseInputMassPos = false; InputMassPos = NULL; + InputType = NULL; # ifdef DEBUG_PARTICLE if ( amr->patch[0][lv][PID]->NPar_Copy != -1 ) @@ -381,11 +492,13 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) # ifdef LOAD_BALANCE ParList = NULL; UseInputMassPos = true; - InputMassPos = amr->patch[0][lv][PID]->ParAtt_Copy; + InputMassPos = amr->patch[0][lv][PID]->ParAttFlt_Copy; + InputType = amr->patch[0][lv][PID]->ParAttInt_Copy; # else ParList = amr->patch[0][lv][PID]->ParList_Copy; UseInputMassPos = false; InputMassPos = NULL; + InputType = NULL; # endif # ifdef DEBUG_PARTICLE @@ -405,10 +518,12 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) if ( UseInputMassPos ) { if ( InputMassPos[PAR_MASS] == NULL || InputMassPos[PAR_POSX] == NULL || - InputMassPos[PAR_POSY] == NULL || InputMassPos[PAR_POSZ] == NULL || - InputMassPos[PAR_TYPE] == NULL ) + InputMassPos[PAR_POSY] == NULL || InputMassPos[PAR_POSZ] == NULL ) Aux_Error( ERROR_INFO, "InputMassPos[0/1/2/3] == NULL for NPar (%d) > 0 (lv %d, PID %d) !!\n", NParThisPatch, lv, PID ); + if ( InputType[PAR_TYPE] == NULL ) + Aux_Error( ERROR_INFO, "InputType[0] == NULL for NPar (%d) > 0 (lv %d, PID %d) !!\n", + NParThisPatch, lv, PID ); } else if ( ParList == NULL ) @@ -426,13 +541,13 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) Par_MassAssignment( ParList, NParThisPatch, PAR_INTERP_NGP, ParCount[0][0], PS1, amr->patch[0][lv][PID]->EdgeL, amr->dh[lv], PredictPos_No, NULL_REAL, InitZero_Yes, Periodic_No, NULL, UnitDens_Yes, CheckFarAway_No, - UseInputMassPos, InputMassPos ); + UseInputMassPos, InputMassPos, InputType ); if ( OPT__FLAG_PAR_MASS_CELL ) Par_MassAssignment( ParList, NParThisPatch, PAR_INTERP_NGP, ParDens [0][0], PS1, amr->patch[0][lv][PID]->EdgeL, amr->dh[lv], PredictPos_No, NULL_REAL, InitZero_Yes, Periodic_No, NULL, UnitDens_No, CheckFarAway_No, - UseInputMassPos, InputMassPos ); + UseInputMassPos, InputMassPos, InputType ); } // if ( OPT__FLAG_NPAR_CELL || OPT__FLAG_PAR_MASS_CELL ) # endif // #ifdef PARTICLE @@ -450,10 +565,19 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) i_start = ( i - FlagBuf < 0 ) ? 0 : 1; i_end = ( i + FlagBuf >= PS1 ) ? 2 : 1; +// retrieve the adiabatic index for Jeans length refinement criterion +# if ( MODEL == HYDRO && defined GRAVITY ) + const real JeansCoeff = ( OPT__FLAG_JEANS ) + ? JeansCoeff_Factor * Cs2[k][j][i] * Fluid[DENS][k][j][i] / Pres[k][j][i] + : NULL_REAL; +# else + const real JeansCoeff = NULL_REAL; +# endif + // check if the target cell satisfies the refinement criteria (useless pointers are always == NULL) if ( lv < MAX_LEVEL && Flag_Check( lv, PID, i, j, k, dv, Fluid, Pot, MagCC, Vel, Pres, Lrtz, Lohner_Var+LocalID*Lohner_Stride, Lohner_Ave, Lohner_Slope, Lohner_NVar, - ParCount, ParDens, JeansCoeff ) ) + ParCount, ParDens, JeansCoeff, Interf_Var+LocalID*Interf_Stride, Spectral_Cond ) ) { // flag itself amr->patch[0][lv][PID]->flag = true; @@ -480,10 +604,16 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) // note that we can have SibPID <= SIB_OFFSET_NONPERIODIC when OPT__NO_FLAG_NEAR_BOUNDARY == false if ( SibPID >= 0 ) amr->patch[0][lv][SibPID]->flag = true; - } - } -// for FlagBuf == PATCH_SIZE, once a cell is flagged, all 26 siblings will be flagged +// switch_to_wave_flag should be consistent with the flag buffer +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->patch[0][lv][PID]->switch_to_wave_flag && SibPID >= 0 ) + amr->patch[0][lv][SibPID]->switch_to_wave_flag = true; +# endif + } // if ( SibID != 999 ) + } // ii,jj,kk + +// for FlagBuf == PS1, once a cell is flagged, all 26 siblings will be flagged if ( FlagBuf == PS1 ) NextPatch = true; } // check flag @@ -575,12 +705,15 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) delete [] MagCC; delete [] Vel; delete [] Pres; + delete [] Cs2; delete [] Lrtz; delete [] ParCount; delete [] ParDens; delete [] Lohner_Var; delete [] Lohner_Ave; delete [] Lohner_Slope; + delete [] Interf_Var; + delete [] Spectral_Var; } // OpenMP parallel region @@ -603,6 +736,12 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) if ( amr->patch[0][lv][PID]->sibling[sib] == -1 ) { amr->patch[0][lv][PID]->flag = false; + +// enforce proper-nesting constraint for use_wave_flag +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + amr->patch[0][lv][PID]->switch_to_wave_flag = false; +# endif + break; } } @@ -619,6 +758,11 @@ void Flag_Real( const int lv, const UseLBFunc_t UseLBFunc ) CornerR >= amr->BoxScale[d] - NoRefineBoundaryRegion ) { amr->patch[0][lv][PID]->flag = false; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + amr->patch[0][lv][PID]->switch_to_wave_flag = false; +# endif + break; } } diff --git a/src/Refine/Flag_Region.cpp b/src/Refine/Flag_Region.cpp index 331136779e..ea52366815 100644 --- a/src/Refine/Flag_Region.cpp +++ b/src/Refine/Flag_Region.cpp @@ -18,9 +18,9 @@ bool (*Flag_Region_Ptr)( const int i, const int j, const int k, const int lv, co // which must be set by a test problem initializer // 2. Enabled by the runtime option "OPT__FLAG_REGION" // -// Parameter : i,j,k : Indices of the target element in the patch ptr[0][lv][PID] -// lv : Refinement level of the target patch -// PID : ID of the target patch +// Parameter : i,j,k : Target cell indices in the patch amr->patch[0][lv][PID] +// lv : Refinement level of the target patch +// PID : ID of the target patch // // Return : "true/false" if the input cell "is/is not" within the region allowed for refinement //------------------------------------------------------------------------------------------------------- diff --git a/src/Refine/Flag_UserWorkBeforeFlag.cpp b/src/Refine/Flag_UserWorkBeforeFlag.cpp new file mode 100644 index 0000000000..8f3f527180 --- /dev/null +++ b/src/Refine/Flag_UserWorkBeforeFlag.cpp @@ -0,0 +1,26 @@ +#include "GAMER.h" + +// declare as static so that other functions cannot invoke it directly and must use the function pointer +static void Flag_UserWorkBeforeFlag_Template( const double Time, const int lv ); + +// to enable this feature, set this function pointer by a test problem initializer +void (*Flag_UserWorkBeforeFlag_Ptr)( const double Time, const int lv ) = NULL; + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Flag_UserWorkBeforeFlag_Template +// Description : Template of user-specified work before flagging cells for refinement +// +// Note : 1. Invoked by Flag_Real() using the function pointer "Flag_UserWorkBeforeFlag_Ptr" +// +// Parameter : Time : Target physical time +// lv : Target refinement level +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Flag_UserWorkBeforeFlag_Template( const double Time, const int lv ) +{ + +} // FUNCTION : Flag_UserWorkBeforeFlag_Template diff --git a/src/Refine/Refine.cpp b/src/Refine/Refine.cpp index 889885d112..61cb25295f 100644 --- a/src/Refine/Refine.cpp +++ b/src/Refine/Refine.cpp @@ -143,6 +143,24 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) # endif // #ifdef MHD +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +// for hybrid scheme, consider the following cases: +// +// A: lv & lv+1 both use wave scheme or lv & lv+1 both use phase scheme and switch_to_wave_flag = false +// 1. no modification +// +// B: lv & lv+1 both use phase scheme & switch_to_wave_flag on lv: +// 1. switch to wave scheme on level lv+1 +// 2. no modification for interpolation +// 3. convert DENS/PHAS to IM/RE after refinement for all patches on levels greater than lv +// +// C: lv uses phase scheme & lv+1 uses wave scheme +// 1. convert refined patch to IM/RE after interpolation + + bool SwitchFinerLevelsToWaveScheme = false; +# endif + + // determine the priority of different boundary faces (z>y>x) to set the corner cells properly for the non-periodic B.C. const int NDer = 0; const long *DerVarList = NULL; @@ -252,6 +270,10 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) JustRefined[PID] = true; # endif +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + SwitchFinerLevelsToWaveScheme = ( !amr->use_wave_flag[lv+1] && Pedigree->switch_to_wave_flag ); +# endif + // (c1.3) assign data to child patches by spatial interpolation // (c1.3.1) fill up the central region of CData @@ -687,8 +709,16 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) Monotonicity[v] = Monotonicity_Yes; # elif ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif if ( v != REAL && v != IMAG ) Monotonicity[v] = Monotonicity_Yes; else Monotonicity[v] = Monotonicity_No; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { // if ( amr->use_wave_flag[lv] ) + if ( v != PHAS ) Monotonicity[v] = Monotonicity_Yes; + } // if ( amr->use_wave_flag[lv] ) ... else ... +# endif # else # error : DO YOU WANT TO ENSURE THE POSITIVITY OF INTERPOLATION IN THIS NEW MODEL ?? @@ -710,6 +740,10 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) // (c1.3.4.2-2) fluid # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + if ( OPT__INT_PHASE ) { // get the wrapped phase (store in the REAL component) @@ -722,6 +756,16 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) Flu_CData[REAL][k][j][i] = SATAN2( Flu_CData[IMAG][k][j][i], Flu_CData[REAL][k][j][i] ); # endif + if ( OPT__REF_FLU_INT_SCHEME == INT_SPECTRAL ) { +// spectral interpolation currently does not respect monotonicity + const bool Monotonicity_Spec[2] = { true, false }; + +// interpolate density & phase +// INT_SPECTRAL with PhaseUnwrapping_Yes assumes that the density and phase fields are stored consecutively in memory + Interpolate( &Flu_CData[DENS][0][0][0], CSize_Flu3, CStart_Flu, CRange_CC, &Flu_FData[DENS][0][0][0], + FSize_CC3, FStart_CC, 2, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_Yes, Monotonicity_Spec, + IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } else { // interpolate density Interpolate( &Flu_CData[DENS][0][0][0], CSize_Flu3, CStart_Flu, CRange_CC, &Flu_FData[DENS][0][0][0], FSize_CC3, FStart_CC, 1, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_No, &Monotonicity_Yes, @@ -731,6 +775,7 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) Interpolate( &Flu_CData[REAL][0][0][0], CSize_Flu3, CStart_Flu, CRange_CC, &Flu_FData[REAL][0][0][0], FSize_CC3, FStart_CC, 1, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_Yes, &Monotonicity_No, IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } } else // if ( OPT__INT_PHASE ) @@ -763,7 +808,21 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) Flu_FData[REAL][k][j][i] = Amp*COS( Phase ); Flu_FData[IMAG][k][j][i] = Amp*SIN( Phase ); } - } + } // if ( OPT__INT_PHASE ) + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { // if ( amr->use_wave_flag[lv] ) + +// interpolate density + Interpolate( &Flu_CData[DENS][0][0][0], CSize_Flu3, CStart_Flu, CRange_CC, &Flu_FData[DENS][0][0][0], + FSize_CC3, FStart_CC, 1, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_No, &Monotonicity_Yes, + IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); +// interpolate phase + Interpolate( &Flu_CData[PHAS][0][0][0], CSize_Flu3, CStart_Flu, CRange_CC, &Flu_FData[PHAS][0][0][0], + FSize_CC3, FStart_CC, 1, OPT__REF_FLU_INT_SCHEME, PhaseUnwrapping_No, &Monotonicity_No, + IntOppSign0thOrder_No, ALL_CONS_NO, INT_PRIM_NO, INT_FIX_MONO_COEFF, NULL, NULL ); + } // if ( amr->use_wave_flag[lv] ) ... else ... +# endif # else // #if ( MODEL == ELBDM ) @@ -804,7 +863,26 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) # endif -// (c1.3.4.3) check minimum density and pressure/internal energy +// (c1.3.4.3) convert density/phase to real and imaginary parts if patches were refined from phase to wave level +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( Pedigree->flag && !amr->use_wave_flag[lv] && amr->use_wave_flag[lv+1] ) + { + real Amp, Phase, Re, Im; + + for (int k=0; k note that it's unnecessary to check negative passive scalars thanks to the monotonic interpolation // --> but we do renormalize passive scalars here # if ( MODEL == HYDRO || MODEL == ELBDM ) @@ -817,8 +895,11 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) if ( DensOld < MIN_DENS ) { -// rescale wave function (unnecessary if OPT__INT_PHASE if off, in which case we will rescale all wave functions later) +// rescale wave function (unnecessary if OPT__INT_PHASE is off, in which case we will rescale all wave functions later) # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv+1] ) { +# endif if ( OPT__INT_PHASE ) { const real Rescale = SQRT( (real)MIN_DENS / DensOld ); @@ -826,7 +907,10 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) Flu_FData[REAL][k][j][i] *= Rescale; Flu_FData[IMAG][k][j][i] *= Rescale; } +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv+1] ) # endif +# endif // #if ( MODEL == ELBDM ) // apply minimum density Flu_FData[DENS][k][j][i] = MIN_DENS; @@ -932,31 +1016,39 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) // rescale real and imaginary parts to get the correct density in ELBDM if OPT__INT_PHASE is off # if ( MODEL == ELBDM ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv+1] ) { +# endif real Real, Imag, Rho_Wrong, Rho_Corr, Rescale; if ( !OPT__INT_PHASE ) - for (int k=0; kpatch[FFluSg][lv+1][SonPID]->fluid[REAL][k][j][i]; - Imag = amr->patch[FFluSg][lv+1][SonPID]->fluid[IMAG][k][j][i]; - Rho_Wrong = Real*Real + Imag*Imag; - Rho_Corr = amr->patch[FFluSg][lv+1][SonPID]->fluid[DENS][k][j][i]; - -// be careful about the negative density introduced from the round-off errors - if ( Rho_Wrong <= (real)0.0 || Rho_Corr <= (real)0.0 ) + for (int k=0; kpatch[FFluSg][lv+1][SonPID]->fluid[DENS][k][j][i] = (real)0.0; - Rescale = (real)0.0; - } - else - Rescale = SQRT( Rho_Corr/Rho_Wrong ); + Real = amr->patch[FFluSg][lv+1][SonPID]->fluid[REAL][k][j][i]; + Imag = amr->patch[FFluSg][lv+1][SonPID]->fluid[IMAG][k][j][i]; + Rho_Wrong = Real*Real + Imag*Imag; + Rho_Corr = amr->patch[FFluSg][lv+1][SonPID]->fluid[DENS][k][j][i]; - amr->patch[FFluSg][lv+1][SonPID]->fluid[REAL][k][j][i] *= Rescale; - amr->patch[FFluSg][lv+1][SonPID]->fluid[IMAG][k][j][i] *= Rescale; - } +// be careful about the negative density introduced from the round-off errors + if ( Rho_Wrong <= (real)0.0 || Rho_Corr <= (real)0.0 ) + { + amr->patch[FFluSg][lv+1][SonPID]->fluid[DENS][k][j][i] = (real)0.0; + Rescale = (real)0.0; + } + else + Rescale = SQRT( Rho_Corr/Rho_Wrong ); + + amr->patch[FFluSg][lv+1][SonPID]->fluid[REAL][k][j][i] *= Rescale; + amr->patch[FFluSg][lv+1][SonPID]->fluid[IMAG][k][j][i] *= Rescale; + } + } // if ( !OPT__INT_PHASE ) +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } // if ( amr->use_wave_flag[lv+1] ) # endif +# endif // #if ( MODEL == ELBDM ) } // for (int LocalID=0; LocalID<8; LocalID++) @@ -1048,6 +1140,7 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) for (int m=1; m<28; m++) amr->NPatchComma[lv+1][m] = amr->num[lv+1]; + // d. refine buffer patches // ------------------------------------------------------------------------------------------------ Refine_Buffer( lv, BufSonTable, BufGrandTable ); @@ -1060,6 +1153,7 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) } + // e. re-construct tables and sibling relations // ------------------------------------------------------------------------------------------------ @@ -1100,6 +1194,63 @@ void Refine( const int lv, const UseLBFunc_t UseLBFunc ) // get the total number of patches at lv+1 Mis_GetTotalPatchNumber( lv+1 ); + + +// f. convert density/phase to density/real part/imaginary part in hybrid scheme when we switch the level from fluid to wave +// ------------------------------------------------------------------------------------------------ +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( SwitchFinerLevelsToWaveScheme ) { + for (int ChildLv=lv+1; ChildLv<=TOP_LEVEL; ++ChildLv) { +// set use_wave_flag + amr->use_wave_flag[ChildLv] = true; + +// iterate over real and buffer patches + for (int PID=0; PIDNPatchComma[ChildLv][27]; PID++) + { +// convert both sandglasses + for (int FluSg=0; FluSg<2; ++FluSg) + { + for (int k=0; kpatch[FluSg][ChildLv][PID]->fluid != NULL && amr->FluSgTime[ChildLv][FluSg] >= 0.0 ) + { +//###REVISE: at this point, we should check whether dB wavelength is resolved after conversion to wave representation + const real Amp = SQRT( amr->patch[FluSg][ChildLv][PID]->fluid[DENS][k][j][i] ); + const real Phase = amr->patch[FluSg][ChildLv][PID]->fluid[PHAS][k][j][i]; + amr->patch[FluSg][ChildLv][PID]->fluid[REAL][k][j][i] = Amp*COS(Phase); + amr->patch[FluSg][ChildLv][PID]->fluid[IMAG][k][j][i] = Amp*SIN(Phase); + } + }}} // k,j,i + } // FluSg + } // for (int PID=0; PIDNPatchComma[ChildLv][27]; PID++) + } // for (int ChildLv=lv+1; ChildLv<=TOP_LEVEL; ++ChildLv) + } // if ( SwitchFinerToWaveScheme ) +# endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) + + + +// g. construct the global AMR structure if required +// ------------------------------------------------------------------------------------------------ +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) +//###NOTE: the following criterion must be adjusted if another part of GAMER wants to use the global tree +// update the global tree only after updating the first wave level +// --> the fluid scheme currently only uses the global tree in two places: +// (a) velocity time-step calculation +// (b) fluid solver itself +// --> in both cases, we only need information about which fluid cells have refined wave counterparts +// --> only need to update the global tree if the patches on the first wave level have changed and +// don't care what happens on higher refinement levels +// --> having said that, it is actually necessary to do it after updating all fluid levels to +// ensure that all fluid patches have been registered in the global tree + if ( lv+1 <= ELBDM_FIRST_WAVE_LEVEL ) + { + delete GlobalTree; // in case it has been allocated already + GlobalTree = new LB_GlobalTree; + } +# endif + } // FUNCTION : Refine diff --git a/src/Refine/Sync_UseWaveFlag.cpp b/src/Refine/Sync_UseWaveFlag.cpp new file mode 100644 index 0000000000..6c60c98947 --- /dev/null +++ b/src/Refine/Sync_UseWaveFlag.cpp @@ -0,0 +1,33 @@ +#include "GAMER.h" + +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Sync_UseWaveFlag +// Description : Synchronize amr->use_wave_flag[] across all MPI ranks +// +// Note : None +// +// Parameter : lv : Target refinement level +//------------------------------------------------------------------------------------------------------- +void Sync_UseWaveFlag( const int lv ) +{ + + if ( lv < 0 || lv > TOP_LEVEL ) + Aux_Error( ERROR_INFO, "incorrect parameter %s = %d !!\n", "lv", lv ); + + bool recv; + bool send = amr->use_wave_flag[lv]; + + MPI_Allreduce( &send, &recv, 1, MPI_C_BOOL, MPI_LOR, MPI_COMM_WORLD ); + + amr->use_wave_flag[lv] = recv; + +} // FUNCTION : Sync_UseWaveFlag + + + +#endif // #if ( ELBDM_SCHEME == ELBDM_HYBRID ) diff --git a/src/SelfGravity/CPU_Poisson/CPU_PoissonGravitySolver.cpp b/src/SelfGravity/CPU_Poisson/CPU_PoissonGravitySolver.cpp index 8cb44a4ff6..1a6500929a 100644 --- a/src/SelfGravity/CPU_Poisson/CPU_PoissonGravitySolver.cpp +++ b/src/SelfGravity/CPU_Poisson/CPU_PoissonGravitySolver.cpp @@ -49,10 +49,16 @@ void CPU_HydroGravitySolver( const double TimeNew, const double TimeOld, const real MinEint ); #elif ( MODEL == ELBDM ) -void CPU_ELBDMGravitySolver( real Flu_Array[][GRA_NIN][PATCH_SIZE][PATCH_SIZE][PATCH_SIZE], - const real Pot_Array[][GRA_NXT][GRA_NXT][GRA_NXT], - const double Corner_Array[][3], - const int NPatchGroup, const real EtaDt, const real dh, const real Lambda ); +void CPU_ELBDMGravitySolver( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const int NPatchGroup, + const real EtaDt, const real dh, const real Lambda ); +#if ( ELBDM_SCHEME == ELBDM_HYBRID ) +void CPU_ELBDMGravitySolver_HamiltonJacobi( real g_Flu_Array[][GRA_NIN][ CUBE(PS1) ], + const real g_Pot_Array[][ CUBE(GRA_NXT) ], + const int NPatchGroup, + const real EtaDt, const real dh, const real Lambda ); +#endif #else #error : ERROR : unsupported MODEL !! @@ -103,8 +109,9 @@ void CPU_ELBDMGravitySolver( real Flu_Array[][GRA_NIN][PATCH_SIZE][PATCH_S // TimeNew : Physical time at the current step (for external gravity) // TimeOld : Physical time at the previous step (for external gravity in UNSPLIT_GRAVITY) // MinEint : Internal energy floor +// UseWaveFlag : Determine whether to advance wave function or phase in ELBDM // -// Useless parameters in HYDRO : ELBDM_Eta, ELBDM_Lambda +// Useless parameters in HYDRO : ELBDM_Eta, ELBDM_Lambda, UseWaveFlag // Useless parameters in ELBDM : P5_Gradient // // Return : h_Pot_Array_Out, h_Flu_Array @@ -124,7 +131,8 @@ void CPU_PoissonGravitySolver( const real h_Rho_Array [][RHO_NXT][RHO_NXT][RH const real Poi_Coeff, const IntScheme_t IntScheme, const bool P5_Gradient, const real ELBDM_Eta, const real ELBDM_Lambda, const bool Poisson, const bool GraAcc, const bool SelfGravity, const OptExtPot_t ExtPot, const OptExtAcc_t ExtAcc, - const double TimeNew, const double TimeOld, const real MinEint ) + const double TimeNew, const double TimeOld, const real MinEint, + const bool UseWaveFlag ) { // check @@ -213,7 +221,19 @@ void CPU_PoissonGravitySolver( const real h_Rho_Array [][RHO_NXT][RHO_NXT][RH TimeNew, TimeOld, MinEint ); # elif ( MODEL == ELBDM ) - CPU_ELBDMGravitySolver( h_Flu_Array, h_Pot_Array_Out, h_Corner_Array, NPatchGroup, ELBDM_Eta*dt, dh, ELBDM_Lambda ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( UseWaveFlag ) { +# endif + CPU_ELBDMGravitySolver( (real(*)[GRA_NIN][ CUBE(PS1) ]) h_Flu_Array, + (real(*)[ CUBE(GRA_NXT) ]) h_Pot_Array_Out, + NPatchGroup, ELBDM_Eta*dt, dh, ELBDM_Lambda ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + CPU_ELBDMGravitySolver_HamiltonJacobi( (real(*)[GRA_NIN][ CUBE(PS1) ]) h_Flu_Array, + (real(*)[ CUBE(GRA_NXT) ]) h_Pot_Array_Out, + NPatchGroup, ELBDM_Eta*dt, dh, ELBDM_Lambda ); + } +# endif # else # error : ERROR : unsupported MODEL !! diff --git a/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_FFT.cpp b/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_FFT.cpp index 4bb04a16b3..76be56e434 100644 --- a/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_FFT.cpp +++ b/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_FFT.cpp @@ -2,12 +2,13 @@ #if ( defined GRAVITY && defined SUPPORT_FFTW ) - - static void FFT_Periodic( real *RhoK, const real Poi_Coeff, const int j_start, const int dj, const long RhoK_Size ); static void FFT_Isolated( real *RhoK, const real *gFuncK, const real Poi_Coeff, const long RhoK_Size ); -extern root_fftw::real_plan_nd FFTW_Plan_Poi, FFTW_Plan_Poi_Inv; +extern root_fftw::real_plan_nd FFTW_Plan_Poi, FFTW_Plan_Poi_Inv; + + + //------------------------------------------------------------------------------------------------------- // Function : FFT_Periodic @@ -126,6 +127,7 @@ void FFT_Periodic( real *RhoK, const real Poi_Coeff, const int j_start, const in //------------------------------------------------------------------------------------------------------- void FFT_Isolated( real *RhoK, const real *gFuncK, const real Poi_Coeff, const long RhoK_Size ) { + gamer_fftw::fft_complex *RhoK_cplx = (gamer_fftw::fft_complex *)RhoK; gamer_fftw::fft_complex *gFuncK_cplx = (gamer_fftw::fft_complex *)gFuncK; gamer_fftw::fft_complex Temp_cplx; @@ -158,7 +160,6 @@ void FFT_Isolated( real *RhoK, const real *gFuncK, const real Poi_Coeff, const l for (long t=0; t __INT_MAX__ ) || total_local_size < 0 ) Aux_Error( ERROR_INFO, "local_nx*local_ny*local_nz = %d*%d*%d = %ld > __INT_MAX__ (%d)\n" " and/or total_local_size (%ld) < 0 for FFT, suggesting integer overflow !!\n" - " --> Try using more MPI processes\n", + " --> Try using more MPI processes or switching to FFTW3\n", local_nx, local_ny, local_nz, local_nxyz, __INT_MAX__, total_local_size ); @@ -236,11 +238,11 @@ void CPU_PoissonSolver_FFT( const real Poi_Coeff, const int SaveSg, const double // allocate memory (properly taking into account the zero-padding regions, where no data need to be exchanged) const int NRecvSlice = MIN( List_z_start[MPI_Rank]+local_nz, NX0_TOT[2] ) - MIN( List_z_start[MPI_Rank], NX0_TOT[2] ); - real *RhoK = (real* ) root_fftw::fft_malloc(sizeof(real) * total_local_size); // array storing both density and potential - real *SendBuf = new real [ (long)amr->NPatchComma[0][1]*CUBE(PS1) ]; // MPI send buffer for density and potential - real *RecvBuf = new real [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice ]; // MPI recv buffer for density and potentia - long *SendBuf_SIdx = new long [ (long)amr->NPatchComma[0][1]*PS1 ]; // MPI send buffer for 1D coordinate in slab - long *RecvBuf_SIdx = new long [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice/SQR(PS1) ]; // MPI recv buffer for 1D coordinate in slab + real *RhoK = (real*)root_fftw::fft_malloc( sizeof(real)*total_local_size ); // array storing both density and potential + real *SendBuf = new real [ (long)amr->NPatchComma[0][1]*CUBE(PS1) ]; // MPI send buffer for density and potential + real *RecvBuf = new real [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice ]; // MPI recv buffer for density and potentia + long *SendBuf_SIdx = new long [ (long)amr->NPatchComma[0][1]*PS1 ]; // MPI send buffer for 1D coordinate in slab + long *RecvBuf_SIdx = new long [ (long)NX0_TOT[0]*NX0_TOT[1]*NRecvSlice/SQR(PS1) ]; // MPI recv buffer for 1D coordinate in slab int *List_PID [MPI_NRank]; // PID of each patch slice sent to each rank int *List_k [MPI_NRank]; // local z coordinate of each patch slice sent to each rank @@ -276,7 +278,7 @@ void CPU_PoissonSolver_FFT( const real Poi_Coeff, const int SaveSg, const double local_nz, FFT_Size, NRecvSlice, _POTE, InPlacePad ); - root_fftw::fft_free(RhoK); + root_fftw::fft_free( RhoK ); delete [] SendBuf; delete [] RecvBuf; delete [] SendBuf_SIdx; diff --git a/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_MG.cpp b/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_MG.cpp index 1e8841de16..9d1015ae46 100644 --- a/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_MG.cpp +++ b/src/SelfGravity/CPU_Poisson/CPU_PoissonSolver_MG.cpp @@ -567,7 +567,7 @@ void Restrict( const real *FData_1D, real *CData_1D, const int NGrid_F, const in Coeff[0][1] = (real)0.5; // Coeff[0][1] = (real)1.0 - Coeff[0][0] - Coeff[0][2]; -//###OPTIMIZATION : follow the same strategy adopted in "Int_Quadratic" +//###OPTIMIZATION: follow the same strategy adopted in "Int_Quadratic" CData[k][j][i] = Coeff[2][0] * Coeff[1][0] * Coeff[0][0] * FData[kkm][jjm][iim] + Coeff[2][0] * Coeff[1][0] * Coeff[0][1] * FData[kkm][jjm][ii ] + Coeff[2][0] * Coeff[1][0] * Coeff[0][2] * FData[kkm][jjm][iip] diff --git a/src/SelfGravity/GPU_Poisson/CUPOT_PoissonSolver_MG.cu b/src/SelfGravity/GPU_Poisson/CUPOT_PoissonSolver_MG.cu index 2f57ef5f13..c53dca5240 100644 --- a/src/SelfGravity/GPU_Poisson/CUPOT_PoissonSolver_MG.cu +++ b/src/SelfGravity/GPU_Poisson/CUPOT_PoissonSolver_MG.cu @@ -748,7 +748,7 @@ __device__ void Restrict( const real *FData, real *CData, const uint NGrid_F, co // Coeff_zc = (real)1.0 - Coeff_zm - Coeff_zp; -//###OPTIMIZATION : follow the same strategy adopted in "Int_Quadratic" +//###OPTIMIZATION: follow the same strategy adopted in "Int_Quadratic" CData[Cijk] = Coeff_zm * Coeff_ym * Coeff_xm * FData[ Fijk - Fdk - Fdj - Fdi ] + Coeff_zm * Coeff_ym * Coeff_xc * FData[ Fijk - Fdk - Fdj ] + Coeff_zm * Coeff_ym * Coeff_xp * FData[ Fijk - Fdk - Fdj + Fdi ] @@ -880,7 +880,7 @@ __device__ void Prolongate_and_Correct( const real *CData, real *FData, const ui // RHS : 1D array storing the RHS of the Poisson equation // dh : Grid size // s_Error : Shared-memory array to store the L1 error -// s_SolSum : Shared-memroy array to store the sum of solution +// s_SolSum : Shared-memory array to store the sum of solution // tid : Thread index //------------------------------------------------------------------------------------------------------- __device__ void EstimateError( const real *Sol, const real *RHS, const real dh, real *s_Error, real *s_SolSum, diff --git a/src/SelfGravity/Gra_AdvanceDt.cpp b/src/SelfGravity/Gra_AdvanceDt.cpp index 9f01e6c9f4..18ce718678 100644 --- a/src/SelfGravity/Gra_AdvanceDt.cpp +++ b/src/SelfGravity/Gra_AdvanceDt.cpp @@ -92,7 +92,7 @@ void Gra_AdvanceDt( const int lv, const double TimeNew, const double TimeOld, co if ( UsePot ) { - TIMING_FUNC( Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ|_PAR_TYPE, PredictPos, + TIMING_FUNC( Par_CollectParticle2OneLevel( lv, _PAR_MASS|_PAR_POSX|_PAR_POSY|_PAR_POSZ, _PAR_TYPE, PredictPos, TimeNew, SibBufPatch, FaSibBufPatch, JustCountNPar_No, TimingSendPar_Yes ), Timer_Par_Collect[lv], Timing ); diff --git a/src/SelfGravity/Gra_Close.cpp b/src/SelfGravity/Gra_Close.cpp index 1f60a0d597..d48043f60c 100644 --- a/src/SelfGravity/Gra_Close.cpp +++ b/src/SelfGravity/Gra_Close.cpp @@ -84,12 +84,24 @@ void Gra_Close( const int lv, const int SaveSg, const real h_Flu_Array_G[][GRA_N # endif // #ifdef DUAL_ENERGY # elif ( MODEL == ELBDM ) -// density field is NOT sent in and out in the ELBDM gravity solver for (int v=0; vuse_wave_flag[lv] ) { +# endif +// density field is NOT sent in and out in the ELBDM gravity solver for the wave scheme --> v+1 amr->patch[SaveSg][lv][PID]->fluid[v+1][k][j][i] = h_Flu_Array_G[N][v][k][j][i]; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { +// in fluid scheme, send both density and phase fields --> v +//###OPTIMIZATION: no need to transfer and update the density field + amr->patch[SaveSg][lv][PID]->fluid[v][k][j][i] = h_Flu_Array_G[N][v][k][j][i]; + } +# endif + } # else # error : unsupported MODEL !! diff --git a/src/SelfGravity/Gra_Prepare_Corner.cpp b/src/SelfGravity/Gra_Prepare_Corner.cpp index e1ab283e6c..7a8562177a 100644 --- a/src/SelfGravity/Gra_Prepare_Corner.cpp +++ b/src/SelfGravity/Gra_Prepare_Corner.cpp @@ -7,7 +7,7 @@ //------------------------------------------------------------------------------------------------------- // Function : Gra_Prepare_Corner -// Description : Prepare the input array h_Corner_Array_PGT[] for the Poisson, Gravity, and dt solvers +// Description : Prepare h_Corner_Array_PGT[] for the Poisson, Gravity, and dt solvers // --> NOT just gravity solver (so the function name is a bit misleading) // // Note : 1. For calculating the external acceleration and/or potential diff --git a/src/SelfGravity/Gra_Prepare_Flu.cpp b/src/SelfGravity/Gra_Prepare_Flu.cpp index ed7270d028..fdf6789d4a 100644 --- a/src/SelfGravity/Gra_Prepare_Flu.cpp +++ b/src/SelfGravity/Gra_Prepare_Flu.cpp @@ -62,13 +62,26 @@ void Gra_Prepare_Flu( const int lv, real h_Flu_Array_G[][GRA_NIN][PS1][PS1][PS1] # elif ( MODEL == ELBDM ) -// density field is useless in the ELBDM gravity solver for (int v=0; vuse_wave_flag[lv] ) { +# endif +// density field is useless in the ELBDM gravity wave solver +// because we can always calculate it via real and imaginary part +// we therefore only transfer the components 1 and 2 via v+1 h_Flu_Array_G[N][v][k][j][i] = amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[v+1][k][j][i]; - +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { +// in the phase scheme, there are only density and phase field +// transfer the components "0" and "1" via v + h_Flu_Array_G[N][v][k][j][i] = amr->patch[ amr->FluSg[lv] ][lv][PID]->fluid[v][k][j][i]; + } +# endif + } # else # error : unsupported MODEL !! diff --git a/src/SelfGravity/Init_GreenFuncK.cpp b/src/SelfGravity/Init_GreenFuncK.cpp index aaf4c0b73b..fdd8465c7f 100644 --- a/src/SelfGravity/Init_GreenFuncK.cpp +++ b/src/SelfGravity/Init_GreenFuncK.cpp @@ -2,7 +2,10 @@ #if ( defined GRAVITY && defined SUPPORT_FFTW ) -extern root_fftw::real_plan_nd FFTW_Plan_Poi; +extern root_fftw::real_plan_nd FFTW_Plan_Poi; + + + //------------------------------------------------------------------------------------------------------- // Function : Init_GreenFuncK @@ -39,26 +42,27 @@ void Init_GreenFuncK() local_ny_after_transpose = NULL_INT; local_y_start_after_transpose = NULL_INT; total_local_size = local_nx*local_ny*local_nz; -# else // # ifdef SERIAL +# else // #ifdef SERIAL # if ( SUPPORT_FFTW == FFTW3 ) total_local_size = fftw_mpi_local_size_3d_transposed( FFT_Size[2], local_ny, local_nx, MPI_COMM_WORLD, - &local_nz, &local_z_start, &local_ny_after_transpose, &local_y_start_after_transpose ); -# else // # if ( SUPPORT_FFTW == FFTW3 ) + &local_nz, &local_z_start, &local_ny_after_transpose, + &local_y_start_after_transpose ); +# else rfftwnd_mpi_local_sizes( FFTW_Plan_Poi, &local_nz, &local_z_start, &local_ny_after_transpose, &local_y_start_after_transpose, &total_local_size ); -# endif // # if ( SUPPORT_FFTW == FFTW3 ) ... # else -# endif // # ifdef SERIAL +# endif +# endif // #ifdef SERIAL ... else ... // check integer overflow (assuming local_nx*local_ny*local_nz ~ total_local_size) const long local_nxyz = (long)local_nx*(long)local_ny*(long)local_nz; - if ( local_nx < 0 || local_ny < 0 || local_nz < 0 ) - Aux_Error( ERROR_INFO, "local_nx/y/z (%ld, %ld, %ld) < 0 for FFT !!", local_nx, local_ny, local_nz ); + if ( local_nx < 0 || local_ny < 0 || local_nz < 0 ) + Aux_Error( ERROR_INFO, "local_nx/y/z (%ld, %ld, %ld) < 0 for FFT !!\n", local_nx, local_ny, local_nz ); if ( ( sizeof(mpi_index_int) == sizeof(int) && local_nxyz > __INT_MAX__ ) || total_local_size < 0 ) Aux_Error( ERROR_INFO, "local_nx*local_ny*local_nz = %d*%d*%d = %ld > __INT_MAX__ (%d)\n" " and/or total_local_size (%ld) < 0 for FFT, suggesting integer overflow !!\n" - " --> Try using more MPI processes\n", + " --> Try using more MPI processes or switching to FFTW3\n", local_nx, local_ny, local_nz, local_nxyz, __INT_MAX__, total_local_size ); @@ -88,9 +92,11 @@ void Init_GreenFuncK() // ***by setting it equal to zero, we ignore the contribution from the mass within the same cell*** if ( MPI_Rank == 0 ) GreenFuncK[0] = GFUNC_COEFF0*Coeff/dh0; + // 4. convert the Green's function to the k space root_fftw_r2c( FFTW_Plan_Poi, GreenFuncK ); + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); } // FUNCTION : Init_GreenFuncK diff --git a/src/SelfGravity/Poi_GetAverageDensity.cpp b/src/SelfGravity/Poi_GetAverageDensity.cpp index 74a9306d29..a71d516193 100644 --- a/src/SelfGravity/Poi_GetAverageDensity.cpp +++ b/src/SelfGravity/Poi_GetAverageDensity.cpp @@ -54,9 +54,9 @@ void Poi_GetAverageDensity() const int NP[3] = { NX0_TOT[0]/PATCH_SIZE, NX0_TOT[1]/PATCH_SIZE, NX0_TOT[2]/PATCH_SIZE }; const int PScale = PATCH_SIZE * amr->scale[0]; -//###NOTE : actually "int" is enoughly for Cr1D_Local and Cr1D_All. If they do need "long" or "ulong", then -// at least Cr1D_IdxTable and other looping indices will need "long or ulong" as well since base-level -// patches fill the entire box +//###NOTE: actually "int" is enoughly for Cr1D_Local and Cr1D_All. If they do need "long" or "ulong", then +// at least Cr1D_IdxTable and other looping indices will need "long or ulong" as well since base-level +// patches fill the entire box int Cr3D[3], NPatch_All[MPI_NRank], Disp[MPI_NRank]; int NPatch_Sum = 0; double *Rho_All = NULL; diff --git a/src/SourceTerms/CPU_SrcSolver.cpp b/src/SourceTerms/CPU_SrcSolver.cpp index 22bbc36836..c213c2854f 100644 --- a/src/SourceTerms/CPU_SrcSolver.cpp +++ b/src/SourceTerms/CPU_SrcSolver.cpp @@ -59,6 +59,12 @@ void CPU_SrcSolver( const real h_Flu_Array_In [][FLU_NIN_S ][ CUBE(SRC_NXT) # endif +// EoS is not defined when MODEL != HYDRO +# if ( MODEL != HYDRO ) + EoS_t EoS; +# endif + + CPU_SrcSolver_IterateAllCells( h_Flu_Array_In, h_Flu_Array_Out, h_Mag_Array_In, h_Corner_Array, SrcTerms, NPatchGroup, dt, dh, TimeNew, TimeOld, MinDens, MinPres, MinEint, EoS ); diff --git a/src/SourceTerms/User_Template/CPU_Src_User_Template.cpp b/src/SourceTerms/User_Template/CPU_Src_User_Template.cpp index 6fb7c2da9b..561d883afb 100644 --- a/src/SourceTerms/User_Template/CPU_Src_User_Template.cpp +++ b/src/SourceTerms/User_Template/CPU_Src_User_Template.cpp @@ -6,8 +6,10 @@ #ifdef __CUDACC__ #include "CUDA_CheckError.h" -#include "CUFLU_Shared_FluUtility.cu" #include "CUDA_ConstMemory.h" +#if ( MODEL == HYDRO ) +#include "CUFLU_Shared_FluUtility.cu" +#endif #endif // #ifdef __CUDACC__ diff --git a/src/StarFormation/SF_CreateStar_AGORA.cpp b/src/StarFormation/SF_CreateStar_AGORA.cpp index 0a91fd34da..a83ce3353b 100644 --- a/src/StarFormation/SF_CreateStar_AGORA.cpp +++ b/src/StarFormation/SF_CreateStar_AGORA.cpp @@ -95,8 +95,9 @@ void SF_CreateStar_AGORA( const int lv, const real TimeNew, const real dt, Rando # endif const int MaxNewParPerPatch = CUBE(PS1); - real_par (*NewParAtt)[PAR_NATT_TOTAL] = new real_par [MaxNewParPerPatch][PAR_NATT_TOTAL]; - long *NewParID = new long [MaxNewParPerPatch]; + real_par (*NewParAttFlt)[PAR_NATT_FLT_TOTAL] = new real_par [MaxNewParPerPatch][PAR_NATT_FLT_TOTAL]; + long_par (*NewParAttInt)[PAR_NATT_INT_TOTAL] = new long_par [MaxNewParPerPatch][PAR_NATT_INT_TOTAL]; + long *NewParID = new long [MaxNewParPerPatch]; int NNewPar; @@ -195,15 +196,15 @@ void SF_CreateStar_AGORA( const int lv, const real TimeNew, const real dt, Rando y = y0 + j*dh; z = z0 + k*dh; - NewParAtt[NNewPar][PAR_MASS] = StarMass; - NewParAtt[NNewPar][PAR_POSX] = x; - NewParAtt[NNewPar][PAR_POSY] = y; - NewParAtt[NNewPar][PAR_POSZ] = z; - NewParAtt[NNewPar][PAR_VELX] = fluid[MOMX][k][j][i]*_GasDens; - NewParAtt[NNewPar][PAR_VELY] = fluid[MOMY][k][j][i]*_GasDens; - NewParAtt[NNewPar][PAR_VELZ] = fluid[MOMZ][k][j][i]*_GasDens; - NewParAtt[NNewPar][PAR_TIME] = TimeNew; - NewParAtt[NNewPar][PAR_TYPE] = PTYPE_STAR; + NewParAttFlt[NNewPar][PAR_MASS] = StarMass; + NewParAttFlt[NNewPar][PAR_POSX] = x; + NewParAttFlt[NNewPar][PAR_POSY] = y; + NewParAttFlt[NNewPar][PAR_POSZ] = z; + NewParAttFlt[NNewPar][PAR_VELX] = fluid[MOMX][k][j][i]*_GasDens; + NewParAttFlt[NNewPar][PAR_VELY] = fluid[MOMY][k][j][i]*_GasDens; + NewParAttFlt[NNewPar][PAR_VELZ] = fluid[MOMZ][k][j][i]*_GasDens; + NewParAttFlt[NNewPar][PAR_TIME] = TimeNew; + NewParAttInt[NNewPar][PAR_TYPE] = PTYPE_STAR; // particle acceleration # ifdef STORE_PAR_ACC @@ -233,18 +234,18 @@ void SF_CreateStar_AGORA( const int lv, const real TimeNew, const real dt, Rando GasAcc[2] += GraConst*( pot_zp - pot_zm ); } - NewParAtt[NNewPar][PAR_ACCX] = GasAcc[0]; - NewParAtt[NNewPar][PAR_ACCY] = GasAcc[1]; - NewParAtt[NNewPar][PAR_ACCZ] = GasAcc[2]; + NewParAttFlt[NNewPar][PAR_ACCX] = GasAcc[0]; + NewParAttFlt[NNewPar][PAR_ACCY] = GasAcc[1]; + NewParAttFlt[NNewPar][PAR_ACCZ] = GasAcc[2]; # endif // ifdef STORE_PAR_ACC // 2-2. extrinsic attributes // note that we store the metal mass **fraction** instead of density in particles if ( UseMetal ) - NewParAtt[NNewPar][Idx_ParMetalFrac] = fluid[Idx_Metal][k][j][i] * _GasDens; + NewParAttFlt[NNewPar][Idx_ParMetalFrac] = fluid[Idx_Metal][k][j][i] * _GasDens; - NewParAtt[NNewPar][Idx_ParCreTime ] = TimeNew; + NewParAttFlt[NNewPar][Idx_ParCreTime ] = TimeNew; NNewPar ++; @@ -271,11 +272,11 @@ void SF_CreateStar_AGORA( const int lv, const real TimeNew, const real dt, Rando { // 4-1. add particles to the particle repository for (int p=0; pPar->AddOneParticle( NewParAtt[p] ); + NewParID[p] = amr->Par->AddOneParticle( NewParAttFlt[p], NewParAttInt[p] ); // 4-2. add particles to the patch - const real_par *PType = amr->Par->Type; + const long_par *PType = amr->Par->Type; # ifdef DEBUG_PARTICLE // do not set ParPos too early since pointers to the particle repository (e.g., amr->Par->PosX) // may change after calling amr->Par->AddOneParticle() @@ -293,7 +294,8 @@ void SF_CreateStar_AGORA( const int lv, const real TimeNew, const real dt, Rando } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) // free memory - delete [] NewParAtt; + delete [] NewParAttFlt; + delete [] NewParAttInt; delete [] NewParID; } // end of OpenMP parallel region diff --git a/src/TestProblem/ELBDM/DiskHeating/ExtPot_Soliton.cpp b/src/TestProblem/ELBDM/DiskHeating/ExtPot_Soliton.cpp new file mode 100644 index 0000000000..9f8605fc7f --- /dev/null +++ b/src/TestProblem/ELBDM/DiskHeating/ExtPot_Soliton.cpp @@ -0,0 +1,213 @@ +#include "CUPOT.h" +#ifdef __CUDACC__ +#include "CUDA_CheckError.h" +#endif + +#ifdef GRAVITY + +extern double m_22; +extern double CoreRadius; +extern double Cen[3]; + + +// ================================= +// I. Set auxiliary arrays +// ================================= + +#ifndef __CUDACC__ +//------------------------------------------------------------------------------------------------------- +// Function : SetExtPotAuxArray_Soliton +// Description : Set the auxiliary arrays ExtPot_AuxArray_Flt/Int[] used by ExtPot_Soliton() +// +// Note : 1. Invoked by Init_ExtPot_Soliton() +// 2. AuxArray_Flt/Int[] have the size of EXT_POT_NAUX_MAX defined in Macro.h (default = 20) +// 3. Add "#ifndef __CUDACC__" since this routine is only useful on CPU +// +// Parameter : AuxArray_Flt/Int : Floating-point/Integer arrays to be filled up +// Time : Target physical time +// +// Return : AuxArray_Flt/Int[] +//------------------------------------------------------------------------------------------------------- +void SetExtPotAuxArray_Soliton( double AuxArray_Flt[], int AuxArray_Int[], const double Time ) +{ + + const double A = 0.0019/m_22/m_22/POW(CoreRadius,4)*1.0e10*Const_Msun/Const_kpc; // soliton central density in g/cm^3 + const double B = 9.1*0.01; + const double G = Const_NewtonG/UNIT_V/UNIT_V; // convert output potential to code unit + + AuxArray_Flt[0] = Cen[0]; // x coordinate of the external potential center + AuxArray_Flt[1] = Cen[1]; // y ... + AuxArray_Flt[2] = Cen[2]; // z ... + AuxArray_Flt[3] = CoreRadius*Const_kpc; + AuxArray_Flt[4] = A; + AuxArray_Flt[5] = B; + AuxArray_Flt[6] = G; + AuxArray_Flt[7] = UNIT_L; + + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "EXT_POT_AUX_ARRAY:\n" ); + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " CenX = %13.7e\n", Cen[0] ); + Aux_Message( stdout, " CenY = %13.7e\n", Cen[1] ); + Aux_Message( stdout, " Cenz = %13.7e\n", Cen[2] ); + Aux_Message( stdout, " CoreRadius = %13.7e\n", CoreRadius ); + Aux_Message( stdout, " UNIT_L = %13.7e\n", UNIT_L ); + Aux_Message( stdout, " UNIT_V = %13.7e\n", UNIT_V ); + Aux_Message( stdout, " m_22 = %13.7e\n", m_22 ); + Aux_Message( stdout, "=============================================================================\n" ); + } + +} // FUNCTION : SetExtPotAuxArray_Soliton +#endif // #ifndef __CUDACC__ + + + +// ================================= +// II. Specify external potential +// ================================= + +//----------------------------------------------------------------------------------------- +// Function : ExtPot_Soliton +// Description : Calculate the external potential at the given coordinates and time +// +// Note : 1. This function is shared by CPU and GPU +// 2. Auxiliary arrays UserArray_Flt/Int[] are set by SetExtPotAuxArray_SOliton(), where +// UserArray_Flt[0] = x coordinate of the external potential center +// UserArray_Flt[1] = y ... +// UserArray_Flt[2] = z .. +// UserArray_Flt[3] = gravitational_constant*point_source_mass +// 3. Currently it does not support the soften length +// 4. GenePtr has the size of EXT_POT_NGENE_MAX defined in Macro.h (default = 6) +// +// Parameter : x/y/z : Target spatial coordinates +// Time : Target physical time +// UserArray_Flt/Int : User-provided floating-point/integer auxiliary arrays +// Usage : Different usages of external potential when computing total potential on level Lv +// --> EXT_POT_USAGE_ADD : add external potential on Lv +// EXT_POT_USAGE_SUB : subtract external potential for preparing self-gravity potential on Lv-1 +// EXT_POT_USAGE_SUB_TINT: like SUB but for temporal interpolation +// --> This parameter is useless in most cases +// PotTable : 3D potential table used by EXT_POT_TABLE +// GenePtr : Array of pointers for general potential tables +// +// Return : External potential at (x,y,z,Time) +//----------------------------------------------------------------------------------------- +GPU_DEVICE_NOINLINE +static real ExtPot_Soliton( const double x, const double y, const double z, const double Time, + const double UserArray_Flt[], const int UserArray_Int[], + const ExtPotUsage_t Usage, const real PotTable[], void **GenePtr ) +{ + + const double Center[3] = { UserArray_Flt[0], UserArray_Flt[1], UserArray_Flt[2] }; + const double r_sol = UserArray_Flt[3]; + const double dx = (x - Center[0]); + const double dy = (y - Center[1]); + const double dz = (z - Center[2]); + const double A = UserArray_Flt[4]; + const double B = UserArray_Flt[5]; + const double G = UserArray_Flt[6]; + const double unit_l = UserArray_Flt[7]; + const double r = SQRT( dx*dx + dy*dy + dz*dz )*unit_l; + const double Y = r/r_sol; + +// soliton potential, consistent with Eq. [6] in Chiang et al., PRD 103, 103019 (2021) +// --> this form may suffer from large numerical errors at r->0 as both the numerator and denominator approach 0 + double soliton_potential = -M_PI*pow(Y,2.)*A*G/53760./pow(B,1.5) + *( pow(B,0.5)/pow((1.+B*pow(Y,2.)),6.) + *( 11895. + 36685.*B*pow(Y,2.) + + 55638.*pow(B,2.)*pow(Y,4.) + 45738.*pow(B,3.)*pow(Y,6.) + + 19635.*pow(B,4.)*pow(Y,8.) + 3465.*pow(B,5.)*pow(Y,10.) ) + + 3465.*atan(pow(B,0.5)*Y)/Y ); + + return (real)soliton_potential; + +} // FUNCTION : ExtPot_Soliton + + + +// ================================= +// III. Set initialization functions +// ================================= + +#ifdef __CUDACC__ +# define FUNC_SPACE __device__ static +#else +# define FUNC_SPACE static +#endif + +FUNC_SPACE ExtPot_t ExtPot_Ptr = ExtPot_Soliton; + +//----------------------------------------------------------------------------------------- +// Function : SetCPU/GPUExtPot_Soliton +// Description : Return the function pointers of the CPU/GPU external potential routines +// +// Note : 1. Invoked by Init_ExtPot_Soliton() +// 2. Must obtain the CPU and GPU function pointers by **separate** routines +// since CPU and GPU functions are compiled completely separately in GAMER +// --> In other words, a unified routine like the following won't work +// +// SetExtPot_Soliton( ExtPot_t &CPUExtPot_Ptr, ExtPot_t &GPUExtPot_Ptr ) +// +// Parameter : CPU/GPUExtPot_Ptr (call-by-reference) +// +// Return : CPU/GPUExtPot_Ptr +//----------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__host__ +void SetGPUExtPot_Soliton( ExtPot_t &GPUExtPot_Ptr ) +{ + CUDA_CHECK_ERROR( cudaMemcpyFromSymbol( &GPUExtPot_Ptr, ExtPot_Ptr, sizeof(ExtPot_t) ) ); +} + +#else // #ifdef __CUDACC__ + +void SetCPUExtPot_Soliton( ExtPot_t &CPUExtPot_Ptr ) +{ + CPUExtPot_Ptr = ExtPot_Ptr; +} + +#endif // #ifdef __CUDACC__ ... else ... + + + +#ifndef __CUDACC__ + +// local function prototypes +void SetExtPotAuxArray_Soliton( double [], int [], const double ); +void SetCPUExtPot_Soliton( ExtPot_t & ); +#ifdef GPU +void SetGPUExtPot_Soliton( ExtPot_t & ); +#endif + +//----------------------------------------------------------------------------------------- +// Function : Init_ExtPot_Soliton +// Description : Initialize external potential +// +// Note : 1. Set auxiliary arrays by invoking SetExtPotAuxArray_*() +// --> They will be copied to GPU automatically in CUAPI_SetConstMemory() +// 2. Set the CPU/GPU external potential major routines by invoking SetCPU/GPUExtPot_*() +// 3. Invoked by Init_ExtAccPot() +// --> Enable it by linking to the function pointer "Init_ExtPot_Ptr" +// 4. Add "#ifndef __CUDACC__" since this routine is only useful on CPU +// +// Parameter : None +// +// Return : None +//----------------------------------------------------------------------------------------- +void Init_ExtPot_Soliton() +{ + + SetExtPotAuxArray_Soliton( ExtPot_AuxArray_Flt, ExtPot_AuxArray_Int, Time[0] ); + SetCPUExtPot_Soliton( CPUExtPot_Ptr ); +# ifdef GPU + SetGPUExtPot_Soliton( GPUExtPot_Ptr ); +# endif + +} // FUNCTION : Init_ExtPot_Soliton + +#endif // #ifndef __CUDACC__ + + + +#endif // #ifdef GRAVITY diff --git a/src/TestProblem/ELBDM/DiskHeating/ExtPot_Soliton.cu b/src/TestProblem/ELBDM/DiskHeating/ExtPot_Soliton.cu new file mode 120000 index 0000000000..df762c8fb8 --- /dev/null +++ b/src/TestProblem/ELBDM/DiskHeating/ExtPot_Soliton.cu @@ -0,0 +1 @@ +ExtPot_Soliton.cpp \ No newline at end of file diff --git a/src/TestProblem/ELBDM/DiskHeating/Init_TestProb_ELBDM_DiskHeating.cpp b/src/TestProblem/ELBDM/DiskHeating/Init_TestProb_ELBDM_DiskHeating.cpp new file mode 100644 index 0000000000..3b17932fc2 --- /dev/null +++ b/src/TestProblem/ELBDM/DiskHeating/Init_TestProb_ELBDM_DiskHeating.cpp @@ -0,0 +1,738 @@ +#include "GAMER.h" +#include "TestProb.h" + +#ifdef SUPPORT_GSL +#include +#include +#endif + + +static void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ); +static void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ); +static void End_DiskHeating(); +static double Get_Dispersion( double r ); +static double Halo_Density( double r ); + +// problem-specific global variables +// ======================================================================================= +static RandomNumber_t *RNG = NULL; + double Cen[3]; // center +static bool AddFixedHalo; // add a fixed halo, must enable OPT__FREEZE_FLUID +static bool HaloUseTable; // 0 = from analytical profile, 1 = from table + double m_22; // ELBDM particle mass, used for soliton profile of the fixed halo + double CoreRadius; // soliton radius of the fixed halo (in kpc) +static double Rho_0; // halo rho_0 (in 1.0e+10 Msun*kpc^-3) +static double Rs; // halo Rs (in kpc) +static double Alpha; // dimensionless, used for alpha-beta-gamma density profile of the fixed halo +static double Beta; // dimensionless, used for alpha-beta-gamma density profile of the fixed halo +static double Gamma; // dimensionless, used for alpha-beta-gamma density profile of the fixed halo +static char DensTableFile[MAX_STRING]; // fixed halo density profile filename +static double *DensTable = NULL; // density table, radius should be in kpc and density should be in g/cm^3 +static int DensTable_Nbin; // number of bins of density table +static bool AddParWhenRestart; // add a new disk to an existing snapshot, must enable OPT__RESTART_RESET +static bool AddParWhenRestartByFile; // add a new disk via DiskHeatingParticleIC +static long AddParWhenRestartNPar; // particle number of the new disk +static int NewDisk_RSeed; // random seed for setting new disk particle position and velocity +static double Disk_Mass; // thin disk total mass (code unit) +static double Disk_R; // thin disk scale radius (code unit) +static char DispTableFile[MAX_STRING]; // velocity dispersion table filename used for thin disk +static double *DispTable = NULL; // velocity dispersion table, radius should be in kpc and dispersion should be in km/s +static int DispTable_Nbin; // number of bins of velocity dispersion table +// ======================================================================================= + +#ifdef PARTICLE +void Par_Init_ByFunction_DiskHeating( const long NPar_ThisRank, const long NPar_AllRank, + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ); +static void Init_NewDiskRestart(); +static void Init_NewDiskVelocity(); +#endif +#ifdef GRAVITY +void Init_ExtPot_Soliton(); +#endif + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifndef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be enabled !!\n" ); +# endif + +# ifndef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be enabled !!\n" ); +# endif + +# ifdef COMOVING + Aux_Error( ERROR_INFO, "COMOVING must be disabled !!\n" ); +# endif + + +// warnings + if ( MPI_Rank == 0 ) + { + if ( FLAG_BUFFER_SIZE < 5 ) + Aux_Message( stderr, "WARNING : it's recommended to set FLAG_BUFFER_SIZE >= 5 for this test !!\n" ); + + if ( !OPT__RECORD_CENTER ) + Aux_Message( stderr, "WARNING : it's recommended to set OPT__RECORD_CENTER = 1 for this test !!\n" ); + } // if ( MPI_Rank == 0 ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// 3. Must NOT call any EoS routine here since it hasn't been initialized at this point +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "CenX", &Cen[0], NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "CenY", &Cen[1], NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "CenZ", &Cen[2], NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "AddFixedHalo", &AddFixedHalo, false, Useless_bool, Useless_bool ); + ReadPara->Add( "HaloUseTable", &HaloUseTable, false, Useless_bool, Useless_bool ); + ReadPara->Add( "m_22", &m_22, 0.4, Eps_double, NoMax_double ); + ReadPara->Add( "CoreRadius", &CoreRadius, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Rho_0", &Rho_0, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Rs", &Rs, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Alpha", &Alpha, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Beta", &Beta, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Gamma", &Gamma, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "DensTableFile", DensTableFile, NoDef_str, Useless_str, Useless_str ); + ReadPara->Add( "AddParWhenRestart", &AddParWhenRestart, false, Useless_bool, Useless_bool ); + ReadPara->Add( "AddParWhenRestartByFile", &AddParWhenRestartByFile, true, Useless_bool, Useless_bool ); + ReadPara->Add( "AddParWhenRestartNPar", &AddParWhenRestartNPar, (long)0, (long)0, NoMax_long ); + ReadPara->Add( "NewDisk_RSeed", &NewDisk_RSeed, 1002, 0, NoMax_int ); + ReadPara->Add( "Disk_Mass", &Disk_Mass, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Disk_R", &Disk_R, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "DispTableFile", DispTableFile, NoDef_str, Useless_str, Useless_str ); + + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + + +// (2) set the problem-specific derived parameters +// use density table as background fixed halo profile + if ( HaloUseTable == 1 ) { + +// read the density table + const bool RowMajor_No = false; // load data into the column-major order + const bool AllocMem_Yes = true; // allocate memory for DensTable + const int NCol = 2; // total number of columns to load + const int Col[NCol] = {0, 1}; // target columns: (radius, density) + + DensTable_Nbin = Aux_LoadTable( DensTable, DensTableFile, NCol, Col, RowMajor_No, AllocMem_Yes ); + + double *DensTable_r = DensTable + 0*DensTable_Nbin; + double *DensTable_d = DensTable + 1*DensTable_Nbin; + +// convert to code unit and log-log scale (input units of radius and density should be fixed to kpc and g/cm^3 respectively) + for (int b=0; b a helper macro PRINT_WARNING is defined in TestProb.h + const long End_Step_Default = 2500; + const double End_T_Default = 2.5e-1; + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " CenX = %13.7e\n", Cen[0] ); + Aux_Message( stdout, " CenY = %13.7e\n", Cen[1] ); + Aux_Message( stdout, " Cenz = %13.7e\n", Cen[2] ); + Aux_Message( stdout, " AddFixedHalo = %d\n", AddFixedHalo ); + Aux_Message( stdout, " HaloUseTable = %d\n", HaloUseTable ); + Aux_Message( stdout, " m_22 = %13.7e\n", m_22 ); + Aux_Message( stdout, " CoreRadius = %13.7e\n", CoreRadius ); + Aux_Message( stdout, " Rho_0 = %13.7e\n", Rho_0 ); + Aux_Message( stdout, " Rs = %13.7e\n", Rs ); + Aux_Message( stdout, " Alpha = %13.7e\n", Alpha ); + Aux_Message( stdout, " Beta = %13.7e\n", Beta ); + Aux_Message( stdout, " Gamma = %13.7e\n", Gamma ); + Aux_Message( stdout, " DensTableFile = %s\n", DensTableFile ); + Aux_Message( stdout, " AddParWhenRestart = %d\n", AddParWhenRestart ); + Aux_Message( stdout, " AddParWhenRestartByFile = %d\n", AddParWhenRestartByFile ); + Aux_Message( stdout, " AddParWhenRestartNPar = %d\n", AddParWhenRestartNPar ); + Aux_Message( stdout, " NewDisk_RSeed = %d\n", NewDisk_RSeed ); + Aux_Message( stdout, " Disk_Mass = %13.7e\n", Disk_Mass ); + Aux_Message( stdout, " Disk_R = %13.7e\n", Disk_R ); + Aux_Message( stdout, " DispTableFile = %s\n", DispTableFile ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : Halo_Density +// Description : alpha-beta-gamma density profile for fixed background halo with soliton as function of radius +// +// Note : 1. r should have unit in kpc +// 2. Returned density is in 1.0e10*Msun/kpc^3 +//------------------------------------------------------------------------------------------------------- +double Halo_Density( double r ) +{ + + double rho_halo = Rho_0 / pow( r/Rs, Alpha ) / pow( 1.0 + pow(r/Rs,Beta), (Gamma-Alpha)/Beta ); + if ( fabs(rho_halo) < __FLT_MIN__ ) rho_halo = 0.0; + + double rho_soliton = 0.0019 / m_22 / m_22 * pow( 1.0/CoreRadius/pow(1.0 + 0.091*pow(r/CoreRadius,2.0), 2.0), 4.0 ); + if ( fabs(rho_soliton) < __FLT_MIN__ ) rho_soliton = 0.0; + + double rho_max = 0.0019 / m_22 / m_22 * pow( 1.0 / CoreRadius, 4.0 ); + + if ( (rho_halo + rho_soliton) > rho_max ) return rho_max; + else return (rho_halo + rho_soliton); + +} // FUNCTION : Halo_Density + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// (unless OPT__INIT_GRID_WITH_OMP is disabled) +// --> Please ensure that everything here is thread-safe +// 3. Even when DUAL_ENERGY is adopted for HYDRO, one does NOT need to set the dual-energy variable here +// --> It will be calculated automatically +// 4. For MHD, do NOT add magnetic energy (i.e., 0.5*B^2) to fluid[ENGY] here +// --> It will be added automatically later +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + +// set the output array + double dens = 0.0; + + if ( AddFixedHalo && OPT__FREEZE_FLUID ) // add a fixed halo at the background + { + const double dx = x - Cen[0]; + const double dy = y - Cen[1]; + const double dz = z - Cen[2]; + const double r = SQRT( dx*dx + dy*dy + dz*dz ); + + if ( HaloUseTable ) + { + const double *DensTable_r = DensTable + 0*DensTable_Nbin; + const double *DensTable_d = DensTable + 1*DensTable_Nbin; + + if ( r < exp( DensTable_r[0] ) ) + dens = exp( DensTable_d[0] ); + + else if ( r > exp( DensTable_r[DensTable_Nbin-1] ) ) + dens = 0.0; + + else + dens = exp( Mis_InterpolateFromTable(DensTable_Nbin, DensTable_r, DensTable_d, log(r)) ); + } + else + { + const double Unit_D_GALIC = 1.0e10*Const_Msun/CUBE(Const_kpc); + const double r_in_kpc = r*UNIT_L/Const_kpc; + dens = Halo_Density( r_in_kpc )*Unit_D_GALIC/UNIT_D; + } + } + + fluid[DENS] = (real)dens; + fluid[REAL] = sqrt( fluid[DENS] ); + fluid[IMAG] = 0.0; + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : BC +// Description : Boundary conditions +// +// Note : +//------------------------------------------------------------------------------------------------------- +void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ) +{ + +// simply call the IC function + SetGridIC( fluid, pos[0], pos[1], pos[2], Time, lv, AuxArray ); + +} // FUNCTION : BC + + + +//------------------------------------------------------------------------------------------------------- +// Function : End_DiskHeating +// Description : Free memory before terminating the program +// +// Note : 1. Linked to the function pointer "End_User_Ptr" to replace "End_User()" +//------------------------------------------------------------------------------------------------------- +void End_DiskHeating() +{ + + delete [] DensTable; + delete [] DispTable; + +} // FUNCTION : End_DiskHeating + + + +#ifdef PARTICLE +#ifdef GRAVITY +//------------------------------------------------------------------------------------------------------- +// Function : Init_NewDiskRestart() +// Description : Add a new disk from an existing snapshot +// +// Note : Must enable OPT__RESTART_RESET and AddParWhenRestart +//------------------------------------------------------------------------------------------------------- +void Init_NewDiskRestart() +{ + + if ( AddParWhenRestart && !OPT__RESTART_RESET ) + Aux_Error( ERROR_INFO, "OPT__RESTART_RESET should be turned on to enable AddParWhenRestart !!\n" ); + + if ( amr->Par->Init != PAR_INIT_BY_RESTART || !OPT__RESTART_RESET || !AddParWhenRestart ) return; + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + + const long NNewPar = ( MPI_Rank == 0 ) ? AddParWhenRestartNPar : 0; + const long NPar_AllRank = NNewPar; + real_par *NewParAttFlt[PAR_NATT_FLT_TOTAL]; + long_par *NewParAttInt[PAR_NATT_INT_TOTAL]; + + for (int v=0; v = %ld != expect = %ld !!\n", + FileName, FileSize, ExpectSize ); + fclose( FileTemp ); + + Aux_Message( stdout, " Loading data ... " ); + + real_par *ParData_AllRank = new real_par [ NPar_AllRank*NParAtt ]; + +// note that fread() may fail for large files if sizeof(size_t) == 4 instead of 8 + FILE *File = fopen( FileName, "rb" ); + + for (int v=0; vSetSeed( 0, NewDisk_RSeed ); + + for (long p=0; pGetValue( 0, 0.0, 1.0 ); + R = 1.0; + + do + { + f = (1.0 + R) * exp(-R) + Ran - 1.0; + f_ = -R * exp(-R); + Rold = R; + R = R - f / f_; + } + while( fabs(R - Rold) / R > 1e-7 ); + + RanR = Disk_R*R; + phi = 2*M_PI*RNG->GetValue( 0, 0.0, 1.0 ); + RanVec[0] = RanR*cos(phi); + RanVec[1] = RanR*sin(phi); + RanVec[2] = 0; + for (int d=0; d<3; d++) Pos_AllRank[d][p] = RanVec[d] + Cen[d]; + + } // for ( long p = 0; p < NPar_AllRank; p++ ) + + delete RNG; + } // if ( MPI_Rank == 0 ) + } // if ( !AddParWhenRestartByFile ) + + +// add particles here + Par_AddParticleAfterInit( NNewPar, NewParAttFlt, NewParAttInt ); + +// free memory + for (int v=0; vLB->Par_Weight; +# else + const double Par_Weight = 0.0; +# endif +# ifdef LOAD_BALANCE + const UseLBFunc_t UseLB = USELB_YES; +# else + const UseLBFunc_t UseLB = USELB_NO; +# endif + + for (int lv=0; lvPar->Init != PAR_INIT_BY_RESTART || !OPT__RESTART_RESET || + !AddParWhenRestart || AddParWhenRestartByFile ) return; + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + +# ifndef SUPPORT_GSL + Aux_Error( ERROR_INFO, "SUPPORT_GSL must be enabled when AddParWhenRestart=1 and AddParWhenRestartByFile=0 !!\n" ); +# endif + + const long NPar_ThisRank = amr->Par->NPar_AcPlusInac; + long_par *ParType = amr->Par->Type; + real_par *ParPos[3] = { amr->Par->PosX, amr->Par->PosY, amr->Par->PosZ }; + real_par *ParVel[3] = { amr->Par->VelX, amr->Par->VelY, amr->Par->VelZ }; + real_par *ParAcc[3] = { amr->Par->AccX, amr->Par->AccY, amr->Par->AccZ }; + + real ParRadius[2]; + real NormParRadius[2]; + double V_acc, RanV[3], sigma; + double ParR; + +# ifdef SUPPORT_GSL +// initialize the RNG + gsl_rng *random_generator; + random_generator = gsl_rng_alloc(gsl_rng_ranlxd1); + gsl_rng_set(random_generator, NewDisk_RSeed + MPI_Rank); + + for (long p=0; p DispTable_r[DispTable_Nbin-1] ) + disp = DispTable_d[DispTable_Nbin-1]; + + else + disp = Mis_InterpolateFromTable( DispTable_Nbin, DispTable_r, DispTable_d, r ); + + return disp; + +} // FUNCTION : Get_Dispersion +#endif // #ifdef GRAVITY +#endif // #ifdef PARTICLE +#endif // #if ( MODEL == ELBDM ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_DiskHeating +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_DiskHeating() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM ) +// set the problem-specific runtime parameters + SetParameter(); + + +// set the function pointers + Init_Function_User_Ptr = SetGridIC; + BC_User_Ptr = BC; + End_User_Ptr = End_DiskHeating; +# ifdef GRAVITY + Init_ExtPot_Ptr = Init_ExtPot_Soliton; +# endif +# ifdef PARTICLE + Par_Init_ByFunction_Ptr = Par_Init_ByFunction_DiskHeating; + Init_User_Ptr = Init_NewDiskRestart; + Init_User_AfterPoisson_Ptr = Init_NewDiskVelocity; +# endif +# endif // #if ( MODEL == ELBDM ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_DiskHeating diff --git a/src/TestProblem/ELBDM/DiskHeating/Par_Init_ByFunction_DiskHeating.cpp b/src/TestProblem/ELBDM/DiskHeating/Par_Init_ByFunction_DiskHeating.cpp new file mode 100644 index 0000000000..c50920155c --- /dev/null +++ b/src/TestProblem/ELBDM/DiskHeating/Par_Init_ByFunction_DiskHeating.cpp @@ -0,0 +1,156 @@ +#include "GAMER.h" +#ifdef PARTICLE + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Par_Init_ByFile +// Description : Initialize particle attributes from a file +// +// Note : 1. Invoked by Init_GAMER() +// 2. Periodicity should be taken care of in this function +// --> No particles should lie outside the simulation box even for the periodic BC +// 3. Particles lying outside the active region will be removed later by Par_Aux_InitCheck() +// if non-periodic B.C. is adopted +// 4. Particles loaded here are only temporarily stored in this rank +// --> They will be redistributed when calling Par_FindHomePatch_UniformGrid() +// and LB_Init_LoadBalance() +// --> So there is no constraint on which particles should be set by this function +// 5. Currently the target file name is fixed to "PAR_IC" +// 6. The data format of the PAR_IC file is controlled by the runtime parameter "PAR_IC_FORMAT" +// --> PAR_IC_FORMAT_ATT_ID: [particle attribute][particle id] in a row-major order +// PAR_IC_FORMAT_ID_ATT: [particle id][particle attribute] in a row-major order +// 7 Currently it only loads particle mass, position x/y/z, and velocity x/y/z +// (and must be in the same order of PAR_MASS, PAR_POSX/Y/Z, and PAR_VELX/Y/Z) +// --> The mass of all particles can be set to PAR_IC_MASS instead (by having PAR_IC_MASS>=0.0) +// --> In this case, the PAR_IC file should exclude the partice mass data +// 8. For LOAD_BALANCE, the number of particles in each rank must be set in advance +// --> Currently it's set by Init_Parallelization() +// +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data +// +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt +//------------------------------------------------------------------------------------------------------- +void Par_Init_ByFunction_DiskHeating( const long NPar_ThisRank, const long NPar_AllRank, + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + +// NOTE: DiskHeatingParticleIC uses the floating-point type for particle type and assumes single precision + const char FileName[] = "DiskHeatingParticleIC"; + const long NParAllRank = amr->Par->NPar_Active_AllRank; + long NParThisRank = amr->Par->NPar_AcPlusInac; // cannot be "const" due to MPI_Allgather() + const int NParAtt = 8; // mass, pos*3, vel*3, type + + +// check + if ( !Aux_CheckFileExist(FileName) ) + Aux_Error( ERROR_INFO, "file \"%s\" does not exist !!\n", FileName ); + + FILE *FileTemp = fopen( FileName, "rb" ); + + fseek( FileTemp, 0, SEEK_END ); + + const long ExpectSize = long(NParAtt)*NParAllRank*sizeof(real); + const long FileSize = ftell( FileTemp ); + if ( FileSize != ExpectSize ) + Aux_Error( ERROR_INFO, "size of the file <%s> = %ld != expect = %ld !!\n", + FileName, FileSize, ExpectSize ); + + fclose( FileTemp ); + + MPI_Barrier( MPI_COMM_WORLD ); + + +// set the file offset for this rank + long NPar_EachRank[MPI_NRank], NPar_Check=0, FileOffset=0; + + MPI_Allgather( &NParThisRank, 1, MPI_LONG, NPar_EachRank, 1, MPI_LONG, MPI_COMM_WORLD ); + +// check if the total number of particles is correct + for (int r=0; rAttribute[] are the same + ParMass[p] = ParData1[0]; + ParPosX[p] = ParData1[1]; + ParPosY[p] = ParData1[2]; + ParPosZ[p] = ParData1[3]; + ParVelX[p] = ParData1[4]; + ParVelY[p] = ParData1[5]; + ParVelZ[p] = ParData1[6]; + ParType[p] = (long_par)ParData1[7]; // 1=CDM halo, 2=disk + +// synchronize all particles to the physical time at the base level + amr->Par->Time[p] = Time[0]; + } + + delete [] ParData_ThisRank; + delete [] ParData1; + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "done\n" ); + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Par_Init_ByFunction_DiskHeating + + + +#endif // #ifdef PARTICLE diff --git a/src/TestProblem/ELBDM/ExtPot/ExtPot_ELBDM_ExtPot.cpp b/src/TestProblem/ELBDM/ExtPot/ExtPot_ELBDM_ExtPot.cpp new file mode 100644 index 0000000000..716d6a4d2b --- /dev/null +++ b/src/TestProblem/ELBDM/ExtPot/ExtPot_ELBDM_ExtPot.cpp @@ -0,0 +1,178 @@ +#include "CUPOT.h" +#ifdef __CUDACC__ +#include "CUDA_CheckError.h" +#endif + +#ifdef GRAVITY + + + + +// ================================= +// I. Set auxiliary arrays +// ================================= + +#ifndef __CUDACC__ +extern double ELBDM_ExtPot_M; +extern double ELBDM_ExtPot_Cen[3]; + +//------------------------------------------------------------------------------------------------------- +// Function : SetExtPotAuxArray_ELBDM_ExtPot +// Description : Set the auxiliary arrays ExtPot_AuxArray_Flt/Int[] used by ExtPot_ELBDM_ExtPot() +// +// Note : 1. Invoked by Init_ExtPot_ELBDM_ExtPot() +// 2. AuxArray_Flt/Int[] have the size of EXT_POT_NAUX_MAX defined in Macro.h (default = 20) +// 3. Add "#ifndef __CUDACC__" since this routine is only useful on CPU +// +// Parameter : AuxArray_Flt/Int : Floating-point/Integer arrays to be filled up +// Time : Target physical time +// +// Return : AuxArray_Flt/Int[] +//------------------------------------------------------------------------------------------------------- +void SetExtPotAuxArray_ELBDM_ExtPot( double AuxArray_Flt[], int AuxArray_Int[], const double Time ) +{ + + AuxArray_Flt[0] = ELBDM_ExtPot_Cen[0]; + AuxArray_Flt[1] = ELBDM_ExtPot_Cen[1]; + AuxArray_Flt[2] = ELBDM_ExtPot_Cen[2]; + AuxArray_Flt[3] = ELBDM_ExtPot_M*NEWTON_G; + +} // FUNCTION : SetExtPotAuxArray_ELBDM_ExtPot +#endif // #ifndef __CUDACC__ + + + +// ================================= +// II. Specify external potential +// ================================= + +//----------------------------------------------------------------------------------------- +// Function : ExtPot_ELBDM_ExtPot +// Description : Calculate the external potential at the given coordinates and time +// +// Note : 1. This function is shared by CPU and GPU +// 2. Auxiliary arrays UserArray_Flt/Int[] are set by SetExtPotAuxArray_ELBDM_ExtPot(), where +// UserArray_Flt[0] = x coordinate of the external potential center +// UserArray_Flt[1] = y ... +// UserArray_Flt[2] = z .. +// UserArray_Flt[3] = gravitational_constant*point_source_mass +// 3. Currently it does not support the soften length +// 4. GenePtr has the size of EXT_POT_NGENE_MAX defined in Macro.h (default = 6) +// +// Parameter : x/y/z : Target spatial coordinates +// Time : Target physical time +// UserArray_Flt/Int : User-provided floating-point/integer auxiliary arrays +// Usage : Different usages of external potential when computing total potential on level Lv +// --> EXT_POT_USAGE_ADD : add external potential on Lv +// EXT_POT_USAGE_SUB : subtract external potential for preparing self-gravity potential on Lv-1 +// EXT_POT_USAGE_SUB_TINT: like SUB but for temporal interpolation +// --> This parameter is useless in most cases +// PotTable : 3D potential table used by EXT_POT_TABLE +// GenePtr : Array of pointers for general potential tables +// +// Return : External potential at (x,y,z,Time) +//----------------------------------------------------------------------------------------- +GPU_DEVICE_NOINLINE +static real ExtPot_ELBDM_ExtPot( const double x, const double y, const double z, const double Time, + const double UserArray_Flt[], const int UserArray_Int[], + const ExtPotUsage_t Usage, const real PotTable[], void **GenePtr ) +{ + + const double Cen[3] = { UserArray_Flt[0], UserArray_Flt[1], UserArray_Flt[2] }; + const real GM = (real)UserArray_Flt[3]; + const real dx = (real)(x - Cen[0]); + const real dy = (real)(y - Cen[1]); + const real dz = (real)(z - Cen[2]); + const real _r = 1.0/SQRT( dx*dx + dy*dy + dz*dz ); + + return -GM*_r; + +} // FUNCTION : ExtPot_ELBDM_ExtPot + + + +// ================================= +// III. Set initialization functions +// ================================= + +#ifdef __CUDACC__ +# define FUNC_SPACE __device__ static +#else +# define FUNC_SPACE static +#endif + +FUNC_SPACE ExtPot_t ExtPot_Ptr = ExtPot_ELBDM_ExtPot; + +//----------------------------------------------------------------------------------------- +// Function : SetCPU/GPUExtPot_ELBDM_ExtPot +// Description : Return the function pointers of the CPU/GPU external potential routines +// +// Note : 1. Invoked by Init_ExtPot_ELBDM_ExtPot() +// 2. Must obtain the CPU and GPU function pointers by **separate** routines +// since CPU and GPU functions are compiled completely separately in GAMER +// --> In other words, a unified routine like the following won't work +// +// SetExtPot_ELBDM_ExtPot( ExtPot_t &CPUExtPot_Ptr, ExtPot_t &GPUExtPot_Ptr ) +// +// Parameter : CPU/GPUExtPot_Ptr (call-by-reference) +// +// Return : CPU/GPUExtPot_Ptr +//----------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__host__ +void SetGPUExtPot_ELBDM_ExtPot( ExtPot_t &GPUExtPot_Ptr ) +{ + CUDA_CHECK_ERROR( cudaMemcpyFromSymbol( &GPUExtPot_Ptr, ExtPot_Ptr, sizeof(ExtPot_t) ) ); +} + +#else // #ifdef __CUDACC__ + +void SetCPUExtPot_ELBDM_ExtPot( ExtPot_t &CPUExtPot_Ptr ) +{ + CPUExtPot_Ptr = ExtPot_Ptr; +} + +#endif // #ifdef __CUDACC__ ... else ... + + + +#ifndef __CUDACC__ + +// local function prototypes +void SetExtPotAuxArray_ELBDM_ExtPot( double [], int [], const double ); +void SetCPUExtPot_ELBDM_ExtPot( ExtPot_t & ); +#ifdef GPU +void SetGPUExtPot_ELBDM_ExtPot( ExtPot_t & ); +#endif + +//----------------------------------------------------------------------------------------- +// Function : Init_ExtPot_ELBDM_ExtPot +// Description : Initialize external potential +// +// Note : 1. Set auxiliary arrays by invoking SetExtPotAuxArray_*() +// --> They will be copied to GPU automatically in CUAPI_SetConstMemory() +// 2. Set the CPU/GPU external potential major routines by invoking SetCPU/GPUExtPot_*() +// 3. Invoked by Init_ExtAccPot() +// --> Enable it by linking to the function pointer "Init_ExtPot_Ptr" +// 4. Add "#ifndef __CUDACC__" since this routine is only useful on CPU +// +// Parameter : None +// +// Return : None +//----------------------------------------------------------------------------------------- +void Init_ExtPot_ELBDM_ExtPot() +{ + + SetExtPotAuxArray_ELBDM_ExtPot( ExtPot_AuxArray_Flt, ExtPot_AuxArray_Int, Time[0] ); + SetCPUExtPot_ELBDM_ExtPot( CPUExtPot_Ptr ); +# ifdef GPU + SetGPUExtPot_ELBDM_ExtPot( GPUExtPot_Ptr ); +# endif + +} // FUNCTION : Init_ExtPot_ELBDM_ExtPot + +#endif // #ifndef __CUDACC__ + + + +#endif // #ifdef GRAVITY diff --git a/src/TestProblem/ELBDM/ExtPot/ExtPot_ELBDM_ExtPot.cu b/src/TestProblem/ELBDM/ExtPot/ExtPot_ELBDM_ExtPot.cu new file mode 120000 index 0000000000..65328fac9c --- /dev/null +++ b/src/TestProblem/ELBDM/ExtPot/ExtPot_ELBDM_ExtPot.cu @@ -0,0 +1 @@ +ExtPot_ELBDM_ExtPot.cpp \ No newline at end of file diff --git a/src/TestProblem/ELBDM/ExtPot/Init_TestProb_ELBDM_ExtPot.cpp b/src/TestProblem/ELBDM/ExtPot/Init_TestProb_ELBDM_ExtPot.cpp index e1c9debb97..cff5767f15 100644 --- a/src/TestProblem/ELBDM/ExtPot/Init_TestProb_ELBDM_ExtPot.cpp +++ b/src/TestProblem/ELBDM/ExtPot/Init_TestProb_ELBDM_ExtPot.cpp @@ -1,25 +1,19 @@ #include "GAMER.h" -static void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, - const int GhostSize, const int idx[], const double pos[], const double Time, - const int lv, const int TFluVarIdxList[], double AuxArray[] ); - -static void Init_ExtPot(); - // problem-specific global variables // ======================================================================================= -static double ExtPot_Amp; // initial wave function amplitude -static double ExtPot_M; // point source mass -static double ExtPot_Cen[3]; // point source position +static double ELBDM_ExtPot_Amp; // initial wave function amplitude + double ELBDM_ExtPot_M; // point source mass + double ELBDM_ExtPot_Cen[3]; // point source position // ======================================================================================= // external potential routines -void SetCPUExtPot_PointMass( ExtPot_t &CPUExtPot_Ptr ); -# ifdef GPU -void SetGPUExtPot_PointMass( ExtPot_t &GPUExtPot_Ptr ); -# endif +void Init_ExtPot_ELBDM_ExtPot(); +static void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ); @@ -57,8 +51,8 @@ void Validate() # endif # ifdef GRAVITY - if ( !OPT__EXT_POT ) - Aux_Error( ERROR_INFO, "OPT__EXT_POT must be enabled !!\n" ); + if ( OPT__EXT_POT != EXT_POT_FUNC ) + Aux_Error( ERROR_INFO, "OPT__EXT_POT != EXT_POT_FUNC (%d) !!\n", EXT_POT_FUNC ); # endif @@ -98,13 +92,13 @@ void SetParameter() // --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type // --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" // ******************************************************************************************************************************** -// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); // ******************************************************************************************************************************** - ReadPara->Add( "ExtPot_Amp", &ExtPot_Amp, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "ExtPot_M", &ExtPot_M, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "ExtPot_Cen_X", &ExtPot_Cen[0], -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "ExtPot_Cen_Y", &ExtPot_Cen[1], -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "ExtPot_Cen_Z", &ExtPot_Cen[2], -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "ELBDM_ExtPot_Amp", &ELBDM_ExtPot_Amp, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "ELBDM_ExtPot_M", &ELBDM_ExtPot_M, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "ELBDM_ExtPot_Cen_X", &ELBDM_ExtPot_Cen[0], -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "ELBDM_ExtPot_Cen_Y", &ELBDM_ExtPot_Cen[1], -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "ELBDM_ExtPot_Cen_Z", &ELBDM_ExtPot_Cen[2], -1.0, NoMin_double, NoMax_double ); ReadPara->Read( FileName ); @@ -112,7 +106,7 @@ void SetParameter() // set the default center for (int d=0; d<3; d++) - if ( ExtPot_Cen[d] < 0.0 ) ExtPot_Cen[d] = 0.5*amr->BoxSize[d]; + if ( ELBDM_ExtPot_Cen[d] < 0.0 ) ELBDM_ExtPot_Cen[d] = 0.5*amr->BoxSize[d]; // (2) set the problem-specific derived parameters @@ -139,11 +133,11 @@ void SetParameter() { Aux_Message( stdout, "=============================================================================\n" ); Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); - Aux_Message( stdout, " wave function amplitude = %13.7e\n", ExtPot_Amp ); - Aux_Message( stdout, " point source mass = %13.7e\n", ExtPot_M ); - Aux_Message( stdout, " point source position = (%13.7e, %13.7e, %13.7e)\n", ExtPot_Cen[0], - ExtPot_Cen[1], - ExtPot_Cen[2] ); + Aux_Message( stdout, " wave function amplitude = %13.7e\n", ELBDM_ExtPot_Amp ); + Aux_Message( stdout, " point source mass = %13.7e\n", ELBDM_ExtPot_M ); + Aux_Message( stdout, " point source position = (%13.7e, %13.7e, %13.7e)\n", ELBDM_ExtPot_Cen[0], + ELBDM_ExtPot_Cen[1], + ELBDM_ExtPot_Cen[2] ); Aux_Message( stdout, "=============================================================================\n" ); } @@ -175,13 +169,25 @@ void SetGridIC( real fluid[], const double x, const double y, const double z, co const int lv, double AuxArray[] ) { - const double r = sqrt( SQR(x-ExtPot_Cen[0]) + SQR(y-ExtPot_Cen[1]) + SQR(z-ExtPot_Cen[2]) ); - const double Coeff = 2.0*SQR(ELBDM_ETA)*NEWTON_G*ExtPot_M; + const double r = sqrt( SQR(x-ELBDM_ExtPot_Cen[0]) + SQR(y-ELBDM_ExtPot_Cen[1]) + SQR(z-ELBDM_ExtPot_Cen[2]) ); + const double Coeff = 2.0*SQR(ELBDM_ETA)*NEWTON_G*ELBDM_ExtPot_M; const double R = sqrt( Coeff*r ); + const double Re = ELBDM_ExtPot_Amp*j1( 2.0*R )/R; + const double Im = 0.0; // imaginary part is always zero --> no initial velocity - fluid[REAL] = ExtPot_Amp*j1( 2.0*R )/R; - fluid[IMAG] = 0.0; // imaginary part is always zero --> no initial velocity - fluid[DENS] = SQR( fluid[REAL] ) + SQR( fluid[IMAG] ); + fluid[DENS] = SQR( Re ) + SQR( Im ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Re; + fluid[IMAG] = 0.0; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = 0.0; + fluid[STUB] = 0.0; + } +# endif } // FUNCTION : SetGridIC @@ -193,11 +199,17 @@ void SetGridIC( real fluid[], const double x, const double y, const double z, co // // Note : 1. Linked to the function pointer "BC_User_Ptr" // -// Parameter : fluid : Fluid field to be set -// x/y/z : Physical coordinates -// Time : Physical time -// lv : Refinement level -// AuxArray : Auxiliary array +// Parameter : Array : Array to store the prepared data including ghost zones +// ArraySize : Size of Array including the ghost zones on each side +// fluid : Fluid fields to be set +// NVar_Flu : Number of fluid variables to be prepared +// GhostSize : Number of ghost zones +// idx : Array indices +// pos : Physical coordinates +// Time : Physical time +// lv : Refinement level +// TFluVarIdxList : List recording the target fluid variable indices ( = [0 ... NCOMP_TOTAL-1] ) +// AuxArray : Auxiliary array // // Return : fluid //------------------------------------------------------------------------------------------------------- @@ -206,33 +218,10 @@ void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, const int lv, const int TFluVarIdxList[], double AuxArray[] ) { +// simply call the IC function SetGridIC( fluid, pos[0], pos[1], pos[2], Time, lv, AuxArray ); } // FUNCTION : BC - - - -//------------------------------------------------------------------------------------------------------- -// Function : Init_ExtPotAuxArray_ExtPotTest -// Description : Set the auxiliary array ExtPot_AuxArray[] used by the external potential routine -// -// Note : 1. External potential can be enabled by the runtime option "OPT__EXT_POT" -// 2. Link to the function pointer "Init_ExtPotAuxArray_Ptr" -// 3. AuxArray[] has the size of EXT_POT_NAUX_MAX defined in Macro.h (default = 20) -// -// Parameter : AuxArray : Array to be filled up -// -// Return : AuxArray[] -//------------------------------------------------------------------------------------------------------- -void Init_ExtPotAuxArray_ExtPotTest( double AuxArray[] ) -{ - - AuxArray[0] = ExtPot_Cen[0]; - AuxArray[1] = ExtPot_Cen[1]; - AuxArray[2] = ExtPot_Cen[2]; - AuxArray[3] = ExtPot_M*NEWTON_G; - -} // FUNCTION : Init_ExtPotAuxArray_ExtPotTest #endif // #if ( MODEL == ELBDM && defined GRAVITY ) @@ -263,13 +252,9 @@ void Init_TestProb_ELBDM_ExtPot() // set the function pointers of various problem-specific routines - Init_Function_User_Ptr = SetGridIC; - BC_User_Ptr = BC; - Init_ExtPotAuxArray_Ptr = Init_ExtPotAuxArray_ExtPotTest; - SetCPUExtPot_Ptr = SetCPUExtPot_PointMass; -# ifdef GPU - SetGPUExtPot_Ptr = SetGPUExtPot_PointMass; -# endif + Init_Function_User_Ptr = SetGridIC; + BC_User_Ptr = BC; + Init_ExtPot_Ptr = Init_ExtPot_ELBDM_ExtPot; # endif // #if ( MODEL == ELBDM && defined GRAVITY ) diff --git a/src/TestProblem/ELBDM/GaussianWavePacket/Init_TestProb_ELBDM_GaussianWavePacket.cpp b/src/TestProblem/ELBDM/GaussianWavePacket/Init_TestProb_ELBDM_GaussianWavePacket.cpp new file mode 100644 index 0000000000..c4b74dd91a --- /dev/null +++ b/src/TestProblem/ELBDM/GaussianWavePacket/Init_TestProb_ELBDM_GaussianWavePacket.cpp @@ -0,0 +1,318 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static double Gau_v0; // mean velocity +static double Gau_Width; // Gaussian width +static double Gau_Center; // Gaussian center +static int Gau_XYZ; // wave propagation direction (0/1/2 --> x/y/z) +static int Gau_PeriodicN;// periodic boundary condition + // (0 = non-periodic, >0 = number of periodic images each side) +// ======================================================================================= + +static void OutputError(); +static void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifdef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be disabled !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + + +// warnings + if ( MPI_Rank == 0 ) + { + if ( !OPT__OUTPUT_USER ) + Aux_Message( stderr, "WARNING : it's recommended to enable OPT__OUTPUT_USER !!\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "Gau_v0", &Gau_v0, 1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Gau_Width", &Gau_Width, 0.1, Eps_double, NoMax_double ); + ReadPara->Add( "Gau_Center", &Gau_Center, NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "Gau_XYZ", &Gau_XYZ, 0, 0, 2 ); + ReadPara->Add( "Gau_PeriodicN", &Gau_PeriodicN, 0, 0, NoMax_int ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + if ( Gau_Center == NoDef_double ) Gau_Center = amr->BoxCenter[Gau_XYZ]; + +// (1-3) check the runtime parameters + if ( MPI_Rank == 0 ) + { + if ( OPT__BC_FLU[2*Gau_XYZ] == BC_FLU_PERIODIC && Gau_PeriodicN == 0 ) + Aux_Message( stderr, "WARNING : Gau_PeriodicN should be >0 when adopting periodic BC for fluid !!\n" ); + } + + +// (2) set the problem-specific derived parameters + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 0.50*amr->BoxSize[Gau_XYZ]/fabs( Gau_v0 ); + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " mean velocity = %14.7e\n", Gau_v0 ); + Aux_Message( stdout, " Gaussian width = %14.7e\n", Gau_Width ); + Aux_Message( stdout, " Gaussian center = %14.7e\n", Gau_Center ); + Aux_Message( stdout, " propagation direction = %d\n", Gau_XYZ ); + Aux_Message( stdout, " number of periodic image each side = %d\n", Gau_PeriodicN ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + double r; + switch ( Gau_XYZ ) + { + case 0: r = x; break; + case 1: r = y; break; + case 2: r = z; break; + + default : Aux_Error( ERROR_INFO, "incorrect Gau_XYZ (%d) !!\n", Gau_XYZ ); + break; + } + + const double Gau_Const1 = 1.0 + pow( Time / ( ELBDM_ETA*SQR(Gau_Width) ), 2.0 ); + const double Gau_Theta1 = -0.5*acos( pow( Gau_Const1, -0.5 ) ); + double Re=0.0, Im=0.0; + +// n=0, m=0: original wave packet +// n>0, m=0/1: images for periodic BC on the plus(+)/minus(-) direction + for (int n=0; nBoxSize[Gau_XYZ]; + const double dr1 = r - Gau_v0*Time - Center; + const double dr2 = r - 0.5*Gau_v0*Time - Center; + const double Gau_Const2 = pow( SQR(Gau_Width)*M_PI*Gau_Const1, -0.25 ) + *exp( -0.5*pow( dr1/Gau_Width, 2.0 )/Gau_Const1 ); + const double Gau_Theta2 = 0.5*pow( dr1, 2.0 )*ELBDM_ETA*Time/( pow( ELBDM_ETA*SQR(Gau_Width), 2.0) + SQR(Time) ) + + Gau_v0*ELBDM_ETA*dr2; + + Re += Gau_Const2*cos( Gau_Theta1 + Gau_Theta2 ); + Im += Gau_Const2*sin( Gau_Theta1 + Gau_Theta2 ); + }} + + fluid[DENS] = SQR( Re ) + SQR( Im ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Re; + fluid[IMAG] = Im; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = SATAN2( Im, Re ); + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : OutputError +// Description : Output the L1 error +// +// Note : 1. Invoke Output_L1Error() +// 2. Use SetGridIC() to provide the analytical solution at any given time +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void OutputError() +{ + + const char Prefix[100] = "Gaussian"; + const OptOutputPart_t Part = OUTPUT_X + Gau_XYZ; + + Output_L1Error( SetGridIC, NULL, Prefix, Part, OUTPUT_PART_X, OUTPUT_PART_Y, OUTPUT_PART_Z ); + +} // FUNCTION : OutputError + + + +//------------------------------------------------------------------------------------------------------- +// Function : BC +// Description : Set the extenral boundary condition to the analytical solution +// +// Note : 1. Linked to the function pointer "BC_User_Ptr" +// +// Parameter : Array : Array to store the prepared data including ghost zones +// ArraySize : Size of Array including the ghost zones on each side +// fluid : Fluid fields to be set +// NVar_Flu : Number of fluid variables to be prepared +// GhostSize : Number of ghost zones +// idx : Array indices +// pos : Physical coordinates +// Time : Physical time +// lv : Refinement level +// TFluVarIdxList : List recording the target fluid variable indices ( = [0 ... NCOMP_TOTAL-1] ) +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ) +{ + +// simply call the IC function + SetGridIC( fluid, pos[0], pos[1], pos[2], Time, lv, AuxArray ); + +} // FUNCTION : BC +#endif // #if ( MODEL == ELBDM ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_GaussianWavePacket +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_GaussianWavePacket() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; + BC_User_Ptr = BC; + Output_User_Ptr = OutputError; +# endif // #if ( MODEL == ELBDM ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_GaussianWavePacket diff --git a/src/TestProblem/ELBDM/HaloMerger/ExtPot_ELBDM_HaloMerger.cpp b/src/TestProblem/ELBDM/HaloMerger/ExtPot_ELBDM_HaloMerger.cpp new file mode 100644 index 0000000000..d2eb3285e7 --- /dev/null +++ b/src/TestProblem/ELBDM/HaloMerger/ExtPot_ELBDM_HaloMerger.cpp @@ -0,0 +1,201 @@ +#include "CUPOT.h" +#ifdef __CUDACC__ +#include "CUDA_CheckError.h" +#endif + +#ifdef GRAVITY + + + + +// ================================= +// I. Set auxiliary arrays +// ================================= + +#ifndef __CUDACC__ +extern double HaloMerger_ExtPot_UniDenSph_CenCoordX; +extern double HaloMerger_ExtPot_UniDenSph_CenCoordY; +extern double HaloMerger_ExtPot_UniDenSph_CenCoordZ; +extern double HaloMerger_ExtPot_UniDenSph_VelocityX; +extern double HaloMerger_ExtPot_UniDenSph_VelocityY; +extern double HaloMerger_ExtPot_UniDenSph_VelocityZ; +extern double HaloMerger_ExtPot_UniDenSph_M; +extern double HaloMerger_ExtPot_UniDenSph_R; + +//------------------------------------------------------------------------------------------------------- +// Function : SetExtPotAuxArray_ELBDM_HaloMerger +// Description : Set the auxiliary arrays ExtPot_AuxArray_Flt/Int[] used by ExtPot_ELBDM_HaloMerger() +// +// Note : 1. Invoked by Init_ExtPot_ELBDM_HaloMerger() +// 2. AuxArray_Flt/Int[] have the size of EXT_POT_NAUX_MAX defined in Macro.h (default = 20) +// 3. Add "#ifndef __CUDACC__" since this routine is only useful on CPU +// +// Parameter : AuxArray_Flt/Int : Floating-point/Integer arrays to be filled up +// Time : Target physical time +// +// Return : AuxArray_Flt/Int[] +//------------------------------------------------------------------------------------------------------- +void SetExtPotAuxArray_ELBDM_HaloMerger( double AuxArray_Flt[], int AuxArray_Int[], const double Time ) +{ + + AuxArray_Flt[0] = HaloMerger_ExtPot_UniDenSph_CenCoordX; + AuxArray_Flt[1] = HaloMerger_ExtPot_UniDenSph_CenCoordY; + AuxArray_Flt[2] = HaloMerger_ExtPot_UniDenSph_CenCoordZ; + AuxArray_Flt[3] = HaloMerger_ExtPot_UniDenSph_VelocityX; + AuxArray_Flt[4] = HaloMerger_ExtPot_UniDenSph_VelocityY; + AuxArray_Flt[5] = HaloMerger_ExtPot_UniDenSph_VelocityZ; + AuxArray_Flt[6] = NEWTON_G*HaloMerger_ExtPot_UniDenSph_M; + AuxArray_Flt[7] = HaloMerger_ExtPot_UniDenSph_R; + +} // FUNCTION : SetExtPotAuxArray_ELBDM_HaloMerger +#endif // #ifndef __CUDACC__ + + + +// ================================= +// II. Specify external potential +// ================================= + +//----------------------------------------------------------------------------------------- +// Function : ExtPot_ELBDM_HaloMerger +// Description : Calculate the external potential at the given coordinates and time +// +// Note : 1. This function is shared by CPU and GPU +// 2. Auxiliary arrays UserArray_Flt/Int[] are set by SetExtPotAuxArray_ELBDM_HaloMerger(), where +// UserArray_Flt[0] = x coordinate of the external potential center +// UserArray_Flt[1] = y ... +// UserArray_Flt[2] = z .. +// UserArray_Flt[3] = x component of the velocity of the external potential center +// UserArray_Flt[4] = y component of the velocity of the external potential center +// UserArray_Flt[5] = z component of the velocity of the external potential center +// UserArray_Flt[6] = gravitational_constant*sphere_mass +// UserArray_Flt[7] = sphere_radius +// 3. Currently it does not support the soften length +// 4. GenePtr has the size of EXT_POT_NGENE_MAX defined in Macro.h (default = 6) +// +// Parameter : x/y/z : Target spatial coordinates +// Time : Target physical time +// UserArray_Flt/Int : User-provided floating-point/integer auxiliary arrays +// Usage : Different usages of external potential when computing total potential on level Lv +// --> EXT_POT_USAGE_ADD : add external potential on Lv +// EXT_POT_USAGE_SUB : subtract external potential for preparing self-gravity potential on Lv-1 +// EXT_POT_USAGE_SUB_TINT: like SUB but for temporal interpolation +// --> This parameter is useless in most cases +// PotTable : 3D potential table used by EXT_POT_TABLE +// GenePtr : Array of pointers for general potential tables +// +// Return : External potential at (x,y,z,Time) +//----------------------------------------------------------------------------------------- +GPU_DEVICE_NOINLINE +static real ExtPot_ELBDM_HaloMerger( const double x, const double y, const double z, const double Time, + const double UserArray_Flt[], const int UserArray_Int[], + const ExtPotUsage_t Usage, const real PotTable[], void **GenePtr ) +{ + + const double Cen[3] = { UserArray_Flt[0], UserArray_Flt[1], UserArray_Flt[2] }; + const double Vel[3] = { UserArray_Flt[3], UserArray_Flt[4], UserArray_Flt[5] }; + const real GM = (real)UserArray_Flt[6]; + const real R = (real)UserArray_Flt[7]; + const real dx = (real)(x - Cen[0] - Vel[0]*Time); + const real dy = (real)(y - Cen[1] - Vel[1]*Time); + const real dz = (real)(z - Cen[2] - Vel[2]*Time); + const real r = SQRT( dx*dx + dy*dy + dz*dz ); + const real _r = (real)1.0/r; + const real GM_2R3 = GM/((real)2.0*CUBE(R)); + const real Offset = (real)0.75*(GM/R); // Shift the potential to reduce the absolute value of potential + // and thus increase the time step + + if ( r >= R ) + return -GM*_r + Offset; + else + return GM_2R3*(r*r-(real)3.0*R*R) + Offset; + +} // FUNCTION : ExtPot_ELBDM_HaloMerger + + + +// ================================= +// III. Set initialization functions +// ================================= + +#ifdef __CUDACC__ +# define FUNC_SPACE __device__ static +#else +# define FUNC_SPACE static +#endif + +FUNC_SPACE ExtPot_t ExtPot_Ptr = ExtPot_ELBDM_HaloMerger; + +//----------------------------------------------------------------------------------------- +// Function : SetCPU/GPUExtPot_ELBDM_HaloMerger +// Description : Return the function pointers of the CPU/GPU external potential routines +// +// Note : 1. Invoked by Init_ExtPot_ELBDM_HaloMerger() +// 2. Must obtain the CPU and GPU function pointers by **separate** routines +// since CPU and GPU functions are compiled completely separately in GAMER +// --> In other words, a unified routine like the following won't work +// +// SetExtPot_ELBDM_HaloMerger( ExtPot_t &CPUExtPot_Ptr, ExtPot_t &GPUExtPot_Ptr ) +// +// Parameter : CPU/GPUExtPot_Ptr (call-by-reference) +// +// Return : CPU/GPUExtPot_Ptr +//----------------------------------------------------------------------------------------- +#ifdef __CUDACC__ +__host__ +void SetGPUExtPot_ELBDM_HaloMerger( ExtPot_t &GPUExtPot_Ptr ) +{ + CUDA_CHECK_ERROR( cudaMemcpyFromSymbol( &GPUExtPot_Ptr, ExtPot_Ptr, sizeof(ExtPot_t) ) ); +} + +#else // #ifdef __CUDACC__ + +void SetCPUExtPot_ELBDM_HaloMerger( ExtPot_t &CPUExtPot_Ptr ) +{ + CPUExtPot_Ptr = ExtPot_Ptr; +} + +#endif // #ifdef __CUDACC__ ... else ... + + + +#ifndef __CUDACC__ + +// local function prototypes +void SetExtPotAuxArray_ELBDM_HaloMerger( double [], int [], const double ); +void SetCPUExtPot_ELBDM_HaloMerger( ExtPot_t & ); +#ifdef GPU +void SetGPUExtPot_ELBDM_HaloMerger( ExtPot_t & ); +#endif + +//----------------------------------------------------------------------------------------- +// Function : Init_ExtPot_ELBDM_HaloMerger +// Description : Initialize external potential +// +// Note : 1. Set auxiliary arrays by invoking SetExtPotAuxArray_*() +// --> They will be copied to GPU automatically in CUAPI_SetConstMemory() +// 2. Set the CPU/GPU external potential major routines by invoking SetCPU/GPUExtPot_*() +// 3. Invoked by Init_ExtAccPot() +// --> Enable it by linking to the function pointer "Init_ExtPot_Ptr" +// 4. Add "#ifndef __CUDACC__" since this routine is only useful on CPU +// +// Parameter : None +// +// Return : None +//----------------------------------------------------------------------------------------- +void Init_ExtPot_ELBDM_HaloMerger() +{ + + SetExtPotAuxArray_ELBDM_HaloMerger( ExtPot_AuxArray_Flt, ExtPot_AuxArray_Int, Time[0] ); + SetCPUExtPot_ELBDM_HaloMerger( CPUExtPot_Ptr ); +# ifdef GPU + SetGPUExtPot_ELBDM_HaloMerger( GPUExtPot_Ptr ); +# endif + +} // FUNCTION : Init_ExtPot_ELBDM_HaloMerger + +#endif // #ifndef __CUDACC__ + + + +#endif // #ifdef GRAVITY diff --git a/src/TestProblem/ELBDM/HaloMerger/ExtPot_ELBDM_HaloMerger.cu b/src/TestProblem/ELBDM/HaloMerger/ExtPot_ELBDM_HaloMerger.cu new file mode 120000 index 0000000000..0588af37a8 --- /dev/null +++ b/src/TestProblem/ELBDM/HaloMerger/ExtPot_ELBDM_HaloMerger.cu @@ -0,0 +1 @@ +ExtPot_ELBDM_HaloMerger.cpp \ No newline at end of file diff --git a/src/TestProblem/ELBDM/HaloMerger/Init_TestProb_ELBDM_HaloMerger.cpp b/src/TestProblem/ELBDM/HaloMerger/Init_TestProb_ELBDM_HaloMerger.cpp new file mode 100644 index 0000000000..91c4cd7f9e --- /dev/null +++ b/src/TestProblem/ELBDM/HaloMerger/Init_TestProb_ELBDM_HaloMerger.cpp @@ -0,0 +1,1640 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static int HaloMerger_Halo_Num; // total number of halos +static int HaloMerger_Halo_InitMode; // halo initialization mode (1=single-level HALO_IC of real and imaginary parts) +static int HaloMerger_Soliton_Num; // total number of solitons +static int HaloMerger_Soliton_InitMode; // soliton initialization mode (1=table of the density profile, 2=analytical function of the density profile) + int HaloMerger_ParCloud_Num; // total number of particle clouds + int HaloMerger_ParCloud_InitMode; // particle cloud initialization mode (1=table of the density profile) + +// External potential-related parameters to read from the input + double HaloMerger_ExtPot_UniDenSph_M; // mass of the uniform-density sphere for the external potential (must >= 0.0) + double HaloMerger_ExtPot_UniDenSph_R; // radius of the uniform-density sphere for the external potential (must > 0.0) + double HaloMerger_ExtPot_UniDenSph_CenCoordX; // x/y/z-coordinate of the center of the uniform-density sphere for the external potential (<0.0=auto -> box center) + double HaloMerger_ExtPot_UniDenSph_CenCoordY; + double HaloMerger_ExtPot_UniDenSph_CenCoordZ; + double HaloMerger_ExtPot_UniDenSph_VelocityX; // x/y/z-component of the velocity of the uniform-density sphere for the external potential + double HaloMerger_ExtPot_UniDenSph_VelocityY; + double HaloMerger_ExtPot_UniDenSph_VelocityZ; + +// Halo-related internal variables +static double (*HaloMerger_Halo_CenCoord)[3] = NULL; // center coordinates of each halo +static double (*HaloMerger_Halo_Velocity)[3] = NULL; // bulk velocity of each halo +static char (*HaloMerger_Halo_HALO_IC_Filename)[MAX_STRING] = NULL; // HALO_IC filename of each halo +static double (*HaloMerger_Halo_HALO_IC_BoxLen)[3] = NULL; // physical length of HALO_IC box of each halo +static int (*HaloMerger_Halo_HALO_IC_NCells)[3] = NULL; // number of cells of HALO_IC of each halo +static int *HaloMerger_Halo_HALO_IC_Float8 = NULL; // data precision of HALO_IC of each halo +static double (*HaloMerger_Halo_HALO_IC_dh)[3] = NULL; // grid size of each halo +static double (*HaloMerger_Halo_HALO_IC_Range_EdgeL)[3] = NULL; // left edge of the range of each halo +static double (*HaloMerger_Halo_HALO_IC_Range_EdgeR)[3] = NULL; // right edge of the range of each halo +static char **HaloMerger_Halo_HALO_IC_Data = NULL; // array to store the data read from HALO_IC + +// Soliton-related internal variables +static double *HaloMerger_Soliton_CoreRadius = NULL; // core radius of each soliton +static double *HaloMerger_Soliton_CoreRho = NULL; // peak density of each soliton +static double (*HaloMerger_Soliton_CenCoord)[3] = NULL; // center coordinates of each soliton +static double (*HaloMerger_Soliton_Velocity)[3] = NULL; // bulk velocity of each soliton +static double *HaloMerger_Soliton_OuterSlope = NULL; // outer slope of the analytical density profile of each soliton +static char (*HaloMerger_Soliton_DensProf_Filename)[MAX_STRING] = NULL; // filename of the density profile table of each soliton +static int *HaloMerger_Soliton_DensProf_NBin = NULL; // number of bins of the density profile table +static bool *HaloMerger_Soliton_DensProf_Rescale = NULL; // whether to scale the density profile table of each soliton +static double *HaloMerger_Soliton_DensProf_ScaleL = NULL; // L/D: length/density scale factors of each soliton +static double *HaloMerger_Soliton_DensProf_ScaleD = NULL; // (defined as the ratio between the core radii/peak + // density of the target and reference soliton profiles) +static double **HaloMerger_Soliton_DensProf = NULL; // array to store the density profile read from table + +// ParCloud-related internal variables + double (*HaloMerger_ParCloud_CenCoord)[3] = NULL; // center coordinates of each particle cloud + double (*HaloMerger_ParCloud_Velocity)[3] = NULL; // bulk velocity of each particle cloud + char (*HaloMerger_ParCloud_DensProf_Filename)[MAX_STRING] = NULL; // filename of the density profile table of each particle cloud + double *HaloMerger_ParCloud_DensProf_MaxR = NULL; // maximum radius for particles of each particle cloud + int *HaloMerger_ParCloud_RSeed = NULL; // random seed for particles of each particle cloud + long *HaloMerger_ParCloud_NPar = NULL; // number of particles of each particle cloud +// ======================================================================================= + +#if ( MODEL == ELBDM && defined GRAVITY ) +// external potential routine +// ======================================================================================= +void Init_ExtPot_ELBDM_HaloMerger(); + +// external particle initialization routine +// ======================================================================================= +#ifdef MASSIVE_PARTICLES +void Par_Init_ByFunction_HaloMerger( const long NPar_ThisRank, const long NPar_AllRank, + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ); +#endif + +// problem-specific functions +// ======================================================================================= +static void HaloMerger_Add_Velocity( double *RealPart, double *ImagPart, + const double Velocity_X, const double Velocity_Y, const double Velocity_Z, + const double Position_X, const double Position_Y, const double Position_Z ); + +static double HaloMerger_Trilinear_Interpolation( const double Target_X, const double Target_Y, const double Target_Z, + const double Ref_Value[2][2][2], + const double Ref_X[2], const double Ref_Y[2], const double Ref_Z[2] ); + +static double HaloMerger_Get_Value_From_HALO_IC_Data( const double x, const double y, const double z, const int v, const int index_halo ); +// ======================================================================================= +#endif // #if ( MODEL == ELBDM && defined GRAVITY ) + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifndef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be enabled !!\n" ); +# endif + +# ifdef COMOVING + Aux_Error( ERROR_INFO, "COMOVING must be disabled !!\n" ); +# endif + +# ifdef PARTICLE +# ifndef SUPPORT_GSL + Aux_Error( ERROR_INFO, "SUPPORT_GSL must be enabled !!\n" ); +# endif +# endif + + if ( !OPT__UNIT ) + Aux_Error( ERROR_INFO, "OPT__UNIT must be enabled !!\n" ); + + for (int f=0; f<6; f++) + if ( OPT__BC_FLU[f] != BC_FLU_PERIODIC ) + Aux_Error( ERROR_INFO, "must adopt periodic BC for fluid --> reset OPT__BC_FLU* !!\n" ); + +// warnings + if ( MPI_Rank == 0 ) + { + if ( !OPT__INIT_RESTRICT ) + Aux_Message( stderr, "WARNING : it's recommended to enable OPT__INIT_RESTRICT !!\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM && defined GRAVITY ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "HaloMerger_Halo_Num", &HaloMerger_Halo_Num, 2, 0, NoMax_int ); + ReadPara->Add( "HaloMerger_Halo_InitMode", &HaloMerger_Halo_InitMode, 1, 1, 1 ); + ReadPara->Add( "HaloMerger_Soliton_Num", &HaloMerger_Soliton_Num, 0, 0, NoMax_int ); + ReadPara->Add( "HaloMerger_Soliton_InitMode", &HaloMerger_Soliton_InitMode, 1, 1, 2 ); + ReadPara->Add( "HaloMerger_ParCloud_Num", &HaloMerger_ParCloud_Num, 0, 0, NoMax_int ); + ReadPara->Add( "HaloMerger_ParCloud_InitMode", &HaloMerger_ParCloud_InitMode, 1, 1, 1 ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_M", &HaloMerger_ExtPot_UniDenSph_M, 0.0, 0.0, NoMax_double ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_R", &HaloMerger_ExtPot_UniDenSph_R, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_CenCoordX", &HaloMerger_ExtPot_UniDenSph_CenCoordX, -1.0, NoMin_double, amr->BoxEdgeR[0] ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_CenCoordY", &HaloMerger_ExtPot_UniDenSph_CenCoordY, -1.0, NoMin_double, amr->BoxEdgeR[1] ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_CenCoordZ", &HaloMerger_ExtPot_UniDenSph_CenCoordZ, -1.0, NoMin_double, amr->BoxEdgeR[2] ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_VelocityX", &HaloMerger_ExtPot_UniDenSph_VelocityX, 0.0, NoMin_double, NoMax_double ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_VelocityY", &HaloMerger_ExtPot_UniDenSph_VelocityY, 0.0, NoMin_double, NoMax_double ); + ReadPara->Add( "HaloMerger_ExtPot_UniDenSph_VelocityZ", &HaloMerger_ExtPot_UniDenSph_VelocityZ, 0.0, NoMin_double, NoMax_double ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// Reset the number of objects to zero if initialization mode is not ByFunction + if ( OPT__INIT != INIT_BY_FUNCTION ) HaloMerger_Halo_Num = 0; + if ( OPT__INIT != INIT_BY_FUNCTION ) HaloMerger_Soliton_Num = 0; +# ifdef MASSIVE_PARTICLES + if ( amr->Par->Init != PAR_INIT_BY_FUNCTION ) HaloMerger_ParCloud_Num = 0; +# endif + +// (1-2) load the runtime parameters for the halos + if ( HaloMerger_Halo_Num > 0 ) + { + // (1-2-1) allocate the memory + HaloMerger_Halo_CenCoord = new double [HaloMerger_Halo_Num][3]; + HaloMerger_Halo_Velocity = new double [HaloMerger_Halo_Num][3]; + + if ( HaloMerger_Halo_InitMode == 1 ) + { + HaloMerger_Halo_HALO_IC_Filename = new char [HaloMerger_Halo_Num][MAX_STRING]; + HaloMerger_Halo_HALO_IC_BoxLen = new double [HaloMerger_Halo_Num][3]; + HaloMerger_Halo_HALO_IC_NCells = new int [HaloMerger_Halo_Num][3]; + HaloMerger_Halo_HALO_IC_Float8 = new int [HaloMerger_Halo_Num]; + HaloMerger_Halo_HALO_IC_dh = new double [HaloMerger_Halo_Num][3]; + HaloMerger_Halo_HALO_IC_Range_EdgeL = new double [HaloMerger_Halo_Num][3]; + HaloMerger_Halo_HALO_IC_Range_EdgeR = new double [HaloMerger_Halo_Num][3]; + HaloMerger_Halo_HALO_IC_Data = new char* [HaloMerger_Halo_Num]; + } // if ( HaloMerger_Halo_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Halo_InitMode", HaloMerger_Halo_InitMode ); + + // (1-2-2) read the parameters for the halos + const char FileName_Halo[] = "Input__TestProb_Halo"; + ReadPara_t *ReadPara_Halo = new ReadPara_t; + + // Halo-related parameters to read from the input + char HaloMerger_Halo_i_CenCoordX[MAX_STRING]; // x/y/z-coordinate of the center of the i-th halo (<0.0=auto -> box center) + char HaloMerger_Halo_i_CenCoordY[MAX_STRING]; // (Note that CenCoordX/Y/Z denotes the HALO_IC box center, not the exact halo center, when HaloMerger_Halo_InitMode == 1) + char HaloMerger_Halo_i_CenCoordZ[MAX_STRING]; + char HaloMerger_Halo_i_VelocityX[MAX_STRING]; // x/y/z-component of the bulk velocity of the i-th halo + char HaloMerger_Halo_i_VelocityY[MAX_STRING]; + char HaloMerger_Halo_i_VelocityZ[MAX_STRING]; + + char HaloMerger_Halo_i_HALO_IC_Filename[MAX_STRING]; // filename of HALO_IC (binary file in vzyx format; row-major and v=field) (single AMR level) for the i-th halo (HaloMerger_Halo_InitMode == 1 only) + char HaloMerger_Halo_i_HALO_IC_BoxLenX [MAX_STRING]; // physical length in the x/y/z-direction of HALO_IC box for the i-th halo (must > 0.0) (HaloMerger_Halo_InitMode == 1 only) + char HaloMerger_Halo_i_HALO_IC_BoxLenY [MAX_STRING]; + char HaloMerger_Halo_i_HALO_IC_BoxLenZ [MAX_STRING]; + char HaloMerger_Halo_i_HALO_IC_NCellsX [MAX_STRING]; // number of cells in the x/y/z-direction of HALO_IC box for the i-th halo (must > 0) (HaloMerger_Halo_InitMode == 1 only) + char HaloMerger_Halo_i_HALO_IC_NCellsY [MAX_STRING]; + char HaloMerger_Halo_i_HALO_IC_NCellsZ [MAX_STRING]; + char HaloMerger_Halo_i_HALO_IC_Float8 [MAX_STRING]; // data precision of HALO_IC for the i-th halo (0=float, 1=double) (HaloMerger_Halo_InitMode == 1 only) + + for (int index_halo=0; index_halo note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type + // --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" + // ******************************************************************************************************************************** + // ReadPara_Halo->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); + // ******************************************************************************************************************************** + ReadPara_Halo->Add( HaloMerger_Halo_i_CenCoordX, &HaloMerger_Halo_CenCoord[index_halo][0], -1.0, NoMin_double, amr->BoxEdgeR[0] ); + ReadPara_Halo->Add( HaloMerger_Halo_i_CenCoordY, &HaloMerger_Halo_CenCoord[index_halo][1], -1.0, NoMin_double, amr->BoxEdgeR[1] ); + ReadPara_Halo->Add( HaloMerger_Halo_i_CenCoordZ, &HaloMerger_Halo_CenCoord[index_halo][2], -1.0, NoMin_double, amr->BoxEdgeR[2] ); + ReadPara_Halo->Add( HaloMerger_Halo_i_VelocityX, &HaloMerger_Halo_Velocity[index_halo][0], 0.0, NoMin_double, NoMax_double ); + ReadPara_Halo->Add( HaloMerger_Halo_i_VelocityY, &HaloMerger_Halo_Velocity[index_halo][1], 0.0, NoMin_double, NoMax_double ); + ReadPara_Halo->Add( HaloMerger_Halo_i_VelocityZ, &HaloMerger_Halo_Velocity[index_halo][2], 0.0, NoMin_double, NoMax_double ); + + if ( HaloMerger_Halo_InitMode == 1 ) + { + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_Filename, HaloMerger_Halo_HALO_IC_Filename[index_halo], NoDef_str, Useless_str, Useless_str ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_BoxLenX, &HaloMerger_Halo_HALO_IC_BoxLen[index_halo][0], -1.0, Eps_double, NoMax_double ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_BoxLenY, &HaloMerger_Halo_HALO_IC_BoxLen[index_halo][1], -1.0, Eps_double, NoMax_double ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_BoxLenZ, &HaloMerger_Halo_HALO_IC_BoxLen[index_halo][2], -1.0, Eps_double, NoMax_double ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_NCellsX, &HaloMerger_Halo_HALO_IC_NCells[index_halo][0], -1, 1, NoMax_int ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_NCellsY, &HaloMerger_Halo_HALO_IC_NCells[index_halo][1], -1, 1, NoMax_int ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_NCellsZ, &HaloMerger_Halo_HALO_IC_NCells[index_halo][2], -1, 1, NoMax_int ); + ReadPara_Halo->Add( HaloMerger_Halo_i_HALO_IC_Float8, &HaloMerger_Halo_HALO_IC_Float8[index_halo], 0, 0, 1 ); + } // if ( HaloMerger_Halo_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Halo_InitMode", HaloMerger_Halo_InitMode ); + + } // for (int index_halo=0; index_haloRead( FileName_Halo ); + + delete ReadPara_Halo; + + } // if ( HaloMerger_Halo_Num > 0 ) + +// (1-3) load the runtime parameters for the solitons + if ( HaloMerger_Soliton_Num > 0 ) + { + // (1-3-1) allocate the memory + HaloMerger_Soliton_CenCoord = new double [HaloMerger_Soliton_Num][3]; + HaloMerger_Soliton_Velocity = new double [HaloMerger_Soliton_Num][3]; + HaloMerger_Soliton_CoreRadius = new double [HaloMerger_Soliton_Num]; + HaloMerger_Soliton_CoreRho = new double [HaloMerger_Soliton_Num]; + + if ( HaloMerger_Soliton_InitMode == 1 ) + { + HaloMerger_Soliton_DensProf_Filename = new char [HaloMerger_Soliton_Num][MAX_STRING]; + HaloMerger_Soliton_DensProf = new double* [HaloMerger_Soliton_Num]; + HaloMerger_Soliton_DensProf_NBin = new int [HaloMerger_Soliton_Num]; + HaloMerger_Soliton_DensProf_Rescale = new bool [HaloMerger_Soliton_Num]; + HaloMerger_Soliton_DensProf_ScaleL = new double [HaloMerger_Soliton_Num]; + HaloMerger_Soliton_DensProf_ScaleD = new double [HaloMerger_Soliton_Num]; + } // if ( HaloMerger_Soliton_InitMode == 1 ) + else if ( HaloMerger_Soliton_InitMode == 2 ) + { + HaloMerger_Soliton_OuterSlope = new double [HaloMerger_Soliton_Num]; + } // else if ( HaloMerger_Soliton_InitMode == 2 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Soliton_InitMode", HaloMerger_Soliton_InitMode ); + + // (1-3-2) read the parameters for the solitons + const char FileName_Soliton[] = "Input__TestProb_Soliton"; + ReadPara_t *ReadPara_Soliton = new ReadPara_t; + + // Soliton-related parameters to read from the input + char HaloMerger_Soliton_i_CoreRadius[MAX_STRING]; // core radius of the i-th soliton (<=0.0=set by HaloMerger_Soliton_i_CoreRho) (will be overwritten if HaloMerger_Soliton_i_DensProf_Rescale == 0) + char HaloMerger_Soliton_i_CoreRho [MAX_STRING]; // peak density of the i-th soliton (will be overwritten if HaloMerger_Soliton_i_CoreRadius > 0.0) (will be overwritten if HaloMerger_Soliton_i_DensProf_Rescale == 0) + char HaloMerger_Soliton_i_CenCoordX [MAX_STRING]; // x/y/z-coordinate of the center of the i-th soliton (<0.0=auto -> box center) [-1.0] + char HaloMerger_Soliton_i_CenCoordY [MAX_STRING]; + char HaloMerger_Soliton_i_CenCoordZ [MAX_STRING]; + char HaloMerger_Soliton_i_VelocityX [MAX_STRING]; // x/y/z-component of the bulk velocity of the i-th soliton + char HaloMerger_Soliton_i_VelocityY [MAX_STRING]; + char HaloMerger_Soliton_i_VelocityZ [MAX_STRING]; + + char HaloMerger_Soliton_i_DensProf_Filename[MAX_STRING]; // filename of the density profile table for the i-th soliton (HaloMerger_Soliton_InitMode == 1 only) + char HaloMerger_Soliton_i_DensProf_Rescale[MAX_STRING]; // whether to scale the density profile table for the i-th soliton (HaloMerger_Soliton_InitMode == 1 only) + + char HaloMerger_Soliton_i_OuterSlope[MAX_STRING]; // outer slope of the analytical density profile of the i-th soliton (HaloMerger_Soliton_InitMode == 2 only) + + for (int index_soliton=0; index_soliton note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type + // --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" + // ******************************************************************************************************************************** + // ReadPara_Soliton->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); + // ******************************************************************************************************************************** + ReadPara_Soliton->Add( HaloMerger_Soliton_i_CoreRadius, &HaloMerger_Soliton_CoreRadius[index_soliton], -1.0, NoMin_double, NoMax_double ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_CoreRho, &HaloMerger_Soliton_CoreRho[index_soliton], -1.0, NoMin_double, NoMax_double ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_CenCoordX, &HaloMerger_Soliton_CenCoord[index_soliton][0], -1.0, NoMin_double, amr->BoxEdgeR[0] ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_CenCoordY, &HaloMerger_Soliton_CenCoord[index_soliton][1], -1.0, NoMin_double, amr->BoxEdgeR[1] ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_CenCoordZ, &HaloMerger_Soliton_CenCoord[index_soliton][2], -1.0, NoMin_double, amr->BoxEdgeR[2] ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_VelocityX, &HaloMerger_Soliton_Velocity[index_soliton][0], 0.0, NoMin_double, NoMax_double ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_VelocityY, &HaloMerger_Soliton_Velocity[index_soliton][1], 0.0, NoMin_double, NoMax_double ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_VelocityZ, &HaloMerger_Soliton_Velocity[index_soliton][2], 0.0, NoMin_double, NoMax_double ); + + if ( HaloMerger_Soliton_InitMode == 1 ) + { + ReadPara_Soliton->Add( HaloMerger_Soliton_i_DensProf_Filename, HaloMerger_Soliton_DensProf_Filename[index_soliton], NoDef_str, Useless_str, Useless_str ); + ReadPara_Soliton->Add( HaloMerger_Soliton_i_DensProf_Rescale, &HaloMerger_Soliton_DensProf_Rescale[index_soliton], true, Useless_bool, Useless_bool ); + } // if ( HaloMerger_Soliton_InitMode == 1 ) + else if ( HaloMerger_Soliton_InitMode == 2 ) + { + ReadPara_Soliton->Add( HaloMerger_Soliton_i_OuterSlope, &HaloMerger_Soliton_OuterSlope[index_soliton], -8.0, NoMin_double, NoMax_double ); + } // else if ( HaloMerger_Soliton_InitMode == 2 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Soliton_InitMode", HaloMerger_Soliton_InitMode ); + + } // for (int index_soliton=0; index_solitonRead( FileName_Soliton ); + + delete ReadPara_Soliton; + + } // if ( HaloMerger_Soliton_Num > 0 ) + +// (1-4) load the runtime parameters for the particle clouds + if ( HaloMerger_ParCloud_Num > 0 ) + { + // (1-4-1) allocate the memory + HaloMerger_ParCloud_CenCoord = new double [HaloMerger_ParCloud_Num][3]; + HaloMerger_ParCloud_Velocity = new double [HaloMerger_ParCloud_Num][3]; + + if ( HaloMerger_ParCloud_InitMode == 1 ) + { + HaloMerger_ParCloud_DensProf_Filename = new char [HaloMerger_ParCloud_Num][MAX_STRING]; + HaloMerger_ParCloud_DensProf_MaxR = new double [HaloMerger_ParCloud_Num]; + HaloMerger_ParCloud_RSeed = new int [HaloMerger_ParCloud_Num]; + HaloMerger_ParCloud_NPar = new long [HaloMerger_ParCloud_Num]; + } // if ( HaloMerger_ParCloud_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_ParCloud_InitMode", HaloMerger_ParCloud_InitMode ); + + // (1-4-2) read the parameters for the particle clouds + const char FileName_ParCloud[] = "Input__TestProb_ParCloud"; + ReadPara_t *ReadPara_ParCloud = new ReadPara_t; + + // ParCloud-related parameters to read from the input + char HaloMerger_ParCloud_i_CenCoordX[MAX_STRING]; // x/y/z-coordinate of the center of the i-th particle cloud (<0.0=auto -> box center) + char HaloMerger_ParCloud_i_CenCoordY[MAX_STRING]; + char HaloMerger_ParCloud_i_CenCoordZ[MAX_STRING]; + char HaloMerger_ParCloud_i_VelocityX[MAX_STRING]; // x/y/z-component of the bulk velocity of the i-th particle cloud + char HaloMerger_ParCloud_i_VelocityY[MAX_STRING]; + char HaloMerger_ParCloud_i_VelocityZ[MAX_STRING]; + char HaloMerger_ParCloud_i_DensProf_Filename[MAX_STRING]; // filename of the density profile table for the i-th particle cloud (HaloMerger_ParCloud_InitMode == 1 only) + char HaloMerger_ParCloud_i_DensProf_MaxR[MAX_STRING]; // maximum radius for particles for the i-th particle cloud (must > 0.0) (HaloMerger_ParCloud_InitMode == 1 only) + char HaloMerger_ParCloud_i_RSeed[MAX_STRING]; // random seed for setting particle position and velocity for the i-th particle cloud (must >= 0) (HaloMerger_ParCloud_InitMode == 1 only) + char HaloMerger_ParCloud_i_NPar[MAX_STRING]; // number of particles for the i-th particle cloud (must >= 0) (HaloMerger_ParCloud_InitMode == 1 only) + + for (int index_parcloud=0; index_parcloud note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type + // --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" + // ******************************************************************************************************************************** + // ReadPara_ParCloud->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); + // ******************************************************************************************************************************** + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_CenCoordX, &HaloMerger_ParCloud_CenCoord[index_parcloud][0], -1.0, NoMin_double, amr->BoxEdgeR[0] ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_CenCoordY, &HaloMerger_ParCloud_CenCoord[index_parcloud][1], -1.0, NoMin_double, amr->BoxEdgeR[1] ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_CenCoordZ, &HaloMerger_ParCloud_CenCoord[index_parcloud][2], -1.0, NoMin_double, amr->BoxEdgeR[2] ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_VelocityX, &HaloMerger_ParCloud_Velocity[index_parcloud][0], 0.0, NoMin_double, NoMax_double ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_VelocityY, &HaloMerger_ParCloud_Velocity[index_parcloud][1], 0.0, NoMin_double, NoMax_double ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_VelocityZ, &HaloMerger_ParCloud_Velocity[index_parcloud][2], 0.0, NoMin_double, NoMax_double ); + + if ( HaloMerger_ParCloud_InitMode == 1 ) + { + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_DensProf_Filename, HaloMerger_ParCloud_DensProf_Filename[index_parcloud], NoDef_str, Useless_str, Useless_str ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_DensProf_MaxR, &HaloMerger_ParCloud_DensProf_MaxR[index_parcloud], 0.5*amr->BoxSize[0], Eps_double, NoMax_double ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_RSeed, &HaloMerger_ParCloud_RSeed[index_parcloud], 123, 0, NoMax_int ); + ReadPara_ParCloud->Add( HaloMerger_ParCloud_i_NPar, &HaloMerger_ParCloud_NPar[index_parcloud], (long)0, (long)0, NoMax_long ); + } // if ( HaloMerger_ParCloud_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_ParCloud_InitMode", HaloMerger_ParCloud_InitMode ); + + } // for (int index_parcloud=0; index_parcloudRead( FileName_ParCloud ); + + delete ReadPara_ParCloud; + + } // if ( HaloMerger_ParCloud_Num > 0 ) + + +// (2) check the runtime parameters +// (2-1) check the parameters for the external potential + if ( HaloMerger_ExtPot_UniDenSph_M != 0.0 && OPT__EXT_POT != EXT_POT_FUNC ) + Aux_Error( ERROR_INFO, "OPT__EXT_POT must be EXT_POT_FUNC (%d) to add the external potential of a uniform-density sphere !!\n", EXT_POT_FUNC ); + + double HaloMerger_ExtPot_UniDenSph_Rho; // density of the uniform-density sphere for the external potential + + if ( OPT__EXT_POT == EXT_POT_FUNC ) + { + // set the center + // put at the box ceneter by default + if ( HaloMerger_ExtPot_UniDenSph_CenCoordX < 0.0 ) HaloMerger_ExtPot_UniDenSph_CenCoordX = amr->BoxCenter[0]; + if ( HaloMerger_ExtPot_UniDenSph_CenCoordY < 0.0 ) HaloMerger_ExtPot_UniDenSph_CenCoordY = amr->BoxCenter[1]; + if ( HaloMerger_ExtPot_UniDenSph_CenCoordZ < 0.0 ) HaloMerger_ExtPot_UniDenSph_CenCoordZ = amr->BoxCenter[2]; + + // set the rho as mass/volume + HaloMerger_ExtPot_UniDenSph_Rho = HaloMerger_ExtPot_UniDenSph_M/( 4.0*M_PI*CUBE(HaloMerger_ExtPot_UniDenSph_R)/3.0 ); + + } // if ( OPT__EXT_POT == EXT_POT_FUNC ) + +// (2-2) check the parameters for the halos + if ( HaloMerger_Halo_Num > 0 ) + { + for (int index_halo=0; index_haloBoxCenter[d]; // put at the box ceneter by default + + // check and set the HALO_IC-related parameters + if ( HaloMerger_Halo_InitMode == 1 ) + { + // check the HALO_IC file exists + if ( !Aux_CheckFileExist(HaloMerger_Halo_HALO_IC_Filename[index_halo]) ) + Aux_Error( ERROR_INFO, "Halo_%d HALO_IC file \"%s\" does not exist !!\n", + index_halo_input, HaloMerger_Halo_HALO_IC_Filename[index_halo] ); + + // check the range of the halos + for (int d=0; d<3; d++) + { + // derived parameters from the input for the halos + HaloMerger_Halo_HALO_IC_dh [index_halo][d] = HaloMerger_Halo_HALO_IC_BoxLen[index_halo][d]/HaloMerger_Halo_HALO_IC_NCells[index_halo][d]; + HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][d] = HaloMerger_Halo_CenCoord[index_halo][d] - 0.5*HaloMerger_Halo_HALO_IC_BoxLen[index_halo][d]; + HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][d] = HaloMerger_Halo_CenCoord[index_halo][d] + 0.5*HaloMerger_Halo_HALO_IC_BoxLen[index_halo][d]; + + // check wheter the HALO_IC dh are the same along different directions + for (int d2=0; d2 amr->BoxEdgeR[d] || + HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][d] < amr->BoxEdgeL[d] ) + Aux_Error( ERROR_INFO, "The edge in direction-%d [%13.6e, %13.6e] of Halo_%d HALO_IC range is outside of the simulation box !!\n", + d, HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][d], + HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][d], index_halo_input ); + + } // for (int d=0; d<3; d++) + + // check whether the input halos overlap with each other + for (int index2_halo=0; index2_halo (%ld) != expect (%ld) !!\n", HaloMerger_Halo_HALO_IC_Filename[index_halo], FileSize, ExpectSize ); + + // load data from the file + fseek( File, 0, SEEK_SET ); + fread( HaloMerger_Halo_HALO_IC_Data[index_halo], 1, HALO_IC_TotSize, File ); + + // close the file + fclose( File ); + + } // for (int index_halo=0; index_halo 0 ) + +// (2-3) check the parameters for the solitons + if ( HaloMerger_Soliton_Num > 0 ) + { + for (int index_soliton=0; index_soliton= DensCore && DensRef[b+1] <= DensCore ) + { + CoreRadiusRef = 0.5*( RadiusRef[b] + RadiusRef[b+1] ); + break; + } + } // for (int b=1; b 0.0 ) + { + // overwrite the core radius by the value calculated from the peak density + HaloMerger_Soliton_DensProf_ScaleD[index_soliton] = HaloMerger_Soliton_CoreRho[index_soliton] / DensRef[0]; + HaloMerger_Soliton_DensProf_ScaleL[index_soliton] = sqrt( sqrt( 1.0 / (4.0*M_PI*NEWTON_G*SQR(ELBDM_ETA)*HaloMerger_Soliton_DensProf_ScaleD[index_soliton]) ) ); + HaloMerger_Soliton_CoreRadius [index_soliton] = CoreRadiusRef*HaloMerger_Soliton_DensProf_ScaleL[index_soliton]; + } + else // if ( HaloMerger_Soliton_CoreRho[index_soliton] > 0.0 ) + { + Aux_Error( ERROR_INFO, "HaloMerger_Soliton_%d_CoreRadius (%13.6e) is not set properly !!\n", index_soliton_input, HaloMerger_Soliton_CoreRadius[index_soliton] ); + } // if ( HaloMerger_Soliton_CoreRho[index_soliton] > 0.0 ) ... else + } + else // if ( HaloMerger_Soliton_CoreRadius[index_soliton] <= 0.0 ) + { + // overwrite the peak density by the value calculated from the core radius + HaloMerger_Soliton_DensProf_ScaleL[index_soliton] = HaloMerger_Soliton_CoreRadius[index_soliton] / CoreRadiusRef; + HaloMerger_Soliton_DensProf_ScaleD[index_soliton] = 1.0 / ( 4.0*M_PI*NEWTON_G*SQR(ELBDM_ETA)*POW4(HaloMerger_Soliton_DensProf_ScaleL[index_soliton]) ); + HaloMerger_Soliton_CoreRho [index_soliton] = HaloMerger_Soliton_DensProf_ScaleD[index_soliton]*DensRef[0]; + } // if ( HaloMerger_Soliton_CoreRadius[index_soliton] <= 0.0 ) ... else + + } // if ( HaloMerger_Soliton_DensProf_Rescale[index_soliton] ) + else + { + // overwrite the peak density and core radius from the table + HaloMerger_Soliton_DensProf_ScaleL[index_soliton] = 1.0; + HaloMerger_Soliton_DensProf_ScaleD[index_soliton] = 1.0; + HaloMerger_Soliton_CoreRho [index_soliton] = DensRef[0]; + HaloMerger_Soliton_CoreRadius [index_soliton] = CoreRadiusRef; + } // if ( HaloMerger_Soliton_DensProf_Rescale[index_soliton] ) ... else + + } // if ( HaloMerger_Soliton_InitMode == 1 ) + else if ( HaloMerger_Soliton_InitMode == 2 ) // the density profile from the analytical function + { + // set the core radius and the peak density + if ( HaloMerger_Soliton_CoreRadius[index_soliton] <= 0.0 ) + { + if ( HaloMerger_Soliton_CoreRho[index_soliton] > 0.0 ) + { + // overwrite the core radius by the value calculated from the peak density + const double m22 = ELBDM_MASS*UNIT_M/(Const_eV/SQR(Const_c))/1.0e-22; + const double rc_kpc = sqrt( sqrt( 1.945e7/(HaloMerger_Soliton_CoreRho[index_soliton]/Const_Msun*CUBE(Const_kpc)*(UNIT_M/CUBE(UNIT_L))) )/m22 ); + HaloMerger_Soliton_CoreRadius[index_soliton] = rc_kpc*Const_kpc/UNIT_L; + } + else // if ( HaloMerger_Soliton_CoreRho[index_soliton] > 0.0 ) + { + Aux_Error( ERROR_INFO, "HaloMerger_Soliton_%d_CoreRadius (%13.6e) is not set properly !!\n", index_soliton_input, HaloMerger_Soliton_CoreRadius[index_soliton] ); + } // if ( HaloMerger_Soliton_CoreRho[index_soliton] > 0.0 ) ... else + } + else // if ( HaloMerger_Soliton_CoreRadius[index_soliton] <= 0.0 ) + { + // overwrite the peak density by the value calculated from the core radius + const double m22 = ELBDM_MASS*UNIT_M/(Const_eV/SQR(Const_c))/1.0e-22; + const double rc_kpc = HaloMerger_Soliton_CoreRadius[index_soliton]*UNIT_L/Const_kpc; + HaloMerger_Soliton_CoreRho[index_soliton] = 1.945e7/SQR( m22*rc_kpc*rc_kpc )*Const_Msun/CUBE(Const_kpc)/(UNIT_M/CUBE(UNIT_L)); + } // if ( HaloMerger_Soliton_CoreRadius[index_soliton] <= 0.0 ) ... else + + } // else if ( HaloMerger_Soliton_InitMode == 2 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Soliton_InitMode", HaloMerger_Soliton_InitMode ); + + // check the runtime parameters and set the problem-specific derived parameters for the solitons + // set the center + for (int d=0; d<3; d++) + if ( HaloMerger_Soliton_CenCoord[index_soliton][d] < 0.0 ) + HaloMerger_Soliton_CenCoord[index_soliton][d] = amr->BoxCenter[d]; // put at the box center by default + + // check whether the soliton touches the boundary of box + for (int d=0; d<3; d++) + { + // check whether the input solitons cross the boundary + if ( HaloMerger_Soliton_CenCoord[index_soliton][d] + 3.0*HaloMerger_Soliton_CoreRadius[index_soliton] > amr->BoxEdgeR[d] || + HaloMerger_Soliton_CenCoord[index_soliton][d] - 3.0*HaloMerger_Soliton_CoreRadius[index_soliton] < amr->BoxEdgeL[d] ) + Aux_Error( ERROR_INFO, "The Soliton_%d 3r_c-range [%13.6e, %13.6e] is outside of the simulation box in the direction-%d !!\n", + index_soliton_input, + HaloMerger_Soliton_CenCoord[index_soliton][d] - 3.0*HaloMerger_Soliton_CoreRadius[index_soliton], + HaloMerger_Soliton_CenCoord[index_soliton][d] + 3.0*HaloMerger_Soliton_CoreRadius[index_soliton], + d ); + } // for (int d=0; d<3; d++) + + // check whether the input solitons overlap with each other + for (int index2_soliton=0; index2_soliton 3.0*( HaloMerger_Soliton_CoreRadius[index_soliton] + HaloMerger_Soliton_CoreRadius[index2_soliton] ) ) + isOverlap = false; + + if ( MPI_Rank == 0 ) + { + if ( isOverlap ) + Aux_Message( stderr, "WARNING : Soliton_%d 3r_c-range (center: [%13.6e, %13.6e, %13.6e], r_c: %13.6e) overlaps with the Soliton_%d 3r_c-range (center: [%13.6e, %13.6e, %13.6e], r_c: %13.6e) !!\n", + index_soliton_input, + HaloMerger_Soliton_CenCoord[index_soliton][0], HaloMerger_Soliton_CenCoord[index_soliton][1], + HaloMerger_Soliton_CenCoord[index_soliton][2], HaloMerger_Soliton_CoreRadius[index_soliton], + index2_soliton_input, + HaloMerger_Soliton_CenCoord[index2_soliton][0], HaloMerger_Soliton_CenCoord[index2_soliton][1], + HaloMerger_Soliton_CenCoord[index2_soliton][2], HaloMerger_Soliton_CoreRadius[index2_soliton] ); + } + + } // for (int index2_soliton=0; index2_soliton= HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][d] || + HaloMerger_Soliton_CenCoord[index_soliton][d] + 3.0*HaloMerger_Soliton_CoreRadius[index_soliton] <= HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][d] ) + { + isOverlap = false; + break; + } + } // for (int d=0; d<3; d++) + + if ( MPI_Rank == 0 ) + { + if ( isOverlap ) + Aux_Message( stderr, "WARNING : Soliton_%d 3r_c-range (center: [%13.6e, %13.6e, %13.6e], r_c: %13.6e) overlaps with the Halo_%d HALO_IC range !!\n", + index_soliton_input, + HaloMerger_Soliton_CenCoord[index_soliton][0], HaloMerger_Soliton_CenCoord[index_soliton][1], + HaloMerger_Soliton_CenCoord[index_soliton][2], HaloMerger_Soliton_CoreRadius[index_soliton], + index_halo_input ); + } + + } // if ( HaloMerger_Halo_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Halo_InitMode", HaloMerger_Halo_InitMode ); + + } // for (int index_halo=0; index_halo 0 ) + +// (2-4) check the parameters for the particle clouds + // set the total number of particles in all particle clouds + long HaloMerger_ParCloud_NPar_Total = (long)0; + + // check whether fluid is frozen for a particle-only case + if ( OPT__INIT == INIT_BY_FUNCTION && (HaloMerger_Halo_Num + HaloMerger_Soliton_Num) == 0 + && !OPT__FREEZE_FLUID ) + if ( MPI_Rank == 0 ) Aux_Message( stderr, "WARNING : OPT__FREEZE_FLUID should be 1 for particle-only simulations !!\n" ); + + if ( HaloMerger_ParCloud_Num > 0 ) + { + // check the particle is enabled +# ifndef MASSIVE_PARTICLES + Aux_Error( ERROR_INFO, "MASSIVE_PARTICLES must be enabled for HaloMerger_ParCloud_Num > 0 !!\n" ); +# endif + + for (int index_parcloud=0; index_parcloudBoxCenter[d]; // put at the box ceneter by default + + // check and set the parameters for the particle density profile + if ( HaloMerger_ParCloud_InitMode == 1 ) // the density profile from table + { + // count the total number of particles for the particle clouds + HaloMerger_ParCloud_NPar_Total += HaloMerger_ParCloud_NPar[index_parcloud]; + + // check the density profile file exists + if ( !Aux_CheckFileExist(HaloMerger_ParCloud_DensProf_Filename[index_parcloud]) ) + Aux_Error( ERROR_INFO, "ParCloud_%d density profile file \"%s\" does not exist !!\n", + index_parcloud_input, HaloMerger_ParCloud_DensProf_Filename[index_parcloud] ); + + // check whether the particle cloud touches the boundary of box + for (int d=0; d<3; d++) + { + // check whether the input particle clouds cross the boundary + if ( HaloMerger_ParCloud_CenCoord[index_parcloud][d] + HaloMerger_ParCloud_DensProf_MaxR[index_parcloud] > amr->BoxEdgeR[d] || + HaloMerger_ParCloud_CenCoord[index_parcloud][d] - HaloMerger_ParCloud_DensProf_MaxR[index_parcloud] < amr->BoxEdgeL[d] ) + Aux_Error( ERROR_INFO, "The ParCloud_%d range is outside of the simulation box in the direction-%d !!\n", + index_parcloud_input, d ); + } // for (int d=0; d<3; d++) + + // check whether the input particle clouds overlap with each other + for (int index2_parcloud=0; index2_parcloud ( HaloMerger_ParCloud_DensProf_MaxR[index_parcloud] + HaloMerger_ParCloud_DensProf_MaxR[index2_parcloud] ) ) + isOverlap = false; + + if ( MPI_Rank == 0 ) + { + if ( isOverlap ) + Aux_Message( stderr, "WARNING : ParCloud_%d range (center: [%13.6e, %13.6e, %13.6e], MaxR: %13.6e) overlaps with the ParCloud_%d range (center: [%13.6e, %13.6e, %13.6e], MaxR: %13.6e) !!\n", + index_parcloud_input, + HaloMerger_ParCloud_CenCoord[index_parcloud][0], HaloMerger_ParCloud_CenCoord[index_parcloud][1], + HaloMerger_ParCloud_CenCoord[index_parcloud][2], HaloMerger_ParCloud_DensProf_MaxR[index_parcloud], + index2_parcloud_input, + HaloMerger_ParCloud_CenCoord[index2_parcloud][0], HaloMerger_ParCloud_CenCoord[index2_parcloud][1], + HaloMerger_ParCloud_CenCoord[index2_parcloud][2], HaloMerger_ParCloud_DensProf_MaxR[index2_parcloud] ); + } + + } // for (int index2_parcloud=0; index2_parcloud= HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][d] || + HaloMerger_ParCloud_CenCoord[index_parcloud][d] + HaloMerger_ParCloud_DensProf_MaxR[index_parcloud] <= HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][d] ) + { + isOverlap = false; + break; + } + } // for (int d=0; d<3; d++) + + if ( MPI_Rank == 0 ) + { + if ( isOverlap ) + Aux_Message( stderr, "WARNING : ParCloud_%d (center: [%13.6e, %13.6e, %13.6e], MaxR: %13.6e) overlaps with the Halo_%d HALO_IC range !!\n", + index_parcloud_input, + HaloMerger_ParCloud_CenCoord[index_parcloud][0], HaloMerger_ParCloud_CenCoord[index_parcloud][1], + HaloMerger_ParCloud_CenCoord[index_parcloud][2], HaloMerger_ParCloud_DensProf_MaxR[index_parcloud], + index_halo_input ); + } + + } // if ( HaloMerger_Halo_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Halo_InitMode", HaloMerger_Halo_InitMode ); + + } // for (int index_halo=0; index_halo ( HaloMerger_ParCloud_DensProf_MaxR[index_parcloud] + 3.0*HaloMerger_Soliton_CoreRadius[index_soliton] ) ) + isOverlap = false; + + if ( MPI_Rank == 0 ) + { + if ( isOverlap ) + Aux_Message( stderr, "WARNING : ParCloud_%d (center: [%13.6e, %13.6e, %13.6e], MaxR: %13.6e) overlaps with the Soliton_%d 3r_c-range (center: [%13.6e, %13.6e, %13.6e], r_c: %13.6e) !!\n", + index_parcloud_input, + HaloMerger_ParCloud_CenCoord[index_parcloud][0], HaloMerger_ParCloud_CenCoord[index_parcloud][1], + HaloMerger_ParCloud_CenCoord[index_parcloud][2], HaloMerger_ParCloud_DensProf_MaxR[index_parcloud], + index_soliton_input, + HaloMerger_Soliton_CenCoord[index_soliton][0], HaloMerger_Soliton_CenCoord[index_soliton][1], + HaloMerger_Soliton_CenCoord[index_soliton][2], HaloMerger_Soliton_CoreRadius[index_soliton] ); + } + + } // for (int index_soliton=0; index_soliton0 for HaloMerger_ParCloud_Num (= %d) > 0 !!\n", + HaloMerger_ParCloud_NPar_Total, HaloMerger_ParCloud_Num ); + + } // if ( HaloMerger_ParCloud_Num > 0 ) + + // overwrite the total number of particles +# ifdef MASSIVE_PARTICLES + if ( amr->Par->Init == PAR_INIT_BY_FUNCTION ) + { + amr->Par->NPar_Active_AllRank = HaloMerger_ParCloud_NPar_Total; + + PRINT_RESET_PARA( amr->Par->NPar_Active_AllRank, FORMAT_LONG, + "(amr->Par->NPar_Active_AllRank is originally set by PAR_NPAR in Input__Parameter)" ); + } +# endif + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 0.25; + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " total number of halos = %d\n", HaloMerger_Halo_Num ); + Aux_Message( stdout, " halo initialization mode = %d\n", HaloMerger_Halo_InitMode ); + Aux_Message( stdout, " total number of solitons = %d\n", HaloMerger_Soliton_Num ); + Aux_Message( stdout, " soliton initialization mode = %d\n", HaloMerger_Soliton_InitMode ); + Aux_Message( stdout, " total number of particle clouds = %d\n", HaloMerger_ParCloud_Num ); + Aux_Message( stdout, " particle cloud initialization mode = %d\n", HaloMerger_ParCloud_InitMode ); + if ( OPT__EXT_POT == EXT_POT_FUNC ) + { + Aux_Message( stdout, " external potential of uniform-density sphere information:\n" ); + Aux_Message( stdout, " %16s %16s %16s %16s %16s %16s %16s %16s %16s\n", + "Mass", "Radius", "Rho", "CenCoord_X", "CenCoord_Y", "CenCoord_Z", "Velocity_X", "Velocity_Y", "Velocity_Z" ); + Aux_Message( stdout, " %16.6e %16.6e %16.6e %16.6e %16.6e %16.6e %16.6e %16.6e %16.6e\n", + HaloMerger_ExtPot_UniDenSph_M, HaloMerger_ExtPot_UniDenSph_R, HaloMerger_ExtPot_UniDenSph_Rho, + HaloMerger_ExtPot_UniDenSph_CenCoordX, HaloMerger_ExtPot_UniDenSph_CenCoordY, HaloMerger_ExtPot_UniDenSph_CenCoordZ, + HaloMerger_ExtPot_UniDenSph_VelocityX, HaloMerger_ExtPot_UniDenSph_VelocityY, HaloMerger_ExtPot_UniDenSph_VelocityZ ); + } + + if ( HaloMerger_Halo_Num > 0 ) + { + Aux_Message( stdout, "\n halo information:\n" ); + Aux_Message( stdout, " %7s %16s %16s %16s %16s %16s %16s\n", + "ID", "CenCoord_X", "CenCoord_Y", "CenCoord_Z", "Velocity_X", "Velocity_Y", "Velocity_Z" ); + + for (int index_halo=0; index_halo 0 ) + + if ( HaloMerger_Soliton_Num > 0 ) + { + Aux_Message( stdout, "\n soliton information:\n" ); + Aux_Message( stdout, " %7s %16s %16s %16s %16s %16s %16s %16s %16s\n", + "ID", "CoreRadius", "CoreRho", "CenCoord_X", "CenCoord_Y", "CenCoord_Z", "Velocity_X", "Velocity_Y", "Velocity_Z" ); + + for (int index_soliton=0; index_soliton 0 ) + + if ( HaloMerger_ParCloud_Num > 0 ) + { + Aux_Message( stdout, "\n particle cloud information:\n" ); + Aux_Message( stdout, " %7s %16s %16s %16s %16s %16s %16s\n", + "ID", "CenCoord_X", "CenCoord_Y", "CenCoord_Z", "Velocity_X", "Velocity_Y", "Velocity_Z" ); + + for (int index_parcloud=0; index_parcloud Total number of particles in all particle clouds = %16ld\n", "", HaloMerger_ParCloud_NPar_Total ); + + } // if ( HaloMerger_ParCloud_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_ParCloud_InitMode", HaloMerger_ParCloud_InitMode ); + + } // if ( HaloMerger_ParCloud_Num > 0 ) + + Aux_Message( stdout, "=============================================================================\n" ); + } + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// 3. Even when DUAL_ENERGY is adopted for HYDRO, one does NOT need to set the dual-energy variable here +// --> It will be calculated automatically +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + // (1) set the background + double Real = 0.0; + double Imag = 0.0; + + + // (2) set the halos + for (int index_halo=0; index_halo= HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][0] && + x <= HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][0] && + y >= HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][1] && + y <= HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][1] && + z >= HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][2] && + z <= HaloMerger_Halo_HALO_IC_Range_EdgeR[index_halo][2] ) + { + // assume real part first and then imaginary part + Real_halo = HaloMerger_Get_Value_From_HALO_IC_Data( x, y, z, 0, index_halo ); + Imag_halo = HaloMerger_Get_Value_From_HALO_IC_Data( x, y, z, 1, index_halo ); + } + + break; + } // case 1 + + default: + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Halo_InitMode", HaloMerger_Halo_InitMode ); + + } // switch ( HaloMerger_Halo_InitMode ) + + // add the velocity + HaloMerger_Add_Velocity( &Real_halo, &Imag_halo, + HaloMerger_Halo_Velocity[index_halo][0], + HaloMerger_Halo_Velocity[index_halo][1], + HaloMerger_Halo_Velocity[index_halo][2], + x, y, z ); + + // add the wavefunction to the box + Real += Real_halo; + Imag += Imag_halo; + + } // for (int index_halo=0; index_halo reference radius) + const double r_ref = r_tar / HaloMerger_Soliton_DensProf_ScaleL[index_soliton]; + + // linear interpolation + double dens_ref = Mis_InterpolateFromTable( HaloMerger_Soliton_DensProf_NBin[index_soliton], Table_Radius, Table_Density, r_ref ); + + if ( dens_ref == NULL_REAL ) + { + if ( r_ref < Table_Radius[0] ) + dens_ref = Table_Density[0]; + else if ( r_ref >= Table_Radius[HaloMerger_Soliton_DensProf_NBin[index_soliton]-1] ) + dens_ref = 0.0; + else + Aux_Error( ERROR_INFO, "interpolation failed at radius %13.7e (min/max radius = %13.7e/%13.7e) !!\n", + r_ref, Table_Radius[0], Table_Radius[HaloMerger_Soliton_DensProf_NBin[index_soliton]-1] ); + } + + // get the density of soliton + Dens_soliton = dens_ref*HaloMerger_Soliton_DensProf_ScaleD[index_soliton]; + Real_soliton = sqrt( Dens_soliton ); + Imag_soliton = 0.0; + + break; + } // case 1 + + // set from the analytical soliton density profile + case 2: + { + // parameters for the analytical soliton density profile + const double m22 = ELBDM_MASS*UNIT_M/(Const_eV/SQR(Const_c))/1.0e-22; + const double rc_kpc = HaloMerger_Soliton_CoreRadius[index_soliton]*UNIT_L/Const_kpc; + const double peak_rho = 1.945e7/SQR( m22*rc_kpc*rc_kpc )*Const_Msun/CUBE(Const_kpc)/(UNIT_M/CUBE(UNIT_L)); + + // target radius + const double r_tar = sqrt( SQR(x - HaloMerger_Soliton_CenCoord[index_soliton][0]) + + SQR(y - HaloMerger_Soliton_CenCoord[index_soliton][1]) + + SQR(z - HaloMerger_Soliton_CenCoord[index_soliton][2]) ); + + // get the density of soliton + Dens_soliton = peak_rho*pow( 1.0+9.06e-2*SQR(r_tar/HaloMerger_Soliton_CoreRadius[index_soliton]), + HaloMerger_Soliton_OuterSlope[index_soliton] ); + Real_soliton = sqrt( Dens_soliton ); + Imag_soliton = 0.0; + + break; + } // case 2 + + default: + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_Soliton_InitMode", HaloMerger_Soliton_InitMode ); + + } // switch ( HaloMerger_Soliton_InitMode ) + + // add the velocity + HaloMerger_Add_Velocity( &Real_soliton, &Imag_soliton, + HaloMerger_Soliton_Velocity[index_soliton][0], + HaloMerger_Soliton_Velocity[index_soliton][1], + HaloMerger_Soliton_Velocity[index_soliton][2], + x, y, z ); + + // add the wavefunction to the box + Real += Real_soliton; + Imag += Imag_soliton; + + } // for (int index_soliton=0; index_solitonuse_wave_flag[lv] ) { +# endif + fluid[REAL] = Real; + fluid[IMAG] = Imag; + fluid[DENS] = SQR(fluid[REAL]) + SQR(fluid[IMAG]); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { // if ( amr->use_wave_flag[lv] ) + fluid[DENS] = SQR(Real) + SQR(Imag); + fluid[PHAS] = SATAN2( Imag, Real ); + fluid[STUB] = 0.0; + } // if ( amr->use_wave_flag[lv] ) ... else +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : End_HaloMerger +// Description : Free memory before terminating the program +// +// Note : 1. Linked to the function pointer "End_User_Ptr" to replace "End_User()" +// +// Parameter : None +//------------------------------------------------------------------------------------------------------- +void End_HaloMerger() +{ + + // Halos + if ( HaloMerger_Halo_Num > 0 ) + { + delete [] HaloMerger_Halo_CenCoord; + delete [] HaloMerger_Halo_Velocity; + + if ( HaloMerger_Halo_InitMode == 1 ) + { + for (int index_halo=0; index_halo 0 ) + + // Solitons + if ( HaloMerger_Soliton_Num > 0 ) + { + delete [] HaloMerger_Soliton_CenCoord; + delete [] HaloMerger_Soliton_Velocity; + delete [] HaloMerger_Soliton_CoreRadius; + delete [] HaloMerger_Soliton_CoreRho; + + if ( HaloMerger_Soliton_InitMode == 1 ) + { + for (int index_soliton=0; index_soliton 0 ) + + // ParClouds + if ( HaloMerger_ParCloud_Num > 0 ) + { + delete [] HaloMerger_ParCloud_CenCoord; + delete [] HaloMerger_ParCloud_Velocity; + + if ( HaloMerger_ParCloud_InitMode == 1 ) + { + delete [] HaloMerger_ParCloud_DensProf_Filename; + delete [] HaloMerger_ParCloud_DensProf_MaxR; + delete [] HaloMerger_ParCloud_RSeed; + delete [] HaloMerger_ParCloud_NPar; + } // if ( HaloMerger_ParCloud_InitMode == 1 ) + else + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "HaloMerger_ParCloud_InitMode", HaloMerger_ParCloud_InitMode ); + + } // if ( HaloMerger_ParCloud_Num > 0 ) + +} // FUNCTION : End_HaloMerger + + + +//------------------------------------------------------------------------------------------------------- +// Function : HaloMerger_Add_Velocity +// Description : Multiply the wave function by a plane wave wave function with a given velocity +// +// Note : None +// +// Parameter : RealPart : real part of the wavefunction +// ImagPart : imaginary part of the wavefunction +// Velocity_X : velocity in the x-direction +// Velocity_Y : velocity in the y-direction +// Velocity_Z : velocity in the z-direction +// Position_X : coordinate x of the point +// Position_Y : coordinate y of the point +// Position_Z : coordinate z of the point +// Return : RealPart +// ImagPart +//------------------------------------------------------------------------------------------------------- +void HaloMerger_Add_Velocity( double *RealPart, double *ImagPart, + const double Velocity_X, const double Velocity_Y, const double Velocity_Z, + const double Position_X, const double Position_Y, const double Position_Z ) +{ + // before adding the velocity + const double Real_Old = *RealPart; + const double Imag_Old = *ImagPart; + + // Phase = kx = (m*v/hbar)*x = eta*v*x + const double Phase = ELBDM_ETA*( Velocity_X*Position_X + Velocity_Y*Position_Y + Velocity_Z*Position_Z ); + + // psi_new = psi_old * exp(i*Phase) = (R_old + i*I_old)*(cos(Phase) + i*sin(Phase)) + const double Real_New = Real_Old * cos(Phase) - Imag_Old * sin(Phase); + const double Imag_New = Real_Old * sin(Phase) + Imag_Old * cos(Phase); + + // return the updated wave function + *RealPart = Real_New; + *ImagPart = Imag_New; + +} // FUNCTION : HaloMerger_Add_Velocity + + + +//------------------------------------------------------------------------------------------------------- +// Function : HaloMerger_Trilinear_Interpolation +// Description : Apply linear interpolation to get the desired value from the data at the eight corners of a 3D cube +// +// Note : 1. Ref_Value is in the order zyx (i.e. Ref_Value[z][y][x]) +// +// Parameter : Target_X : target x-coordinate +// Target_Y : target y-coordinate +// Target_Z : target z-coordinate +// Ref_Value : reference values at the eight corners +// Ref_X : reference x-coordinates at the eight corners +// Ref_Y : reference y-coordinates at the eight corners +// Ref_Z : reference z-coordinates at the eight corners +// Return : Value_ZYX : values interpolated from the eight corners +//------------------------------------------------------------------------------------------------------- +double HaloMerger_Trilinear_Interpolation( const double Target_X, const double Target_Y, const double Target_Z, + const double Ref_Value[2][2][2], + const double Ref_X[2], const double Ref_Y[2], const double Ref_Z[2] ) +{ + // linear interpolation in z-direction + const double Value_Z00 = Ref_Value[0][0][0] + ( Ref_Value[1][0][0] - Ref_Value[0][0][0])/(Ref_Z[1] - Ref_Z[0])*(Target_Z - Ref_Z[0]); + const double Value_Z01 = Ref_Value[0][0][1] + ( Ref_Value[1][0][1] - Ref_Value[0][0][1])/(Ref_Z[1] - Ref_Z[0])*(Target_Z - Ref_Z[0]); + const double Value_Z10 = Ref_Value[0][1][0] + ( Ref_Value[1][1][0] - Ref_Value[0][1][0])/(Ref_Z[1] - Ref_Z[0])*(Target_Z - Ref_Z[0]); + const double Value_Z11 = Ref_Value[0][1][1] + ( Ref_Value[1][1][1] - Ref_Value[0][1][1])/(Ref_Z[1] - Ref_Z[0])*(Target_Z - Ref_Z[0]); + + // linear interpolation in y-direction + const double Value_ZY0 = Value_Z00 + ( Value_Z10 - Value_Z00 )/(Ref_Y[1] - Ref_Y[0])*(Target_Y - Ref_Y[0]); + const double Value_ZY1 = Value_Z01 + ( Value_Z11 - Value_Z01 )/(Ref_Y[1] - Ref_Y[0])*(Target_Y - Ref_Y[0]); + + // linear interpolation in x-direction + const double Value_ZYX = Value_ZY0 + ( Value_ZY1 - Value_ZY0 )/(Ref_X[1] - Ref_X[0])*(Target_X - Ref_X[0]); + + return Value_ZYX; + +} // FUNCTION : HaloMerger_Trilinear_Interpolation + + + +//------------------------------------------------------------------------------------------------------- +// Function : HaloMerger_Get_Value_From_HALO_IC_Data +// Description : Get the target value of field v at (x,y,z) by reading the HALO_IC of halo and performing linear interpolation +// +// Note : None +// +// Parameter : x : target x-coordinate +// y : target y-coordinate +// z : target z-coordinate +// v : index of the target field +// index_halo : index of target halo +// Return : Interpolated_Value : value interpolated from the HALO_IC of halo +//------------------------------------------------------------------------------------------------------- +double HaloMerger_Get_Value_From_HALO_IC_Data( const double x, const double y, const double z, const int v, const int index_halo ) +{ + // 1. HALO_IC information + const int HALO_IC_Nx = HaloMerger_Halo_HALO_IC_NCells[index_halo][0]; + const int HALO_IC_Ny = HaloMerger_Halo_HALO_IC_NCells[index_halo][1]; + const int HALO_IC_Nz = HaloMerger_Halo_HALO_IC_NCells[index_halo][2]; + const int HALO_IC_NVar = 2; // (Real part & Imag part) + const int HALO_IC_Float8 = HaloMerger_Halo_HALO_IC_Float8[index_halo]; + size_t load_data_size = ( HALO_IC_Float8 ) ? sizeof(double) : sizeof(float); + + double HALO_IC_Range_EdgeL[3]; + double HALO_IC_dh[3]; + for (int d=0; d<3; d++) HALO_IC_Range_EdgeL[d] = HaloMerger_Halo_HALO_IC_Range_EdgeL[index_halo][d]; + for (int d=0; d<3; d++) HALO_IC_dh[d] = HaloMerger_Halo_HALO_IC_dh[index_halo][d]; + + // Use the eight corners from the HALO_IC to do the linear interpolation + + // 2. index of the bottom-left corner in the HALO_IC + const int IntCorner000_HALOICIndex[3] = {(int)floor( (x - HALO_IC_Range_EdgeL[0])/HALO_IC_dh[0] - 0.5 ), + (int)floor( (y - HALO_IC_Range_EdgeL[1])/HALO_IC_dh[1] - 0.5 ), + (int)floor( (z - HALO_IC_Range_EdgeL[2])/HALO_IC_dh[2] - 0.5 )}; + + // 3. physical coordinates of the eight corners + double IntCorner_Coord[3][2]; + for (int d=0; d<3; d++) + for (int IntCorner_ID=0; IntCorner_ID<2; IntCorner_ID++) + IntCorner_Coord[d][IntCorner_ID] = HALO_IC_Range_EdgeL[d] + (IntCorner000_HALOICIndex[d] + IntCorner_ID + 0.5)*HALO_IC_dh[d]; + + // 4. values at the eight corners + double IntCorner_Value[2][2][2]; + for (int IntCorner_ID_k=0; IntCorner_ID_k<2; IntCorner_ID_k++){ const int IntCorner_HALOICIndex_k = IntCorner000_HALOICIndex[2] + IntCorner_ID_k; + for (int IntCorner_ID_j=0; IntCorner_ID_j<2; IntCorner_ID_j++){ const int IntCorner_HALOICIndex_j = IntCorner000_HALOICIndex[1] + IntCorner_ID_j; + for (int IntCorner_ID_i=0; IntCorner_ID_i<2; IntCorner_ID_i++){ const int IntCorner_HALOICIndex_i = IntCorner000_HALOICIndex[0] + IntCorner_ID_i; + + if ( IntCorner_HALOICIndex_i < 0 || IntCorner_HALOICIndex_i >= HALO_IC_Nx || + IntCorner_HALOICIndex_j < 0 || IntCorner_HALOICIndex_j >= HALO_IC_Ny || + IntCorner_HALOICIndex_k < 0 || IntCorner_HALOICIndex_k >= HALO_IC_Nz ) + { + // set the value as zero when the corner is outside the HALO_IC file + IntCorner_Value[IntCorner_ID_k][IntCorner_ID_j][IntCorner_ID_i] = 0.0; + } + else + { + const long IdxIn_HALO_IC = (long)v*HALO_IC_Nz*HALO_IC_Ny*HALO_IC_Nx + + (long)IntCorner_HALOICIndex_k*HALO_IC_Ny*HALO_IC_Nx + + (long)IntCorner_HALOICIndex_j*HALO_IC_Nx + + (long)IntCorner_HALOICIndex_i; + + IntCorner_Value[IntCorner_ID_k][IntCorner_ID_j][IntCorner_ID_i] = ( HALO_IC_Float8 ) ? + (double)(*((double*)&HaloMerger_Halo_HALO_IC_Data[index_halo][IdxIn_HALO_IC*load_data_size])): + (double)(*( (float*)&HaloMerger_Halo_HALO_IC_Data[index_halo][IdxIn_HALO_IC*load_data_size])); + } + + }}} // for (int IntCorner_ID_kji=0; IntCorner_ID_kji<2; IntCorner_ID_kji++) + + // 5. 3D linear interpolation + const double Interpolated_Value = HaloMerger_Trilinear_Interpolation( x, y, z, IntCorner_Value, IntCorner_Coord[0], IntCorner_Coord[1], IntCorner_Coord[2] ); + + return Interpolated_Value; + +} // FUNCTION : HaloMerger_Get_Value_From_HALO_IC_Data +#endif // #if ( MODEL == ELBDM && defined GRAVITY ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_HaloMerger +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_HaloMerger() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM && defined GRAVITY ) +// set the problem-specific runtime parameters + SetParameter(); + + +// set the function pointers of various problem-specific routines + Init_Function_User_Ptr = SetGridIC; + End_User_Ptr = End_HaloMerger; + Init_ExtPot_Ptr = Init_ExtPot_ELBDM_HaloMerger; +# ifdef MASSIVE_PARTICLES + Par_Init_ByFunction_Ptr = Par_Init_ByFunction_HaloMerger; +# endif // ifdef MASSIVE_PARTICLES + +# endif // if ( MODEL == ELBDM && defined GRAVITY ) + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_HaloMerger diff --git a/src/TestProblem/ELBDM/HaloMerger/Par_Init_ByFunction_HaloMerger.cpp b/src/TestProblem/ELBDM/HaloMerger/Par_Init_ByFunction_HaloMerger.cpp new file mode 100644 index 0000000000..b4af6f0c45 --- /dev/null +++ b/src/TestProblem/ELBDM/HaloMerger/Par_Init_ByFunction_HaloMerger.cpp @@ -0,0 +1,171 @@ +#include "GAMER.h" +#include "Par_EquilibriumIC.h" + +#ifdef MASSIVE_PARTICLES + +extern int HaloMerger_ParCloud_InitMode; +extern int HaloMerger_ParCloud_Num; +extern double (*HaloMerger_ParCloud_CenCoord)[3]; +extern double (*HaloMerger_ParCloud_Velocity)[3]; +extern char (*HaloMerger_ParCloud_DensProf_Filename)[MAX_STRING]; +extern double *HaloMerger_ParCloud_DensProf_MaxR; +extern int *HaloMerger_ParCloud_RSeed; +extern long *HaloMerger_ParCloud_NPar; + + +//------------------------------------------------------------------------------------------------------- +// Function : Par_Init_ByFunction_HaloMerger +// Description : User-specified function to initialize particle attributes +// +// Note : 1. Invoked by Init_GAMER() using the function pointer "Par_Init_ByFunction_Ptr" +// --> This function pointer may be reset by various test problem initializers, in which case +// this funtion will become useless +// 2. Periodicity should be taken care of in this function +// --> No particles should lie outside the simulation box when the periodic BC is adopted +// --> However, if the non-periodic BC is adopted, particles are allowed to lie outside the box +// (more specifically, outside the "active" region defined by amr->Par->RemoveCell) +// in this function. They will later be removed automatically when calling Par_Aux_InitCheck() +// in Init_GAMER(). +// 3. Particles set by this function are only temporarily stored in this MPI rank +// --> They will later be redistributed when calling Par_FindHomePatch_UniformGrid() +// and LB_Init_LoadBalance() +// --> Therefore, there is no constraint on which particles should be set by this function +// +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data +// +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt +//------------------------------------------------------------------------------------------------------- +void Par_Init_ByFunction_HaloMerger( const long NPar_ThisRank, const long NPar_AllRank, + real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, + real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) +{ + + // This function is only for HaloMerger_ParCloud_InitMode == 1 + if ( HaloMerger_ParCloud_Num == 0 || HaloMerger_ParCloud_InitMode != 1 ) return; + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// define the particle attribute arrays + real_par *ParFltData_AllRank[PAR_NATT_FLT_TOTAL]; + for (int v=0; v NPar_AllRank ) + { + Aux_Error( ERROR_INFO, "particle number doesn't match (%ld + %ld = %ld > %ld) !!\n", + Par_Idx0, Cloud_Constructor.params.Cloud_Par_Num, Par_Idx0+Cloud_Constructor.params.Cloud_Par_Num, NPar_AllRank ); + } + + // set an equilibrium initial condition for each particle cloud + Cloud_Constructor.Par_SetEquilibriumIC( ParFltData_AllRank[PAR_MASS], ParFltData_AllRank+PAR_POSX, ParFltData_AllRank+PAR_VELX, Par_Idx0 ); + + // reset the given coordinate and velocity if there is only one particle + if ( Cloud_Constructor.params.Cloud_Par_Num == 1 ) + { + for (int d=0; d<3; d++) + { + ParFltData_AllRank[PAR_POSX+d][Par_Idx0] = Cloud_Constructor.params.Cloud_Center[d]; + ParFltData_AllRank[PAR_VELX+d][Par_Idx0] = Cloud_Constructor.params.Cloud_BulkVel[d]; + } + } + + // update the particle index offset for the next particle cloud + Par_Idx0 += Cloud_Constructor.params.Cloud_Par_Num; + + // free the memory + delete [] Cloud_Constructor.params.Cloud_Center ; + delete [] Cloud_Constructor.params.Cloud_BulkVel; + + } // for (int index_parcloud=0; index_parcloud note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + if ( OPT__INIT == INIT_BY_FUNCTION ) + Aux_Error( ERROR_INFO, "OPT__INIT=1 is not supported for this test problem !!\n" ); + + +// (2) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 0.5; // ~7 Gyr + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + Aux_Error( ERROR_INFO, "OPT__INIT=1 is not supported for this test problem !!\n" ); + +} // FUNCTION : SetGridIC +#endif // #if ( MODEL == ELBDM && defined GRAVITY ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_IsolatedHalo +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_IsolatedHalo() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM && defined GRAVITY ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; +# endif // if ( MODEL == ELBDM && defined GRAVITY ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_IsolatedHalo diff --git a/src/TestProblem/ELBDM/JeansInstabilityComoving/Init_TestProb_ELBDM_JeansInstabilityComoving.cpp b/src/TestProblem/ELBDM/JeansInstabilityComoving/Init_TestProb_ELBDM_JeansInstabilityComoving.cpp new file mode 100644 index 0000000000..a79f67ccf9 --- /dev/null +++ b/src/TestProblem/ELBDM/JeansInstabilityComoving/Init_TestProb_ELBDM_JeansInstabilityComoving.cpp @@ -0,0 +1,309 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static double Jeans_RealAmp0; // proportional coefficient of the real part of the wave function +static double Jeans_Phase0; // initial phase shift + +static double Jeans_ImagAmp0; // proportional coefficient of the imaginary part of the wave function +static double Jeans_Wavelength; // wavelength +static double Jeans_WaveK; // wavenumber +static double Jeans_WaveKj; // critical wavenumber +static bool Jeans_Stable; // true/false --> Jeans stable/unstable +// ======================================================================================= + + + +// inline functions to calculate the amplitudes of the real and imaginary parts +// ======================================================================================= +inline double Jeans_RealAmp( const double RealAmp0, const double y ) +{ + const double y2 = y*y; + + return RealAmp0 * ( 3.0*cos(y) + 3.0*y*sin(y) - y2*cos(y) ) / y2; +} + +inline double Jeans_ImagAmp( const double ImagAmp0, const double y ) +{ + const double y2 = y*y; + const double y3 = y*y2; + const double y4 = y2*y2; + + return -ImagAmp0 * ( -6.0*y*cos(y) - 6.0*y2*sin(y) + 3.0*y3*cos(y) + y4*sin(y) ) / y4; +} +// ======================================================================================= + +static void OutputError(); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifndef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be enabled !!\n" ); +# endif + +# ifndef COMOVING + Aux_Error( ERROR_INFO, "COMOVING must be enabled !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + + for (int f=0; f<6; f++) + if ( OPT__BC_FLU[f] != BC_FLU_PERIODIC ) + Aux_Error( ERROR_INFO, "must adopt periodic BC for fluid --> reset OPT__BC_FLU* !!\n" ); + +# ifdef GRAVITY + if ( OPT__BC_POT != BC_POT_PERIODIC ) + Aux_Error( ERROR_INFO, "must adopt periodic BC for gravity --> reset OPT__BC_POT !!\n" ); +# endif + +# ifdef COMOVING + if ( OMEGA_M0 != 1.0 ) + Aux_Error( ERROR_INFO, "must adopt \"OMEGA_M0 = 1.0\" !!\n" ); +# endif + + if ( amr->BoxSize[0] != amr->BoxSize[1] || amr->BoxSize[0] != amr->BoxSize[2] ) + Aux_Error( ERROR_INFO, "simulation domain must be cubic --> reset BOX_SIZE !!\n" ); + + +// warnings + if ( MPI_Rank == 0 ) + { +# ifndef FLOAT8 + Aux_Message( stderr, "WARNING : it's recommended to enable FLOAT8 for this test !!\n" ); +# endif + + if ( !OPT__OUTPUT_USER ) + Aux_Message( stderr, "WARNING : it's recommended to enable OPT__OUTPUT_USER !!\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "Jeans_RealAmp0", &Jeans_RealAmp0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Jeans_Phase0", &Jeans_Phase0, 0.0, NoMin_double, NoMax_double ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + + +// (2) set the problem-specific derived parameters + Jeans_ImagAmp0 = Jeans_RealAmp0; + Jeans_Wavelength = amr->BoxSize[0]/sqrt(3.0); // assuming cubic simulation domain + Jeans_WaveK = 2.0*M_PI/Jeans_Wavelength; + Jeans_WaveKj = POW( 6.0*Time[0]*SQR(ELBDM_ETA), 0.25 ); + Jeans_Stable = ( Jeans_WaveK > Jeans_WaveKj ) ? true : false; + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; +// End_T : (stable/unstable) --> (1 period in the high-k limit / grow by a factor of 50 in the low-k limit) + const double End_T_Default = ( Jeans_Stable) ? + A_INIT + pow( 0.5*Jeans_WaveK*Jeans_WaveK/M_PI/ELBDM_ETA, 2.0 ) : + A_INIT*50; + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + const double y = SQR(Jeans_WaveK)/ELBDM_ETA*pow( Time[0], -0.5 ); + + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " real part coefficient = %13.7e\n", Jeans_RealAmp0 ); + Aux_Message( stdout, " imag part coefficient = %13.7e\n", Jeans_ImagAmp0 ); + Aux_Message( stdout, " initial phase shift = %13.7e\n", Jeans_Phase0 ); + Aux_Message( stdout, " real part amplitude = %13.7e\n", Jeans_RealAmp(Jeans_RealAmp0, y) ); + Aux_Message( stdout, " imag part amplitude = %13.7e\n", Jeans_ImagAmp(Jeans_ImagAmp0, y) ); + Aux_Message( stdout, " wavelength = %13.7e\n", Jeans_Wavelength ); + Aux_Message( stdout, " wavenumber = %13.7e\n", Jeans_WaveK ); + Aux_Message( stdout, " critical wavenumber = %13.7e\n", Jeans_WaveKj ); + Aux_Message( stdout, " Jeans stable = %s\n", (Jeans_Stable)?"YES":"NO" ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + const double r = 1.0/sqrt(3.0)*( x + y + z ); + const double Jeans_y = SQR(Jeans_WaveK)/ELBDM_ETA*pow( Time, -0.5 ); + const double Phase = Jeans_WaveK*r + Jeans_Phase0; + const double Re = 1.0 + Jeans_RealAmp( Jeans_RealAmp0, Jeans_y )*cos( Phase ); + const double Im = Jeans_ImagAmp( Jeans_ImagAmp0, Jeans_y )*cos( Phase ); + + fluid[DENS] = SQR( Re ) + SQR( Im ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Re; + fluid[IMAG] = Im; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = SATAN2( Im, Re ); + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : OutputError +// Description : Output the L1 error +// +// Note : 1. Invoke Output_L1Error() +// 2. Use SetGridIC() to provide the analytical solution at any given time +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void OutputError() +{ + + const char Prefix[100] = "JeansInstabilityComoving"; + const OptOutputPart_t Part = OUTPUT_DIAG; + + Output_L1Error( SetGridIC, NULL, Prefix, Part, NULL_REAL, NULL_REAL, NULL_REAL ); + +} // FUNCTION : OutputError +#endif // #if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_JeansInstabilityComoving +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_JeansInstabilityComoving() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; + Output_User_Ptr = OutputError; +# endif // #if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_JeansInstabilityComoving diff --git a/src/TestProblem/ELBDM/LSS/Init_TestProb_ELBDM_LSS.cpp b/src/TestProblem/ELBDM/LSS/Init_TestProb_ELBDM_LSS.cpp new file mode 100644 index 0000000000..2d00db3636 --- /dev/null +++ b/src/TestProblem/ELBDM/LSS/Init_TestProb_ELBDM_LSS.cpp @@ -0,0 +1,269 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static int LSS_InitMode; // initialization mode: 1=density-only, 2=real and imaginary parts or phase and density +// ======================================================================================= + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifndef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be enabled !!\n" ); +# endif + +# ifndef COMOVING + Aux_Error( ERROR_INFO, "COMOVING must be enabled !!\n" ); +# endif + +# ifdef GRAVITY + if ( OPT__BC_FLU[0] != BC_FLU_PERIODIC || OPT__BC_POT != BC_POT_PERIODIC ) + Aux_Error( ERROR_INFO, "must adopt periodic BC for this test !!\n" ); +# endif + + if ( OPT__INIT == INIT_BY_FUNCTION ) + Aux_Error( ERROR_INFO, "OPT__INIT=INIT_BY_FUNCTION (1) is not supported for this test !!\n" ); + + +// warnings + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "LSS_InitMode", &LSS_InitMode, 1, 1, 2 ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + + +// (2) set the problem-specific derived parameters + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 1.0; + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " initialization mode = %d\n", LSS_InitMode ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_ByFile_ELBDM_LSS +// Description : Function to actually set the fluid field from the input uniform-mesh array +// +// Note : 1. Invoked by Init_ByFile_AssignData() using the function pointer Init_ByFile_User_Ptr() +// --> The function pointer may be reset by various test problem initializers, in which case +// this funtion will become useless +// 2. One can use LSS_InitMode to support different data formats +// 3. For ELBDM_SCHEME == ELBDM_WAVE this function expects: +// LSS_InitMode == 1: Density +// LSS_InitMode == 2: Real and imaginary part +// For ELBDM_SCHEME == ELBDM_HYBRID this function expects: +// LSS_InitMode == 1: Density +// LSS_InitMode == 2: Density and phase +// Parameter : fluid_out : Fluid field to be set +// fluid_in : Fluid field loaded from the uniform-mesh array (UM_IC) +// nvar_in : Number of variables in fluid_in +// x/y/z : Target physical coordinates +// Time : Target physical time +// lv : Target AMR level +// AuxArray : Auxiliary array +// +// Return : fluid_out +//------------------------------------------------------------------------------------------------------- +void Init_ByFile_ELBDM_LSS( real fluid_out[], const real fluid_in[], const int nvar_in, + const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + double Re, Im, De; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + double Ph; +# endif + + switch ( LSS_InitMode ) + { + case 1: + { + if ( nvar_in != 1 ) Aux_Error( ERROR_INFO, "nvar_in (%d) != 1 for LSS_InitMode 1 !!\n", nvar_in ); + + const double AveDens = 1.0; // assuming background density = 1.0 + const double GrowingFrac = 3.0/5.0; // growing-mode amplitude = total amplitude * 3/5 + + Re = sqrt( (fluid_in[0]-AveDens )/GrowingFrac + AveDens ); + Im = 0.0; // constant phase + De = SQR( Re ) + SQR( Im ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + Ph = 0.0; +# endif + + break; + } + + case 2: + { + if ( nvar_in != 2 ) Aux_Error( ERROR_INFO, "nvar_in (%d) != 2 for LSS_InitMode 2 !!\n", nvar_in ); + +// ELBDM_WAVE expects real and imaginary parts +// ELBDM_HYBRID expects density and phase +# if ( ELBDM_SCHEME == ELBDM_WAVE ) + Re = fluid_in[0]; + Im = fluid_in[1]; + De = SQR( Re ) + SQR( Im ); +# elif ( ELBDM_SCHEME == ELBDM_HYBRID ) + De = fluid_in[0]; + Ph = fluid_in[1]; + Re = sqrt( De )*cos( Ph ); + Im = sqrt( De )*sin( Ph ); +# else +# error : ERROR : unsupported ELBDM_SCHEME !! +# endif + break; + } + + default: + Aux_Error( ERROR_INFO, "unsupported initialization mode (%s = %d) !!\n", + "LSS_InitMode", LSS_InitMode ); + } // switch ( LSS_InitMode ) + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid_out[DENS] = De; + fluid_out[REAL] = Re; + fluid_out[IMAG] = Im; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid_out[DENS] = De; + fluid_out[PHAS] = Ph; + fluid_out[STUB] = 0.0; + } +# endif + +} // Init_ByFile_ELBDM_LSS +#endif // #if ( MODEL == ELBDM ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_LSS +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_LSS() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_ByFile_User_Ptr = Init_ByFile_ELBDM_LSS; +# endif // #if ( MODEL == ELBDM ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_LSS diff --git a/src/TestProblem/ELBDM/Perturbation/Init_TestProb_ELBDM_Perturbation.cpp b/src/TestProblem/ELBDM/Perturbation/Init_TestProb_ELBDM_Perturbation.cpp new file mode 100644 index 0000000000..854854a437 --- /dev/null +++ b/src/TestProblem/ELBDM/Perturbation/Init_TestProb_ELBDM_Perturbation.cpp @@ -0,0 +1,294 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static double Perturbation_Amplitude; // maximum amplitude of perturbations +static double Perturbation_BgAmplitude; // amplitude of background density +static int Perturbation_N; // number of excitations +static int Perturbation_NDim; // dimensionality of the problem +static double Perturbation_Wavelength[3]; // wavelength of the largest perturbation in x, y, z direction + +// number of modes in Fourier series +#define FOURIER_MODE_NUMBER 4 +// number of combinations of odd and even waves in 3D +// sine = s; cosine = c +// |sss, ssc, scc, ccc, scs, css, csc, ccs| = 8 +#define EVEN_ODD_WAVE_COMBINATIONS 8 + +// array of uniform, random numbers between 0 and 1 used as amplitudes of plane waves +// numbers are kept fixed to ensure reproducibility of test +const real Perturbation_Coefficients[EVEN_ODD_WAVE_COMBINATIONS][FOURIER_MODE_NUMBER][FOURIER_MODE_NUMBER][FOURIER_MODE_NUMBER] = {{{{ 3.70157933e-01, 2.87661055e-01, -1.14617545e-01,-1.30226995e-01}, { 4.83364854e-01, -4.75112608e-01, -7.29319183e-02, 1.38984806e-01}, { 2.16194361e-01, 3.41238342e-01, -2.87929415e-01, 2.25786458e-02}, {-4.83181107e-01, -2.57694103e-01, 2.91195071e-01, 3.34835372e-01}},{{ 3.99972133e-01, 4.51725653e-01, 3.35312718e-01, 2.66909282e-02}, {-4.23703362e-02, -4.11875769e-01, -1.83606956e-01,-1.78758890e-01}, { 4.96922272e-02, -1.50883654e-01, -1.91524518e-01, 4.98346117e-01}, { 3.03750126e-01, 4.06333736e-01, 4.08116864e-01,-2.81812666e-01}},{{ 3.22437194e-01, 2.48851934e-01, 5.39195840e-02, 2.11813153e-01}, { 3.18778971e-01, 3.40759185e-02, -4.80865598e-01,-2.95609488e-01}, { 4.47373859e-01, 4.03135667e-01, 4.16538014e-01,-2.69895849e-01}, { 3.70663193e-01, -1.37924688e-01, -1.42938379e-01,-4.09558646e-01}},{{-3.11079156e-01, -2.76410015e-01, -3.28665676e-01, 4.47260927e-02}, { 1.76360058e-01, -4.66259868e-01, -2.38358332e-01,-1.47708993e-01}, {-4.82777662e-01, 1.12256224e-01, -3.01588320e-01,-4.74030422e-01}, { 1.07085148e-01, -2.34686965e-01, -2.02382251e-01,-3.37103671e-01}}}, {{{-4.08713347e-01, -3.13828583e-01, 2.18916025e-01,-3.32790995e-01}, {-1.00412594e-01, -4.39902472e-01, 3.62668702e-01,-2.70383886e-01}, {-1.03632364e-01, -8.13027821e-03, -2.76968194e-01, 1.77794425e-01}, { 4.84028109e-01, 2.00890594e-01, -4.76499451e-01, 3.66511913e-01}},{{-3.49768123e-01, 2.42690500e-01, -7.02395920e-02, 4.39562475e-03}, { 1.29983783e-01, -2.37280298e-01, 8.77797873e-02,-3.60590530e-01}, {-2.02311492e-01, 8.37045684e-02, -1.04425110e-01, 3.83863934e-01}, { 1.27421036e-02, -4.11458917e-01, 3.61996430e-01, 8.09036036e-02}},{{-1.42854127e-02, 2.27874506e-01, 4.88905822e-01, 3.88393874e-01}, { 1.21405037e-01, 4.25367583e-01, 2.84862906e-01, 3.52336664e-01}, { 2.57797957e-01, 1.64064348e-01, 1.49956765e-01, 4.88134653e-01}, {-9.86264265e-02, 4.99082438e-01, 2.21083792e-01,-3.97632096e-01}},{{-2.63078419e-03, -4.58650858e-01, 1.71625327e-01,-4.04565318e-01}, {-3.05466543e-01, -1.58551752e-01, 4.72060392e-01,-4.70209661e-01}, { 4.56730484e-01, -4.45751177e-01, -3.13578080e-01, 4.92641643e-01}, { 3.03883947e-01, -1.85514920e-01, 3.37478030e-01,-4.07561715e-02}}}, {{{ 2.62097921e-01, 2.97092238e-01, -3.73326843e-01,-3.39537017e-01}, {-4.95683398e-01, 3.21975929e-01, 3.54554653e-01,-1.72553711e-01}, {-3.62993596e-01, 9.64676591e-02, 1.80556501e-01,-4.45890979e-01}, { 3.13441971e-01, 4.34439590e-01, 2.42752851e-01,-1.82196611e-01}},{{ 9.20899806e-03, 8.97535287e-02, 3.19834761e-01, 1.56834140e-01}, { 1.83504262e-01, -3.95596977e-01, -3.79329605e-01,-4.21551606e-01}, { 3.17537613e-01, -4.08168915e-01, -1.14194353e-01, 4.29083816e-01}, { 2.88347641e-01, 1.78310318e-01, 3.27172528e-01,-3.21315615e-01}},{{ 3.60055424e-01, 4.45609527e-01, 4.31798216e-02, 2.70207899e-01}, { 1.84280226e-01, 3.46331783e-01, -7.68265538e-02, 2.59857745e-01}, { 1.60618091e-01, -3.44586908e-01, -1.34722316e-01,-2.08190523e-03}, {-7.01402042e-02, 4.85526042e-02, 4.97900282e-01, 7.61367799e-03}},{{-4.41327900e-01, 3.42778044e-01, 3.42692990e-01, 2.45246921e-01}, {-1.89767451e-01, 2.49228412e-01, -9.12325997e-02, 2.67070264e-02}, {-3.68875850e-01, 2.77455339e-01, 3.63014414e-01,-3.24135262e-01}, { 2.51946115e-01, 4.39481375e-01, 3.56650168e-01, 3.84638290e-01}}}, {{{-4.53928002e-02, -1.69417888e-02, -1.46374118e-01,-2.23106453e-01}, { 6.87297269e-02, 4.51183654e-01, 7.83833733e-02, 1.02898840e-01}, {-4.83877530e-01, 3.69301569e-01, -4.06203833e-01,-3.85813112e-01}, { 3.07595826e-01, 3.38553389e-01, -7.22095211e-02,-3.64892489e-01}},{{ 4.54481059e-02, -3.36558916e-01, -2.00978848e-01, 3.33308470e-01}, { 1.71080805e-01, 9.06790849e-03, 2.29485173e-01, 1.85577715e-01}, {-1.80768843e-01, 2.93846645e-01, 1.31851251e-01,-6.74915994e-02}, {-4.44747160e-02, 1.53734555e-01, 3.79579201e-01, 9.48838933e-02}},{{ 3.12423448e-01, -1.86750768e-01, 2.02667198e-01,-5.76802213e-02}, { 2.00821073e-02, -2.15202092e-01, 3.48253885e-01,-2.01645085e-01}, { 2.82557207e-01, -3.18390960e-01, 4.35763156e-01,-4.10745827e-01}, {-2.24121513e-01, -2.43306191e-01, 4.34910113e-02,-2.01556085e-01}},{{ 4.95275319e-01, -2.08364975e-01, -2.14653283e-02, 2.25898744e-01}, {-2.97036076e-02, 3.61856364e-01, -2.48804357e-01,-4.75634739e-01}, {-2.41975291e-02, -3.75060214e-01, 4.62327114e-01, 4.98309613e-01}, { 4.64745001e-01, 1.70913893e-01, -2.26453867e-01,-1.10852500e-01}}}, {{{ 2.82354296e-01, -2.60326987e-01, 1.09137825e-01, 2.50924407e-01}, { 1.73186938e-01, -2.04184583e-01, 2.19582731e-01,-2.31767254e-01}, { 6.39284787e-02, -9.91275331e-02, 4.56313778e-01,-2.97354470e-01}, { 4.86058379e-01, -4.23742689e-01, -2.29603730e-01,-2.92610904e-01}},{{ 2.71353093e-01, 3.02961538e-02, -3.26585760e-01,-3.28235288e-01}, {-3.79138984e-01, 4.23960923e-01, 4.43697676e-01,-8.72572340e-02}, {-1.62106341e-01, -2.92301229e-01, 5.72712020e-02, 4.85068780e-01}, {-4.38076467e-01, -6.33783327e-02, 3.11416607e-01, 3.26701174e-01}},{{ 3.48273688e-01, 1.25223847e-01, -3.21015071e-01,-2.31706245e-01}, {-1.59149642e-01, -4.70362740e-01, 6.03381845e-02, 3.68068173e-01}, { 8.75896960e-02, -1.69765926e-01, 6.50150737e-02, 8.81910599e-02}, {-5.88508645e-02, 2.43264706e-01, -3.81893714e-01,-1.22887531e-01}},{{ 1.39862438e-01, 1.97928033e-01, -2.92122745e-01,-4.88128859e-01}, { 1.98964559e-01, 3.90963169e-01, -4.20036820e-01, 5.42304392e-02}, {-2.50761287e-02, 3.01265782e-01, 4.54165847e-01,-2.17137378e-01}, { 1.03521342e-01, 4.59106162e-01, -4.79573327e-01, 4.96686363e-01}}}, {{{ 2.11983181e-01, 8.93027270e-02, 3.57318532e-01, 3.25551087e-01}, { 4.00435477e-01, 9.83212895e-02, 4.76031060e-01,-4.50948616e-01}, {-3.63721516e-01, -4.48825789e-01, 3.30491120e-02, 1.78796882e-01}, { 4.03174572e-01, 4.31331858e-01, -3.49696233e-01, 2.36679207e-01}},{{ 3.67147385e-01, -1.81236388e-01, 2.74202109e-01, 1.15034060e-01}, {-4.43555318e-01, 1.80084099e-01, -2.66868662e-01, 8.24194506e-02}, {-1.84774575e-01, -2.13175273e-01, -1.63463928e-02, 4.89946802e-01}, { 8.89487215e-03, 2.37742434e-01, -4.23641968e-01, 3.32801898e-01}},{{-2.52801356e-01, -2.55633512e-01, 4.30348206e-01, 2.35484929e-01}, { 1.74822782e-01, -1.30220469e-01, -3.81384359e-01,-6.83468781e-02}, {-4.32505606e-03, -7.89800007e-02, 3.85830341e-01,-2.95375805e-01}, {-3.66000771e-01, -3.92086527e-01, -4.31152595e-01, 1.35240517e-01}},{{ 4.87098219e-01, -3.18127523e-01, 7.67794535e-02,-5.72398610e-02}, {-4.46582225e-01, 2.38632127e-01, 2.29158497e-01, 2.54726381e-01}, { 4.61098653e-01, -2.40051714e-01, 1.13974696e-01, 2.03922752e-01}, {-1.60903152e-01, -3.53346814e-01, 1.52593709e-01,-4.16927445e-01}}}, {{{ 4.99163616e-01, -4.81549572e-01, -3.53001458e-01, 3.09968565e-01}, {-3.62482142e-01, -1.51464726e-02, 9.94907721e-03, 4.98152728e-01}, {-1.48042408e-01, 1.34836973e-01, 1.24917919e-01, 1.19056334e-01}, { 3.05008661e-01, 2.61492516e-01, -2.55336855e-01, 1.10654974e-01}},{{ 3.04598880e-01, -1.17095954e-01, 6.66073447e-02,-5.77098993e-02}, {-2.12113708e-01, 1.04647314e-01, -3.30773266e-01, 2.98431503e-01}, { 4.42795331e-01, 1.75432930e-01, -4.56080097e-01, 1.79593750e-01}, {-4.50738968e-01, -3.10565110e-01, -1.34886859e-04, 1.98093939e-03}},{{ 2.40201438e-01, -1.14853257e-01, 3.92644134e-01, 6.80367991e-02}, {-3.52991709e-01, 4.12317138e-01, -4.24015245e-01, 1.57561217e-01}, { 3.33282598e-01, 4.53179149e-01, 4.69813280e-01,-1.40855321e-01}, {-2.55796165e-01, -4.58509046e-01, -3.08439026e-01, 3.55076958e-01}},{{ 1.14146174e-01, 1.21676640e-01, 4.23661797e-02,-1.23919474e-01}, { 8.27115567e-02, 2.10506290e-01, -3.85005862e-01, 3.39318514e-01}, { 1.46903203e-01, -2.15374053e-01, -1.71556316e-01,-4.55641350e-01}, {-3.55815584e-01, 4.64417590e-01, -5.71050339e-02, 3.08085723e-01}}}, {{{-1.57677351e-01, 9.22630040e-02, 3.04553538e-01,-4.39615238e-01}, { 2.32706436e-01, 1.17098293e-01, -2.88543970e-01, 1.70200705e-01}, {-4.96956557e-01, -3.36441256e-01, 9.20915790e-02,-1.87133783e-01}, { 1.71003256e-01, 4.83561674e-02, -1.82343048e-01,-4.87830473e-01}},{{-6.60428634e-02, -3.53534901e-01, 4.50634031e-01, 4.33414701e-01}, {-2.49377988e-01, -7.57523106e-02, 4.85388323e-01, 3.25545359e-01}, { 1.06891548e-01, 3.74882682e-01, 4.04337197e-01, 4.69607825e-02}, {-1.63350312e-02, -4.06013837e-01, 1.23478918e-01, 4.10723417e-01}},{{ 1.72497094e-02, -9.92720126e-02, -1.51539312e-01,-3.35211738e-01}, { 7.68460268e-02, 1.67474396e-01, -1.57993138e-02,-3.83150405e-01}, { 3.09872075e-01, 3.81183746e-01, -4.60159700e-01,-3.46941557e-01}, {-2.00808788e-01, -2.57349550e-01, 1.60312747e-01, 4.04826745e-01}},{{-2.86764579e-01, 3.34851608e-01, 2.10534524e-02,-2.57263471e-01}, { 1.93732324e-01, -4.15945686e-01, 4.80815766e-01,-5.61149598e-02}, { 4.03009815e-02, -1.87718629e-01, 2.38502533e-01, 2.23772782e-01}, { 3.56198340e-01, -5.08654700e-02, -5.24900482e-02,-9.56326772e-02}}}}; +// ======================================================================================= + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( !ELBDM_MATCH_PHASE ) + Aux_Message(stderr, "WARNING: If ELBDM_MATCH_PHASE is not enabled, this test case will fail !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "Perturbation_N", &Perturbation_N, -1, 1, FOURIER_MODE_NUMBER ); + ReadPara->Add( "Perturbation_Amp", &Perturbation_Amplitude, NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "Perturbation_BgAmp", &Perturbation_BgAmplitude, NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "Perturbation_NDim", &Perturbation_NDim, 3, 1, 3 ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + for (int i=0; i<3; ++i) + Perturbation_Wavelength[i] = 2.0 * M_PI / amr->BoxSize[i]; + + switch ( Perturbation_NDim ) { + case 1: + Perturbation_Wavelength[1] = 0; + Perturbation_Wavelength[2] = 0; + break; + + case 2: + Perturbation_Wavelength[2] = 0; + break; + + default: + break; + } + +// (1-3) check the runtime parameters + if ( Perturbation_Amplitude == NoDef_double ) + Aux_Error( ERROR_INFO, "Runtime parameter \"Perturbation_Amplitude\" is not set !!\n" ); + + if ( Perturbation_BgAmplitude == NoDef_double ) + Aux_Error( ERROR_INFO, "Runtime parameter \"Perturbation_Amplitude\" is not set !!\n" ); + + +// (2) set the problem-specific derived parameters + + +// (3) reset other general-purpose parameters + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 2.0; + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "======================================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " amplitude of background amplitude = %13.7e\n", Perturbation_BgAmplitude ); + Aux_Message( stdout, " amplitude of perturbation = %13.7e\n", Perturbation_Amplitude ); + Aux_Message( stdout, " number of Fourier modes = %d\n", Perturbation_N ); + Aux_Message( stdout, " number of dimensions = %d\n", Perturbation_NDim ); + Aux_Message( stdout, "======================================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + double kx, ky, kz, d1, d2, d3, d4, d5, d6, dtotal, omega; + + double Re = Perturbation_BgAmplitude; + double Im = 0.0; + + for (int n=0; nuse_wave_flag[lv] ) { +# endif + fluid[REAL] = Re; + fluid[IMAG] = Im; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = SATAN2( Im, Re ); + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : OutputError +// Description : Output the L1 error +// +// Note : 1. Invoke Output_L1Error() +// 2. Use SetGridIC() to provide the analytical solution at any given time +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void OutputError() +{ + + const char Prefix[100] = "Perturbation"; + const OptOutputPart_t Part = OUTPUT_X; + + Output_L1Error( SetGridIC, NULL, Prefix, Part, 0.0, 0.0, 0.0 ); + +} // FUNCTION : OutputError +#endif // #if ( MODEL == ELBDM ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_Soliton +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_Perturbation() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +# if ( MODEL == ELBDM ) +// validate the compilation flags and runtime parameters + Validate(); + +// set the problem-specific runtime parameters + SetParameter(); + + Init_Function_User_Ptr = SetGridIC; + Output_User_Ptr = OutputError; +# endif + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_Perturbation diff --git a/src/TestProblem/ELBDM/PlaneWave/Init_TestProb_ELBDM_PlaneWave.cpp b/src/TestProblem/ELBDM/PlaneWave/Init_TestProb_ELBDM_PlaneWave.cpp new file mode 100644 index 0000000000..81eca44420 --- /dev/null +++ b/src/TestProblem/ELBDM/PlaneWave/Init_TestProb_ELBDM_PlaneWave.cpp @@ -0,0 +1,390 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static int PWave_NWavelength; // number of plane wave wavelength (will be reset to 3 times input value if PWave_XYZ == 3) +static double PWave_Amp; // plane wave amplitude +static double PWave_Phase0; // plane wave phase constant +static int PWave_XYZ; // plane wave direction (0/1/2/3 --> x/y/z/diagonal) +static int PWave_LSR; // plane wave direction (<0/0/>0 --> Left-moving/Standing/Right-moving) + +static double PWave_Lambda; // plane wave wavelength +static double PWave_Period; // plane wave period +static double PWave_WaveK; // plane wave wavenumber +static double PWave_WaveW; // plane wave angular frequency +static double PWave_PhaseV; // plane wave phase velocity +static double PWave_GroupV; // plane wave group velocity + +static FieldIdx_t PWave_Idx_Phase = Idx_Undefined; // field index for unwrapped phase +// ======================================================================================= + +static void OutputError(); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifdef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be disabled !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + + for (int f=0; f<6; f++) + if ( OPT__BC_FLU[f] != BC_FLU_PERIODIC ) + Aux_Error( ERROR_INFO, "must adopt periodic BC for fluid --> reset OPT__BC_FLU* !!\n" ); + + if ( NCOMP_PASSIVE_USER != 1 ) + Aux_Error( ERROR_INFO, "please set NCOMP_PASSIVE_USER to 1 !!\n" ); + + +// warnings + if ( MPI_Rank == 0 ) + { +# ifndef FLOAT8 + Aux_Message( stderr, "WARNING : it's recommended to enable FLOAT8 for this test !!\n" ); +# endif + + if ( !OPT__OUTPUT_USER ) + Aux_Message( stderr, "WARNING : it's recommended to enable OPT__OUTPUT_USER !!\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "PWave_NWavelength", &PWave_NWavelength, 2, 1, NoMax_int ); + ReadPara->Add( "PWave_Amp", &PWave_Amp, 1.0, Eps_double, NoMax_double ); + ReadPara->Add( "PWave_Phase0", &PWave_Phase0, 0.0, NoMin_double, NoMax_double ); + ReadPara->Add( "PWave_XYZ", &PWave_XYZ, 0, 0, 3 ); + ReadPara->Add( "PWave_LSR", &PWave_LSR, 1, NoMin_int, NoMax_int ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check and reset the runtime parameters + if ( PWave_XYZ == 3 && ( amr->BoxSize[0] != amr->BoxSize[1] || amr->BoxSize[0] != amr->BoxSize[2] ) ) + Aux_Error( ERROR_INFO, "simulation domain must be CUBIC in %s test if PWave_XYZ == 3 !!\n", "ELBDM PlaneWave" ); + + if ( PWave_XYZ == 3 ) { + PWave_NWavelength *= 3; + PRINT_RESET_PARA( PWave_NWavelength, FORMAT_INT, ""); + } + + +// (2) set the problem-specific derived parameters + PWave_Lambda = ( PWave_XYZ == 3 ) ? amr->BoxSize[0]*sqrt(3.0)/PWave_NWavelength : amr->BoxSize[PWave_XYZ]/PWave_NWavelength; + PWave_WaveK = 2.0*M_PI/PWave_Lambda; + PWave_WaveW = 0.5*SQR( PWave_WaveK )/ELBDM_ETA; + PWave_Period = 2.0*M_PI/PWave_WaveW; + PWave_PhaseV = 0.5*PWave_WaveK/ELBDM_ETA; + PWave_GroupV = PWave_WaveK/ELBDM_ETA; + + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 6.0*PWave_Period; // 6 periods + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " number of plane wave wavelength = %d\n", PWave_NWavelength ); + Aux_Message( stdout, " plane wave wavelength = %13.7e\n", PWave_Lambda ); + Aux_Message( stdout, " plane wave amplitude = %13.7e\n", PWave_Amp ); + Aux_Message( stdout, " plane wave phase constant = %13.7e\n", PWave_Phase0 ); + Aux_Message( stdout, " plane wave wavenumber = %13.7e\n", PWave_WaveK ); + Aux_Message( stdout, " plane wave angular frequency = %13.7e\n", PWave_WaveW ); + Aux_Message( stdout, " plane wave period = %13.7e\n", PWave_Period ); + Aux_Message( stdout, " standing wave = %s\n", ( PWave_LSR == 0 ) ? "YES" : "NO" ); + Aux_Message( stdout, " plane wave direction = %s%s\n", ( PWave_LSR == 0 ) ? "" : + ( PWave_LSR > 0 ) ? "+" : "-", + ( PWave_XYZ == 0 ) ? "x" : + ( PWave_XYZ == 1 ) ? "y" : + ( PWave_XYZ == 2 ) ? "z" : "diagonal" ); + if ( PWave_LSR != 0 ) { + Aux_Message( stdout, " plane wave phase velocity = %13.7e\n", PWave_PhaseV ); + Aux_Message( stdout, " plane wave group velocity = %13.7e\n", PWave_GroupV ); + } + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// 3. fluid[Idx_Phase] is used to store the unwrapped phase +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + double r, PhaseR, PhaseL, Real, Imag, Phase; + switch ( PWave_XYZ ) + { + case 0 : r = x; break; + case 1 : r = y; break; + case 2 : r = z; break; + case 3 : r = 1.0/sqrt(3.0)*( x + y + z ); break; + default : Aux_Error( ERROR_INFO, "incorrect parameter \"%s = %d [0/1/2/3]\" !!\n", "PWave_XYZ", PWave_XYZ ); + break; + } + + PhaseR = PWave_WaveK*r - PWave_WaveW*Time + PWave_Phase0; + PhaseL = -PWave_WaveK*r - PWave_WaveW*Time + PWave_Phase0; + +// set the real and imaginary parts + if ( PWave_LSR > 0 ) { // right-moving wave + Real = PWave_Amp*cos( PhaseR ); + Imag = PWave_Amp*sin( PhaseR ); + Phase = PhaseR; + } + else if ( PWave_LSR < 0 ) { // left-moving wave + Real = PWave_Amp*cos( PhaseL ); + Imag = PWave_Amp*sin( PhaseL ); + Phase = PhaseL; + } + else { // standing wave (PWave_LSR == 0 ) + Real = 0.5*( PWave_Amp*cos( PhaseR ) + PWave_Amp*cos( PhaseL ) ); + Imag = 0.5*( PWave_Amp*sin( PhaseR ) + PWave_Amp*sin( PhaseL ) ); + Phase = SATAN2 ( Imag, Real ); + } + +// set the density + fluid[DENS] = SQR( Real ) + SQR( Imag ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Real; + fluid[IMAG] = Imag; +// set the unwrapped phase + fluid[PWave_Idx_Phase] = SATAN2( Imag, Real ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = Phase; + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : AddNewField_PlaneWave +// Description : Add the unwrapped phase as a problem-specific field +// +// Note : 1. Ref: https://github.com/gamer-project/gamer/wiki/Adding-New-Simulations#v-add-problem-specific-grid-fields-and-particle-attributes +// 2. Invoke AddField() for each of the problem-specific field: +// --> Field label sent to AddField() will be used as the output name of the field +// --> Field index returned by AddField() can be used to access the field data +// 3. Pre-declared field indices are put in Field.h +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void AddNewField_PlaneWave() +{ + + if ( PWave_Idx_Phase == Idx_Undefined ) + PWave_Idx_Phase = AddField( "Phase", FIXUP_FLUX_NO, FIXUP_REST_NO, NORMALIZE_NO, INTERP_FRAC_NO ); + +} // FUNCTION : AddNewField_PlaneWave + + + +//------------------------------------------------------------------------------------------------------- +// Function : Output_UserWorkBeforeOutput_PlaneWave +// Description : Calculate and update the unwrapped phase field before dumping data +// +// Note : 1. Invoked by Output_DumpData() using the function pointer "Output_UserWorkBeforeOutput_Ptr" +// +// Parameter : +// +// Return : +//------------------------------------------------------------------------------------------------------- +void Output_UserWorkBeforeOutput_PlaneWave() +{ + + for (int lv=0; lvFluSg[lv]; + + for (int PID=0; PIDNPatchComma[lv][1]; PID++) + { + for (int k=0; kpatch[FluSg][lv][PID]->fluid[IMAG][k][j][i], + amr->patch[FluSg][lv][PID]->fluid[REAL][k][j][i] ); + + amr->patch[FluSg][lv][PID]->fluid[PWave_Idx_Phase][k][j][i] = Phase; + + } // i,j,k + } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) + } // for (int lv=0; lv note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "SelSimHalo_Filename", SelSimHalo_Filename, NoDef_str, Useless_str, Useless_str ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + + +// (2) load the radial profiles + if ( OPT__INIT != INIT_BY_RESTART ) + { +// load table (note that the 3rd column in the table is velocity and we need to convert it to phase later) + const bool RowMajor_No = false; // load data into the column-major order + const bool AllocMem_Yes = true; // allocate memory for SelSimHalo_Prof + const int NCol = 3; // total number of columns to be loaded + const int Col[NCol] = {0, 1, 2}; // target columns + double *Prof_Radius, *Prof_Dens, *Prof_Phase; + + SelSimHalo_NBin = Aux_LoadTable( SelSimHalo_Prof, SelSimHalo_Filename, NCol, Col, RowMajor_No, AllocMem_Yes ); + + Prof_Radius = SelSimHalo_Prof + 0*SelSimHalo_NBin; + Prof_Dens = SelSimHalo_Prof + 1*SelSimHalo_NBin; + Prof_Phase = SelSimHalo_Prof + 2*SelSimHalo_NBin; + + +// backup the velocity data + double *Prof_Velocity = new double [SelSimHalo_NBin]; + + memcpy( Prof_Velocity, Prof_Phase, SelSimHalo_NBin*sizeof(double) ); + + +// integrate velocity to get phase + Prof_Phase[0] = 0.0; + + for (int b=1; b a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 1.0/3.0; // z = 2.0 + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " profile table = %s\n", SelSimHalo_Filename ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + const double *Prof_Radius = SelSimHalo_Prof + 0*SelSimHalo_NBin; + const double *Prof_Dens = SelSimHalo_Prof + 1*SelSimHalo_NBin; + const double *Prof_Phase = SelSimHalo_Prof + 2*SelSimHalo_NBin; + + double r, Dens, Phase; + + r = sqrt( SQR(x-amr->BoxCenter[0]) + SQR(y-amr->BoxCenter[1]) + SQR(z-amr->BoxCenter[2]) ); + Dens = Mis_InterpolateFromTable( SelSimHalo_NBin, Prof_Radius, Prof_Dens, r ); + Phase = Mis_InterpolateFromTable( SelSimHalo_NBin, Prof_Radius, Prof_Phase, r ); + + if ( Dens == NULL_REAL || Phase == NULL_REAL ) + Aux_Error( ERROR_INFO, "interpolation failed at radius %13.7e (probably outside the input table) !!\n", r ); + + fluid[DENS] = Dens; + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = sqrt( Dens )*cos( Phase ); + fluid[IMAG] = sqrt( Dens )*sin( Phase ); +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = Phase; + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : End_SelfSimilarHalo +// Description : Free memory before terminating the program +// +// Note : 1. Linked to the function pointer "End_User_Ptr" to replace "End_User()" +// +// Parameter : None +//------------------------------------------------------------------------------------------------------- +void End_SelfSimilarHalo() +{ + + delete [] SelSimHalo_Prof; + +} // FUNCTION : End_SelfSimilarHalo +#endif // #if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_SelfSimilarHalo +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_SelfSimilarHalo() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; + End_User_Ptr = End_SelfSimilarHalo; +# endif // if ( MODEL == ELBDM && defined GRAVITY && defined COMOVING ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_SelfSimilarHalo diff --git a/src/TestProblem/ELBDM/Soliton/Init_TestProb_ELBDM_Soliton.cpp b/src/TestProblem/ELBDM/Soliton/Init_TestProb_ELBDM_Soliton.cpp new file mode 100644 index 0000000000..c7650ad273 --- /dev/null +++ b/src/TestProblem/ELBDM/Soliton/Init_TestProb_ELBDM_Soliton.cpp @@ -0,0 +1,452 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static int Soliton_N; // total number of solitons +static int Soliton_RSeed; // random seed for setting Soliton_Center[] + // (<0 --> hard coding each soliton) +static double Soliton_CoreRadiusAll; // core radius for all solitons + // (<=0.0 --> hard coding each soliton) +static double Soliton_EmptyRegion; // soliton-free region from the boundary + // (useful only when Soliton_RSeed>=0) +static char Soliton_DensProf_Filename[MAX_STRING]; // filename of the reference soliton density profile + +static int Soliton_DensProf_NBin; // number of radial bins of the soliton density profile +static double *Soliton_DensProf = NULL; // soliton density profile [radius/density] +static double *Soliton_CoreRadius = NULL; // core radius of each soliton +static double (*Soliton_Center)[3] = NULL; // center coordinates of each soliton +static double *Soliton_ScaleL = NULL; // L/D: length/density scale factors of each soliton + // (defined as the ratio between the core radii/peak + // density of the target and reference soliton profiles) +static double *Soliton_ScaleD = NULL; +// ======================================================================================= + +static void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifndef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be enabled !!\n" ); +# endif + +# ifdef COMOVING + Aux_Error( ERROR_INFO, "COMOVING must be disabled !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + +# ifdef GRAVITY + if ( OPT__BC_POT != BC_POT_ISOLATED ) + Aux_Error( ERROR_INFO, "must adopt isolated BC for gravity --> reset OPT__BC_POT !!\n" ); +# endif + + +// warnings + if ( MPI_Rank == 0 ) + { + if ( !OPT__INIT_RESTRICT ) + Aux_Message( stderr, "WARNING : it's recommended to enable OPT__INIT_RESTRICT !!\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM && defined GRAVITY ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "Soliton_N", &Soliton_N, -1, 1, NoMax_int ); + ReadPara->Add( "Soliton_RSeed", &Soliton_RSeed, 0, NoMin_int, NoMax_int ); + ReadPara->Add( "Soliton_CoreRadiusAll", &Soliton_CoreRadiusAll, NoDef_double, NoMin_double, NoMax_double ); + ReadPara->Add( "Soliton_EmptyRegion", &Soliton_EmptyRegion, 0.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Soliton_DensProf_Filename", Soliton_DensProf_Filename, NoDef_str, Useless_str, Useless_str ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + if ( Soliton_RSeed >= 0 && Soliton_EmptyRegion < 0.0 ) + Aux_Error( ERROR_INFO, "Soliton_EmptyRegion (%14.7e) < 0.0 !!\n", Soliton_EmptyRegion ); + + if ( Soliton_CoreRadiusAll == NoDef_double ) + Aux_Error( ERROR_INFO, "Runtime parameter \"Soliton_CoreRadiusAll\" is not set !!\n" ); + + +// (2) set the problem-specific derived parameters +// (2-1) allocate memory + Soliton_CoreRadius = new double [Soliton_N]; + Soliton_Center = new double [Soliton_N][3]; + Soliton_ScaleL = new double [Soliton_N]; + Soliton_ScaleD = new double [Soliton_N]; + +// (2-2) soliton core radii + if ( Soliton_CoreRadiusAll > 0.0 ) + { + for (int t=0; t= 0 ) + { + const double Coord_Min[3] = { Soliton_EmptyRegion, Soliton_EmptyRegion, Soliton_EmptyRegion }; + const double Coord_Max[3] = { amr->BoxSize[0] - Soliton_EmptyRegion, + amr->BoxSize[1] - Soliton_EmptyRegion, + amr->BoxSize[2] - Soliton_EmptyRegion }; + srand( Soliton_RSeed ); + + for (int t=0; tBoxSize[d]; + } + + else + { +// for Soliton_RSeed<0, comment out the following line and hard code the center of each soliton + Aux_Error( ERROR_INFO, "for Soliton_RSeed < 0 and Soliton_N > 1, please comment out this error check and hard code " + "the center of each soliton !!\n" ); + + /* + for (int t=0; t= 0 ) ... else ... + + +// (3) load the reference soliton density profile and evaluate the scale factors + if ( OPT__INIT != INIT_BY_RESTART ) + { +// load the reference profile + const bool RowMajor_No = false; // load data into the column-major order + const bool AllocMem_Yes = true; // allocate memory for Soliton_DensProf + const int NCol = 2; // total number of columns to load + const int Col[NCol] = {0, 1}; // target columns: (radius, density) + + Soliton_DensProf_NBin = Aux_LoadTable( Soliton_DensProf, Soliton_DensProf_Filename, NCol, Col, RowMajor_No, AllocMem_Yes ); + + +// get the core radius of the reference profile + const double *RadiusRef = Soliton_DensProf + 0*Soliton_DensProf_NBin; + const double *DensRef = Soliton_DensProf + 1*Soliton_DensProf_NBin; + const double DensCore = 0.5*DensRef[0]; // define core radius as the half-density radius + + double CoreRadiusRef = NULL_REAL; + + for (int b=1; b= DensCore && DensRef[b+1] <= DensCore ) + { + CoreRadiusRef = 0.5*( RadiusRef[b] + RadiusRef[b+1] ); + break; + } + } + + if ( CoreRadiusRef == NULL_REAL ) + Aux_Error( ERROR_INFO, "cannot determine the reference core radius !!\n" ); + + +// evaluate the scale factors of each soliton + for (int t=0; t a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 1.0e3; + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (5) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "======================================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " total number of solitons = %d\n", Soliton_N ); + Aux_Message( stdout, " random seed for setting the center coord. = %d\n", Soliton_RSeed ); + Aux_Message( stdout, " size of the soliton-free zone = %13.7e\n", Soliton_EmptyRegion ); + Aux_Message( stdout, " density profile filename = %s\n", Soliton_DensProf_Filename ); + Aux_Message( stdout, " number of bins of the density profile = %d\n", Soliton_DensProf_NBin ); + Aux_Message( stdout, "\n" ); + Aux_Message( stdout, " Soliton info:\n" ); + Aux_Message( stdout, " %7s %13s %13s %13s %13s %13s %13s\n", + "ID", "CoreRadius", "ScaleL", "ScaleD", "Center_X", "Center_Y", "Center_Z" ); + for (int t=0; t In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + const double *Table_Radius = Soliton_DensProf + 0*Soliton_DensProf_NBin; // radius + const double *Table_Density = Soliton_DensProf + 1*Soliton_DensProf_NBin; // density + + double r_tar, r_ref, dens_ref; + + +// initialize density as zero since there may be multiple solitons + fluid[DENS] = 0.0; + +// loop over all solitons to get the total density + for (int t=0; t reference radius) + r_ref = r_tar / Soliton_ScaleL[t]; + +// linear interpolation + dens_ref = Mis_InterpolateFromTable( Soliton_DensProf_NBin, Table_Radius, Table_Density, r_ref ); + + if ( dens_ref == NULL_REAL ) + { + if ( r_ref < Table_Radius[0] ) + dens_ref = Table_Density[0]; + + else if ( r_ref >= Table_Radius[Soliton_DensProf_NBin-1] ) + dens_ref = Table_Density[Soliton_DensProf_NBin-1]; + + else + Aux_Error( ERROR_INFO, "interpolation failed at radius %13.7e (min/max radius = %13.7e/%13.7e) !!\n", + r_ref, Table_Radius[0], Table_Radius[Soliton_DensProf_NBin-1] ); + } + +// rescale density (reference density --> target density) and add to the fluid array + fluid[DENS] += dens_ref*Soliton_ScaleD[t]; + } // for (int t=0; tuse_wave_flag[lv] ) { +# endif + fluid[REAL] = sqrt( fluid[DENS] ); + fluid[IMAG] = 0.0; // imaginary part is always zero --> initial phase and velocity are zero +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = 0.0; + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : End_Soliton +// Description : Free memory before terminating the program +// +// Note : 1. Linked to the function pointer "End_User_Ptr" to replace "End_User()" +// +// Parameter : None +//------------------------------------------------------------------------------------------------------- +void End_Soliton() +{ + + delete [] Soliton_DensProf; + delete [] Soliton_CoreRadius; + delete [] Soliton_Center; + delete [] Soliton_ScaleL; + delete [] Soliton_ScaleD; + +} // FUNCTION : End_Soliton + + + +//------------------------------------------------------------------------------------------------------- +// Function : BC +// Description : Set the extenral boundary condition +// +// Note : 1. Linked to the function pointer "BC_User_Ptr" +// +// Parameter : Array : Array to store the prepared data including ghost zones +// ArraySize : Size of Array including the ghost zones on each side +// fluid : Fluid fields to be set +// NVar_Flu : Number of fluid variables to be prepared +// GhostSize : Number of ghost zones +// idx : Array indices +// pos : Physical coordinates +// Time : Physical time +// lv : Refinement level +// TFluVarIdxList : List recording the target fluid variable indices ( = [0 ... NCOMP_TOTAL-1] ) +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ) +{ + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[DENS] = (real)0.0; + fluid[REAL] = (real)0.0; + fluid[IMAG] = (real)0.0; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[DENS] = (real)TINY_NUMBER; + fluid[PHAS] = (real)0.0; + fluid[STUB] = (real)0.0; + } +# endif + +} // FUNCTION : BC +#endif // #if ( MODEL == ELBDM && defined GRAVITY ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_Soliton +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_Soliton() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM && defined GRAVITY ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; + BC_User_Ptr = BC; + End_User_Ptr = End_Soliton; +# endif // #if ( MODEL == ELBDM && defined GRAVITY ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_Soliton diff --git a/src/TestProblem/ELBDM/VortexPairLinear/Init_TestProb_ELBDM_VortexPairLinear.cpp b/src/TestProblem/ELBDM/VortexPairLinear/Init_TestProb_ELBDM_VortexPairLinear.cpp new file mode 100644 index 0000000000..be6bd7312c --- /dev/null +++ b/src/TestProblem/ELBDM/VortexPairLinear/Init_TestProb_ELBDM_VortexPairLinear.cpp @@ -0,0 +1,278 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static double VorPairLin_BgAmp; // psi_vorpair(x,y) = BgAmp + WaveAmp*cos(ky*y)*exp( i*(kx*x-Omega*t+Phase0) ) +static double VorPairLin_WaveAmp; +static double VorPairLin_Phase0; + +static double VorPairLin_kx; +static double VorPairLin_ky; +static double VorPairLin_Omega; + +// optional: +static double VorPairLin_ZWaveAmp; // psi(x, y, z) = psi_vorpair(x,y) + ZWaveAmp * exp( i*(kz*z-ZWaveOmega*t) ) +static double VorPairLin_kz; +static double VorPairLin_ZWaveOmega; +// ======================================================================================= + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifdef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be disabled !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + +// -> when switching from wave scheme back to fluid scheme +// real and imaginary part need to be converted back to phase +// -> the two vortices are connected with a two pi phase jump +// while the wave scheme does not see this jump, the fluid scheme does +// -> the wave physics is invariant under deformations of this jump contour. +// as a result, reconstruction of the phase with and without ELBDM_MATCH_PHASE +// leads to different jump line contours +// -> when ELBDM_MATCH_PHASE is enabled the jump line contour leads to overrefinement +// which is why we should disable this option for the vortex pair tests +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( ELBDM_MATCH_PHASE ) + Aux_Message( stderr, "WARNING: ELBDM_MATCH_PHASE should be disabled in vortex pair tests !!\n" ); +# endif + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "VorPairLin_BgAmp", &VorPairLin_BgAmp, 1.0, 0.0, NoMax_double ); + ReadPara->Add( "VorPairLin_WaveAmp", &VorPairLin_WaveAmp, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "VorPairLin_ZWaveAmp", &VorPairLin_ZWaveAmp, 0.0, 0.0, NoMax_double ); + ReadPara->Add( "VorPairLin_Phase0", &VorPairLin_Phase0, 0.0, NoMin_double, NoMax_double ); + ReadPara->Add( "VorPairLin_kx", &VorPairLin_kx, 1.0, 1.0, NoMax_double ); + ReadPara->Add( "VorPairLin_ky", &VorPairLin_ky, 1.0, 1.0, NoMax_double ); + ReadPara->Add( "VorPairLin_kz", &VorPairLin_kz, 1.0, 1.0, NoMax_double ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + + +// (2) set the problem-specific derived parameters + VorPairLin_kx *= 2.0*M_PI/amr->BoxSize[0]; // by default we set wavelength equal to multiples of the box size + VorPairLin_ky *= 2.0*M_PI/amr->BoxSize[1]; + VorPairLin_kz *= 2.0*M_PI/amr->BoxSize[2]; + VorPairLin_Omega = 0.5/ELBDM_ETA*( SQR(VorPairLin_kx) + SQR(VorPairLin_ky) ); + VorPairLin_ZWaveOmega = 0.5/ELBDM_ETA* SQR(VorPairLin_kz); + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + double End_T_Default = 1.0*2.0*M_PI/VorPairLin_Omega; // 1 period for 2D test + +// in 3D test choose 1 period of the z-wave or x-y-wave depending on which is longer + if ( VorPairLin_ZWaveAmp > 0 ) { + End_T_Default = FMAX( End_T_Default, 1.0*2.0*M_PI/VorPairLin_ZWaveOmega ); + } + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " VorPairLin_BgAmp = %13.7e\n", VorPairLin_BgAmp ); + Aux_Message( stdout, " VorPairLin_WaveAmp = %13.7e\n", VorPairLin_WaveAmp ); + Aux_Message( stdout, " VorPairLin_Phase0 = %13.7e\n", VorPairLin_Phase0 ); + Aux_Message( stdout, " VorPairLin_ZWaveAmp = %13.7e\n", VorPairLin_ZWaveAmp ); + Aux_Message( stdout, " VorPairLin_kx = %13.7e\n", VorPairLin_kx ); + Aux_Message( stdout, " VorPairLin_ky = %13.7e\n", VorPairLin_ky ); + Aux_Message( stdout, " VorPairLin_kz = %13.7e\n", VorPairLin_kz ); + Aux_Message( stdout, " VorPairLin_Omega = %13.7e\n", VorPairLin_Omega ); + Aux_Message( stdout, " VorPairLin_ZWaveOmega = %13.7e\n", VorPairLin_ZWaveOmega ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + const double phase = VorPairLin_kx*x - VorPairLin_Omega*Time + VorPairLin_Phase0; + const double amp = VorPairLin_WaveAmp*cos( VorPairLin_ky*y ); + const double zphase = VorPairLin_kz*z - VorPairLin_ZWaveOmega*Time; + const double zamp = VorPairLin_ZWaveAmp; + const double Re = VorPairLin_BgAmp + amp*cos( phase ) + zamp*cos( zphase ); + const double Im = + amp*sin( phase ) + zamp*sin( zphase ); + + fluid[DENS] = SQR( Re ) + SQR( Im ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Re; + fluid[IMAG] = Im; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = SATAN2( Im, Re ); + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : OutputVortexPairLinearError +// Description : Output the L1 error +// +// Note : 1. Invoke Output_L1Error() +// 2. Use SetGridIC() to provide the analytical solution at any given time +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void OutputVortexPairLinearError() +{ + + const char Prefix[100] = "VortexPairLinear"; + const OptOutputPart_t Part = OUTPUT_X; + + Output_L1Error( SetGridIC, NULL, Prefix, Part, OUTPUT_PART_X, OUTPUT_PART_Y, OUTPUT_PART_Z ); + +} // FUNCTION : OutputVortexPairLinearError +#endif // #if ( MODEL == ELBDM ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_VortexPairLinear +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_VortexPairLinear() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; + Output_User_Ptr = OutputVortexPairLinearError; +# endif // #if ( MODEL == ELBDM ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_VortexPairLinear diff --git a/src/TestProblem/ELBDM/VortexPairRotating/Init_TestProb_ELBDM_VortexPairRotating.cpp b/src/TestProblem/ELBDM/VortexPairRotating/Init_TestProb_ELBDM_VortexPairRotating.cpp new file mode 100644 index 0000000000..b6b3fe6f9e --- /dev/null +++ b/src/TestProblem/ELBDM/VortexPairRotating/Init_TestProb_ELBDM_VortexPairRotating.cpp @@ -0,0 +1,291 @@ +#include "GAMER.h" + + + +// problem-specific global variables +// ======================================================================================= +static double VorPairRot_BgAmp; // psi(R,phi) = BgAmp - J1Amp*J1( sqrt(2*Eta*Omega)*R )*exp( i*(phi-Omega*t+Phase0) ) +static double VorPairRot_J1Amp; +static double VorPairRot_Omega; +static double VorPairRot_Phase0; +// ======================================================================================= + +static void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ); + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Validate +// Description : Validate the compilation flags and runtime parameters for this test problem +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Validate() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ...\n", TESTPROB_ID ); + + +// errors +# if ( MODEL != ELBDM ) + Aux_Error( ERROR_INFO, "MODEL != ELBDM !!\n" ); +# endif + +# ifdef GRAVITY + Aux_Error( ERROR_INFO, "GRAVITY must be disabled !!\n" ); +# endif + +# ifdef PARTICLE + Aux_Error( ERROR_INFO, "PARTICLE must be disabled !!\n" ); +# endif + + +// -> when switching from wave scheme back to fluid scheme +// real and imaginary part need to be converted back to phase +// -> the two vortices are connected with a two pi phase jump +// while the wave scheme does not see this jump, the fluid scheme does +// -> the wave physics is invariant under deformations of this jump contour. +// as a result, reconstruction of the phase with and without ELBDM_MATCH_PHASE +// leads to different jump line contours +// -> when ELBDM_MATCH_PHASE is enabled the jump line contour leads to overrefinement +// which is why we should disable this option for the vortex pair tests +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( ELBDM_MATCH_PHASE ) + Aux_Message( stderr, "WARNING: ELBDM_MATCH_PHASE should be disabled in vortex pair tests !!\n" ); +# endif + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Validating test problem %d ... done\n", TESTPROB_ID ); + +} // FUNCTION : Validate + + + +#if ( MODEL == ELBDM ) +//------------------------------------------------------------------------------------------------------- +// Function : SetParameter +// Description : Load and set the problem-specific runtime parameters +// +// Note : 1. Filename is set to "Input__TestProb" by default +// 2. Major tasks in this function: +// (1) load the problem-specific runtime parameters +// (2) set the problem-specific derived parameters +// (3) reset other general-purpose parameters if necessary +// (4) make a note of the problem-specific parameters +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void SetParameter() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ...\n" ); + + +// (1) load the problem-specific runtime parameters + const char FileName[] = "Input__TestProb"; + ReadPara_t *ReadPara = new ReadPara_t; + +// (1-1) add parameters in the following format: +// --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type +// --> some handy constants (e.g., Useless_bool, Eps_double, NoMin_int, ...) are defined in "include/ReadPara.h" +// ******************************************************************************************************************************** +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ******************************************************************************************************************************** + ReadPara->Add( "VorPairRot_BgAmp", &VorPairRot_BgAmp, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "VorPairRot_J1Amp", &VorPairRot_J1Amp, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "VorPairRot_Omega", &VorPairRot_Omega, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "VorPairRot_Phase0", &VorPairRot_Phase0, 0.0, NoMin_double, NoMax_double ); + + ReadPara->Read( FileName ); + + delete ReadPara; + +// (1-2) set the default values + +// (1-3) check the runtime parameters + + +// (2) set the problem-specific derived parameters + + +// (3) reset other general-purpose parameters +// --> a helper macro PRINT_RESET_PARA is defined in Macro.h + const long End_Step_Default = __INT_MAX__; + const double End_T_Default = 1.0*2.0*M_PI/VorPairRot_Omega; // 1 period + + if ( END_STEP < 0 ) { + END_STEP = End_Step_Default; + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); + } + + if ( END_T < 0.0 ) { + END_T = End_T_Default; + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); + } + + +// (4) make a note + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " VorPairRot_BgAmp = %13.7e\n", VorPairRot_BgAmp ); + Aux_Message( stdout, " VorPairRot_J1Amp = %13.7e\n", VorPairRot_J1Amp ); + Aux_Message( stdout, " VorPairRot_Omega = %13.7e\n", VorPairRot_Omega ); + Aux_Message( stdout, " VorPairRot_Phase0 = %13.7e\n", VorPairRot_Phase0 ); + Aux_Message( stdout, "=============================================================================\n" ); + } + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + +} // FUNCTION : SetParameter + + + +//------------------------------------------------------------------------------------------------------- +// Function : SetGridIC +// Description : Set the problem-specific initial condition on grids +// +// Note : 1. This function may also be used to estimate the numerical errors when OPT__OUTPUT_USER is enabled +// --> In this case, it should provide the analytical solution at the given "Time" +// 2. This function will be invoked by multiple OpenMP threads when OPENMP is enabled +// --> Please ensure that everything here is thread-safe +// +// Parameter : fluid : Fluid field to be initialized +// x/y/z : Physical coordinates +// Time : Physical time +// lv : Target refinement level +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void SetGridIC( real fluid[], const double x, const double y, const double z, const double Time, + const int lv, double AuxArray[] ) +{ + + const double dx = x - amr->BoxCenter[0]; + const double dy = y - amr->BoxCenter[1]; + const double phase = atan2( dy, dx ) - VorPairRot_Omega*Time + VorPairRot_Phase0; + const double R = sqrt( SQR(dx) + SQR(dy) ); + const double J1 = VorPairRot_J1Amp*j1( sqrt(2.0*ELBDM_ETA*VorPairRot_Omega)*R ); + const double Re = VorPairRot_BgAmp - J1*cos( phase ); + const double Im = - J1*sin( phase ); + + fluid[DENS] = SQR( Re ) + SQR( Im ); + +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + if ( amr->use_wave_flag[lv] ) { +# endif + fluid[REAL] = Re; + fluid[IMAG] = Im; +# if ( ELBDM_SCHEME == ELBDM_HYBRID ) + } else { + fluid[PHAS] = SATAN2(Im, Re); + fluid[STUB] = 0.0; + } +# endif + +} // FUNCTION : SetGridIC + + + +//------------------------------------------------------------------------------------------------------- +// Function : OutputVortexPairRotatingError +// Description : Output the L1 error +// +// Note : 1. Invoke Output_L1Error() +// 2. Use SetGridIC() to provide the analytical solution at any given time +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void OutputVortexPairRotatingError() +{ + + const char Prefix[100] = "VortexPairRotating"; + const OptOutputPart_t Part = OUTPUT_X; + + Output_L1Error( SetGridIC, NULL, Prefix, Part, OUTPUT_PART_X, OUTPUT_PART_Y, OUTPUT_PART_Z ); + +} // FUNCTION : OutputVortexPairRotatingError + + + +//------------------------------------------------------------------------------------------------------- +// Function : BC +// Description : Set the extenral boundary condition to the analytical solution +// +// Note : 1. Linked to the function pointer "BC_User_Ptr" +// +// Parameter : Array : Array to store the prepared data including ghost zones +// ArraySize : Size of Array including the ghost zones on each side +// fluid : Fluid fields to be set +// NVar_Flu : Number of fluid variables to be prepared +// GhostSize : Number of ghost zones +// idx : Array indices +// pos : Physical coordinates +// Time : Physical time +// lv : Refinement level +// TFluVarIdxList : List recording the target fluid variable indices ( = [0 ... NCOMP_TOTAL-1] ) +// AuxArray : Auxiliary array +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void BC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, + const int GhostSize, const int idx[], const double pos[], const double Time, + const int lv, const int TFluVarIdxList[], double AuxArray[] ) +{ + +// simply call the IC function + SetGridIC( fluid, pos[0], pos[1], pos[2], Time, lv, AuxArray ); + +} // FUNCTION : BC +#endif // #if ( MODEL == ELBDM ) + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb_ELBDM_VortexPairRotating +// Description : Test problem initializer +// +// Note : None +// +// Parameter : None +// +// Return : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb_ELBDM_VortexPairRotating() +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); + + +// validate the compilation flags and runtime parameters + Validate(); + + +# if ( MODEL == ELBDM ) +// set the problem-specific runtime parameters + SetParameter(); + + + Init_Function_User_Ptr = SetGridIC; + BC_User_Ptr = BC; + Output_User_Ptr = OutputVortexPairRotatingError; +# endif // #if ( MODEL == ELBDM ) + + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); + +} // FUNCTION : Init_TestProb_ELBDM_VortexPairRotating diff --git a/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Init_TestProb_Hydro_AGORA_IsolatedGalaxy.cpp b/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Init_TestProb_Hydro_AGORA_IsolatedGalaxy.cpp index 24c46b28d2..182b1a83a5 100644 --- a/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Init_TestProb_Hydro_AGORA_IsolatedGalaxy.cpp +++ b/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Init_TestProb_Hydro_AGORA_IsolatedGalaxy.cpp @@ -19,7 +19,7 @@ static double AGORA_HaloGasTemp; // halo gas temperature bool AGORA_UseMetal = false; // add and advect a metal density field // --> to enable this option, one must // (1) set AGORA_(Disk/Halo)MetalMassFrac properly - // (2) set NCOMP_PASSIVE_USER>=1 and PAR_NATT_USER>=1 in the Makefile + // (2) set NCOMP_PASSIVE_USER>=1 and PAR_NATT_FLT_USER>=1 in the Makefile // --> necessary if one wants to enable metal_cooling in Grackle static double AGORA_DiskMetalMassFrac; // disk metal mass fraction (disk_metal_mass / disk_gas_mass) static double AGORA_HaloMetalMassFrac; // halo metal mass fraction (halo_metal_mass / halo_gas_mass) @@ -39,7 +39,8 @@ bool Flag_AGORA( const int i, const int j, const int k, const int lv, const int void Par_Init_ByFunction_AGORA( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ); + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ); #endif @@ -491,7 +492,7 @@ void AddNewParticleAttribute_AGORA() // "Idx_ParMetalFrac" has been predefined in Field.h if ( AGORA_UseMetal && Idx_ParMetalFrac == Idx_Undefined ) - Idx_ParMetalFrac = AddParticleAttribute( "ParMetalFrac" ); + Idx_ParMetalFrac = AddParticleAttributeFlt( "ParMetalFrac" ); } // FUNCTION : AddNewParticleAttribute_AGORA #endif // #if ( MODEL == HYDRO && defined MASSIVE_PARTICLES ) diff --git a/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Par_Init_ByFunction_AGORA.cpp b/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Par_Init_ByFunction_AGORA.cpp index e580021ee5..8a821c7f29 100644 --- a/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Par_Init_ByFunction_AGORA.cpp +++ b/src/TestProblem/Hydro/AGORA_IsolatedGalaxy/Par_Init_ByFunction_AGORA.cpp @@ -31,31 +31,35 @@ extern bool AGORA_UseMetal; // --> Therefore, there is no constraint on which particles should be set by this function // 4. Input particle IC text file format: (x, y, z, vx, vy, vz, mass) // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] // --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) // to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_AGORA( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); - const int NParAtt = 7; // mass, pos*3, vel*3 - real_par *ParData_AllRank = NULL; + const int NParAttFlt = 7; // mass, pos*3, vel*3 + real_par *ParFltData_AllRank = NULL; // load data --> for simplicity, currently only the root rank will load data from disk if ( MPI_Rank == 0 ) @@ -90,13 +94,13 @@ void Par_Init_ByFunction_AGORA( const long NPar_ThisRank, const long NPar_AllRan // allocate memory to store all particles loaded from disk - ParData_AllRank = new real_par [NPar_Sum*NParAtt]; + ParFltData_AllRank = new real_par [NPar_Sum*NParAttFlt]; // load data from the three particle tables const char *Filename[3] = { AGORA_HaloPar_Filename, AGORA_DiskPar_Filename, AGORA_BulgePar_Filename }; const bool RowMajor_Yes = true; // load data into the row-major order - const bool AllocMem_No = false; // do not allocate memory for ParData_AllRank + const bool AllocMem_No = false; // do not allocate memory for ParFlt/IntData_AllRank const int NCol = 7; // total number of columns to load const int Col[NCol] = {0, 1, 2, 3, 4, 5, 6}; // target columns: (x, y, z, vx, vy, vz, mass) @@ -107,7 +111,7 @@ void Par_Init_ByFunction_AGORA( const long NPar_ThisRank, const long NPar_AllRan Aux_Message( stdout, " Loading particles from the file \"%s\" ... ", Filename[t] ); // must use a temporary pointer "tmp_ptr" for Aux_LoadTable() because of the call-by-reference approach - real_par *tmp_ptr = ParData_AllRank + NPar_Loaded*NParAtt; + real_par *tmp_ptr = ParFltData_AllRank + NPar_Loaded*NParAttFlt; NPar_Loaded += Aux_LoadTable( tmp_ptr, Filename[t], NCol, Col, RowMajor_Yes, AllocMem_No ); @@ -124,33 +128,33 @@ void Par_Init_ByFunction_AGORA( const long NPar_ThisRank, const long NPar_AllRan // get the number of particles in each rank and set the corresponding offsets - if ( (long)NParAtt*NPar_AllRank > (long)__INT_MAX__ ) - Aux_Error( ERROR_INFO, "Total number of particle attributes to be sent (%ld) exceeds the maximum integer (%ld) !!\n", - (long)NParAtt*NPar_AllRank, (long)__INT_MAX__ ); + if ( (long)NParAttFlt*NPar_AllRank > (long)__INT_MAX__ ) + Aux_Error( ERROR_INFO, "Total number of particle floating-point attributes to be sent (%ld) exceeds the maximum integer (%ld) !!\n", + (long)NParAttFlt*NPar_AllRank, (long)__INT_MAX__ ); - int NSend[MPI_NRank], SendDisp[MPI_NRank]; + int NSend_Flt[MPI_NRank], SendDisp_Flt[MPI_NRank]; int NPar_ThisRank_int = NPar_ThisRank; // (i) convert to "int" and (ii) remove the "const" declaration // --> (ii) is necessary for OpenMPI version < 1.7 - MPI_Gather( &NPar_ThisRank_int, 1, MPI_INT, NSend, 1, MPI_INT, 0, MPI_COMM_WORLD ); + MPI_Gather( &NPar_ThisRank_int, 1, MPI_INT, NSend_Flt, 1, MPI_INT, 0, MPI_COMM_WORLD ); if ( MPI_Rank == 0 ) { - for (int r=0; rBoxCenter[0]; AuxArray[1] = amr->BoxCenter[1]; AuxArray[2] = amr->BoxCenter[2]; - AuxArray[3] = NEWTON_G*Bondi_MassBH; // gravitational_constant*point_source_mass + AuxArray[3] = NEWTON_G*Bondi_MassBH; // gravitational_constant*black_hole_mass (in code units) AuxArray[4] = Bondi_Soften_R; // soften_length (<=0.0 --> disable) - AuxArray[5] = Bondi_Soliton; - if( Bondi_Soliton ) + + double Coeff_t; + switch ( Bondi_Soliton_type ) + { +// unity + case 0: Coeff_t = 1.0; + break; + +// arctan function + case 1: Coeff_t = 2.0/M_PI*atan( Time/Bondi_Soliton_t ); + break; + +// linear function + case 2: Coeff_t = ( Time < Bondi_Soliton_t ) ? Time/Bondi_Soliton_t + : 1.0; + break; + +// smooth step function + case 3: Coeff_t = ( Time < Bondi_Soliton_t ) ? 3.0*SQR( Time/Bondi_Soliton_t ) - 2.0*CUBE( Time/Bondi_Soliton_t ) + : 1.0; + break; + +// sigmoid + case 4: Coeff_t = 2.0 / ( 1.0 + exp( -Time*log(3.0)/Bondi_Soliton_t ) ) - 1.0; + break; + +// tanh + case 5: Coeff_t = tanh( Time/Bondi_Soliton_t ); + break; + + default: + Aux_Error( ERROR_INFO, "unsupported Bondi_Soliton_type (%d) !!\n", Bondi_Soliton_type ); + } // switch ( Bondi_Soliton_type ) + + if ( Bondi_Soliton ) { - AuxArray[6] = Bondi_Soliton_m22; - AuxArray[7] = Bondi_Soliton_rc; - AuxArray[8] = NEWTON_G*Const_Msun/UNIT_M; - AuxArray[9] = UNIT_L/Const_kpc; - if( Bondi_Soliton_type > 0 ) - { - switch(Bondi_Soliton_type) - { - case 1: // arctan function - AuxArray[8] *= 2/(real)3.14159265*ATAN(Time/Bondi_Soliton_t); - break; - case 2: // linear function - if( Time < Bondi_Soliton_t ) - AuxArray[8] *= Time/Bondi_Soliton_t; - break; - case 3: // smooth step function - if( Time < Bondi_Soliton_t ) - AuxArray[8] *= 3*SQR(Time/Bondi_Soliton_t)-2*CUBE(Time/Bondi_Soliton_t); - break; - case 4: // sigmoid - AuxArray[8] *= 2/(1+exp(-Time*log(3)/Bondi_Soliton_t))-1; - break; - case 5: // tanh - AuxArray[8] *= tanh(Time/Bondi_Soliton_t); - break; - - } - } + AuxArray[5] = Coeff_t*NEWTON_G*( 4.17e9*Const_Msun/UNIT_M )/ + ( SQR( Bondi_Soliton_m22*(real)10.0 )*( Bondi_Soliton_rc*UNIT_L/Const_pc ) ); + AuxArray[6] = Bondi_Soliton_rc; + } + + else + { + AuxArray[5] = -1.0; + AuxArray[6] = -1.0; } } // FUNCTION : SetExtAccAuxArray_Bondi @@ -109,31 +123,30 @@ static void ExtAcc_Bondi( real Acc[], const double x, const double y, const doub const double UserArray[] ) { - const double Cen[3] = { UserArray[0], UserArray[1], UserArray[2] }; - real GM = (real)UserArray[3]; - const real eps = (real)UserArray[4]; - const bool SOL = (real)UserArray[5]; - const real dx = (real)(x - Cen[0]); - const real dy = (real)(y - Cen[1]); - const real dz = (real)(z - Cen[2]); - const real r = SQRT( dx*dx + dy*dy + dz*dz ); - - if( SOL ) + const double Cen[3] = { UserArray[0], UserArray[1], UserArray[2] }; + real GM = (real)UserArray[3]; + const real eps = (real)UserArray[4]; + const real GM0_sol = (real)UserArray[5]; + const real rc = (real)UserArray[6]; + const real dx = (real)(x - Cen[0]); + const real dy = (real)(y - Cen[1]); + const real dz = (real)(z - Cen[2]); + const real r = SQRT( dx*dx + dy*dy + dz*dz ); + + if ( GM0_sol > (real)0.0 && rc > (real)0.0 ) { - const real m22 = (real)UserArray[6]; - const real rc = (real)UserArray[7]; // In code unit or kpc - const real Coeff = (real)UserArray[8]; - const real UNIT_L = (real)UserArray[9]; - -#ifdef Plummer - double M = GM*CUBE(r)/pow(SQR(r)+SQR(rc),1.5); -#else - real a = SQRT(POW(2.0,1.0/8.0)-1)*(r/rc); - real M = (real)4.17e9/(SQR(m22/1e-1)*(rc*UNIT_L*1e3)*POW(SQR(a)+1, 7.0))*((real)3465*POW(a,13.0)+(real)23100*POW(a,11.0)+(real)65373*POW(a,9.0)+(real)101376*POW(a,7.0)+(real)92323*POW(a,5.0)+(real)48580*POW(a,3.0)-(real)3465*a+(real)3465*POW(SQR(a)+1, 7.0)*ATAN(a)); - M *= Coeff; -#endif - GM += M; - } + const real a = SQRT( POW( (real)2.0, (real)1.0/(real)8.0 ) - (real)1.0 )*(r/rc); + const real GM_sol = (real)GM0_sol/( POW( SQR(a)+(real)1.0, (real)7.0 ) )* + ( (real) 3465*POW( a, (real)13.0 ) + +(real) 23100*POW( a, (real)11.0 ) + +(real) 65373*POW( a, (real) 9.0 ) + +(real)101376*POW( a, (real) 7.0 ) + +(real) 92323*POW( a, (real) 5.0 ) + +(real) 48580*POW( a, (real) 3.0 ) + -(real) 3465*a + +(real) 3465*POW( SQR(a)+(real)1.0, (real)7.0 )*ATAN(a) ); + GM += GM_sol; + } // if ( GM0_sol > 0.0 && rc > 0.0 ) // Plummer # if ( defined SOFTEN_PLUMMER ) diff --git a/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp b/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp index 13a7c42ead..c8a6a2bb32 100644 --- a/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/Flu_ResetByUser_Bondi.cpp @@ -21,6 +21,9 @@ extern int Bondi_SinkNCell; extern bool Bondi_void; extern bool Bondi_dynBH; + + + //------------------------------------------------------------------------------------------------------- // Function : Flu_ResetByUser_Func_Bondi // Description : Function to reset the fluid field in the Bondi accretion problem @@ -51,8 +54,8 @@ int Flu_ResetByUser_Func_Bondi( real fluid[], const double Emag, const double x, const double dt, const int lv, double AuxArray[] ) { - if ( !Bondi_void ) - return false; + if ( !Bondi_void ) return false; + const double Pos[3] = { x, y, z }; const double InBC_R2 = SQR( Bondi_InBC_R ); @@ -115,8 +118,7 @@ void Flu_ResetByUser_API_Bondi( const int lv, const int FluSg, const int MagSg, int Reset; real fluid[NCOMP_TOTAL], fluid_bk[NCOMP_TOTAL]; double x, y, z, x0, y0, z0; -// Define varible to record sink mass at every time step - double SinkMass_OneSubStep_ThisRank = 0; + double SinkMass_OneSubStep_ThisRank = 0.0; // variables to record sink mass at every time step double SinkMass_OneSubStep_AllRank; // reset to 0 since we only want to record the number of void cells **for one sub-step** @@ -206,14 +208,17 @@ void Flu_ResetByUser_API_Bondi( const int lv, const int FluSg, const int MagSg, { // void region must be completely refined to the max level Aux_Error( ERROR_INFO, "void region lies outside the max-level region !!\n" ); - } + } } // if ( Reset ) }}} // i,j,k } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) - MPI_Allreduce( &SinkMass_OneSubStep_ThisRank, &SinkMass_OneSubStep_AllRank, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD ); + if ( Bondi_dynBH ) + { + MPI_Allreduce( &SinkMass_OneSubStep_ThisRank, &SinkMass_OneSubStep_AllRank, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD ); - if( Bondi_dynBH ){ Bondi_MassBH += SinkMass_OneSubStep_AllRank; } + Bondi_MassBH += SinkMass_OneSubStep_AllRank; + } } // FUNCTION : Flu_ResetByUser_API_Bondi diff --git a/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp b/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp index 5175391fee..ab63b7f307 100644 --- a/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/Init_TestProb_Hydro_Bondi.cpp @@ -1,108 +1,97 @@ #include "GAMER.h" -#include -#include -#include // problem-specific global variables // ======================================================================================= - double Bondi_MassBH; // black hole mass -static double Bondi_Rho0; // background density -static double Bondi_T0; // background temperature - double Bondi_RefineRadius0; // refinement radius at the base level - // NOTE: refinement radius at Lv is set to Bondi_RefineRadius0*2^(-Lv) - // --> all refinement shells have roughly the same number of cells at its level - // (except Lv=MAX_LEVEL, which will have twice the number of cells along the radius - // unless Bondi_HalfMaxLvRefR is on) - bool Bondi_HalfMaxLvRefR; // halve the refinement radius at the maximum level - double Bondi_InBC_Rho; // density inside the void region -static double Bondi_InBC_T; // temperature inside the void region -static double Bondi_InBC_NCell; // number of finest cells for the radius of the void region -static double Bondi_Soften_NCell; // number of finest cells for the soften length (<=0.0 ==> disable) - - double Bondi_InBC_R; // radius of the void region (=Bondi_InBC_NCell*dh[MAX_LEVEL]) - double Bondi_InBC_P; // pressure inside the void region - double Bondi_InBC_E; // energy inside the void region - double Bondi_Soften_R; // soften length (=Bondi_Soften_NCell*dh[MAX_LEVEL]) -static double Bondi_P0; // background pressure -static double Bondi_Cs; // background sound speed -static double Bondi_RS; // Schwarzschild radius -static double Bondi_RB; // Bondi radius -static double Bondi_TimeB; // Bondi time - - double Bondi_SinkMass; // total mass in the void region removed in one global time-step - double Bondi_SinkMomX; // total x-momentum ... - double Bondi_SinkMomY; // total y-momentum ... - double Bondi_SinkMomZ; // total z-momentum ... - double Bondi_SinkMomXAbs; // total |x-momentum| ... - double Bondi_SinkMomYAbs; // total |y-momentum| ... - double Bondi_SinkMomZAbs; // total |z-momentum| ... - double Bondi_SinkEk; // total kinematic energy ... - double Bondi_SinkEt; // total thermal energy ... - int Bondi_SinkNCell; // total number of finest cells within the void region + double Bondi_MassBH; // black hole mass +static double Bondi_Rho0; // background density +static double Bondi_T0; // background temperature + double Bondi_RefineRadius0; // refinement radius at the base level + // NOTE: refinement radius at Lv is set to Bondi_RefineRadius0*2^(-Lv) + // --> all refinement shells have roughly the same number of cells at its level + // (except Lv=MAX_LEVEL, which will have twice the number of cells along the radius + // unless Bondi_HalfMaxLvRefR is on) + bool Bondi_HalfMaxLvRefR; // halve the refinement radius at the maximum level + double Bondi_InBC_Rho; // density inside the void region +static double Bondi_InBC_T; // temperature inside the void region +static double Bondi_InBC_NCell; // number of finest cells for the radius of the void region +static double Bondi_Soften_NCell; // number of finest cells for the soften length (<=0.0 ==> disable) + bool Bondi_void; // enable the void region + bool Bondi_dynBH; // dynamically increase BH mass + + double Bondi_InBC_R; // radius of the void region (=Bondi_InBC_NCell*dh[MAX_LEVEL]) + double Bondi_InBC_P; // pressure inside the void region + double Bondi_InBC_E; // energy inside the void region + double Bondi_Soften_R; // soften length (=Bondi_Soften_NCell*dh[MAX_LEVEL]) +static double Bondi_P0; // background pressure +static double Bondi_Cs; // background sound speed +static double Bondi_RS; // Schwarzschild radius +static double Bondi_RB; // Bondi radius +static double Bondi_TimeB; // Bondi time + + double Bondi_SinkMass; // total mass in the void region removed in one global time-step + double Bondi_SinkMomX; // total x-momentum ... + double Bondi_SinkMomY; // total y-momentum ... + double Bondi_SinkMomZ; // total z-momentum ... + double Bondi_SinkMomXAbs; // total |x-momentum| ... + double Bondi_SinkMomYAbs; // total |y-momentum| ... + double Bondi_SinkMomZAbs; // total |z-momentum| ... + double Bondi_SinkEk; // total kinematic energy ... + double Bondi_SinkEt; // total thermal energy ... + int Bondi_SinkNCell; // total number of finest cells within the void region // external units in cgs -const double UnitExt_L = Const_kpc; -const double UnitExt_D = 1.0; -const double UnitExt_M = Const_Msun; -const double UnitExt_E = Const_keV; +const double UnitExt_L = Const_kpc; +const double UnitExt_D = 1.0; +const double UnitExt_M = Const_Msun; +const double UnitExt_E = Const_keV; // hydrostatic equilibrium (HSE) -static bool Bondi_HSE; // enable HSE -static int Bondi_HSE_Mode; // initial configuration (1:T=Bondi_T0, 2:rho~1/r, 3:beta model) -static double Bondi_HSE_Dens_NormR; // normalize the density profile to density(r=NormR)=NormD -static double Bondi_HSE_Dens_NormD; // see Bondi_HSE_Dens_NormR +static bool Bondi_HSE; // enable HSE +static int Bondi_HSE_Mode; // initial configuration (1:T=Bondi_T0, 2:rho~1/r, 3:beta model) +static double Bondi_HSE_Dens_NormR; // normalize the density profile to density(r=NormR)=NormD +static double Bondi_HSE_Dens_NormD; // see Bondi_HSE_Dens_NormR // parameters for Bondi_HSE_Mode=1 -static int Bondi_HSE_Dens_NBin; // number of bins in the density profile table -static double Bondi_HSE_Dens_MinR; // minimum radius in the density profile -static double Bondi_HSE_Dens_MaxR; // maximum ... -static bool Bondi_HSE_Truncate; // truncate density within r adjust P2 in the pressure profile such that T(r=NormR)=Bondi_T0 -static double Bondi_HSE_Pres_NormP1; // P=P1*r^-2+P2 (P2=0 when Bondi_HSE_Pres_NormT=false) -static double Bondi_HSE_Pres_NormP2; +static bool Bondi_HSE_Pres_NormT; // true --> adjust P2 in the pressure profile such that T(r=NormR)=Bondi_T0 +static double Bondi_HSE_Pres_NormP1; // P=P1*r^-2+P2 (P2=0 when Bondi_HSE_Pres_NormT=false) +static double Bondi_HSE_Pres_NormP2; // parameters for Bondi_HSE_Mode=3 (beta model) -const double Bondi_HSE_Beta = 2.0/3.0; // beta (must be 2/3 for now) -static double Bondi_HSE_Beta_Rcore; // core radius (input parameter) -static double Bondi_HSE_Beta_Rho0; // peak density (set by Bondi_HSE_Dens_NormR/D) -static double Bondi_HSE_Beta_P1; // P(r) = P1*( 1/x + atan(x) ) + P2 assuming beta=2/3, where x=r/Rcore, -static double Bondi_HSE_Beta_P2; // P1=G*MassBH*Rho0/Rcore, and P2 currently fixed to -0.5*pi*P1 so that P(inf)=0 +const double Bondi_HSE_Beta = 2.0/3.0; // beta (must be 2/3 for now) +static double Bondi_HSE_Beta_Rcore; // core radius (input parameter) +static double Bondi_HSE_Beta_Rho0; // peak density (set by Bondi_HSE_Dens_NormR/D) +static double Bondi_HSE_Beta_P1; // P(r) = P1*( 1/x + atan(x) ) + P2 assuming beta=2/3, where x=r/Rcore, +static double Bondi_HSE_Beta_P2; // P1=G*MassBH*Rho0/Rcore, and P2 currently fixed to -0.5*pi*P1 so that P(inf)=0 // parameters for soliton - bool Bondi_void; - bool Bondi_dynBH; - bool Bondi_Soliton; - double Bondi_Soliton_m22; - int Bondi_Soliton_type; - double Bondi_Soliton_t; - double Bondi_Soliton_rc; - double Bondi_Soliton_MassHalo; - double Bondi_Soliton_Redshift; -static double *Bondi_Soliton_PresProf[2] = { NULL, NULL }; // pressure profile tabke: [0/1] = [radius/density] - -// parameters for bondi initial condition - bool Bondi_Init; -static char Bondi_Init_Filename[1000]; -static double *Bondi_Init_Data=NULL; -static int Bondi_Init_bin; - double *Bondi_Init_Prof_r, *Bondi_Init_Prof_d, *Bondi_Init_Prof_v, *Bondi_Init_Prof_p; - + bool Bondi_Soliton; // add soliton external potential + double Bondi_Soliton_m22; // FDM particle mass in 1e-22 eV/c^2 for Bondi_Soliton + int Bondi_Soliton_type; // functional form for gradually introducing the soliton potential + // (0:unity, 1:arctan, 2:linear, 3:smooth step function, 4:sigmoid, 5:tanh) + double Bondi_Soliton_t; // characteristic time normalized to Bondi_TimeB for adding the soliton potential + double Bondi_Soliton_rc; // soliton radius for Bondi_Soliton + // (<0.0 --> compute from Bondi_Soliton_MassHalo/Redshift using the core-halo relation) +static double Bondi_Soliton_MassHalo; // halo mass for determining Bondi_Soliton_rc +static double Bondi_Soliton_Redshift; // redshift for determining Bondi_Soliton_rc // ======================================================================================= // problem-specific function prototypes void Init_ExtAcc_Bondi(); -void Init_ExtPot_Bondi(); void Record_Bondi(); bool Flag_Bondi( const int i, const int j, const int k, const int lv, const int PID, const double *Threshold ); int Flu_ResetByUser_Func_Bondi( real fluid[], const double Emag, const double x, const double y, const double z, const double Time, @@ -121,7 +110,8 @@ void SetExtAccAuxArray_Bondi( double [], const double ); #ifdef GRAVITY //------------------------------------------------------------------------------------------------------- // Function : Poi_UserWorkBeforePoisson_Bondi -// Description : Call SetExtAccAuxArray_Bondi() to reset Bondi_MassBH before invoking the Poisson solver +// Description : Call SetExtAccAuxArray_Bondi() to reset Bondi_MassBH and soliton parameters before +// invoking the Poisson solver // // Note : 1. Invoked by Gra_AdvanceDt() using the function pointer "Poi_UserWorkBeforePoisson_Ptr" // @@ -129,7 +119,7 @@ void SetExtAccAuxArray_Bondi( double [], const double ); // lv : Target refinement level // // Return : None -//////------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- void Poi_UserWorkBeforePoisson_Bondi( const double Time, const int lv ) { @@ -238,45 +228,41 @@ void SetParameter() // --> note that VARIABLE, DEFAULT, MIN, and MAX must have the same data type // --> some handy constants (e.g., NoMin_int, Eps_float, ...) are defined in "include/ReadPara.h" // ******************************************************************************************************************************** -// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); +// ReadPara->Add( "KEY_IN_THE_FILE", &VARIABLE, DEFAULT, MIN, MAX ); // ******************************************************************************************************************************** - ReadPara->Add( "Bondi_MassBH", &Bondi_MassBH, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_Rho0", &Bondi_Rho0, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_T0", &Bondi_T0, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_RefineRadius0", &Bondi_RefineRadius0, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_HalfMaxLvRefR", &Bondi_HalfMaxLvRefR, true, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_InBC_Rho", &Bondi_InBC_Rho, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_InBC_T", &Bondi_InBC_T, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_InBC_NCell", &Bondi_InBC_NCell, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_Soften_NCell", &Bondi_Soften_NCell, -1.0, NoMin_double, NoMax_double ); - - ReadPara->Add( "Bondi_HSE", &Bondi_HSE, false, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_HSE_Mode", &Bondi_HSE_Mode, 1, 1, 3 ); - ReadPara->Add( "Bondi_HSE_Dens_NBin", &Bondi_HSE_Dens_NBin, 10000, 2, NoMax_int ); - ReadPara->Add( "Bondi_HSE_Dens_MinR", &Bondi_HSE_Dens_MinR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Dens_MaxR", &Bondi_HSE_Dens_MaxR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Dens_NormR", &Bondi_HSE_Dens_NormR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Dens_NormD", &Bondi_HSE_Dens_NormD, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Truncate", &Bondi_HSE_Truncate, true, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_HSE_TrunR", &Bondi_HSE_TrunR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_TrunD", &Bondi_HSE_TrunD, -1.0, Eps_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_TrunSmoothR",&Bondi_HSE_TrunSmoothR, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_HSE_Pres_NormT", &Bondi_HSE_Pres_NormT, false, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_HSE_Beta_Rcore", &Bondi_HSE_Beta_Rcore, -1.0, Eps_double, NoMax_double ); - - ReadPara->Add( "Bondi_void", &Bondi_void, true, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_dynBH", &Bondi_dynBH, true, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_Soliton", &Bondi_Soliton, false, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_Soliton_m22", &Bondi_Soliton_m22, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_Soliton_type", &Bondi_Soliton_type, 0, NoMin_int, NoMax_int ); - ReadPara->Add( "Bondi_Soliton_t", &Bondi_Soliton_t, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_Soliton_rc", &Bondi_Soliton_rc, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_Soliton_MassHalo", &Bondi_Soliton_MassHalo, -1.0, NoMin_double, NoMax_double ); - ReadPara->Add( "Bondi_Soliton_Redshift", &Bondi_Soliton_Redshift, -1.0, NoMin_double, NoMax_double ); - - - ReadPara->Add( "Bondi_Init", &Bondi_Init, false, Useless_bool, Useless_bool ); - ReadPara->Add( "Bondi_Init_Filename", Bondi_Init_Filename, Useless_str, Useless_str, Useless_str ); + ReadPara->Add( "Bondi_MassBH", &Bondi_MassBH, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_Rho0", &Bondi_Rho0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_T0", &Bondi_T0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_RefineRadius0", &Bondi_RefineRadius0, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_HalfMaxLvRefR", &Bondi_HalfMaxLvRefR, true, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_InBC_Rho", &Bondi_InBC_Rho, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_InBC_T", &Bondi_InBC_T, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_InBC_NCell", &Bondi_InBC_NCell, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_Soften_NCell", &Bondi_Soften_NCell, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_void", &Bondi_void, true, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_dynBH", &Bondi_dynBH, false, Useless_bool, Useless_bool ); + + ReadPara->Add( "Bondi_HSE", &Bondi_HSE, false, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_HSE_Mode", &Bondi_HSE_Mode, 1, 1, 3 ); + ReadPara->Add( "Bondi_HSE_Dens_NBin", &Bondi_HSE_Dens_NBin, 10000, 2, NoMax_int ); + ReadPara->Add( "Bondi_HSE_Dens_MinR", &Bondi_HSE_Dens_MinR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Dens_MaxR", &Bondi_HSE_Dens_MaxR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Dens_NormR", &Bondi_HSE_Dens_NormR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Dens_NormD", &Bondi_HSE_Dens_NormD, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Truncate", &Bondi_HSE_Truncate, true, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_HSE_TrunR", &Bondi_HSE_TrunR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_TrunD", &Bondi_HSE_TrunD, -1.0, Eps_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_TrunSmoothR", &Bondi_HSE_TrunSmoothR, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_HSE_Pres_NormT", &Bondi_HSE_Pres_NormT, false, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_HSE_Beta_Rcore", &Bondi_HSE_Beta_Rcore, -1.0, Eps_double, NoMax_double ); + + ReadPara->Add( "Bondi_Soliton", &Bondi_Soliton, false, Useless_bool, Useless_bool ); + ReadPara->Add( "Bondi_Soliton_m22", &Bondi_Soliton_m22, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_type", &Bondi_Soliton_type, 5, 0, 5 ); + ReadPara->Add( "Bondi_Soliton_t", &Bondi_Soliton_t, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_rc", &Bondi_Soliton_rc, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_MassHalo", &Bondi_Soliton_MassHalo, -1.0, NoMin_double, NoMax_double ); + ReadPara->Add( "Bondi_Soliton_Redshift", &Bondi_Soliton_Redshift, -1.0, NoMin_double, NoMax_double ); ReadPara->Read( FileName ); @@ -307,6 +293,14 @@ void SetParameter() Aux_Message( stderr, "WARNING : OPT__BC_FLU[%d] != BC_FLU_OUTFLOW for non-HSE setup !?\n", s ); } + if ( Bondi_Soliton ) + { + if ( Bondi_Soliton_m22 <= 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_m22 (%14.7e) <= 0.0 !!\n", Bondi_Soliton_m22 ); + if ( Bondi_Soliton_t < 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_t (%14.7e) < 0.0 !!\n", Bondi_Soliton_t ); + if ( Bondi_Soliton_MassHalo <= 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_MassHalo (%14.7e) <= 0.0 !!\n", Bondi_Soliton_MassHalo ); + if ( Bondi_Soliton_Redshift < 0.0 ) Aux_Error( ERROR_INFO, "Bondi_Soliton_Redshift (%14.7e) < 0.0 !!\n", Bondi_Soliton_Redshift ); + } + // (2) set the problem-specific derived parameters // must initialize EoS first @@ -394,52 +388,34 @@ void SetParameter() } } // if ( Bondi_HSE ) - if ( Bondi_Soliton ) - { - if( Bondi_Soliton_rc < 0.0 ){ - double z = Bondi_Soliton_Redshift; - double Mh = Bondi_Soliton_MassHalo; - double H0 = 67.66; - double Om0 = 0.3111; - H0 = H0*1e5/(Const_kpc*1e3); - double a0 = Om0*SQR(H0)/(2.47e-5*SQR(1e7/(Const_kpc*1e3))); - double H_H0_z = 1/(1-Om0*(1-pow(1+z,3.0)*(1+z+a0)/a0)); - double Om_z = Om0*pow(1+z,3.0)*H_H0_z; - double Om_0 = Om0/(1-Om0*(1-(1+a0)/a0)); - double kiz_z = (18*SQR(3.14159265)+82*(Om_z-1)-39*SQR(Om_z-1))/Om_z; - double kiz_0 = (18*SQR(3.14159265)+82*(Om_0-1)-39*SQR(Om_0-1))/Om_0; - - Bondi_Soliton_rc = 1.6/Bondi_Soliton_m22*pow(1+z,-1.0/2.0)*pow(kiz_z/kiz_0,-1.0/6.0)*pow(Mh/1e9,-1.0/3.0); - } - Bondi_Soliton_rc *= UnitExt_L/UNIT_L; - Bondi_Soliton_t *= Bondi_TimeB; - Soliton_SetPresProfileTable(); - } - if ( Bondi_Init ) +// (4) initialize the soliton setup + if ( Bondi_Soliton ) { - bool RowMajor_No = false; - const bool AllocMem_Yes = true; - const int NCol = 4;// Radius, Density, Velocity, MachNumber - const int Col[NCol] = {1,3,5,6}; - Bondi_Init_bin = Aux_LoadTable( Bondi_Init_Data, Bondi_Init_Filename, NCol, Col, RowMajor_No, AllocMem_Yes ); - - // Convert to code unit and mach number->pressure - Bondi_Init_Prof_r = Bondi_Init_Data + 0*Bondi_Init_bin; - Bondi_Init_Prof_d = Bondi_Init_Data + 1*Bondi_Init_bin; - Bondi_Init_Prof_v = Bondi_Init_Data + 2*Bondi_Init_bin; - Bondi_Init_Prof_p = Bondi_Init_Data + 3*Bondi_Init_bin; - - for( int b=0; b a helper macro PRINT_RESET_PARA is defined in Macro.h const long End_Step_Default = __INT_MAX__; const double End_T_Default = 1.0e1*Bondi_TimeB; // 10 Bondi time @@ -459,62 +435,56 @@ void SetParameter() if ( MPI_Rank == 0 ) { Aux_Message( stdout, "=============================================================================\n" ); - Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); - Aux_Message( stdout, " Bondi_MassBH = %13.7e (%13.7e Msun)\n", Bondi_MassBH, Bondi_MassBH*UNIT_M/Const_Msun ); - Aux_Message( stdout, " Bondi_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_Rho0, Bondi_Rho0*UNIT_D ); - Aux_Message( stdout, " Bondi_T0 = %13.7e (%13.7e keV)\n", Bondi_T0, Bondi_T0*UNIT_E/Const_keV ); - Aux_Message( stdout, " Bondi_RefineRadius0 = %13.7e (%13.7e kpc)\n", Bondi_RefineRadius0, Bondi_RefineRadius0*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HalfMaxLvRefR = %s\n", (Bondi_HalfMaxLvRefR)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_InBC_Rho = %13.7e (%13.7e g/cm^3)\n", Bondi_InBC_Rho, Bondi_InBC_Rho*UNIT_D ); - Aux_Message( stdout, " Bondi_InBC_T = %13.7e (%13.7e keV)\n", Bondi_InBC_T, Bondi_InBC_T*UNIT_E/Const_keV ); - Aux_Message( stdout, " Bondi_InBC_NCell = %13.7e\n", Bondi_InBC_NCell ); - Aux_Message( stdout, " Bondi_InBC_R = %13.7e (%13.7e kpc)\n", Bondi_InBC_R, Bondi_InBC_R*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_InBC_E = %13.7e\n", Bondi_InBC_E ); - Aux_Message( stdout, " Bondi_Soften_NCell = %13.7e\n", Bondi_Soften_NCell ); - Aux_Message( stdout, " Bondi_Soften_R = %13.7e (%13.7e kpc)\n", Bondi_Soften_R, Bondi_Soften_R*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_Cs = %13.7e (%13.7e km/s)\n", Bondi_Cs, Bondi_Cs*UNIT_V/Const_km ); - Aux_Message( stdout, " Schwarzschild radius = %13.7e (%13.7e kpc)\n", Bondi_RS, Bondi_RS*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi radius = %13.7e (%13.7e kpc)\n", Bondi_RB, Bondi_RB*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi time = %13.7e (%13.7e Myr)\n", Bondi_TimeB, Bondi_TimeB*UNIT_T/Const_Myr ); - - Aux_Message( stdout, " Bondi_HSE = %s\n", (Bondi_HSE)?"YES":"NO" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " Bondi_MassBH = %13.7e (%13.7e Msun)\n", Bondi_MassBH, Bondi_MassBH*UNIT_M/Const_Msun ); + Aux_Message( stdout, " Bondi_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_Rho0, Bondi_Rho0*UNIT_D ); + Aux_Message( stdout, " Bondi_T0 = %13.7e (%13.7e keV)\n", Bondi_T0, Bondi_T0*UNIT_E/Const_keV ); + Aux_Message( stdout, " Bondi_RefineRadius0 = %13.7e (%13.7e kpc)\n", Bondi_RefineRadius0, Bondi_RefineRadius0*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HalfMaxLvRefR = %s\n", (Bondi_HalfMaxLvRefR)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_InBC_Rho = %13.7e (%13.7e g/cm^3)\n", Bondi_InBC_Rho, Bondi_InBC_Rho*UNIT_D ); + Aux_Message( stdout, " Bondi_InBC_T = %13.7e (%13.7e keV)\n", Bondi_InBC_T, Bondi_InBC_T*UNIT_E/Const_keV ); + Aux_Message( stdout, " Bondi_InBC_NCell = %13.7e\n", Bondi_InBC_NCell ); + Aux_Message( stdout, " Bondi_InBC_R = %13.7e (%13.7e kpc)\n", Bondi_InBC_R, Bondi_InBC_R*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_InBC_E = %13.7e\n", Bondi_InBC_E ); + Aux_Message( stdout, " Bondi_Soften_NCell = %13.7e\n", Bondi_Soften_NCell ); + Aux_Message( stdout, " Bondi_Soften_R = %13.7e (%13.7e kpc)\n", Bondi_Soften_R, Bondi_Soften_R*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_Cs = %13.7e (%13.7e km/s)\n", Bondi_Cs, Bondi_Cs*UNIT_V/Const_km ); + Aux_Message( stdout, " Schwarzschild radius = %13.7e (%13.7e kpc)\n", Bondi_RS, Bondi_RS*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi radius = %13.7e (%13.7e kpc)\n", Bondi_RB, Bondi_RB*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi time = %13.7e (%13.7e Myr)\n", Bondi_TimeB, Bondi_TimeB*UNIT_T/Const_Myr ); + Aux_Message( stdout, " Bondi_void = %s\n", (Bondi_void)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_dynBH = %s\n", (Bondi_dynBH)?"YES":"NO" ); + + Aux_Message( stdout, " Bondi_HSE = %s\n", (Bondi_HSE)?"YES":"NO" ); if ( Bondi_HSE ) { - Aux_Message( stdout, " Bondi_HSE_Mode = %d\n", Bondi_HSE_Mode ); - Aux_Message( stdout, " Bondi_HSE_Dens_NBin = %d\n", Bondi_HSE_Dens_NBin ); - Aux_Message( stdout, " Bondi_HSE_Dens_MinR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MinR, Bondi_HSE_Dens_MinR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Dens_MaxR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MaxR, Bondi_HSE_Dens_MaxR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Dens_NormR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_NormR, Bondi_HSE_Dens_NormR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Dens_NormD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Dens_NormD, Bondi_HSE_Dens_NormD*UNIT_D ); - Aux_Message( stdout, " Bondi_HSE_Truncate = %s\n", (Bondi_HSE_Truncate)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_HSE_TrunR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunR, Bondi_HSE_TrunR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_TrunD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_TrunD, Bondi_HSE_TrunD*UNIT_D ); - Aux_Message( stdout, " Bondi_HSE_TrunSmoothR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunSmoothR, Bondi_HSE_TrunSmoothR*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_HSE_Pres_NormT = %s\n", (Bondi_HSE_Pres_NormT)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_HSE_Beta = %13.7e\n", Bondi_HSE_Beta ); - Aux_Message( stdout, " Bondi_HSE_Beta_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Beta_Rho0, Bondi_HSE_Beta_Rho0*UNIT_D ); - Aux_Message( stdout, " Bondi_HSE_Beta_Rcore = %13.7e (%13.7e kpc)\n", Bondi_HSE_Beta_Rcore, Bondi_HSE_Beta_Rcore*UNIT_L/Const_kpc ); } - - Aux_Message( stdout, " Bondi_void = %s\n", (Bondi_void)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_dynBH = %s\n", (Bondi_dynBH)?"YES":"NO" ); - Aux_Message( stdout, " Bondi_Soliton = %s\n", (Bondi_Soliton)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_HSE_Mode = %d\n", Bondi_HSE_Mode ); + Aux_Message( stdout, " Bondi_HSE_Dens_NBin = %d\n", Bondi_HSE_Dens_NBin ); + Aux_Message( stdout, " Bondi_HSE_Dens_MinR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MinR, Bondi_HSE_Dens_MinR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Dens_MaxR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_MaxR, Bondi_HSE_Dens_MaxR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Dens_NormR = %13.7e (%13.7e kpc)\n", Bondi_HSE_Dens_NormR, Bondi_HSE_Dens_NormR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Dens_NormD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Dens_NormD, Bondi_HSE_Dens_NormD*UNIT_D ); + Aux_Message( stdout, " Bondi_HSE_Truncate = %s\n", (Bondi_HSE_Truncate)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_HSE_TrunR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunR, Bondi_HSE_TrunR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_TrunD = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_TrunD, Bondi_HSE_TrunD*UNIT_D ); + Aux_Message( stdout, " Bondi_HSE_TrunSmoothR = %13.7e (%13.7e kpc)\n", Bondi_HSE_TrunSmoothR, Bondi_HSE_TrunSmoothR*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_HSE_Pres_NormT = %s\n", (Bondi_HSE_Pres_NormT)?"YES":"NO" ); + Aux_Message( stdout, " Bondi_HSE_Beta = %13.7e\n", Bondi_HSE_Beta ); + Aux_Message( stdout, " Bondi_HSE_Beta_Rho0 = %13.7e (%13.7e g/cm^3)\n", Bondi_HSE_Beta_Rho0, Bondi_HSE_Beta_Rho0*UNIT_D ); + Aux_Message( stdout, " Bondi_HSE_Beta_Rcore = %13.7e (%13.7e kpc)\n", Bondi_HSE_Beta_Rcore, Bondi_HSE_Beta_Rcore*UNIT_L/Const_kpc ); } + + Aux_Message( stdout, " Bondi_Soliton = %s\n", (Bondi_Soliton)?"YES":"NO" ); if( Bondi_Soliton ) { - Aux_Message( stdout, " Bondi_Soliton_m22 = %13.7e\n", Bondi_Soliton_m22 ); - Aux_Message( stdout, " Bondi_Soliton_type = %d\n", Bondi_Soliton_type ); - Aux_Message( stdout, " Bondi_Soliton_t = %13.7e (%13.7e Myr)\n", Bondi_Soliton_t, Bondi_Soliton_t*UNIT_T/Const_Myr ); - Aux_Message( stdout, " Bondi_Soliton_rc = %13.7e (%13.7e kpc)\n", Bondi_Soliton_rc, Bondi_Soliton_rc*UNIT_L/Const_kpc ); - Aux_Message( stdout, " Bondi_Soliton_MassHalo = %13.7e Msun\n", Bondi_Soliton_MassHalo ); - Aux_Message( stdout, " Bondi_Soliton_Redshift = %13.7e\n", Bondi_Soliton_Redshift );} - - - Aux_Message( stdout, " Bondi_Init = %s\n", (Bondi_Init)?"YES":"NO" ); - if( Bondi_Init ){ - Aux_Message( stdout, " Bondi_Init_Filename = %s\n", Bondi_Init_Filename );} - + Aux_Message( stdout, " Bondi_Soliton_m22 = %13.7e\n", Bondi_Soliton_m22 ); + Aux_Message( stdout, " Bondi_Soliton_type = %d\n", Bondi_Soliton_type ); + Aux_Message( stdout, " Bondi_Soliton_t = %13.7e (%13.7e Myr)\n", Bondi_Soliton_t, Bondi_Soliton_t*UNIT_T/Const_Myr ); + Aux_Message( stdout, " Bondi_Soliton_rc = %13.7e (%13.7e kpc)\n", Bondi_Soliton_rc, Bondi_Soliton_rc*UNIT_L/Const_kpc ); + Aux_Message( stdout, " Bondi_Soliton_MassHalo = %13.7e Msun\n", Bondi_Soliton_MassHalo*UnitExt_M/Const_Msun ); + Aux_Message( stdout, " Bondi_Soliton_Redshift = %13.7e\n", Bondi_Soliton_Redshift ); } Aux_Message( stdout, "=============================================================================\n" ); } // if ( MPI_Rank == 0 ) - if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); } // FUNCTION : SetParameter @@ -589,42 +559,6 @@ void SetGridIC( real fluid[], const double x, const double y, const double z, co else Aux_Error( ERROR_INFO, "unsupported Bondi_HSE_Mode (%d) !!\n", Bondi_HSE_Mode ); } // if ( Bondi_HSE ) - else if ( Bondi_Init ) - { - // Set Initial Condition - const double r = sqrt( SQR(x-amr->BoxCenter[0]) + SQR(y-amr->BoxCenter[1]) + SQR(z-amr->BoxCenter[2]) ); - Dens = Mis_InterpolateFromTable( Bondi_Init_bin, Bondi_Init_Prof_r, Bondi_Init_Prof_d, r )/UNIT_D; - Pres = Mis_InterpolateFromTable( Bondi_Init_bin, Bondi_Init_Prof_r, Bondi_Init_Prof_p, r )/UNIT_P; - - const double vmag = Mis_InterpolateFromTable( Bondi_Init_bin, Bondi_Init_Prof_r, Bondi_Init_Prof_v, r )/UNIT_V; - //const double dh = amr->dh[lv]; - //const real dv = CUBE(dh); - const double dx = x-amr->BoxCenter[0]; - const double dy = y-amr->BoxCenter[1]; - const double dz = z-amr->BoxCenter[2]; - MomX = -Dens*vmag*dx/r; - MomY = -Dens*vmag*dy/r; - MomZ = -Dens*vmag*dz/r; - //Aux_Message( stdout, "%13.7e %13.7e %13.7e\n", MomX, MomY, MomZ ); - } - - else if ( Bondi_Init ) - { - const double r = sqrt( SQR(x-amr->BoxCenter[0]) + SQR(y-amr->BoxCenter[1]) + SQR(z-amr->BoxCenter[2]) ); - Dens = 1.945*pow( Bondi_Soliton_m22*1e1, -2.0 )*pow( Bondi_Soliton_rc*UNIT_L/Const_pc, -4.0 )*1e12/pow( 1+(9.1e-2)*SQR(r/Bondi_Soliton_rc), 8.0 ); - Dens *= Const_Msun/CUBE(Const_pc); - Dens *= 1/UNIT_D; - - const double *Table_R = Bondi_Soliton_PresProf[0]; - const double *Table_P = Bondi_Soliton_PresProf[1]; - Pres = Mis_InterpolateFromTable( 100000, Table_R, Table_P, r ); - if( Pres==NULL_REAL ){ - Aux_Error( ERROR_INFO, "%.3e, %.3e, %.3e\n",Table_R[0],Table_R[1000-1],r); - Aux_Error( ERROR_INFO, "Wrong Table\n"); - } - Pres *= 1/(UNIT_P); - } - // uniform background else @@ -747,60 +681,6 @@ void HSE_SetDensProfileTable() } // FUNCTION : HSE_SetDensProfileTable -//------------------------------------------------------------------------------------------------------- -// Function : Soliton_SetPresProfileTable -// Description : Set up the pressure profile table for Soliton -// -// Note : 1. Assume P(r->inf)=0 -// -// Parameter : None -//------------------------------------------------------------------------------------------------------- -int odefunc ( double x, const double y[], double f[], void *params) -{ - x /= Const_kpc; - double rc = Bondi_Soliton_rc*UNIT_L/Const_kpc; - double m22 = Bondi_Soliton_m22; - - double rho = 1.945*pow(m22/1e-1, -2.0)*pow(rc*1e3, -4.0)*1e12/pow(1+(9.1e-2)*SQR(x/rc), 8.0)*Const_Msun/pow(Const_pc, 3.0); - double a = sqrt(pow(2.0,1.0/8.0)-1)*(x/rc); - double M = 4.17e9/(SQR(m22/1e-1)*(rc*1e3)*pow(SQR(a)+1, 7.0))*(3465*pow(a,13.0)+23100*pow(a,11.0)+65373*pow(a,9.0)+101376*pow(a,7.0)+92323*pow(a,5.0)+48580*pow(a,3.0)-3465*a+3465*pow(SQR(a)+1, 7.0)*atan(a))*Const_Msun; - f[0] = -Const_NewtonG*M*rho/SQR(x*Const_kpc); - - return GSL_SUCCESS; -} -int * jac; -void Soliton_SetPresProfileTable() -{ - -// allocate table --> deallocated by End_Bondi() - const int NBin = 100000; - const double r_min = 0.1*amr->dh[MAX_LEVEL]*UNIT_L; - const double r_max = (0.5*sqrt(3.0)*amr->BoxSize[0])*UNIT_L; - for (int v=0; v<2; v++) Bondi_Soliton_PresProf[v] = new double [NBin]; - - int dim = 1; - gsl_odeiv2_system sys = {odefunc, NULL, dim, NULL}; - - gsl_odeiv2_driver * d = gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk4, 1e-6, 1e-6, 0.0); - - double x0 = -r_max, xf = -r_min; - double x = x0; - double y[1] = { 0.0 }; - for( int b=1; b<=NBin; b++) - { - double xi = x0 + b*(xf-x0)/NBin; - int status = gsl_odeiv2_driver_apply (d, &x, xi, y); - if (status != GSL_SUCCESS) - { - Aux_Error( ERROR_INFO, "Error in Soliton_SetPresProfileTable, return value=%d\n", status ); - break; - } - Bondi_Soliton_PresProf[0][NBin-b] = -x/UNIT_L; - Bondi_Soliton_PresProf[1][NBin-b] = y[0]; - } - gsl_odeiv2_driver_free (d); -} // void Soliton_SetDensProfileTable() - //------------------------------------------------------------------------------------------------------- // Function : End_Bondi @@ -817,8 +697,6 @@ void End_Bondi() { delete [] Bondi_HSE_DensProf[v]; Bondi_HSE_DensProf[v] = NULL; - delete [] Bondi_Soliton_PresProf[v]; - Bondi_Soliton_PresProf[v] = NULL; } } // FUNCTION : End_Bondi @@ -884,13 +762,13 @@ void Init_TestProb_Hydro_Bondi() // set the function pointers of various problem-specific routines - Init_Function_User_Ptr = SetGridIC; - Flag_User_Ptr = Flag_Bondi; - Aux_Record_User_Ptr = Record_Bondi; - BC_User_Ptr = BondiBC; - Flu_ResetByUser_Func_Ptr = Flu_ResetByUser_Func_Bondi; - Flu_ResetByUser_API_Ptr = Flu_ResetByUser_API_Bondi; - End_User_Ptr = End_Bondi; + Init_Function_User_Ptr = SetGridIC; + Flag_User_Ptr = Flag_Bondi; + Aux_Record_User_Ptr = Record_Bondi; + BC_User_Ptr = BondiBC; + Flu_ResetByUser_Func_Ptr = Flu_ResetByUser_Func_Bondi; + Flu_ResetByUser_API_Ptr = Flu_ResetByUser_API_Bondi; + End_User_Ptr = End_Bondi; # ifdef GRAVITY Init_ExtAcc_Ptr = Init_ExtAcc_Bondi; Poi_UserWorkBeforePoisson_Ptr = Poi_UserWorkBeforePoisson_Bondi; diff --git a/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp b/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp index 5795548805..e597ab6981 100644 --- a/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp +++ b/src/TestProblem/Hydro/Bondi/Record_Bondi.cpp @@ -37,7 +37,8 @@ extern int Bondi_SinkNCell; void Record_Bondi() { - const char FileName[] = "Record__BondiAccretionRate"; + char FileName[MAX_STRING]; + sprintf( FileName, "%s/Record__BondiAccretionRate", OUTPUT_DIR ); static bool FirstTime = true; static double Time0, dTime; diff --git a/src/TestProblem/Hydro/CMZ/Init_TestProb_Hydro_CMZ.cpp b/src/TestProblem/Hydro/CMZ/Init_TestProb_Hydro_CMZ.cpp index fd448b6c00..b5716ef47c 100644 --- a/src/TestProblem/Hydro/CMZ/Init_TestProb_Hydro_CMZ.cpp +++ b/src/TestProblem/Hydro/CMZ/Init_TestProb_Hydro_CMZ.cpp @@ -15,23 +15,24 @@ // ======================================================================================= // problem-specific function prototypes - bool Flag_CMZ( const int i, const int j, const int k, const int lv, const int PID, const double *Threshold ); #ifdef PARTICLE void Par_Init_ByFunction_BarredPot( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ); + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ); #endif static void IsolatedBC( real Array[], const int ArraySize[], real fluid[], const int NVar_Flu, const int GhostSize, const int idx[], const double pos[], const double Time, const int lv, const int TFluVarIdxList[], double AuxArray[] ); - //void Init_ExtAcc_BarredPot(); //void Init_ExtPot_BarredPot(); - void Init_ExtPot_TabularP17(); + + + //------------------------------------------------------------------------------------------------------- // Function : Validate // Description : Validate the compilation flags and runtime parameters for this test problem @@ -167,14 +168,13 @@ void SetParameter() // (4) make a note if ( MPI_Rank == 0 ) { - Aux_Message( stdout, "==================================================================================\n" ); - Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); - Aux_Message( stdout, " Log bar velocity = %13.7e km/s \n", BarredPot_V0*UNIT_V/Const_km ); - Aux_Message( stdout, " Log bar axis ratio = %13.7e \n", BarredPot_q ); - Aux_Message( stdout, " Log bar pattern speed = %13.7e km/s/kpc\n", BarredPot_Omegabar/UNIT_T - *Const_kpc/Const_km ); - Aux_Message( stdout, " Initial Gas disk temperature = %13.7e K \n", BarredPot_initT ); - Aux_Message( stdout, "==================================================================================\n" ); + Aux_Message( stdout, "==================================================================================\n" ); + Aux_Message( stdout, " test problem ID = %d\n", TESTPROB_ID ); + Aux_Message( stdout, " Log bar velocity = %13.7e km/s\n", BarredPot_V0*UNIT_V/Const_km ); + Aux_Message( stdout, " Log bar axis ratio = %13.7e\n", BarredPot_q ); + Aux_Message( stdout, " Log bar pattern speed = %13.7e km/s/kpc\n", BarredPot_Omegabar/UNIT_T*Const_kpc/Const_km ); + Aux_Message( stdout, " Initial Gas disk temperature = %13.7e K\n", BarredPot_initT ); + Aux_Message( stdout, "==================================================================================\n" ); } @@ -291,11 +291,17 @@ void SetGridIC( real fluid[], const double x, const double y, const double z, co // // Note : 1. Linked to the function pointer "BC_User_Ptr" // -// Parameter : fluid : Fluid field to be set -// x/y/z : Physical coordinates -// Time : Physical time -// lv : Refinement level -// AuxArray : Auxiliary array +// Parameter : Array : Array to store the prepared data including ghost zones +// ArraySize : Size of Array including the ghost zones on each side +// fluid : Fluid fields to be set +// NVar_Flu : Number of fluid variables to be prepared +// GhostSize : Number of ghost zones +// idx : Array indices +// pos : Physical coordinates +// Time : Physical time +// lv : Refinement level +// TFluVarIdxList : List recording the target fluid variable indices ( = [0 ... NCOMP_TOTAL-1] ) +// AuxArray : Auxiliary array // // Return : fluid //------------------------------------------------------------------------------------------------------- @@ -304,6 +310,7 @@ void IsolatedBC( real Array[], const int ArraySize[], real fluid[], const int NV const int lv, const int TFluVarIdxList[], double AuxArray[] ) { +// simply call the IC function SetGridIC( fluid, pos[0], pos[1], pos[2], Time, lv, AuxArray ); } // FUNCTION : IsolatedBC @@ -355,8 +362,8 @@ void AddNewParticleAttribute_BarredPot() { // "Idx_ParMetalFrac" has been predefined in Field.h - if ( Idx_ParMetalFrac == Idx_Undefined ) - Idx_ParMetalFrac = AddParticleAttribute( "ParMetalFrac" ); + if ( Idx_ParMetalFrac == Idx_Undefined ) + Idx_ParMetalFrac = AddParticleAttributeFlt( "ParMetalFrac" ); } // FUNCTION : AddNewParticleAttribute_BarredPot #endif @@ -387,18 +394,18 @@ void Init_TestProb_Hydro_BarredPot() // set the problem-specific runtime parameters SetParameter(); - Init_Function_User_Ptr = SetGridIC; - Init_Field_User_Ptr = AddNewField_BarredPot; - BC_User_Ptr = IsolatedBC; - Flag_User_Ptr = Flag_CMZ; + Init_Function_User_Ptr = SetGridIC; + Init_Field_User_Ptr = AddNewField_BarredPot; + BC_User_Ptr = IsolatedBC; + Flag_User_Ptr = Flag_CMZ; # ifdef PARTICLE - Par_Init_ByFunction_Ptr = Par_Init_ByFunction_BarredPot; + Par_Init_ByFunction_Ptr = Par_Init_ByFunction_BarredPot; Par_Init_Attribute_User_Ptr = AddNewParticleAttribute_BarredPot; # endif # ifdef GRAVITY -// Init_ExtAcc_Ptr = Init_ExtAcc_BarredPot; +// Init_ExtAcc_Ptr = Init_ExtAcc_BarredPot; // if ( OPT__EXT_POT == EXT_POT_FUNC ) - Init_ExtPot_Ptr = Init_ExtPot_TabularP17; + Init_ExtPot_Ptr = Init_ExtPot_TabularP17; # endif // #ifdef GRAVITY # endif // #if ( MODEL == HYDRO ) diff --git a/src/TestProblem/Hydro/CMZ/Par_Init_ByFunction_BarredPot.cpp b/src/TestProblem/Hydro/CMZ/Par_Init_ByFunction_BarredPot.cpp index 7c9320aa49..a725d62e46 100644 --- a/src/TestProblem/Hydro/CMZ/Par_Init_ByFunction_BarredPot.cpp +++ b/src/TestProblem/Hydro/CMZ/Par_Init_ByFunction_BarredPot.cpp @@ -21,24 +21,28 @@ // and LB_Init_LoadBalance() // --> Therefore, there is no constraint on which particles should be set by this function // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRan -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_BarredPot( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { @@ -47,10 +51,10 @@ void Par_Init_ByFunction_BarredPot( const long NPar_ThisRank, const long NPar_Al const real_par Useless = -1.0; # ifdef STAR_FORMATION - for (int p=0; p 2 && ColorField3Idx == Idx_Undefined ) ColorField3Idx = AddField( "ColorField3", FIXUP_FLUX_YES, FIXUP_REST_YES, NORMALIZE_NO, INTERP_FRAC_NO ); -} +} // FUNCTION : AddNewField_ClusterMerger +#endif + + + +#ifdef MASSIVE_PARTICLES +void AddNewParticleAttribute_ClusterMerger() +{ + + if ( Idx_ParHalo == Idx_Undefined ) + Idx_ParHalo = AddParticleAttributeInt( "ParHalo" ); +} // FUNCTION : AddNewParticleAttribute_ClusterMerger #endif diff --git a/src/TestProblem/Hydro/ClusterMerger/Par_Init_ByFunction_ClusterMerger.cpp b/src/TestProblem/Hydro/ClusterMerger/Par_Init_ByFunction_ClusterMerger.cpp index 84c7533181..04459297e6 100644 --- a/src/TestProblem/Hydro/ClusterMerger/Par_Init_ByFunction_ClusterMerger.cpp +++ b/src/TestProblem/Hydro/ClusterMerger/Par_Init_ByFunction_ClusterMerger.cpp @@ -31,12 +31,18 @@ extern long NPar_AllCluster; #ifdef MASSIVE_PARTICLES + +extern FieldIdx_t Idx_ParHalo; + void Read_Particles_ClusterMerger(std::string filename, long offset, long num, real_par_in xpos[], real_par_in ypos[], real_par_in zpos[], real_par_in xvel[], real_par_in yvel[], real_par_in zvel[], real_par_in mass[], real_par_in ptype[]); + + + //------------------------------------------------------------------------------------------------------- // Function : Par_Init_ByFunction_ClusterMerger // Description : Initialize all particle attributes for the merging cluster test @@ -62,25 +68,28 @@ void Read_Particles_ClusterMerger(std::string filename, long offset, long num, // --> Currently it only loads particle mass, position x/y/z, and velocity x/y/z // (and exactly in this order) // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- - void Par_Init_ByFunction_ClusterMerger( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { #ifdef SUPPORT_HDF5 @@ -132,13 +141,12 @@ void Par_Init_ByFunction_ClusterMerger( const long NPar_ThisRank, const long NPa if ( MPI_Rank == 0 ) Aux_Message( stdout, "done\n" ); // load data to the particle repository - const std::string filenames[3] = { Merger_File_Par1, Merger_File_Par2, Merger_File_Par3 }; for ( int c=0; c convert to code unit before storing to the particle repository to avoid floating-point overflow // --> we have assumed that the loaded data are in cgs @@ -197,7 +204,7 @@ void Par_Init_ByFunction_ClusterMerger( const long NPar_ThisRank, const long NPa ParPosY[pp] = real_par( ypos[p] / UNIT_L ); ParPosZ[pp] = real_par( zpos[p] / UNIT_L ); - if ( ptype[p] == PTYPE_TRACER ) { + if ( (long_par)ptype[p] == PTYPE_TRACER ) { // tracer particles have zero mass // and their velocities will be set by // the grid later @@ -206,7 +213,7 @@ void Par_Init_ByFunction_ClusterMerger( const long NPar_ThisRank, const long NPa ParVelY[pp] = (real_par)0.0; ParVelX[pp] = (real_par)0.0; } else { - // For massive particles get their mass + // for massive particles get their mass // and velocity ParMass[pp] = real_par( mass[p] / UNIT_M ); ParVelX[pp] = real_par( xvel[p] / UNIT_V ); @@ -217,7 +224,10 @@ void Par_Init_ByFunction_ClusterMerger( const long NPar_ThisRank, const long NPa // synchronize all particles to the physical time at the base level ParTime[pp] = (real_par)Time[0]; - } + // set tag for each cluster + AllAttributeInt[Idx_ParHalo][pp] = (long_par)c; + + } // for (long p=0; pBoxCenter[2] }; for (long p=0; p a helper macro PRINT_RESET_PARA is defined in TestProb.h const long End_Step_Default = __INT_MAX__; const double End_T_Default = 100.0*Const_kyr / UNIT_T; if ( END_STEP < 0 ) { END_STEP = End_Step_Default; - PRINT_RESET_PARA(END_STEP, FORMAT_LONG, "" ); + PRINT_RESET_PARA( END_STEP, FORMAT_LONG, "" ); } if ( END_T < 0.0 ) { END_T = End_T_Default; - PRINT_RESET_PARA(END_T, FORMAT_REAL, "" ); + PRINT_RESET_PARA( END_T, FORMAT_REAL, "" ); } + // (4) make a note if ( MPI_Rank == 0 ) { @@ -224,6 +224,7 @@ void SetParameter() Aux_Message( stdout, "=============================================================================\n" ); } + if ( MPI_Rank == 0 ) Aux_Message( stdout, " Setting runtime parameters ... done\n" ); } // FUNCTION : SetParameter @@ -410,7 +411,9 @@ void AddNewField_JetICMWall() if ( IntFieldIdx == Idx_Undefined ) IntFieldIdx = AddField( "IntField", FIXUP_FLUX_YES, FIXUP_REST_YES, NORMALIZE_YES, INTERP_FRAC_NO ); -} + +} // FUNCTION : AddNewField_JetICMWall +#endif // #if ( MODEL == HYDRO ) @@ -434,11 +437,12 @@ void Init_TestProb_Hydro_JetICMWall() Validate(); +# if ( MODEL == HYDRO ) // set the problem-specific runtime parameters SetParameter(); -// get enclosed mass +// set the function pointers of various problem-specific routines Init_Function_User_Ptr = SetGridIC; Init_Field_User_Ptr = AddNewField_JetICMWall; Flag_User_Ptr = NULL; @@ -449,9 +453,9 @@ void Init_TestProb_Hydro_JetICMWall() Output_User_Ptr = NULL; Aux_Record_User_Ptr = NULL; End_User_Ptr = NULL; +# endif // #if ( MODEL == HYDRO ) if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ... done\n", __FUNCTION__ ); } // FUNCTION : Init_TestProb_SRHydro_JetICMWall -#endif // #if ( MODEL == HYDRO ) diff --git a/src/TestProblem/Hydro/ParticleEquilibriumIC/Init_TestProb_Hydro_ParEqmIC.cpp b/src/TestProblem/Hydro/ParticleEquilibriumIC/Init_TestProb_Hydro_ParEqmIC.cpp index c7b97c0298..aa9cb189e0 100644 --- a/src/TestProblem/Hydro/ParticleEquilibriumIC/Init_TestProb_Hydro_ParEqmIC.cpp +++ b/src/TestProblem/Hydro/ParticleEquilibriumIC/Init_TestProb_Hydro_ParEqmIC.cpp @@ -12,7 +12,8 @@ double ParEqmIC_SmallGas; void Par_Init_ByFunction_ParEqmIC( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ); + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ); #endif // external potential routines diff --git a/src/TestProblem/Hydro/ParticleEquilibriumIC/Par_Init_ByFunction_ParEqmIC.cpp b/src/TestProblem/Hydro/ParticleEquilibriumIC/Par_Init_ByFunction_ParEqmIC.cpp index a0ae194491..5691fc4453 100644 --- a/src/TestProblem/Hydro/ParticleEquilibriumIC/Par_Init_ByFunction_ParEqmIC.cpp +++ b/src/TestProblem/Hydro/ParticleEquilibriumIC/Par_Init_ByFunction_ParEqmIC.cpp @@ -24,33 +24,39 @@ static RandomNumber_t *RNG = NULL; // and LB_Init_LoadBalance() // --> Therefore, there is no constraint on which particles should be set by this function // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRan -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRan +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_ParEqmIC( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); // define the particle attribute arrays - real_par *ParData_AllRank[PAR_NATT_TOTAL]; - for (int v=0; vBoxSize[0], y - 0.5*amr->BoxSize[1] }; - const double Radius = sqrt( dr[0]*dr[0] + dr[1]*dr[1] ); + const double dr_Bg [2] = { x - 0.25*amr->BoxSize[0], y - 0.25*amr->BoxSize[1] }; + const double dr_Mom[2] = { x - 0.50*amr->BoxSize[0], y - 0.50*amr->BoxSize[1] }; + const double Radius_Bg = sqrt( dr_Bg [0]*dr_Bg [0] + dr_Bg [1]*dr_Bg [1] ); + const double Radius_Mom = sqrt( dr_Mom[0]*dr_Mom[0] + dr_Mom[1]*dr_Mom[1] ); - const double Velocity = ParTest_Ang_Freq*Radius; + const double Velocity = ParTest_Ang_Freq*Radius_Mom; - const double Cos_theta = dr[0]/Radius; - const double Sin_theta = dr[1]/Radius; + const double Cos_theta = dr_Mom[0]/Radius_Mom; + const double Sin_theta = dr_Mom[1]/Radius_Mom; double Dens, MomX, MomY, MomZ, Pres, Eint, Etot; - Dens = ParTest_Dens_Bg; - Pres = ParTest_Pres_Bg; - MomX = -ParTest_Dens_Bg*Velocity*Sin_theta; - MomY = ParTest_Dens_Bg*Velocity*Cos_theta; + Dens = ParTest_Dens_Bg * ( 1.0 + 5.0 * Radius_Bg / amr->BoxSize[0] ); + Pres = ParTest_Pres_Bg * ( 1.0 + 5.0 * Radius_Bg / amr->BoxSize[0] ); + MomX = -Dens*Velocity*Sin_theta; + MomY = Dens*Velocity*Cos_theta; MomZ = 0.0; Eint = EoS_DensPres2Eint_CPUPtr( Dens, Pres, NULL, EoS_AuxArray_Flt, diff --git a/src/TestProblem/Hydro/ParticleTest/Par_Init_ByFunction_ParticleTest.cpp b/src/TestProblem/Hydro/ParticleTest/Par_Init_ByFunction_ParticleTest.cpp index 4155981bf2..a6eba04beb 100644 --- a/src/TestProblem/Hydro/ParticleTest/Par_Init_ByFunction_ParticleTest.cpp +++ b/src/TestProblem/Hydro/ParticleTest/Par_Init_ByFunction_ParticleTest.cpp @@ -36,24 +36,28 @@ extern bool ParTest_Use_Massive; // --> Currently it only loads particle mass, position x/y/z, and velocity x/y/z // (and exactly in this order) // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_ParticleTest( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); @@ -68,21 +72,24 @@ void Par_Init_ByFunction_ParticleTest( const long NPar_ThisRank, const long NPar NPar_All, NPar_AllRank ); // define the particle attribute arrays - real_par *ParData_AllRank[PAR_NATT_TOTAL]; - for (int v=0; vBoxSize[0] + + ParFltData_AllRank[PAR_POSX][p] = real_par( 0.5*amr->BoxSize[0] + 0.5*ParTest_Par_Sep*dir ); - ParData_AllRank[PAR_POSY][p] = real_par( 0.5*amr->BoxSize[1] ); - ParData_AllRank[PAR_POSZ][p] = real_par( 0.5*amr->BoxSize[2] ); + ParFltData_AllRank[PAR_POSY][p] = real_par( 0.5*amr->BoxSize[1] ); + ParFltData_AllRank[PAR_POSZ][p] = real_par( 0.5*amr->BoxSize[2] ); - ParData_AllRank[PAR_VELX][p] = (real_par)0.0; - ParData_AllRank[PAR_VELY][p] = real_par( v*dir ); - ParData_AllRank[PAR_VELZ][p] = (real_par)0.0; + ParFltData_AllRank[PAR_VELX][p] = (real_par)0.0; + ParFltData_AllRank[PAR_VELY][p] = real_par( v*dir ); + ParFltData_AllRank[PAR_VELZ][p] = (real_par)0.0; // set the particle type to be generic massive - ParData_AllRank[PAR_TYPE][p] = PTYPE_GENERIC_MASSIVE; + ParIntData_AllRank[PAR_TYPE][p] = PTYPE_GENERIC_MASSIVE; p++; } @@ -124,23 +131,23 @@ void Par_Init_ByFunction_ParticleTest( const long NPar_ThisRank, const long NPar { // tracer particles have no mass - ParData_AllRank[PAR_MASS][p] = (real_par)0.0; + ParFltData_AllRank[PAR_MASS][p] = (real_par)0.0; // assign positions - ParData_AllRank[PAR_POSX][p] = real_par( + ParFltData_AllRank[PAR_POSX][p] = real_par( (ii+1)*delta_p[0]+0.25*amr->BoxSize[0] ); - ParData_AllRank[PAR_POSY][p] = real_par( + ParFltData_AllRank[PAR_POSY][p] = real_par( (jj+1)*delta_p[1]+0.25*amr->BoxSize[1] ); - ParData_AllRank[PAR_POSZ][p] = real_par( + ParFltData_AllRank[PAR_POSZ][p] = real_par( (kk+1)*delta_p[2]+0.25*amr->BoxSize[2] ); // set velocities to zero (these will be updated from the grid later) - ParData_AllRank[PAR_VELX][p] = (real_par)0.0; - ParData_AllRank[PAR_VELY][p] = (real_par)0.0; - ParData_AllRank[PAR_VELZ][p] = (real_par)0.0; + ParFltData_AllRank[PAR_VELX][p] = (real_par)0.0; + ParFltData_AllRank[PAR_VELY][p] = (real_par)0.0; + ParFltData_AllRank[PAR_VELZ][p] = (real_par)0.0; // set the particle type to be tracer - ParData_AllRank[PAR_TYPE][p] = PTYPE_TRACER; + ParIntData_AllRank[PAR_TYPE][p] = PTYPE_TRACER; p++; } @@ -148,9 +155,8 @@ void Par_Init_ByFunction_ParticleTest( const long NPar_ThisRank, const long NPar } // if ( MPI_Rank == 0 ) // send particle attributes from the master rank to all ranks - Par_ScatterParticleData( NPar_ThisRank, NPar_AllRank, - _PAR_MASS|_PAR_POS|_PAR_VEL|_PAR_TYPE, - ParData_AllRank, AllAttribute ); + Par_ScatterParticleData( NPar_ThisRank, NPar_AllRank, _PAR_MASS|_PAR_POS|_PAR_VEL, _PAR_TYPE, + ParFltData_AllRank, ParIntData_AllRank, AllAttributeFlt, AllAttributeInt ); // synchronize all particles to the physical time on the base level for (long p=0; p Just an example and is by no means to be physically correct // -// Note : 1. Input and output fluid and particle data are stored in Fluid[] and ParAtt[], respectively +// Note : 1. Input and output fluid and particle data are stored in Fluid[] and ParAttFlt/Int[], respectively // --> This function is responsible for updating gas and particles within // ** FB_GHOST_SIZE <= cell indices i,j,k < FB_GHOST_SIZE+PS2 ** // --> Updating gas and particles outside this range is fine but will have no effect at all -// 2. Must use ParSortID[] to access ParAtt[] -// --> ParAtt[PAR_MASS/PAR_POSX/etc][ ParSortID[...] ] +// 2. Must use ParSortID[] to access ParAttFlt[] and ParAttInt[] +// --> ParAttFlt[PAR_MASS/PAR_POSX/etc][ ParSortID[...] ] +// --> ParAttInt[PAR_TYPE/etc][ ParSortID[...] ] // 3. Particles may be outside the target region // 4. To ensure the consistency of random numbers, one must call the random number generator for // ALL particles, including those too far away to affect the target region @@ -64,7 +65,8 @@ extern double Plummer_FB_Like; // dt : Time interval to advance solution // NPar : Number of particles // ParSortID : Sorted particle IDs -// ParAtt : Particle attribute arrays +// ParAttFlt : Particle floating-point attribute arrays +// ParAttInt : Particle integer attribute arrays // Fluid : Array to store the input/output fluid data // --> Array size is fixed to (FB_NXT)^3=(PS2+2*FB_GHOST_SIZE)^3 // EdgeL : Left edge of Fluid[] @@ -76,10 +78,10 @@ extern double Plummer_FB_Like; // --> Random number can be obtained by "RNG->GetValue( TID, Min, Max )", // where Min/Max specify the range of random numbers // -// Return : Fluid, ParAtt +// Return : Fluid, ParAttFlt, ParAttInt //------------------------------------------------------------------------------------------------------- int FB_Plummer( const int lv, const double TimeNew, const double TimeOld, const double dt, - const int NPar, const long *ParSortID, real_par *ParAtt[PAR_NATT_TOTAL], + const int NPar, const long *ParSortID, real_par *ParAttFlt[PAR_NATT_FLT_TOTAL], long_par *ParAttInt[PAR_NATT_INT_TOTAL], real (*Fluid)[FB_NXT][FB_NXT][FB_NXT], const double EdgeL[], const double dh, bool CoarseFine[], const int TID, RandomNumber_t *RNG ) { @@ -90,7 +92,8 @@ int FB_Plummer( const int lv, const double TimeNew, const double TimeOld, const if ( NPar > 0 ) { if ( ParSortID == NULL ) Aux_Error( ERROR_INFO, "ParSortID == NULL for NPar = %d !!\n", NPar ); - if ( ParAtt == NULL ) Aux_Error( ERROR_INFO, "ParAtt == NULL for NPar = %d !!\n", NPar ); + if ( ParAttFlt == NULL ) Aux_Error( ERROR_INFO, "ParAttFlt == NULL for NPar = %d !!\n", NPar ); + if ( ParAttInt == NULL ) Aux_Error( ERROR_INFO, "ParAttInt == NULL for NPar = %d !!\n", NPar ); } # endif // #ifdef GAMER_DEBUG @@ -116,7 +119,7 @@ int FB_Plummer( const int lv, const double TimeNew, const double TimeOld, const for (int t=0; t= FB_GHOST_SIZE && idx[0] < FB_GHOST_SIZE+PS2 && idx[1] >= FB_GHOST_SIZE && idx[1] < FB_GHOST_SIZE+PS2 && idx[2] >= FB_GHOST_SIZE && idx[2] < FB_GHOST_SIZE+PS2 ) - ParAtt[PAR_MASS][p] *= (real_par)ExpMassFac; + ParAttFlt[PAR_MASS][p] *= (real_par)ExpMassFac; } // if ( Plummer_FB_Exp ) @@ -207,7 +210,7 @@ int FB_Plummer( const int lv, const double TimeNew, const double TimeOld, const if ( idx[0] >= FB_GHOST_SIZE && idx[0] < FB_GHOST_SIZE+PS2 && idx[1] >= FB_GHOST_SIZE && idx[1] < FB_GHOST_SIZE+PS2 && idx[2] >= FB_GHOST_SIZE && idx[2] < FB_GHOST_SIZE+PS2 ) - ParAtt[PAR_MASS][p] += (real_par)dM_sum; + ParAttFlt[PAR_MASS][p] += (real_par)dM_sum; } // if ( Plummer_FB_Acc ) } // if ( RNG->GetValue(TID,0.0,1.0) < Plummer_FB_Like ) @@ -261,4 +264,4 @@ void FB_Init_Plummer() -#endif // #ifdef FEEDBACK +#endif // #if ( MODEL == HYDRO && defined FEEDBACK ) diff --git a/src/TestProblem/Hydro/Plummer/Init_TestProb_Hydro_Plummer.cpp b/src/TestProblem/Hydro/Plummer/Init_TestProb_Hydro_Plummer.cpp index 3e3fb94195..31d34c2a4f 100644 --- a/src/TestProblem/Hydro/Plummer/Init_TestProb_Hydro_Plummer.cpp +++ b/src/TestProblem/Hydro/Plummer/Init_TestProb_Hydro_Plummer.cpp @@ -42,7 +42,8 @@ static FieldIdx_t Plummer_Idx_Cloud1 = Idx_Undefined; void Par_Init_ByFunction_Plummer( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ); + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ); #endif void Init_ExtAcc_Plummer(); void Init_ExtPot_Plummer(); diff --git a/src/TestProblem/Hydro/Plummer/Par_Init_ByFunction_Plummer.cpp b/src/TestProblem/Hydro/Plummer/Par_Init_ByFunction_Plummer.cpp index 71158b36fc..597a975c00 100644 --- a/src/TestProblem/Hydro/Plummer/Par_Init_ByFunction_Plummer.cpp +++ b/src/TestProblem/Hydro/Plummer/Par_Init_ByFunction_Plummer.cpp @@ -43,31 +43,37 @@ static void RanVec_FixRadius( const double r, double RanVec[] ); // and LB_Init_LoadBalance() // --> Therefore, there is no constraint on which particles should be set by this function // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_Plummer( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); - real_par *ParData_AllRank[PAR_NATT_TOTAL]; - for (int v=0; vBoxSize[d], (real_par)amr->BoxSize[d] ); + ParFltData_AllRank[PAR_POSX+d][p] = FMOD( ParFltData_AllRank[PAR_POSX+d][p]+(real_par)amr->BoxSize[d], (real_par)amr->BoxSize[d] ); } @@ -166,7 +172,7 @@ void Par_Init_ByFunction_Plummer( const long NPar_ThisRank, const long NPar_AllR // randomly set the velocity vector with the given amplitude (RanV*Vmax) RanVec_FixRadius( RanV*Vmax, RanVec ); - for (int d=0; d<3; d++) ParData_AllRank[PAR_VELX+d][p] = real_par(RanVec[d] + Plummer_BulkVel[d]); + for (int d=0; d<3; d++) ParFltData_AllRank[PAR_VELX+d][p] = real_par(RanVec[d] + Plummer_BulkVel[d]); } // for (long p=0; p Therefore, there is no constraint on which particles should be set by this function // -// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank -// NPar_AllRank : Total Number of particles in all MPI ranks -// ParMass : Particle mass array with the size of NPar_ThisRank -// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank -// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank -// ParTime : Particle time array with the size of NPar_ThisRank -// ParType : Particle type array with the size of NPar_ThisRank -// AllAttribute : Pointer array for all particle attributes -// --> Dimension = [PAR_NATT_TOTAL][NPar_ThisRank] -// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) -// to access the data +// Parameter : NPar_ThisRank : Number of particles to be set by this MPI rank +// NPar_AllRank : Total Number of particles in all MPI ranks +// ParMass : Particle mass array with the size of NPar_ThisRank +// ParPosX/Y/Z : Particle position array with the size of NPar_ThisRank +// ParVelX/Y/Z : Particle velocity array with the size of NPar_ThisRank +// ParTime : Particle time array with the size of NPar_ThisRank +// ParType : Particle type array with the size of NPar_ThisRank +// AllAttributeFlt : Pointer array for all particle floating-point attributes +// --> Dimension = [PAR_NATT_FLT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h (e.g., Idx_ParCreTime) +// to access the data +// AllAttributeInt : Pointer array for all particle integer attributes +// --> Dimension = [PAR_NATT_INT_TOTAL][NPar_ThisRank] +// --> Use the attribute indices defined in Field.h to access the data // -// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttribute +// Return : ParMass, ParPosX/Y/Z, ParVelX/Y/Z, ParTime, ParType, AllAttributeFlt, AllAttributeInt //------------------------------------------------------------------------------------------------------- void Par_Init_ByFunction_Zeldovich( const long NPar_ThisRank, const long NPar_AllRank, real_par *ParMass, real_par *ParPosX, real_par *ParPosY, real_par *ParPosZ, real_par *ParVelX, real_par *ParVelY, real_par *ParVelZ, real_par *ParTime, - real_par *ParType, real_par *AllAttribute[PAR_NATT_TOTAL] ) + long_par *ParType, real_par *AllAttributeFlt[PAR_NATT_FLT_TOTAL], + long_par *AllAttributeInt[PAR_NATT_INT_TOTAL] ) { # ifdef SUPPORT_GSL @@ -421,8 +426,10 @@ void Par_Init_ByFunction_Zeldovich( const long NPar_ThisRank, const long NPar_Al if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s ...\n", __FUNCTION__ ); - real_par *ParData_AllRank[PAR_NATT_TOTAL]; - for (int v=0; vBoxSize[d], (real_par)amr->BoxSize[d] ); + ParFltData_AllRank[PAR_POSX+d][NPar_AllRank_Counter] + = FMOD( ParFltData_AllRank[PAR_POSX+d][NPar_AllRank_Counter]+(real_par)amr->BoxSize[d], (real_par)amr->BoxSize[d] ); } NPar_AllRank_Counter ++; @@ -491,7 +498,8 @@ void Par_Init_ByFunction_Zeldovich( const long NPar_ThisRank, const long NPar_Al } // if ( MPI_Rank == 0 ) // send particle attributes from the master rank to all ranks - Par_ScatterParticleData( NPar_ThisRank, NPar_AllRank, _PAR_MASS|_PAR_POS|_PAR_VEL, ParData_AllRank, AllAttribute ); + Par_ScatterParticleData( NPar_ThisRank, NPar_AllRank, _PAR_MASS|_PAR_POS|_PAR_VEL, _NONE, + ParFltData_AllRank, ParIntData_AllRank, AllAttributeFlt, AllAttributeInt ); // synchronize all particles to the physical time on the base level, and set generic particle type for (long p=0; p AddNewField() Flag_Region_Ptr = NULL; // option: OPT__FLAG_REGION; example: Refing/Flag_Region.cpp Flag_User_Ptr = NULL; // option: OPT__FLAG_USER; example: Refine/Flag_User.cpp + Flag_UserWorkBeforeFlag_Ptr = NULL; // option: none; example: Refine/Flag_UserWorkBeforeFlag.cpp Mis_GetTimeStep_User_Ptr = NULL; // option: OPT__DT_USER; example: Miscellaneous/Mis_GetTimeStep_User.cpp Mis_UserWorkBeforeNextLevel_Ptr = NULL; // example: Miscellaneous/Mis_UserWorkBeforeNextLevel.cpp Mis_UserWorkBeforeNextSubstep_Ptr = NULL; // example: Miscellaneous/Mis_UserWorkBeforeNextSubstep.cpp @@ -305,7 +306,8 @@ void Init_TestProb_Template() # endif # ifdef PARTICLE Par_Init_ByFunction_Ptr = NULL; // option: PAR_INIT=1; example: Particle/Par_Init_ByFunction.cpp - Par_Init_Attribute_User_Ptr = NULL; // set PAR_NATT_USER; example: TestProblem/Hydro/AGORA_IsolatedGalaxy/Init_TestProb_Hydro_AGORA_IsolatedGalaxy.cpp --> AddNewParticleAttribute() +// Par_Init_ByFile_User_Ptr = NULL; // option: PAR_INIT=3; example: Particle/Par_Init_ByFile.cpp -> Par_Init_ByFile_Default() + Par_Init_Attribute_User_Ptr = NULL; // set PAR_NATT_FLT/INT_USER; example: TestProblem/Hydro/AGORA_IsolatedGalaxy/Init_TestProb_Hydro_AGORA_IsolatedGalaxy.cpp --> AddNewParticleAttribute() # endif # if ( EOS == EOS_USER ) EoS_Init_Ptr = NULL; // option: EOS in the Makefile; example: EoS/User_Template/CPU_EoS_User_Template.cpp diff --git a/src/YT/YT_GetParticleAttribute.cpp b/src/YT/YT_GetParticleAttribute.cpp index 37ea1312fe..4f60ac074d 100644 --- a/src/YT/YT_GetParticleAttribute.cpp +++ b/src/YT/YT_GetParticleAttribute.cpp @@ -23,7 +23,7 @@ void YT_GetPID(const long gid, int *level, int *PID); //------------------------------------------------------------------------------------------------------- void Get_ParticleAttribute(const int list_len, const long *list_gid, const char *ptype, const char *attr, yt_array *data_array){ // Get attribute index in GAMER - FieldIdx_t ParAttr_Idx = GetParticleAttributeIndex( attr, CHECK_ON ); + FieldIdx_t ParAttrFlt_Idx = GetParticleAttributeFltIndex( attr, CHECK_ON ); // loop through list_gid for(int lid=0; lidpatch[0][level][PID0 + i]->NPar; p++){ // run through particle data in one PID ParID = amr->patch[0][level][PID0 + i]->ParList[p]; - ((real_par *) data_array[lid].data_ptr)[data_idx] = amr->Par->Attribute[ParAttr_Idx][ParID]; + ((real_par *) data_array[lid].data_ptr)[data_idx] = amr->Par->AttributeFlt[ParAttrFlt_Idx][ParID]; data_idx += 1; } } @@ -46,7 +46,7 @@ void Get_ParticleAttribute(const int list_len, const long *list_gid, const char long ParID; for(int p=0; ppatch[0][level][PID0]->NPar; p++){ ParID = amr->patch[0][level][PID0]->ParList[p]; - ((real_par *) data_array[lid].data_ptr)[p] = amr->Par->Attribute[ParAttr_Idx][ParID]; + ((real_par *) data_array[lid].data_ptr)[p] = amr->Par->AttributeFlt[ParAttrFlt_Idx][ParID]; } #endif // #ifdef LIBYT_USE_PATCH_GROUP } diff --git a/src/YT/YT_Inline.cpp b/src/YT/YT_Inline.cpp index 18a3aca857..87d6a662e0 100644 --- a/src/YT/YT_Inline.cpp +++ b/src/YT/YT_Inline.cpp @@ -221,7 +221,7 @@ void YT_Inline() // Set attributes for (int v=0; v= min_dist: continue min_dist = dist pos_key = "--"+key - msg += 'Unrecognized argument: %s'%(arg) - if min_dist <= CLOSE_DIST: msg += ', do you mean: %s ?\n'%(pos_key) - msg += '\n' - if arg == '--gpu_arch': msg += "ERROR: <--gpu_arch> is deprecated. Please set in your machine *.config file (see ../configs/template.config).\n" + msg += "Unrecognized argument: %s"%(arg) + if min_dist <= CLOSE_DIST: msg += ", do you mean: %s ?\n"%(pos_key) + msg += "\n" + if arg == "--gpu_arch": msg += "ERROR: <--gpu_arch> is deprecated. Please set in your machine *.config file (see ../configs/template.config).\n" if len(argv) != 0: self.error( msg ) return args, self.gamer_names, self.depends, self.constraints - def _get_option_tuples(self, option_string): - # This function is directly from the source code of `argparse`. - # We decided to add the function manually because versions prior to Python 3.5 do not support `allow_abbrev`. - # See: https://github.com/python/cpython/blob/main/Lib/argparse.py - result = [] - - # option strings starting with two prefix characters are only split at the '=' - chars = self.prefix_chars - if option_string[0] in chars and option_string[1] in chars: - pass # we always use `allow_abbrev=False` - - # single character options can be concatenated with their arguments - # but multiple character options always have to have their arguments separate - elif option_string[0] in chars and option_string[1] not in chars: - option_prefix = option_string - short_option_prefix = option_string[:2] - short_explicit_arg = option_string[2:] - - for option_string in self._option_string_actions: - if option_string == short_option_prefix: - action = self._option_string_actions[option_string] - tup = action, option_string, '', short_explicit_arg - result.append(tup) - elif option_string.startswith(option_prefix): - action = self._option_string_actions[option_string] - tup = action, option_string, None, None - result.append(tup) - - # shouldn't ever get here - else: - self.error(_('unexpected option string: %s') % option_string) - - return result # return the collected option tuples - def print_usage( self, *args, **kwargs ): if "usage" in self.program: print("Usage: %s\n" % self.program["usage"]) @@ -219,6 +196,48 @@ def print_help( self, *args, **kwargs ): if "print_detail" in kwargs: self.print_option() if "epilog" in self.program: print(self.program["epilog"]) +class SystemSetting( dict ): + """ + Store the system settings from the default setting file. + + Format of the setting file: + 1. Comment starts with `#`. + 2. The line begins with the variable name, followed by one or multiple spaces, and then the value. + 3. Only the fisrt value of the line will be loaded. + 4. If a variable is defined multiple times, only the last occurrence will be used. + """ + def __init__( self, *args, **kwargs ): + super().__init__( *args, **kwargs ) + + def get_default( self, key, default_val ): + return self.get( key, default_val ) + + def load( self, pathname ): + """ + Load the system settings from the default setting file. If a setting exists, + it will be overwritten. Return `False` if the file does not exist. + + Parameters: + pathname : str - The path of the default setting file to be loaded. + + Returns: + bool - Whether the file exists. + """ + if not os.path.isfile(pathname): + return False + with open( pathname, "r" ) as f: + lines = f.readlines() + for line in lines: + tokens = line.strip().split() + if len(tokens) == 0: continue # empty line + if tokens[0][0] == "#": continue # skip comment line + if len(tokens) >= 2: + self[tokens[0]] = tokens[1] + else: # key without value + self[tokens[0]] = None + + return True + #################################################################################################### @@ -233,7 +252,8 @@ def str2bool( v ): return def add_option( opt_str, name, val ): - # NOTE: Every -Doption must have a trailing space. + # NOTE: 1. Every -Doption must have a trailing space. + # 2. Do not insert any space before and after the equal sign `=`. if type(val) == type(True): if val: opt_str += "-D%s "%(name) LOGGER.info("%-25s : %r"%(name, val)) @@ -289,7 +309,7 @@ def get_gpu_compute_capability(): Others: https://en.wikipedia.org/wiki/CUDA#GPUs_supported """ CUDA_SUCCESS = 0 - libnames = ('libcuda.so', 'libcuda.dylib', 'cuda.dll') + libnames = ("libcuda.so", "libcuda.dylib", "cuda.dll") for libname in libnames: try: cuda = ctypes.CDLL(libname) @@ -298,7 +318,7 @@ def get_gpu_compute_capability(): else: break else: - raise OSError("could not load any of: " + ' '.join(libnames)) + raise OSError("could not load any of: " + " ".join(libnames)) nGpus, cc_major, cc_minor, device = ctypes.c_int(), ctypes.c_int(), ctypes.c_int(), ctypes.c_int() @@ -351,11 +371,12 @@ def string_align( string, indent_str, width, end_char ): if string[i] == end_char: new_line = True return new_str -def load_arguments(): +def load_arguments( sys_setting : SystemSetting ): parser = ArgumentParser( description = GAMER_DESCRIPTION, formatter_class = argparse.RawTextHelpFormatter, epilog = GAMER_EPILOG, - add_help = False + add_help = False, + allow_abbrev=False ) parser.add_argument( "-h", "--help", @@ -371,8 +392,8 @@ def load_arguments(): # machine config setup parser.add_argument( "--machine", type=str, metavar="MACHINE", - default="eureka_intel", - help="Select the MACHINE.config file under ../configs directory. \nChoice: [eureka_intel, YOUR_MACHINE_NAME] => " + default=sys_setting.get_default( "machine", "eureka_intel" ), + help="Select the *.config file from the ../configs directory. This will overwrite the default machine specified in the default setting file.\nChoice: [eureka_intel, spock_intel, ...] => " ) # A. options of diffierent physical models @@ -454,6 +475,18 @@ def load_arguments(): ) # A.2 ELBDM scheme + parser.add_argument( "--elbdm_scheme", type=str, metavar="TYPE", gamer_name="ELBDM_SCHEME", + default="ELBDM_WAVE", choices=["ELBDM_WAVE", "ELBDM_HYBRID"], + depend={"model":"ELBDM"}, + help="Scheme type for <--model=ELBDM> (ELBDM_WAVE: wave-only, ELBDM_HYBRID: fluid-wave-hybrid-scheme).\n" + ) + + parser.add_argument( "--wave_scheme", type=str, metavar="TYPE", gamer_name="WAVE_SCHEME", + default="WAVE_FD", choices=["WAVE_FD", "WAVE_GRAMFE"], + depend={"model":"ELBDM"}, + help="Wave scheme for <--model=ELBDM> (WAVE_FD: finite difference, WAVE_GRAMFE: local spectral method).\n" + ) + parser.add_argument( "--conserve_mass", type=str2bool, metavar="BOOLEAN", gamer_name="CONSERVE_MASS", default=True, depend={"model":"ELBDM"}, @@ -461,9 +494,23 @@ def load_arguments(): ) parser.add_argument( "--laplacian_four", type=str2bool, metavar="BOOLEAN", gamer_name="LAPLACIAN_4TH", - default=True, + default=None, depend={"model":"ELBDM"}, - help="Enable the fourth-order Laplacian for <--model=ELBDM>.\n" + constraint={ True:{"wave_scheme":"WAVE_FD"} }, + help="Enable the fourth-order Laplacian for <--model=ELBDM> (for <--wave_scheme=WAVE_FD> only).\n" + ) + + parser.add_argument( "--gramfe_scheme", type=str, metavar="TYPE", gamer_name="GRAMFE_SCHEME", + default="GRAMFE_MATMUL", choices=["GRAMFE_MATMUL", "GRAMFE_FFT"], + depend={"model":"ELBDM", "wave_scheme":"WAVE_GRAMFE"}, + constraint={ "GRAMFE_MATMUL":{"gsl":True} }, + help="GramFE scheme for <--wave_scheme=WAVE_GRAMFE> (GRAMFE_MATMUL: faster for PATCH_SIZE=8, GRAMFE_FFT: faster for larger patch sizes).\n" + ) + + parser.add_argument( "--hybrid_scheme", type=str, metavar="TYPE", gamer_name="HYBRID_SCHEME", + default="HYBRID_MUSCL", choices=["HYBRID_UPWIND", "HYBRID_FROMM", "HYBRID_MUSCL"], + depend={"model":"ELBDM", "elbdm_scheme":"ELBDM_HYBRID"}, + help="Fluid scheme for <--elbdm_scheme=ELBDM_HYBRID> (HYBRID_UPWIND: first-order, diffusive, HYBRID_FROMM: second-order, no limiter, unstable for fluid-only simulations, HYBRID_MUSCL: second-order, with limiter, useful for zoom-in and fluid-only simulations).\n" ) parser.add_argument( "--self_interaction", type=str2bool, metavar="BOOLEAN", gamer_name="QUARTIC_SELF_INTERACTION", @@ -511,6 +558,7 @@ def load_arguments(): default=False, help="Enable particles.\n" ) + parser.add_argument( "--tracer", type=str2bool, metavar="BOOLEAN", gamer_name="TRACER", default=False, depend={"particle":True}, @@ -535,16 +583,28 @@ def load_arguments(): help="Feedback from particles to grids and vice versa.\n" ) - parser.add_argument( "--par_attribute", type=int, metavar="INTEGER", gamer_name="PAR_NATT_USER", + parser.add_argument( "--par_attribute_flt", type=int, metavar="INTEGER", gamer_name="PAR_NATT_FLT_USER", + default=0, + depend={"particle":True}, + help="Set the number of user-defined particle floating-point attributes.\n" + ) + + parser.add_argument( "--par_attribute_int", type=int, metavar="INTEGER", gamer_name="PAR_NATT_INT_USER", default=0, depend={"particle":True}, - help="Set the number of user-defined particle attributes.\n" + help="Set the number of user-defined particle integer attributes.\n" ) parser.add_argument( "--double_par", type=str2bool, metavar="BOOLEAN", gamer_name="FLOAT8_PAR", default=None, depend={"particle":True}, - help="Enable double precision for particle attributes.\n" + help="Enable double precision for particle floating-point attributes.\n" + ) + + parser.add_argument( "--long_par", type=str2bool, metavar="BOOLEAN", gamer_name="INT8_PAR", + default=True, + depend={"particle":True}, + help="Use the long integer data type for particle integer attributes.\n" ) # A.5 grackle parser.add_argument( "--grackle", type=str2bool, metavar="BOOLEAN", gamer_name="SUPPORT_GRACKLE", @@ -623,6 +683,12 @@ def load_arguments(): help="Support FFTW library.\n" ) + parser.add_argument( "--spectral_interpolation", type=str2bool, metavar="BOOLEAN", gamer_name="SUPPORT_SPECTRAL_INT", + default=False, + constraint={ True:{"gsl":True, "fftw":["FFTW2", "FFTW3"]} }, + help="Support spectral interpolation.\n" + ) + parser.add_argument( "--libyt", type=str2bool, metavar="BOOLEAN", gamer_name="SUPPORT_LIBYT", default=False, help="Support yt inline analysis.\n" @@ -653,7 +719,7 @@ def load_arguments(): ) parser.add_argument( "--rng", type=str, metavar="TYPE", gamer_name="RANDOM_NUMBER", - default="RNG_GNU_EXT", + default=None, choices=["RNG_GNU_EXT", "RNG_CPP11"], help="Select the random number generator (RNG_GNU_EXT: GNU extension drand48_r, RNG_CPP11: c++11 ).\nRNG_GNU_EXT may not be supported on some macOS.\nFor RNG_CPP11, add -std=c++11 to CXXFLAG in your config file.\n" ) @@ -694,10 +760,14 @@ def load_arguments(): def load_config( config ): LOGGER.info("Using %s as the config."%(config)) + if not os.path.isfile( config ): + raise FileNotFoundError("The config file <%s> does not exist."%(config)) + paths, compilers = {}, {"CXX":"", "CXX_MPI":""} flags = {"CXXFLAG":"", "OPENMPFLAG":"", "LIBFLAG":"", "NVCCFLAG_COM":"", "NVCCFLAG_FLU":"", "NVCCFLAG_POT":""} gpus = {"GPU_COMPUTE_CAPABILITY":""} - with open( config, 'r') as f: + + with open( config, "r" ) as f: lines = f.readlines() for line in lines: @@ -720,10 +790,10 @@ def load_config( config ): if gpus[temp[0]] != "": LOGGER.warning("The original value will be overwritten. <%s>: %s --> %s"%(temp[0], gpus[temp[0]], temp[1])) gpus[temp[0]] = temp[1] else: - try: + if len(temp) >= 2: paths[temp[0]] = temp[1] - except: - paths[temp[0]] = '' + else: # key without value + paths[temp[0]] = "" return paths, compilers, flags, gpus @@ -734,6 +804,9 @@ def set_conditional_defaults( args ): if args["bitwise_reproducibility"] is None: args["bitwise_reproducibility"] = args["debug"] + if args["laplacian_four"] is None: + args["laplacian_four"] = True if args["wave_scheme"] == "WAVE_FD" else False + if args["double_par"] is None: args["double_par"] = args["double"] @@ -747,20 +820,28 @@ def set_conditional_defaults( args ): if args["barotropic"] is None: args["barotropic"] = (args["eos"] == "ISOTHERMAL") + + if args["rng"] is None: + args["rng"] = "RNG_CPP11" if sys.platform == "darwin" else "RNG_GNU_EXT" + return args def set_gpu( gpus, flags, args ): gpu_opts = {} compute_capability = gpus["GPU_COMPUTE_CAPABILITY"] + if not args["gpu"]: return gpu_opts + # 1. Check the compute capability if compute_capability == "": - if args["gpu"]: raise ValueError("GPU_COMPUTE_CAPABILITY is not set in `../configs/%s.config`. See `../configs/template.config` for illustration."%args["machine"]) - return gpu_opts + raise ValueError("GPU_COMPUTE_CAPABILITY is not set in `../configs/%s.config`. See `../configs/template.config` for illustration."%args["machine"]) compute_capability = int(compute_capability) if compute_capability < 0: - compute_capability = get_gpu_compute_capability() + try: + compute_capability = get_gpu_compute_capability() + except: + raise ValueError("Fail to set GPU_COMPUTE_CAPABILITY automatically! Please set it manually in `../configs/%s.config`."%args["machine"]) elif compute_capability < 200: raise ValueError("Incorrect GPU_COMPUTE_CAPABILITY range (>=200)") gpu_opts["GPU_COMPUTE_CAPABILITY"] = str(compute_capability) @@ -775,7 +856,7 @@ def set_gpu( gpus, flags, args ): gpu_opts["MAXRREGCOUNT_FLU"] = "--maxrregcount=128" else: gpu_opts["MAXRREGCOUNT_FLU"] = "--maxrregcount=70" - elif 500 <= compute_capability and compute_capability <= 870: + elif 500 <= compute_capability and compute_capability <= 900: if args["double"]: gpu_opts["MAXRREGCOUNT_FLU"] = "--maxrregcount=192" else: @@ -816,6 +897,9 @@ def set_compile( paths, compilers, flags, kwargs ): # 3. Set the nvcc common flags # NOTE: `-G` may cause the GPU Poisson solver to fail if kwargs["debug"]: flags["NVCCFLAG_COM"] += "-g -Xptxas -v" + # enable C++ 17 support for ELBDM GPU Gram-Fourier extension scheme + if kwargs["model"] == "ELBDM" and kwargs["wave_scheme"] == "WAVE_GRAMFE" and kwargs["gramfe_scheme"] == "GRAMFE_FFT": + flags["NVCCFLAG_COM"] += "-std=c++17" # 4. Write flags to compile option dictionary. for key, val in flags.items(): @@ -847,7 +931,7 @@ def validation( paths, depends, constraints, **kwargs ): if type(check_val) != type([]): check_val = [check_val] # transform to list if kwargs[check_opt] in check_val: continue # satisify the validation - val_str = ', '.join(str(x) for x in check_val) + val_str = ", ".join(str(x) for x in check_val) LOGGER.error("The option <--%s=%s> requires <--%s> to be set to [%s]. Current: <--%s=%s>."%(opt, str(kwargs[opt]), check_opt, val_str, check_opt, kwargs[check_opt])) success = False @@ -858,7 +942,6 @@ def validation( paths, depends, constraints, **kwargs ): if kwargs["passive"] < 0: LOGGER.error("Passive scalar should not be negative. Current: %d"%kwargs["passive"]) success = False - if kwargs["dual"] not in [NONE_STR, "DE_ENPY"]: LOGGER.error("This dual energy form is not supported yet. Current: %s"%kwargs["dual"]) success = False @@ -867,10 +950,17 @@ def validation( paths, depends, constraints, **kwargs ): if kwargs["passive"] < 0: LOGGER.error("Passive scalar should not be negative. Current: %d"%kwargs["passive"]) success = False + if kwargs["gramfe_scheme"] == "GRAMFE_FFT" and not kwargs["gpu"] and kwargs["fftw"] not in ["FFTW2", "FFTW3"]: + LOGGER.error("Must set <--fftw> when adopting <--gramfe_scheme=GRAMFE_FFT> and <--gpu=false>") + success = False + if kwargs["spectral_interpolation"] and kwargs["fftw"] == "FFTW2" and not kwargs["double"]: + LOGGER.error("Must enable <--double> when adopting <--spectral_interpolation> and <--fftw=FFTW2>") + success = False elif kwargs["model"] == "PAR_ONLY": LOGGER.error("<--model=PAR_ONLY> is not supported yet.") success = False + else: LOGGER.error("Unrecognized model: %s. Please add to the model choices."%kwargs["model"]) success = False @@ -883,8 +973,11 @@ def validation( paths, depends, constraints, **kwargs ): if not kwargs["gravity"] and not kwargs["tracer"]: LOGGER.error("At least one of <--gravity> or <--tracer> must be enabled for <--particle>.") success = False - if kwargs["par_attribute"] < 0: - LOGGER.error("Number of particle attributes should not be negative. Current: %d"%kwargs["par_attribute"]) + if kwargs["par_attribute_flt"] < 0: + LOGGER.error("Number of particle floating-point attributes should not be negative. Current: %d"%kwargs["par_attribute_flt"]) + success = False + if kwargs["par_attribute_int"] < 0: + LOGGER.error("Number of particle integer attributes should not be negative. Current: %d"%kwargs["par_attribute_int"]) success = False # B. Miscellaneous options @@ -904,6 +997,10 @@ def validation( paths, depends, constraints, **kwargs ): LOGGER.error("<--overlap_mpi> is not supported yet.") success = False + if kwargs["rng"] != "RNG_CPP11" and sys.platform == "darwin": + LOGGER.error("<--rng=RNG_CPP11> is required for macOS.") + success = False + if not success: raise BaseException( "The above vaildation failed." ) return @@ -926,6 +1023,11 @@ def warning( paths, **kwargs ): if kwargs[arg] != val: continue if paths.setdefault(p_name, "") != "": continue LOGGER.warning("%-15s is not given in %s.config when setting <--%s=%s>"%(p_name, kwargs["machine"], arg, str(val))) + + if kwargs["model"] == "ELBDM" and kwargs["gpu"] and kwargs["wave_scheme"] == "WAVE_GRAMFE" and kwargs["gramfe_scheme"] == "GRAMFE_FFT": + if paths.setdefault("CUFFTDX_PATH", "") == "": + LOGGER.warning("CUFFTDX_PATH is not given in %s.config when enabling <--gramfe_scheme=GRAMFE_FFT>."%(kwargs["machine"])) + return @@ -943,36 +1045,41 @@ def warning( paths, **kwargs ): command = " ".join(["# This makefile is generated by the following command:", "\n#", sys.executable] + sys.argv + ["\n"]) LOGGER.info( " ".join( [sys.executable] + sys.argv ) ) - # 2. Load the input arguments - args, name_table, depends, constraints = load_arguments() + # 2. Load system settings + sys_setting = SystemSetting() + sys_setting.load(GAMER_GLOBAL_SETTING) + sys_setting.load(GAMER_LOCAL_SETTING) + + # 3. Load the input arguments + args, name_table, depends, constraints = load_arguments( sys_setting ) - # 3. Prepare the makefile args - # 3.1 Load the machine setup + # 4. Prepare the makefile args + # 4.1 Load the machine setup paths, compilers, flags, gpus = load_config( os.path.join(GAMER_CONFIG_DIR, args["machine"]+".config") ) - # 3.2 Validate arguments + # 4.2 Validate arguments validation( paths, depends, constraints, **args ) warning( paths, **args ) - # 3.3 Add the SIMU_OPTION + # 4.3 Add the SIMU_OPTION LOGGER.info("========================================") LOGGER.info("GAMER has the following setting.") LOGGER.info("----------------------------------------") sims = set_sims( name_table, depends, **args ) - # 3.4 Set the compiler + # 4.4 Set the compiler compiles = set_compile( paths, compilers, flags, args ) - # 3.5 Set the GPU + # 4.5 Set the GPU gpu_setup = set_gpu( gpus, flags, args ) - # 4. Create Makefile - # 4.1 Read + # 5. Create Makefile + # 5.1 Read with open( GAMER_MAKE_BASE, "r" ) as make_base: makefile = make_base.read() - # 4.2 Replace + # 5.2 Replace LOGGER.info("----------------------------------------") for key, val in paths.items(): LOGGER.info("%-25s : %s"%(key, val)) @@ -999,9 +1106,9 @@ def warning( paths, **kwargs ): for key in re.findall(r"@@@(.+?)@@@", makefile): makefile, num = re.subn(r"@@@%s@@@"%key, "", makefile) if num == 0: raise BaseException("The string @@@%s@@@ is not replaced correctly."%key) - LOGGER.warning("@@@%s@@@ is replaced to '' since there is no given value."%key) + LOGGER.warning("@@@%s@@@ is replaced to '' since the value is not given or the related option is disabled."%key) - # 4.3 Write + # 5.3 Write with open( GAMER_MAKE_OUT, "w") as make_out: make_out.write( command + makefile ) diff --git a/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Copy.sh b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Copy.sh new file mode 100644 index 0000000000..29b55788a7 --- /dev/null +++ b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Copy.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# copy files to the correct directories for the target test problem +cp Init_TestProb.cpp ../../../src/Init/ +cp Makefile ../../../src/ +cp Input__* ../../../bin/Run/ diff --git a/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Init_TestProb.cpp b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Init_TestProb.cpp new file mode 100644 index 0000000000..83e647f057 --- /dev/null +++ b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Init_TestProb.cpp @@ -0,0 +1,489 @@ +#include "GAMER.h" + +#if ( MODEL == ELBDM ) + + + +extern void (*Init_Function_Ptr)( real fluid[], const double x, const double y, const double z, const double Time ); +extern void (*Output_TestProbErr_Ptr)( const bool BaseOnly ); + +static void ELBDM_TestProbSol_JeansInstability_Physical( real fluid[], const double x, const double y, const double z, + const double Time ); +static void ELBDM_OutputError_JeansInstability_Physical( const bool BaseOnly ); +static void WriteFile( FILE *File[], const int lv, const int PID, const int i, const int j, const int k, + const int ii, const int jj, const int kk, double L1_Err[], const OptOutputPart_t Part ); + + +// global variables in the ELBDM Jeans instability test +// ======================================================================================= +static real Jeans_WaveLength; // wave length +static real Jeans_WaveK; // wave number +static real Jeans_WaveKj; // critical wave number +static real Jeans_Omega; // wave angular frequency +static real Jeans_RealAmp; // wave real part amplitude +static real Jeans_ImagAmp; // wave imaginary part amplitude +static real Jeans_Sign; // stable : (+1/-1) --> (right/left-moving wave) + // unstable : (+1/-1) --> (growing/decaying mode) +static real Jeans_Phase0; // initial phase shift +static bool Jeans_Stable; // true/false --> Jeans stable/unstable +// ======================================================================================= + + + + +//------------------------------------------------------------------------------------------------------- +// Function : Init_TestProb +// Description : Initialize parameters for the ELBDM Jeans instability test +// +// Note : 1. Please copy this file to "GAMER/src/Init/Init_TestProb.cpp" +// 2. Global variables declared here will also be used in the function +// "ELBDM_TestProbSol_JeansInstability" +// +// Parameter : None +//------------------------------------------------------------------------------------------------------- +void Init_TestProb() +{ + + const char *TestProb = "ELBDM physical-frame Jeans instability"; + +// check +# if ( MODEL != ELBDM ) +# error : ERROR : "MODEL != ELBDM" in the ELBDM Jeans instability test !! +# endif + +# ifndef GRAVITY +# error : ERROR : "GRAVITY must be ON" in the ELBDM Jeans instability test !! +# endif + +# ifdef COMOVING +# error : ERROR : "COMOVING must be OFF" in the ELBDM Jeans instability test !! +# endif + + if ( amr->BoxSize[0] != amr->BoxSize[1] || amr->BoxSize[0] != amr->BoxSize[2] ) + Aux_Error( ERROR_INFO, "simulation domain must be CUBIC in the %s test !!\n", TestProb ); + + +// set the initialization and output functions + Init_Function_Ptr = ELBDM_TestProbSol_JeansInstability_Physical; + Output_TestProbErr_Ptr = ELBDM_OutputError_JeansInstability_Physical; + + +// set global variables + Jeans_WaveLength = amr->BoxSize[0]/sqrt(3.0); + Jeans_WaveK = 2.0*M_PI/Jeans_WaveLength; + Jeans_WaveKj = POW( 16.0*M_PI*NEWTON_G*SQR(ELBDM_ETA), 0.25 ); + Jeans_Stable = ( Jeans_WaveK > Jeans_WaveKj ) ? true : false; + Jeans_Omega = ( Jeans_Stable ) ? 0.5/ELBDM_ETA*sqrt( POW(Jeans_WaveK, 4.0) - POW(Jeans_WaveKj, 4.0) ) + : 0.5/ELBDM_ETA*sqrt( POW(Jeans_WaveKj, 4.0) - POW(Jeans_WaveK, 4.0) ); + Jeans_Sign = +1.0; + Jeans_Phase0 = 0.0; + Jeans_RealAmp = 1.e-6; + Jeans_ImagAmp = 2.0*ELBDM_ETA*Jeans_Omega*Jeans_RealAmp/(Jeans_WaveK*Jeans_WaveK); + + +// record the test problem parameters + if ( MPI_Rank == 0 ) + { + Aux_Message( stdout, "\n" ); + Aux_Message( stdout, "%s test :\n", TestProb ); + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, "NOTE : wave number = %13.7e\n", Jeans_WaveK ); + Aux_Message( stdout, " critial wave number = %13.7e\n", Jeans_WaveKj ); + Aux_Message( stdout, " stable = %s\n", Jeans_Stable ? "YES" : "NO" ); + Aux_Message( stdout, " wave angular frequency = %13.7e\n", Jeans_Omega ); + Aux_Message( stdout, " real part amplitude = %13.7e\n", Jeans_RealAmp ); + Aux_Message( stdout, " imag part amplitude = %13.7e\n", Jeans_ImagAmp ); + Aux_Message( stdout, " sign (grow/decay;R/L) = %13.7e\n", Jeans_Sign ); + Aux_Message( stdout, "=============================================================================\n" ); + Aux_Message( stdout, "\n" ); + } + + +// set some default parameters +// End_T : (stable/unstable) --> (1 period/grow by a factor of 50) + const double End_T_Default = ( Jeans_Stable) ? 2.0*M_PI/Jeans_Omega : log(50.0)/Jeans_Omega; + const long End_Step_Default = __INT_MAX__; + + if ( END_STEP < 0 ) + { + END_STEP = End_Step_Default; + + if ( MPI_Rank == 0 ) + Aux_Message( stdout, "NOTE : parameter %s is set to %ld in the %s test !!\n", "END_STEP", END_STEP, TestProb ); + } + + if ( END_T < 0.0 ) + { + END_T = End_T_Default; + + if ( MPI_Rank == 0 ) + Aux_Message( stdout, "NOTE : parameter %s is set to %13.7e in the %s test !!\n", "END_T", END_T, TestProb ); + } + + if ( !OPT__OUTPUT_TEST_ERROR ) + { + OPT__OUTPUT_TEST_ERROR = true; + + if ( MPI_Rank == 0 ) + Aux_Message( stdout, "NOTE : parameter %s is reset to %d in the %s test !!\n", + "OPT__OUTPUT_TEST_ERROR", OPT__OUTPUT_TEST_ERROR, TestProb ); + } + +} // FUNCTION : Init_TestProb + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_TestProbSol_JeansInstability_Physical +// Description : Calculate the analytical solution in the ELBDM physical-frame Jeans instability test +// +// Note : 1. Wave vector is along the diagonal direction +// 2. Background density is assumed to be ONE +// 3. This function is invoked by "ELBDM_Init_StartOver_AssignData" and "Output_TestProbErr" +// +// Parameter : fluid : Array to store the analytical solution to be returned +// x/y/z : Target physical coordinates +// Time : Target physical time +// +// Return : fluid +//------------------------------------------------------------------------------------------------------- +void ELBDM_TestProbSol_JeansInstability_Physical( real fluid[], const double x, const double y, const double z, const double Time ) +{ + + const double r = 1.0/sqrt(3.0)*( x + y + z ); + double Phase; + + if ( Jeans_Stable ) + { + Phase = Jeans_WaveK*r - Jeans_Sign*Jeans_Omega*Time + Jeans_Phase0; + fluid[REAL] = 1.0 + Jeans_RealAmp*cos( Phase ); + fluid[IMAG] = Jeans_ImagAmp*sin( Phase )*Jeans_Sign; + } + + else + { + Phase = Jeans_WaveK*r + Jeans_Phase0; + fluid[REAL] = 1.0 + Jeans_RealAmp*cos( Phase )*exp( Jeans_Sign*Jeans_Omega*Time ); + fluid[IMAG] = Jeans_ImagAmp*cos( Phase )*exp( Jeans_Sign*Jeans_Omega*Time )*Jeans_Sign; + } + + fluid[DENS] = fluid[REAL]*fluid[REAL] + fluid[IMAG]*fluid[IMAG]; + +} // FUNCTION : ELBDM_TestProbSol_JeansInstability_Physical + + + +//------------------------------------------------------------------------------------------------------- +// Function : ELBDM_OutputError_JeansInstability_Physical +// Description : Compare and output the numerical and analytical solutions in the ELBDM physical-frame +// Jeans instability test problem +// +// Note : 1. Invoked by "Output_TestProbErr" +// 2. This function has the similar form as Output_DumpData_Part, except that some code lines +// are modified to compute and output errors for this particular problem +// +// Parameter : BaseOnly : Only output the base-level data +//------------------------------------------------------------------------------------------------------- +void ELBDM_OutputError_JeansInstability_Physical( const bool BaseOnly ) +{ + + if ( MPI_Rank == 0 ) Aux_Message( stdout, "%s (DumpID = %d) ...\n", __FUNCTION__, DumpID ); + + +// check the synchronization + for (int lv=1; lvdh[NLEVEL-1]; + const int NLv = ( BaseOnly ) ? 1 : NLEVEL; + + int ii, jj, kk, scale; + real dh, PW; + real xx, yy, zz; // grid physical coordinates + int *Corner = NULL; // corner grid ID + bool Check_x = false; + bool Check_y = false; + bool Check_z = false; + + double L1_Err[NCOMP]; + static bool FirstTime = true; + + for (int v=0; vdh [lv]; + scale = amr->scale[lv]; + PW = PATCH_SIZE*dh; + + for (int PID=0; PIDNPatchComma[lv][1]; PID++) + { +// output the patch data only if it has no son (if the option "BaseOnly" is turned off) + if ( amr->patch[0][lv][PID]->son == -1 || BaseOnly ) + { + Corner = amr->patch[0][lv][PID]->corner; + + if ( Part == OUTPUT_DIAG ) // (+1,+1,+1) diagonal + { + if ( Corner[0] == Corner[1] && Corner[0] == Corner[2] ) + { + for (int k=0; k x ) ) + if ( !Check_y || ( Corner[1]*dh_min <= y && Corner[1]*dh_min+PW > y ) ) + if ( !Check_z || ( Corner[2]*dh_min <= z && Corner[2]*dh_min+PW > z ) ) + { +// check whether the cell is within the targeted range + for (int k=0; kz || zz+dh<=z ) ) continue; + + for (int j=0; jy || yy+dh<=y ) ) continue; + + for (int i=0; ix || xx+dh<=x ) ) continue; + + WriteFile( File, lv, PID, i, j, k, ii, jj, kk, L1_Err, Part ); + + }}} + } // if patch corner is within the targeted range + + } // if ( Part == OUTPUT_DIAG ... else ... ) + } // if ( amr->patch[0][lv][PID]->son == -1 ) + } // for (int PID=0; PIDNPatchComma[lv][1]; PID++) + + } // for (int lv=0; lvBoxSize[0]; + + FILE *File_L1 = fopen( "Record__L1Err", "a" ); + +// output header + if ( FirstTime ) + { +# if ( MODEL == HYDRO ) + fprintf( File_L1, "%5s %13s %19s %19s %19s %19s %19s\n", + "NGrid", "Time", "Error(DENS)", "Error(MOMX)", "Error(MOMY)", "Error(MOMZ)", "Error(PRES)" ); + +# elif ( MODEL == MHD ) +# warning : WAIT MHD !!! + +# elif ( MODEL == ELBDM ) + fprintf( File_L1, "%5s %13s %19s %19s %19s\n", + "NGrid", "Time", "Error(DENS)", "Error(REAL)", "Error(IMAG)" ); + +# else +# error : ERROR : unsupported MODEL !! +# endif // MODEL + + FirstTime = false; + } // if ( FirstTime ) + +// output data + fprintf( File_L1, "%5d %13.7e", NX0_TOT[0], Time[0] ); + + for (int v=0; vpatch[ amr->FluSg[lv] ][lv][PID]->fluid[v][k][j][i]; + +# if ( MODEL == HYDRO ) + fluid[ENGY] = (GAMMA-1.0)*( fluid[ENGY] - 0.5*( fluid[MOMX]*fluid[MOMX] + + fluid[MOMY]*fluid[MOMY] + + fluid[MOMZ]*fluid[MOMZ] ) / fluid[DENS] ); + +# elif ( MODEL == MHD ) +# warning : WAIT MHD !!! +# endif // MODEL + + +// get the analytical solution + const real x = ( ii + amr->scale[lv]/2 )*amr->dh[NLEVEL-1]; + const real y = ( jj + amr->scale[lv]/2 )*amr->dh[NLEVEL-1]; + const real z = ( kk + amr->scale[lv]/2 )*amr->dh[NLEVEL-1]; + +// =================================================================================================== + ELBDM_TestProbSol_JeansInstability_Physical( Anal, x, y, z, Time[0] ); +// =================================================================================================== + + +// record the physical coordinate + real r; + + switch ( Part ) + { + case OUTPUT_X : r = x; break; + case OUTPUT_Y : r = y; break; + case OUTPUT_Z : r = z; break; + case OUTPUT_DIAG : r = sqrt(3.0)*x; break; + default : Aux_Error( ERROR_INFO, "unsupported option \"Part = %d\" [4/5/6/7] !!\n", Part ); + } + + +// estimate and output errors + for (int v=0; vdh[lv]; + + fprintf( File[v], "%9.7f %20.13e %20.13e %20.13e\n", r, fluid[v], Anal[v], Err[v] ); + } + +} // FUNCTION : WriteFile + + + +#endif // #if ( MODEL == ELBDM ) diff --git a/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Input__Parameter b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Input__Parameter new file mode 100644 index 0000000000..2a1670455a --- /dev/null +++ b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Input__Parameter @@ -0,0 +1,146 @@ +1.0 BOX_SIZE # size of the simulation box (Mpc/h in COMOVING) +32 NX0_TOT[0] # number of base-level grids in the x direction +32 NX0_TOT[1] # number of base-level grids in the y direction +32 NX0_TOT[2] # number of base-level grids in the z direction +1 MPI_NRANK # total number of MPI ranks (= MPI_NRANK_X[0]*MPI_NRANK_X[1]*MPI_NRANK_X[2]) +1 MPI_NRANK_X[0] # number of MPI ranks in the x direction +1 MPI_NRANK_X[1] # number of MPI ranks in the y direction +1 MPI_NRANK_X[2] # number of MPI ranks in the z direction +-1 OMP_NTHREAD # number of OpenMP threads (<=0:default [omp_get_max_threads]) +-1.0 END_T # end physical time of simulation (<0:default -> must be defined in Init_TestProb/RESTART) +-1 END_STEP # end step of simulation (<0:default -> must be defined in Init_TestProb) + +0 OPT__BC_FLU_XM # fluid boundary condition at -x face : (0,1,2,3) -> (periodic, outflow, reflecting, user) +0 OPT__BC_FLU_XP # fluid boundary condition at +x face : (0,1,2,3) -> (periodic, outflow, reflecting, user) +0 OPT__BC_FLU_YM # fluid boundary condition at -y face : (0,1,2,3) -> (periodic, outflow, reflecting, user) +0 OPT__BC_FLU_YP # fluid boundary condition at +y face : (0,1,2,3) -> (periodic, outflow, reflecting, user) +0 OPT__BC_FLU_ZM # fluid boundary condition at -z face : (0,1,2,3) -> (periodic, outflow, reflecting, user) +0 OPT__BC_FLU_ZP # fluid boundary condition at +z face : (0,1,2,3) -> (periodic, outflow, reflecting, user) +0 OPT__BC_POT # gravity boundary condition : (0,1) -> (periodic, isolated) +-1.0 GFUNC_COEFF0 # Green's function coefficient at the origin for the isolated BC (<0:default [NoPar/Par:0.0/3.78]) + +0 PAR_INPUT__NPAR # number of particles +1 PAR_INPUT__INIT # initialization option for particles: (1, 2, 3) -> (FUNCTION, RESTART, FILE) +-1 PAR_INPUT__INTERP # particle interpolation scheme: (-1, 1, 2, 3) -> (default, NGP, CIC, TSC) + +1 OOC_NRANK # total number of OOC ranks (= OOC_NRANK_X[0]*OOC_NRANK_X[1]*OOC_NRANK_X[2]) +1 OOC_NRANK_X[0] # number of OOC ranks in the x direction +1 OOC_NRANK_X[1] # number of OOC ranks in the y direction +1 OOC_NRANK_X[1] # number of OOC ranks in the z direction + +1.0e-3 A_INIT # initial scale factor ##COMOVING ONLY## +1.0 OMEGA_M0 # omega matter at the present time ##COMOVING ONLY## + +-1.0 DT__FLUID # time-step: fluid solver coefficient (<0:default) +-1.0 DT__GRAVITY # time-step: gravity solver coefficient (<0:default) +0.0 DT__PHASE # time-step: phase rotation coefficient (<0:default; 0:off) ##ELBDM ONLY## +-1.0 DT__PARVEL # time-step: particle velocity (<0:default) ##PARTICLE ONLY## +0.01 DT__MAX_DELTA_A # time-step: maximum variation of the scale factor A ##COMOVING ONLY## +0 OPT__ADAPTIVE_DT # time-step: allow time-step to change in each sub-step ##NOT SUPPORTED YET## +1 OPT__RECORD_DT # time-step: record the information of the time-step determination +0 OPT__DT_USER # time-step: user-defined --> edit "Mis_GetTimeStep_UserCriteria" + +-1 REGRID_COUNT # refine every REGRID_COUNT sub-step (<0:default [4]) +-1 FLAG_BUFFER_SIZE # number of buffer cells for the flag operation (<0:default [8]) +0 MAX_LEVEL # maximum refinement level (0 ... NLEVEL-1) (<0:default [NLEVEL-1]) +0 OPT__FLAG_RHO # flag: density (Input__Flag_Rho) +0 OPT__FLAG_RHO_GRADIENT # flag: density gradient (Input__Flag_RhoGradient) +0 OPT__FLAG_PRES_GRADIENT # flag: pressure gradient (Input__Flag_PresGradient) ##HYDRO ONLY## +0 OPT__FLAG_ENGY_DENSITY # flag: energy density (Input_Flag_EngyDensity) ##ELBDM ONLY## +0 OPT__FLAG_LOHNER_DENS # flag: Lohner (Input__Flag_Lohner) (HYDRO:mass density ; ELBDM:R^2+I^2) +0 OPT__FLAG_LOHNER_ENGY # flag: Lohner (Input__Flag_Lohner) (HYDRO:energy density; ELBDM:useless) +0 OPT__FLAG_LOHNER_PRES # flag: Lohner (Input__Flag_Lohner) (HYDRO:pressure ; ELBDM:useless) +-1 OPT__FLAG_LOHNER_FORM # form of the Lohner error estimator (-1,0,1,2,3)->(default[1],FLASH1/2,form-invariant1/2) +0 OPT__FLAG_USER # flag: user-defined (Input__Flag_User) --> edit "Flag_UserCriteria" +0 OPT__FLAG_REGION # flag: specify the regions allowed to be refined --> edit "Flag_Region" +2 OPT__PATCH_COUNT # count the patch # (0=off, 1/2=per OOC/MPI rank, 3/4=detail per OOC/MPI rank) + +0.1 LB_INPUT__WLI_MAX # threshold for redistributing patches at all levels ##LOAD_BALANCE ONLY## + +1.666666667 GAMMA # ratio of specific heats (adiabatic index) +2.00 MINMOD_COEFF # coefficient of the generalized MinMod limiter [1.0~2.0] +1.25 EP_COEFF # coefficient of the extrema-preserving limiter +4 OPT__LR_LIMITER # slope limiter for the data reconstruction in MHM/MHM_RP/CTU schemes + (0/1/2/3/4/5) = (none/vanLeer/generalized MinMod/vanAlbada/ + vanLeer + generalized MinMod/extrema-preserving) limiter +2 OPT__WAF_LIMITER # flux limiter in WAF (0/1/2/3/4) = (none/SuperBee/vanLeer/vanAlbada/MinBee) + +1.0 ELBDM_MASS # particle mass in ev/c^2 in ELBDM (h*ev/c^2 in COMOVING -> input particle_mass_in_ev / h) +1.0 ELBDM_PLANCK_CONST # Planck constant in ELBDM (ref: 6.582e-16 ev*sec) ##USELESS IN COMOVING## +1.0 ELBDM_LAMBDA # quartic self-interaction coefficient ##USELESS if QUARTIC_SELF_INTERACTION is off## +-1.0 ELBDM_TAYLOR3_COEFF # 3rd Taylor expansion coefficient (<0:default [1.0/6.0]) ##USELESS if XXX_AUTO is on## +1 ELBDM_TAYLOR3_AUTO # Optimize ELBDM_TAYLOR3_COEFF automatically to minimize the damping at kmax + +-1 FLU_GPU_NPGROUP # number of patch groups sent into GPU for fluid solver (<0:default) +-1 GPU_NSTREAM # number of streams for the asynchronous memory copy in GPU (<0:default) +1 OPT__FIXUP_FLUX # perform the flux fix-up to correct the coarse-grid data ##HYDRO and ELBDM ONLY## +1 OPT__FIXUP_RESTRICT # perform the restrict operation to correct the coarse-grid data +0 OPT__OVERLAP_MPI # overlap MPI time with CPU/GPU computation (currently for LOAD_BALANCE only) + +4.0e2 NEWTON_G # gravitational constant (will be reset to 1 if GALAXY is on) ##USELESS IN COMOVING## +-1.0 SOR_OMEGA # over-relaxation parameter for SOR (<0:default) +-1 SOR_MAX_ITER # maximum number of iterations for SOR (<0:default [60]) +-1 SOR_MIN_ITER # minimum number of iterations for SOR (<0:default [10]) +-1 MG_MAX_ITER # maximum number of iterations for multigrid (<0:default [(s)10/(d)20]) +-1 MG_NPRE_SMOOTH # number of pre-smoothing steps for multigrid (<0:default [3]) +-1 MG_NPOST_SMOOTH # Number of post-smoothing steps for multigrid (<0:default [3]) +-1.0 MG_TOLERATED_ERROR # maximum tolerated error for multigrid (<0:default[(s)1.e-6/(d)1.e-15]) +-1 POT_GPU_NPGROUP # number of patch groups sent into GPU for the Poisson solver (<0:default) +0 OPT__GRA_P5_GRADIENT # 5-points gradient in the Gravity solver (must have GRA_GHOST_SIZE >= 2) +1 OPT__GRAVITY_TYPE # different sources of gravity : (1,2,3)->(self-gravity,external gravity,both) ##HYDRO ONLY## +0 OPT__EXTERNAL_POT # add the external potential (does not work with OPT__GRAVITY_TYPE == 2) ##ELBDM ONLY## + +1 OPT__INIT # initialization option : (1, 2, 3) -> (StartOver, RESTART, UM_START) +1 OPT__RESTART_HEADER # RESTART header : (0, 1) -> (skip/check the header info) +0 OPT__UM_START_LEVEL # refinement level of the input uniform-mesh array (must >= 0) +1 OPT__UM_START_NVAR # [1...NCOMP] -> number of variables per cell stored in the uniform-mesh array +1 OPT__UM_START_DOWNGRADE # downgrade the uniform-mesh data from OPT__UM_START_LEVEL to 0 by the refinement criteria +1 OPT__UM_START_REFINE # refine the uniform-mesh data from OPT__UM_START_LEVEL to MAX_LEVEL +0 OPT__UM_FACTOR_5OVER3 # multiply the input density field by 5/3 to have the growing-mode amplitude correct +1 OPT__INIT_RESTRICT # restrict all data during initialization (0=off, 1=on) +-2 OPT__GPUID_SELECT # GPU ID selection mode : (-3, -2, -1, >=0) -> by (Laohu, CUDA, MPI rank, Input) +0 INIT_SUBSAMPLING_NCELL # perform sub-sampling during initialization (0, >0) -> (off, # of sub-sampling cells) + +1 OPT__INT_TIME # perform the "temporal interpolation" for the individual time-step scheme +1 OPT__INT_PHASE # interpolation on phase (only 4-7 schemes are supported) ##ELBDM ONLY## + # interpolation:(-1,1,2,3,4,5,6,7->Def,MinMod-3D,MinMod-1D,vanLeer,CQuad,Quad,CQuar,Quar) +-1 OPT__FLU_INT_SCHEME # ghost-zone fluid variables in the fluid solver +-1 OPT__POT_INT_SCHEME # ghost-zone potential in the Poisson solver (only -1,4,5 are supported) +-1 OPT__RHO_INT_SCHEME # ghost-zone density in the Poisson solver +-1 OPT__GRA_INT_SCHEME # ghost-zone potential in the gravity solver +-1 OPT__REF_FLU_INT_SCHEME # creating new fluid variables during the grid refinement +-1 OPT__REF_POT_INT_SCHEME # creating new potential during the grid refinement +-1.0 INT_MONO_COEFF # coefficient for the interpolation monotonicity (1<=coeff<=4, <0:default [2.0]) + +0 OPT__OUTPUT_TOTAL # output the total binary data : (0, 1, 2) -> (off, HDF5, C-binary) +0 OPT__OUTPUT_PART # output a single line or slice (0~7) -> (off, xy, yz, xz, x, y, z, diag) +1 OPT__OUTPUT_TEST_ERROR # output the test problem errors --> edit "Output_TestProbErr" +0 OPT__OUTPUT_PARTICLE # output the particle text file ##PARTICLE ONLY## +0 OPT__OUTPUT_BASEPS # output the base-level power spectrum +0 OPT__OUTPUT_BASE # only output the base-level data for the option "OPT__OUTPUT_PART" +0 OPT__OUTPUT_POT # output the potential field +2 OPT__OUTPUT_MODE # (1, 2, 3) -> (const step, const dt, dump table) +5 OUTPUT_STEP # output data every OUTPUT_STEP step +1.0e-2 OUTPUT_DT # output data every OUTPUT_DT time interval +0.0 OUTPUT_PART_X # x coordinate for the option OPT__OUTPUT_PART +0.0 OUTPUT_PART_Y # y coordinate for the option OPT__OUTPUT_PART +0.0 OUTPUT_PART_Z # z coordinate for the option OPT__OUTPUT_PART +-1 INIT_DUMPID # set the first dump ID (<0:default) + +0 OPT__VERBOSE # output the detail of simulation progress +0 OPT__TIMING_BALANCE # record the max/min elapsed time for different code sections (may slowe down the run) +0 OPT__TIMING_MPI # record the MPI bandwidth achieved by LB_GetBufferData ##LOAD_BALANCE ONLY## +1 OPT__RECORD_MEMORY # record memory consumption during simulations +1 OPT__RECORD_PERFORMANCE # record the code performance +1 OPT__MANUAL_CONTROL # support dump/stop dynamically by creating the file DUMP_GAMER_DUMP/STOP_GAMER_STOP + +0 OPT__CK_REFINE # check the refinement +0 OPT__CK_PROPER_NESTING # check the proper-nesting condition +0 OPT__CK_CONSERVATION # check the conservation law: (0,1,2) -> (off, stdout, file) +0 OPT__CK_RESTRICT # check the restriction operation +0 OPT__CK_FINITE # check if all variables are finite +0 OPT__CK_PATCH_ALLOCATE # check if all patches are properly allocated +0 OPT__CK_FLUX_ALLOCATE # check if all flux arrays are properly allocated ##HYDRO and ELBDM ONLY## +0 OPT__CK_NEGATIVE # check the negative density/pressure: (1,2,3)->(rho,pres,both) ##HYDRO ONLY## +1.0 OPT__CK_MEMFREE # check the free memory (0:off, >0:threshold) +0 OPT__CK_PARTICLE # check the particle allocation diff --git a/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Makefile b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Makefile new file mode 100644 index 0000000000..f15f342fae --- /dev/null +++ b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/Makefile @@ -0,0 +1,639 @@ + + + +# name of the executable file +####################################################################################################### +EXECUTABLE := Dizzy + + + +# simulation options +####################################################################################################### + +# (a) common options (applied to all models) +# ------------------------------------------------------------------------------- +# model: HYDRO/MHD/ELBDM/PAR_ONLY (PAR_ONLY must work with PARTICLE) +SIMU_OPTION += -DMODEL=ELBDM + +# self-gravity +SIMU_OPTION += -DGRAVITY + +# Poisson solver: SOR/MG (successive-overrelaxation/multigrid) +SIMU_OPTION += -DPOT_SCHEME=SOR + +# individual time-step (default: shared time-step) +SIMU_OPTION += -DINDIVIDUAL_TIMESTEP + +# comoving frame +#SIMU_OPTION += -DCOMOVING + +# particles (must work with GRAVITY; set MODEL=PAR_ONLY for particle-only simulations) +#SIMU_OPTION += -DPARTICLE + + +# (b) hydro options +# ------------------------------------------------------------------------------------ +ifeq "$(findstring MODEL=HYDRO, $(SIMU_OPTION))" "MODEL=HYDRO" +# hydrodynamic scheme: RTVD/WAF/MHM/MHM_RP/CTU +SIMU_OPTION += -DFLU_SCHEME=CTU + +# scheme of spatial data reconstruction: PLM/PPM (piecewise-linear/piecewise-parabolic) ##USELESS IN RTVD/WAF## +SIMU_OPTION += -DLR_SCHEME=PPM + +# Riemann solver: EXACT/ROE/HLLE/HLLC ##ALL ARE USELESS IN RTVD, HLLE/HLLC ARE USELESS IN WAF## +SIMU_OPTION += -DRSOLVER=ROE + +# number of passively advected scalars +SIMU_OPTION += -DNPASSIVE=0 + +# star formation +#SIMU_OPTION += -DGALAXY + + +# (c) MHD options +# ------------------------------------------------------------------------------------ +else ifeq "$(findstring MODEL=MHD, $(SIMU_OPTION))" "MODEL=MHD" + + +# (d) ELBDM options +# ------------------------------------------------------------------------------------ +else ifeq "$(findstring MODEL=ELBDM, $(SIMU_OPTION))" "MODEL=ELBDM" +# enforce the mass conservation +SIMU_OPTION += -DCONSERVE_MASS + +# 4-th order Laplacian +SIMU_OPTION += -DLAPLACIAN_4TH + +# include the quartic self-interaction potential (must turn on GRAVITY as well, not work with COMOVING yet) +#SIMU_OPTION += -DQUARTIC_SELF_INTERACTION + +endif # MODEL + + +# (e) PARTICLE options +# ------------------------------------------------------------------------------------ + + +# (f) optimization and compilation options +# ------------------------------------------------------------------------------------ +# GPU acceleration +SIMU_OPTION += -DGPU + +# optimization mode +SIMU_OPTION += -DGAMER_OPTIMIZATION + +# debug mode +#SIMU_OPTION += -DGAMER_DEBUG + +# measure the elapsing wall-clock time of different parts of the program +SIMU_OPTION += -DTIMING + +# measure the elapsing wall-clock time of different parts of the GPU solvers (will disable CPU/GPU overlapping) +#SIMU_OPTION += -DTIMING_SOLVER + +# intel compiler (default: GNU compiler) +SIMU_OPTION += -DINTEL + +# double precision (not supported for the GPU + self-gravity mode in non-Fermi GPUs) +SIMU_OPTION += -DFLOAT8 + +# serial mode (in which no MPI libraries are required) +SIMU_OPTION += -DSERIAL + +# out-of-core computation (deprecated) +#SIMU_OPTION += -DOOC + +# load-balance parallelization (one must not turn on the option "SERIAL") (HILBERT) +#SIMU_OPTION += -DLOAD_BALANCE=HILBERT + +# overlap MPI communication with computation (experimental, only supported in LOAD_BALANCE) +#SIMU_OPTION += -DOVERLAP_MPI + +# enable OpenMP parallelization +SIMU_OPTION += -DOPENMP + +# enable performance optimization in Fermi GPUs +SIMU_OPTION += -DFERMI + +# work on the NAOC Laohu GPU cluster +#SIMU_OPTION += -DLAOHU + +# support HDF5 format +#SIMU_OPTION += -DSUPPORT_HDF5 + + + +# simulation parameters +####################################################################################################### + +NLEVEL := 6 # maximum number of grid levels (including the base level) +MAX_PATCH := 1000000 # maximum number of patches at each level + +NLEVEL := $(strip $(NLEVEL)) +MAX_PATCH := $(strip $(MAX_PATCH)) + +SIMU_PARA := -DNLEVEL=$(NLEVEL) -DMAX_PATCH=$(MAX_PATCH) + + + +# source files +####################################################################################################### + +# common source files +# ------------------------------------------------------------------------------- +# Cuda source files (compiled with nvcc) +CUDA_FILE := CUAPI_Asyn_FluidSolver.cu CUAPI_DiagnoseDevice.cu CUAPI_MemAllocate_Fluid.cu \ + CUAPI_MemFree_Fluid.cu CUAPI_Set_Default_GPU_Parameter.cu CUAPI_SetDevice.cu \ + CUAPI_Synchronize.cu + + +# C/C++ source files (compiled with c++ compiler) +CC_FILE := Main.cpp EvolveLevel.cpp InvokeSolver.cpp Prepare_PatchData.cpp \ + InterpolateGhostZone.cpp + +CC_FILE += Aux_Check_Parameter.cpp Aux_Check_Conservation.cpp Aux_Check.cpp Aux_Check_Finite.cpp \ + Aux_Check_FluxAllocate.cpp Aux_Check_PatchAllocate.cpp Aux_Check_ProperNesting.cpp \ + Aux_Check_Refinement.cpp Aux_Check_Restrict.cpp Aux_Error.cpp Aux_GetCPUInfo.cpp \ + Aux_GetMemInfo.cpp Aux_Message.cpp Aux_PatchCount.cpp Aux_TakeNote.cpp Aux_Timing.cpp \ + Aux_Check_MemFree.cpp Aux_RecordPerformance.cpp Aux_CheckFileExist.cpp Aux_Array.cpp + +CC_FILE += CPU_FluidSolver.cpp Flu_AdvanceDt.cpp Flu_Prepare.cpp Flu_Close.cpp Flu_FixUp.cpp \ + Flu_Restrict.cpp Flu_AllocateFluxArray.cpp Flu_BoundaryCondition_User.cpp + +CC_FILE += End_GAMER.cpp End_MemFree.cpp End_MemFree_Fluid.cpp End_StopManually.cpp End_TestProb.cpp \ + Init_BaseLevel.cpp Init_GAMER.cpp Init_Load_DumpTable.cpp \ + Init_Load_FlagCriteria.cpp Init_Load_Parameter.cpp Init_MemAllocate.cpp \ + Init_MemAllocate_Fluid.cpp Init_Parallelization.cpp Init_RecordBasePatch.cpp Init_Refine.cpp \ + Init_Restart.cpp Init_StartOver.cpp Init_TestProb.cpp Init_UM.cpp Init_OpenMP.cpp \ + Init_Restart_HDF5.cpp \ + +CC_FILE += Interpolate.cpp Int_CQuadratic.cpp Int_MinMod1D.cpp Int_MinMod3D.cpp Int_vanLeer.cpp \ + Int_Quadratic.cpp Int_Table.cpp Int_CQuartic.cpp Int_Quartic.cpp + +CC_FILE += Mis_Check_Synchronization.cpp Mis_GetTotalPatchNumber.cpp Mis_GetTimeStep.cpp Mis_Heapsort.cpp \ + Mis_BinarySearch.cpp Mis_1D3DIdx.cpp Mis_Matching.cpp Mis_GetTimeStep_UserCriteria.cpp \ + Mis_dTime2dt.cpp Mis_CoordinateTransform.cpp Mis_BinarySearch_Real.cpp + +CC_FILE += Output_DumpData_Total.cpp Output_DumpData.cpp Output_DumpManually.cpp Output_PatchMap.cpp \ + Output_DumpData_Part.cpp Output_FlagMap.cpp Output_Patch.cpp Output_PreparedPatch_Fluid.cpp \ + Output_PatchCorner.cpp Output_Flux.cpp Output_TestProbErr.cpp Output_BasePowerSpectrum.cpp \ + Output_DumpData_Total_HDF5.cpp + +CC_FILE += Flag_Real.cpp Refine.cpp SiblingSearch.cpp SiblingSearch_Base.cpp FindFather.cpp \ + Flag_UserCriteria.cpp Flag_Check.cpp Flag_Lohner.cpp Flag_Region.cpp + +CC_FILE += Table_01.cpp Table_02.cpp Table_03.cpp Table_04.cpp Table_05.cpp Table_06.cpp \ + Table_07.cpp + +vpath %.cu GPU_API +vpath %.cpp GAMER Init Refine Fluid Interpolation Tables Output Miscellaneous Auxiliary + + +# hydrodynamic source files (included only if "MODEL=HYDRO") +# ------------------------------------------------------------------------------------ +ifeq "$(findstring MODEL=HYDRO, $(SIMU_OPTION))" "MODEL=HYDRO" +CUDA_FILE += CUFLU_GetMaxCFL.cu CUFLU_FluidSolver_RTVD.cu CUFLU_FluidSolver_WAF.cu CUFLU_FluidSolver_MHM.cu \ + CUFLU_FluidSolver_CTU.cu + +CC_FILE += CPU_FluidSolver_RTVD.cpp CPU_FluidSolver_WAF.cpp CPU_FluidSolver_MHM.cpp \ + CPU_FluidSolver_CTU.cpp CPU_Shared_DataReconstruction.cpp CPU_Shared_FluUtility.cpp \ + CPU_Shared_ComputeFlux.cpp CPU_Shared_FullStepUpdate.cpp \ + CPU_Shared_RiemannSolver_Exact.cpp CPU_Shared_RiemannSolver_Roe.cpp \ + CPU_Shared_RiemannSolver_HLLE.cpp CPU_Shared_RiemannSolver_HLLC.cpp + +CC_FILE += Hydro_Init_StartOver_AssignData.cpp Hydro_Aux_Check_Negative.cpp Hydro_GetTimeStep_Fluid.cpp \ + Hydro_Init_UM_AssignData.cpp Hydro_BoundaryCondition_Outflow.cpp Hydro_BoundaryCondition_Reflecting.cpp + +vpath %.cu Model_Hydro/GPU_Hydro +vpath %.cpp Model_Hydro/CPU_Hydro Model_Hydro + +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" +CUDA_FILE += CUPOT_HydroGravitySolver.cu + +CC_FILE += CPU_HydroGravitySolver.cpp Hydro_GetTimeStep_Gravity.cpp + +vpath %.cu Model_Hydro/GPU_HydroGravity +vpath %.cpp Model_Hydro/CPU_HydroGravity +endif + + +# MHD source files (included only if "MODEL=MHD") +# ------------------------------------------------------------------------------- +else ifeq "$(findstring MODEL=MHD, $(SIMU_OPTION))" "MODEL=MHD" + +vpath %.cu Model_MHD/GPU_MHD +vpath %.cpp Model_MHD/CPU_MHD Model_MHD + +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" + +vpath %.cu Model_MHD/GPU_MHDGravity +vpath %.cpp Model_MHD/CPU_MHDGravity +endif + + +# ELBDM source files (included only inf "MODEL=ELBDM") +# ------------------------------------------------------------------------------- +else ifeq "$(findstring MODEL=ELBDM, $(SIMU_OPTION))" "MODEL=ELBDM" +CUDA_FILE += CUFLU_ELBDMSolver.cu + +CC_FILE += CPU_ELBDMSolver.cpp ELBDM_Init_StartOver_AssignData.cpp ELBDM_Init_UM_AssignData.cpp \ + ELBDM_GetTimeStep_Fluid.cpp ELBDM_Flag_EngyDensity.cpp ELBDM_UnwrapPhase.cpp \ + ELBDM_GetTimeStep_Phase.cpp ELBDM_SetTaylor3Coeff.cpp + +vpath %.cu Model_ELBDM/GPU_ELBDM +vpath %.cpp Model_ELBDM/CPU_ELBDM Model_ELBDM + +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" +CUDA_FILE += CUPOT_ELBDMGravitySolver.cu + +CC_FILE += CPU_ELBDMGravitySolver.cpp ELBDM_GetTimeStep_Gravity.cpp + +vpath %.cu Model_ELBDM/GPU_ELBDMGravity +vpath %.cpp Model_ELBDM/CPU_ELBDMGravity +endif + +endif # MODEL + + +# self-gravity source files (included only if "GRAVITY" is turned on) +# ------------------------------------------------------------------------------------ +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" +CUDA_FILE += CUAPI_MemAllocate_PoissonGravity.cu CUAPI_MemFree_PoissonGravity.cu \ + CUAPI_Asyn_PoissonGravitySolver.cu + +CUDA_FILE += CUPOT_PoissonSolver_SOR_10to14cube.cu CUPOT_PoissonSolver_SOR_16to18cube.cu \ + CUPOT_PoissonSolver_MG.cu + +CC_FILE += CPU_PoissonGravitySolver.cpp CPU_PoissonSolver_SOR.cpp CPU_PoissonSolver_FFT.cpp \ + CPU_PoissonSolver_MG.cpp + +CC_FILE += Init_FFTW.cpp Gra_Close.cpp Gra_Prepare_Flu.cpp Gra_Prepare_Pot.cpp Gra_Prepare_Corner.cpp \ + Gra_AdvanceDt.cpp Poi_Close.cpp Poi_Prepare_Pot.cpp Poi_Prepare_Rho.cpp \ + Output_PreparedPatch_Poisson.cpp Init_MemAllocate_PoissonGravity.cpp CPU_ExternalPot.cpp \ + End_MemFree_PoissonGravity.cpp Init_Set_Default_SOR_Parameter.cpp \ + Init_Set_Default_MG_Parameter.cpp Poi_GetAverageDensity.cpp Init_GreenFuncK.cpp \ + Init_ExternalPot.cpp Poi_BoundaryCondition_Extrapolation.cpp CPU_ExternalGravity.cpp + +vpath %.cu SelfGravity/GPU_Poisson SelfGravity/GPU_Gravity +vpath %.cpp SelfGravity/CPU_Poisson SelfGravity/CPU_Gravity SelfGravity +endif # GRAVITY + + +# particle source files (included only if "PARTICLE" is turned on) +# ------------------------------------------------------------------------------------ +ifeq "$(findstring PARTICLE, $(SIMU_OPTION))" "PARTICLE" +CUDA_FILE += + +CC_FILE += Par_Init_Function.cpp Par_Output_Particle.cpp Par_FindHomePatch_Base.cpp Par_PassParticle2Son.cpp \ + Par_Aux_Check_Particle.cpp Par_PassParticle2Father.cpp Par_CollectParticleFromDescendant.cpp \ + Par_MassAssignment.cpp Par_UpdateParticle.cpp Par_GetTimeStep_Velocity.cpp \ + Par_PassParticle2Sibling.cpp Par_CountParticleInDescendant.cpp + +vpath %.cu Particle/GPU +vpath %.cpp Particle/CPU Particle +endif # PARTICLE + + +# galaxy source files (included only if "GALAXY" is turned on) +# ------------------------------------------------------------------------------------ +ifeq "$(findstring GALAXY, $(SIMU_OPTION))" "GALAXY" +#CUDA_FILE += +CC_FILE += Galaxy.cpp Gal_Init_StartOver_AssignData.cpp + +ifeq "$(findstring GPU, $(SIMU_OPTION))" "" +CC_FILE += Gal_ExternalGravity_Burkert.cpp +endif + +#vpath %.cu +vpath %.cpp Galaxy +endif # GALAXY + + +# parallelization source files (included only if "SERIAL" is turned off) +# ------------------------------------------------------------------------------------ +ifeq "$(findstring SERIAL, $(SIMU_OPTION))" "" +CC_FILE += Flu_AllocateFluxArray_Buffer.cpp + +CC_FILE += Flag_Buffer.cpp Refine_Buffer.cpp + +CC_FILE += Buf_AllocateBufferPatch.cpp Buf_AllocateBufferPatch_Base.cpp Buf_GetBufferData.cpp \ + Buf_RecordExchangeDataPatchID.cpp Buf_RecordExchangeFluxPatchID.cpp Buf_SortBoundaryPatch.cpp \ + Buf_RecordBoundaryFlag.cpp Buf_RecordBoundaryPatch.cpp Buf_RecordBoundaryPatch_Base.cpp \ + Buf_ResetBufferFlux.cpp + +CC_FILE += MPI_ExchangeBoundaryFlag.cpp MPI_ExchangeBufferPosition.cpp MPI_ExchangeData.cpp \ + Init_MPI.cpp MPI_Exit.cpp + +CC_FILE += Output_BoundaryFlagList.cpp Output_ExchangeDataPatchList.cpp Output_ExchangeFluxPatchList.cpp \ + Output_ExchangePatchMap.cpp + +CC_FILE += Aux_RecordBoundaryPatch.cpp + +vpath %.cpp Buffer MPI +endif # !SERIAL + + +# load-balance source files (included only if "LOAD_BALANCE" is turned on) +# ------------------------------------------------------------------------------------ +ifeq "$(findstring LOAD_BALANCE, $(SIMU_OPTION))" "LOAD_BALANCE" +CC_FILE += LB_HilbertCurve.cpp LB_Utility.cpp + +CC_FILE += LB_Init_LoadBalance.cpp LB_AllocateBufferPatch_Sibling.cpp LB_RecordOvelapMPIPatchID.cpp \ + LB_Output_LBIdx.cpp LB_AllocateBufferPatch_Father.cpp LB_FindFather.cpp LB_SiblingSearch.cpp \ + LB_RecordExchangeDataPatchID.cpp LB_GetBufferData.cpp LB_AllocateFluxArray.cpp \ + LB_RecordExchangeRestrictDataPatchID.cpp LB_GrandsonCheck.cpp LB_ExchangeFlaggedBuffer.cpp \ + LB_Refine.cpp LB_Refine_GetNewRealPatchList.cpp LB_Refine_AllocateNewPatch.cpp \ + LB_FindSonNotHome.cpp LB_Refine_AllocateBufferPatch_Sibling.cpp \ + LB_AllocateBufferPatch_Sibling_Base.cpp LB_RecordExchangeFixUpDataPatchID.cpp \ + +endif # LOAD_BALANCE + +vpath %.cpp LoadBalance + + +# out-of-core source files (included only if "OOC" is turned on) +# ------------------------------------------------------------------------------------ +ifeq "$(findstring OOC, $(SIMU_OPTION))" "OOC" +CC_FILE += Init_OOC.cpp OOC_SwapPointer.cpp OOC_Dump.cpp OOC_Load.cpp OOC_Send.cpp OOC_Recv.cpp \ + OOC_ExchangeBoundaryFlag.cpp OOC_MPI_ExchangeBoundaryFlag.cpp OOC_MPI_GetBufferData.cpp \ + OOC_GetAverageDensity.cpp OOC_UpdateBuffer.cpp OOC_SortPatch.cpp OOC_SetTargetP.cpp \ + OOC_Implement.cpp OOC_Init_SortPatch.cpp + +CC_FILE += OOC_Init_StartOver_ConstructAllLevels.cpp OOC_Init_StartOver_Restrict.cpp \ + OOC_Init_Reload_LoadData.cpp OOC_Init_Reload_FindFather.cpp OOC_Output_DumpData_Part.cpp \ + OOC_Init_Reload_ConstructAllLevels.cpp OOC_Output_DumpData_Total.cpp OOC_Mis_GetMaxCFL.cpp \ + OOC_Integration_IndiviTimeStep_FluAdvanceDt.cpp OOC_Init_Reload_Restrict.cpp \ + OOC_EvolveLevel.cpp OOC_Integration_IndiviTimeStep_FixUp.cpp \ + OOC_Integration_IndiviTimeStep_Flag.cpp OOC_Integration_IndiviTimeStep_Refine.cpp \ + OOC_GetBufferData.cpp + +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" +CC_FILE += OOC_Init_GAMER_GetPot.cpp OOC_Integration_IndiviTimeStep_GraAdvanceDt.cpp \ + OOC_Gra_AdvanceDt_InvokeSolver.cpp OOC_CPU_PoissonSolver_FFT_Cube_to_Slice.cpp \ + OOC_CPU_PoissonSolver_FFT_Slice_to_Cube.cpp OOC_Mis_GetMaxAcc.cpp +endif + +vpath %.cpp OOC_API OOC_Alternative +endif # OOC + + + +# rules and targets +####################################################################################################### + +# location of libraries +# ------------------------------------------------------------------------------- +# hulk (openmpi-intel-qlc) +CUDA_TOOLKIT_PATH := /opt/gpu/cuda/default +FFTW_PATH := /opt/math/fftw/2.1.5-intel +MPI_PATH := /opt/mpi/openmpi/1.6.0-intel +HDF5_PATH := /opt/hdf5/1.8.9 + +# hulk (openmpi-gcc-qlc) +#CUDA_TOOLKIT_PATH := /opt/gpu/cuda/4.2 +#FFTW_PATH := /opt/math/fftw/2.1.5-gcc-qlc +#MPI_PATH := /opt/mpi/openmpi/1.8.1-gcc-qlc +#HDF5_PATH := /opt/hdf5/1.8.9 + +# geisha (intel) +#CUDA_TOOLKIT_PATH := /usr/local/cuda +#FFTW_PATH := /opt/math/fftw_openmpi_intel +#MPI_PATH := /opt/mpi/openmpi_intel + +# geisha (gcc) +#CUDA_TOOLKIT_PATH := /usr/local/cuda +#FFTW_PATH := /opt/math/fftw_openmpi +#MPI_PATH := /opt/mpi/openmpi + +# dirac at NERSC (OpenMPI-1.6.0) +#CUDA_TOOLKIT_PATH := /usr/common/usg/cuda/4.1 +#FFTW_PATH := /project/projectdirs/gamer/hsiyu/Software/fftw/2.1.5-openmpi-1.6.0-intel +#MPI_PATH := /usr/common/usg/openmpi/1.6/intel + +# dirac at NERSC (without thread support) +#CUDA_TOOLKIT_PATH := /usr/common/usg/cuda/4.1 +#FFTW_PATH := /project/projectdirs/gamer/hsiyu/Software/fftw/2.1.5-openmpi-1.4.2-intel +#MPI_PATH := /usr/common/usg/openmpi/1.4.2/intel + +# dirac at NERSC (with thread support) +#CUDA_TOOLKIT_PATH := /usr/common/usg/cuda/4.1 +#FFTW_PATH := /global/scratch/sd/hsiyu/fftw.2.1.5-intel-thread +#MPI_PATH := /global/scratch/sd/hsiyu/OpenMPI.1.5.3_Intel_Thread + +# dirac at NERSC (OpenMPI-1.5.4) +#CUDA_TOOLKIT_PATH := /usr/common/usg/cuda/4.1 +#FFTW_PATH := /project/projectdirs/gamer/hsiyu/Software/fftw/2.1.5-openmpi-1.5.4-intel +#MPI_PATH := /project/projectdirs/gamer/hsiyu/Software/mpi/openmpi/1.5.4-intel + +# dirac at NERSC (MVAPICH2-1.5.1p1) +#CUDA_TOOLKIT_PATH := /usr/common/usg/cuda/4.1 +#FFTW_PATH := /project/projectdirs/gamer/hsiyu/Software/fftw/2.1.5-mvapich2-1.5.1p1-gcc +#MPI_PATH := /usr/common/usg/mvapich2/1.5.1p1/gcc + +# laohu at NAOC (OpenMPI-1.3.2-intel) +#CUDA_TOOLKIT_PATH := $(CUDA_INSTALL_PATH) +#FFTW_PATH := /ifs/data/hsiyu/Software/fftw/2.1.5-openmpi-1.3.2-intel +#MPI_PATH := /usr/mpi/intel/openmpi-1.3.2-qlc +#GPUID_PATH := /ifs/data/hsiyu/Software/gpudevmgr + +# formosa4 (fish:mvapich2-1.8a2-intel) +#CUDA_TOOLKIT_PATH := /usr/local/cuda +#FFTW_PATH := /home/u11thc00/fish/Software/fftw/2.1.5-mvapich2-1.8a2-intel +#MPI_PATH := /home/u11thc00/fish/Software/mpi/mvapich2/1.8a2-intel + +# coxhydrae at ARI +#CUDA_TOOLKIT_PATH := /usr/local/cuda +#FFTW_PATH := /data/hsiyu/Software/fftw/2.1.5 +#FFTW_PATH := /home/liulei/local +#MPI_PATH := /usr + + +# compilers +# ------------------------------------------------------------------------------- +NVCC := $(CUDA_TOOLKIT_PATH)/bin/nvcc +ifeq "$(findstring SERIAL, $(SIMU_OPTION))" "SERIAL" + ifeq "$(findstring INTEL, $(SIMU_OPTION))" "INTEL" + CXX := icpc + else + CXX := g++ + endif +else +# CXX := $(MPI_PATH)/bin/mpiCC + CXX := $(MPI_PATH)/bin/mpicxx +endif + + +# object files +# ------------------------------------------------------------------------------- +OBJ_PATH := Object +OBJ := $(patsubst %.cpp, $(OBJ_PATH)/%.o, $(CC_FILE)) +ifeq "$(findstring GPU, $(SIMU_OPTION))" "GPU" +OBJ += $(patsubst %.cu, $(OBJ_PATH)/%.o, $(CUDA_FILE)) +endif + + +# libraries +# ------------------------------------------------------------------------------- +LIB := +ifeq "$(findstring GPU, $(SIMU_OPTION))" "GPU" +LIB += -L$(CUDA_TOOLKIT_PATH)/lib64 +#LIB += -L$(CUDA_TOOLKIT_PATH)/lib +LIB += -lcudart +endif + +ifeq "$(findstring INTEL, $(SIMU_OPTION))" "INTEL" +LIB += -limf +endif + +ifeq "$(findstring LAOHU, $(SIMU_OPTION))" "LAOHU" +LIB += -L$(GPUID_PATH) -lgpudevmgr +endif + +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" + LIB += -L$(FFTW_PATH)/lib + ifeq "$(findstring FLOAT8, $(SIMU_OPTION))" "FLOAT8" + ifeq "$(findstring SERIAL, $(SIMU_OPTION))" "SERIAL" + LIB += -ldrfftw -ldfftw + else + LIB += -ldrfftw_mpi -ldfftw_mpi -ldrfftw -ldfftw + endif + else + ifeq "$(findstring SERIAL, $(SIMU_OPTION))" "SERIAL" + LIB += -lsrfftw -lsfftw + else + LIB += -lsrfftw_mpi -lsfftw_mpi -lsrfftw -lsfftw + endif + endif +endif + +ifeq "$(findstring OOC, $(SIMU_OPTION))" "OOC" +LIB += -laio +endif + +ifeq "$(findstring OPENMP, $(SIMU_OPTION))" "OPENMP" + ifeq "$(findstring INTEL, $(SIMU_OPTION))" "INTEL" + OPENMP := -openmp + else + OPENMP := -fopenmp + endif +endif + +ifeq "$(findstring SUPPORT_HDF5, $(SIMU_OPTION))" "SUPPORT_HDF5" +LIB += -L$(HDF5_PATH)/lib -lhdf5 +endif + + +# headers +# ------------------------------------------------------------------------------- +INCLUDE := -I../include + +ifeq "$(findstring SERIAL, $(SIMU_OPTION))" "" +INCLUDE += -I$(MPI_PATH)/include +endif + +ifeq "$(findstring GRAVITY, $(SIMU_OPTION))" "GRAVITY" +INCLUDE += -I$(FFTW_PATH)/include +endif + +ifeq "$(findstring SUPPORT_HDF5, $(SIMU_OPTION))" "SUPPORT_HDF5" +INCLUDE += -I$(HDF5_PATH)/include +endif + + +# CXX flags +# ------------------------------------------------------------------------------- +COMMONFLAG := $(INCLUDE) $(SIMU_OPTION) $(SIMU_PARA) + +ifeq "$(findstring INTEL, $(SIMU_OPTION))" "INTEL" +CXXWARN_FLAG := -w1 +else +CXXWARN_FLAG := -Wextra -Wall -Wimplicit -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wmultichar \ + -Wtrigraphs -Wpointer-arith -Wcast-align -Wreturn-type -Wno-unused-function +endif + +ifeq "$(findstring OPENMP, $(SIMU_OPTION))" "" +CXXWARN_FLAG += -Wno-unknown-pragmas +endif + +ifeq "$(findstring INTEL, $(SIMU_OPTION))" "INTEL" +CXXFLAG := $(CXXWARN_FLAG) $(COMMONFLAG) $(OPENMP) -O3 -xSSE4.2 -fp-model precise #-ipo +else +CXXFLAG := $(CXXWARN_FLAG) $(COMMONFLAG) $(OPENMP) -O3 +endif + +ifeq "$(findstring GAMER_DEBUG, $(SIMU_OPTION))" "GAMER_DEBUG" + ifeq "$(findstring INTEL, $(SIMU_OPTION))" "INTEL" + CXXFLAG += -g -debug + else + CXXFLAG += -g + endif +endif + + +# NVCC flags +# ------------------------------------------------------------------------------- +NVCCFLAG_COM := -Xcompiler $(COMMONFLAG) -O3 #-Xopencc -OPT:Olimit=0 + +NVCCFLAG_COM += -gencode arch=compute_20,code=\"compute_20,sm_20\" +ifeq "$(findstring FERMI, $(SIMU_OPTION))" "" + NVCCFLAG_COM += -gencode arch=compute_13,code=\"compute_13,sm_13\" + ifeq "$(findstring FLOAT8, $(SIMU_OPTION))" "" + NVCCFLAG_COM += -gencode arch=compute_10,code=\"compute_10,sm_10\" + endif +endif + +ifeq "$(findstring FERMI, $(SIMU_OPTION))" "FERMI" + NVCCFLAG_FLU += -Xptxas -dlcm=ca -prec-div=false -ftz=true #-prec-sqrt=false + NVCCFLAG_POT += -Xptxas -dlcm=ca + ifeq "$(findstring FLOAT8, $(SIMU_OPTION))" "FLOAT8" +# NVCCFLAG_FLU += --maxrregcount=64 + else +# NVCCFLAG_FLU += --maxrregcount=XX + endif +else # non-Fermi GPUs + ifeq "$(findstring FLOAT8, $(SIMU_OPTION))" "FLOAT8" +# NVCCFLAG_FLU += --maxrregcount=120 + else + NVCCFLAG_FLU += --maxrregcount=64 + endif +endif + +ifeq "$(findstring GAMER_DEBUG, $(SIMU_OPTION))" "GAMER_DEBUG" +NVCCFLAG_COM += -D_DEBUG -g -G -Xptxas -v #-deviceemu +endif + + +# implicit rules (do NOT modify the order of the following rules) +# ------------------------------------------------------------------------------- +ifeq "$(findstring GPU, $(SIMU_OPTION))" "GPU" +$(OBJ_PATH)/CUAPI_%.o : CUAPI_%.cu + $(NVCC) $(NVCCFLAG_COM) -o $@ -c $< + +$(OBJ_PATH)/CUFLU_%.o : CUFLU_%.cu + $(NVCC) $(NVCCFLAG_COM) $(NVCCFLAG_FLU) -o $@ -c $< + +$(OBJ_PATH)/CUPOT_%.o : CUPOT_%.cu + $(NVCC) $(NVCCFLAG_COM) $(NVCCFLAG_POT) -o $@ -c $< +endif + +$(OBJ_PATH)/%.o : %.cpp + $(CXX) $(CXXFLAG) -o $@ -c $< + + +# linking +# ------------------------------------------------------------------------------- +$(EXECUTABLE) : $(OBJ) + $(CXX) -o $@ $^ $(LIB) $(OPENMP) + rm ./*.linkinfo -f + cp $(EXECUTABLE) ../bin/Run/ + + +# clean +# ------------------------------------------------------------------------------- +clean : + rm -f $(OBJ_PATH)/* + rm -f $(EXECUTABLE) + rm ./*.linkinfo -f + + + diff --git a/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/README.txt b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/README.txt new file mode 100644 index 0000000000..2f7a727ae2 --- /dev/null +++ b/test_problem_deprecated/Model_ELBDM/JeansInstability_PhysicalFrame/README.txt @@ -0,0 +1,28 @@ + + ********************************************************* + ** ELBDM Jean's instability test in the physical frame ** + ********************************************************* + +Procedure to run the test problem: +------------------------------------------------------------------------------- +1. Execute the script "Copy.sh" to copy files to their corresponding + directories + + Init_TestProb.cpp --> GAMER/src/Init + Makefile --> GAMER/src + Input__* --> GAMER/bin/Run + +2. Compile GAMER by typing "make" in the directory "GAMER/src" + ("make clean" first if the program has been compiled previously) + +3. Run GAMER by executing the file "Dizzy" in the directory "GAMER/bin/Run" + + +Note: +------------------------------------------------------------------------------- +1. No grid refinement is adopted in this test + +2. The "Input__Parameter" example file gives the UNSTABLE solution, in which + the solution grows exponentially. To test the STABLE solution, one can + set the gravitational constant NEWTON_G to a smaller value (e.g., 1.0e2). + diff --git a/tool/analysis/gamer_compare_data/GAMER_Functions/Aux_AllocateArray2D.cpp b/tool/analysis/gamer_compare_data/GAMER_Functions/Aux_AllocateArray2D.cpp index 5b19e61a1c..686ce646ff 100644 --- a/tool/analysis/gamer_compare_data/GAMER_Functions/Aux_AllocateArray2D.cpp +++ b/tool/analysis/gamer_compare_data/GAMER_Functions/Aux_AllocateArray2D.cpp @@ -58,8 +58,12 @@ void Aux_DeallocateArray2D( T** &Array ) // explicit template instantiation +template void Aux_AllocateArray2D ( int** &Array, const int J, const int I ); +template void Aux_AllocateArray2D ( long** &Array, const int J, const int I ); template void Aux_AllocateArray2D ( float** &Array, const int J, const int I ); template void Aux_AllocateArray2D ( double** &Array, const int J, const int I ); +template void Aux_DeallocateArray2D ( int** &Array ); +template void Aux_DeallocateArray2D ( long** &Array ); template void Aux_DeallocateArray2D ( float** &Array ); template void Aux_DeallocateArray2D ( double** &Array ); diff --git a/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData.cpp b/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData.cpp index d561f26e20..d3a6c6a6c8 100644 --- a/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData.cpp +++ b/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData.cpp @@ -7,7 +7,8 @@ static void CompareVar( const char *VarName, const int RestartVar, const int RuntimeVar, const bool Fatal ); static void Load_Parameter_After_2000( FILE *File, const int FormatVersion, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, const long HeaderOffset_Parameter, - int *NX0_Tot, bool &WithPar, int &NField, int &NMag, int &NParAtt ); + int *NX0_Tot, bool &WithPar, int &NField, int &NMag, int &NParAttFlt, + int &NParAttInt ); @@ -16,33 +17,37 @@ static void Load_Parameter_After_2000( FILE *File, const int FormatVersion, cons // Function : LoadData // Description : Load the input data from the binary file "FileName" // -// Note : 1. *Label[MAX_STRING] and ParData[] will be allocated here and must be deallocated manually +// Note : 1. *Label[MAX_STRING], ParFltData[], and ParIntData[] will be allocated here and must be deallocated manually // -// Parameter : FileName : Name of the input file -// amr : Target AMR_t pointer -// Format : 1/2 --> C-binary/HDF5 -// NField : Number of cell-centered fields stored in the file -// NMag : Number of face-centered magnetic components stored in the file -// NParAtt : Number of particle attributes stored in the file -// NPar : NUmber of particles -// ParData : Particle data array (allocated here --> must be dallocated manually later) -// FieldLabel : Labels of cell-centered fields -// MagLabel : Labels of face-centered magnetic components -// ParAttLabel : Labels of particle attributes +// Parameter : FileName : Name of the input file +// amr : Target AMR_t pointer +// Format : 1/2 --> C-binary/HDF5 +// NField : Number of cell-centered fields stored in the file +// NMag : Number of face-centered magnetic components stored in the file +// NParAttFlt : Number of particle floating-point attributes stored in the file +// NParAttInt : Number of particle integer attributes stored in the file +// NPar : NUmber of particles +// ParFltData : Particle floating-point data array (allocated here --> must be dallocated manually later) +// ParIntData : Particle integer data array (allocated here --> must be dallocated manually later) +// FieldLabel : Labels of cell-centered fields +// MagLabel : Labels of face-centered magnetic components +// ParAttFltLabel : Labels of particle floating-point attributes +// ParAttIntLabel : Labels of particle integer attributes // -// Return : amr, Format, NField, NMag, NParAtt, NPar, ParData -// FieldLabel, MagLabel, ParAttLabel (for HDF5 only) +// Return : amr, Format, NField, NMag, NParAttFlt, NParAttInt, NPar, ParFltData, ParIntData +// FieldLabel, MagLabel, ParAttFltLabel, ParAttIntLabel (for HDF5 only) //------------------------------------------------------------------------------------------------------- -void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAtt, long &NPar, real_par **&ParData, - char (*&FieldLabel)[MAX_STRING], char (*&MagLabel)[MAX_STRING], char (*&ParAttLabel)[MAX_STRING] ) +void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAttFlt, int &NParAttInt, + long &NPar, real_par **&ParFltData, long_par **&ParIntData, char (*&FieldLabel)[MAX_STRING], + char (*&MagLabel)[MAX_STRING], char (*&ParAttFltLabel)[MAX_STRING], char (*&ParAttIntLabel)[MAX_STRING] ) { // load the HDF5 data # ifdef SUPPORT_HDF5 if ( Aux_CheckFileExist(FileName) && H5Fis_hdf5(FileName) ) { - LoadData_HDF5( FileName, amr, Format, NField, NMag, NParAtt, NPar, ParData, - FieldLabel, MagLabel, ParAttLabel ); + LoadData_HDF5( FileName, amr, Format, NField, NMag, NParAttFlt, NParAttInt, NPar, + ParFltData, ParIntData, FieldLabel, MagLabel, ParAttFltLabel, ParAttIntLabel ); return; } # endif @@ -146,7 +151,8 @@ void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int & // ================================================================================================= bool WithPar; Load_Parameter_After_2000( File, FormatVersion, HeaderOffset_Makefile, HeaderOffset_Constant, - HeaderOffset_Parameter, amr.nx0_tot, WithPar, NField, NMag, NParAtt ); + HeaderOffset_Parameter, amr.nx0_tot, WithPar, NField, NMag, NParAttFlt, + NParAttInt ); // c. load the simulation information @@ -200,9 +206,9 @@ void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int & for (int lv=0; lv is incorrect --> input = %ld <-> expect = %ld !!\n", FileName, InputSize, ExpectSize ); +# if ( (defined FLOAT8 && !defined FLOAT8_PAR) || (!defined FLOAT8 && defined FLOAT8_PAR) ) + if ( WithPar && FormatVersion < 2300 ) Aux_Error( ERROR_INFO, "Must adopt FLOAT8_PAR=FLOAT8 for C-binary snapshots for versions < 2300 !!\n" ); +# endif + Aux_Message( stdout, " Verifying the size of the RESTART file ... passed\n" ); Aux_Message( stdout, " Loading simulation information ... done\n" ); @@ -274,16 +285,24 @@ void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int & // load particles if ( NPar > 0 ) { - const long ParDataSize1v = NPar*sizeof(real_par); + const long ParFltDataSize1v = NPar*sizeof(real_par); + const long ParIntDataSize1v = NPar*sizeof(long_par); - Aux_AllocateArray2D( ParData, NParAtt, NPar ); + Aux_AllocateArray2D( ParFltData, NParAttFlt, NPar ); + Aux_AllocateArray2D( ParIntData, NParAttInt, NPar ); File = fopen( FileName, "rb" ); - for (int v=0; v 2131 ) NParAtt = par_nvar; // after version 2131, par_nvar = PAR_NATT_STORED - else NParAtt = 7 + par_npassive; // mass, position x/y/z, velocity x/y/z, and passive variables + if ( FormatVersion >= 2300 ) + { + NParAttFlt = par_nvar_flt; // after version 2300, par_nvar_flt = PAR_NATT_FLT_STORED + NParAttInt = par_nvar_int; // after version 2300, par_nvar_int = PAR_NATT_INT_STORED + } + else if ( FormatVersion > 2131 ) + { + NParAttFlt = par_nvar_flt; // after version 2131, par_nvar_flt = PAR_NATT_STORED + NParAttInt = 0; + } + else + { + NParAttFlt = 7 + par_npassive_flt; // mass, position x/y/z, velocity x/y/z, and passive variables + NParAttInt = 0; + } } else - NParAtt = 0; + { + NParAttFlt = 0; + NParAttInt = 0; + } } // FUNCTION : Load_Parameter_After_2000 diff --git a/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData_HDF5.cpp b/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData_HDF5.cpp index 54dbc186a1..90798876ea 100644 --- a/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData_HDF5.cpp +++ b/tool/analysis/gamer_compare_data/GAMER_Functions/LoadData_HDF5.cpp @@ -16,6 +16,12 @@ # define H5T_GAMER_REAL_PAR H5T_NATIVE_FLOAT #endif +#ifdef INT8_PAR +# define H5T_GAMER_LONG_PAR H5T_NATIVE_LONG +#else +# define H5T_GAMER_LONG_PAR H5T_NATIVE_INT +#endif + #ifdef GAMER_DEBUG # define DEBUG_HDF5 #endif @@ -41,23 +47,27 @@ static void LoadOnePatch( AMR_t &amr, const hid_t H5_FileID, const int lv, const // 2. Unlike LoadData(), this function always loads and allocates both leaf and non-leaf patches // 3. *Label[MAX_STRING] and ParData[] will be allocated here and must be deallocated manually // -// Parameter : FileName : Name of the input file -// amr : Target AMR_t pointer -// Format : 1/2 --> C-binary/HDF5 -// NField : Number of cell-centered fields stored in the file -// NMag : Number of face-centered magnetic components stored in the file -// NParAtt : Number of particle attributes stored in the file -// NPar : NUmber of particles -// ParData : Particle data array (allocated here --> must be dallocated manually later) -// FieldLabel : Labels of cell-centered fields -// MagLabel : Labels of face-centered magnetic components -// ParAttLabel : Labels of particle attributes +// Parameter : FileName : Name of the input file +// amr : Target AMR_t pointer +// Format : 1/2 --> C-binary/HDF5 +// NField : Number of cell-centered fields stored in the file +// NMag : Number of face-centered magnetic components stored in the file +// NParAttFlt : Number of particle floating-point attributes stored in the file +// NParAttInt : Number of particle integer attributes stored in the file +// NPar : NUmber of particles +// ParFltData : Particle floating-point data array (allocated here --> must be dallocated manually later) +// ParIntData : Particle integer data array (allocated here --> must be dallocated manually later) +// FieldLabel : Labels of cell-centered fields +// MagLabel : Labels of face-centered magnetic components +// ParAttFltLabel : Labels of particle floating-point attributes +// ParAttIntLabel : Labels of particle integer attributes // -// Return : amr, Format, NField, NMag, NParAtt, NPar, ParData -// FieldLabel, MagLabel, ParAttLabel +// Return : amr, Format, NField, NMag, NParAttFlt, NParAttInt, NPar, ParData +// FieldLabel, MagLabel, ParAttFltLabel, ParAttIntLabel //------------------------------------------------------------------------------------------------------- -void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAtt, long &NPar, real_par **&ParData, - char (*&FieldLabel)[MAX_STRING], char (*&MagLabel)[MAX_STRING], char (*&ParAttLabel)[MAX_STRING] ) +void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAttFlt, + int &NParAttInt, long &NPar, real_par **&ParFltData, long_par **&ParIntData, char (*&FieldLabel)[MAX_STRING], + char (*&MagLabel)[MAX_STRING], char (*&ParAttFltLabel)[MAX_STRING], char (*&ParAttIntLabel)[MAX_STRING] ) { Aux_Message( stdout, "Loading HDF5 data %s ...\n", FileName ); @@ -88,7 +98,7 @@ void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, int FormatVersion, NPatchTotal[NLEVEL], NPatchAllLv, DumpID; long Step; double Time[NLEVEL]; - char **FieldLabel_In=NULL, **MagLabel_In=NULL, **ParAttLabel_In=NULL; + char **FieldLabel_In=NULL, **MagLabel_In=NULL, **ParAttFltLabel_In=NULL, **ParAttIntLabel_In=NULL; int *NullPtr=NULL; int WithPar; @@ -146,23 +156,41 @@ void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, LoadField( "Particle", &WithPar, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); if ( WithPar ) { int Float8_Par_RS; + int Int8_Par_RS; # ifdef FLOAT8_PAR const int Float8_Par_RT = 1; # else const int Float8_Par_RT = 0; -# endif +# endif +# ifdef INT8_PAR + const int Int8_Par_RT = 1; +# else + const int Int8_Par_RT = 0; +# endif int Float8_Par_check_flag; - LoadField( "Par_NAttStored", &NParAtt, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); - LoadField( "Par_NPar", &NPar, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); + LoadField( "Par_NPar", &NPar, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); Float8_Par_check_flag = - LoadField( "Float8_Par", &Float8_Par_RS, H5_SetID_KeyInfo, H5_TypeID_KeyInfo,NonFatal, &Float8_Par_RT, 1, Fatal ); + LoadField( "Float8_Par", &Float8_Par_RS, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Float8_Par_RT, 1, Fatal ); + if ( FormatVersion >= 2500 ) + { + LoadField( "Par_NAttFltStored", &NParAttFlt, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); + LoadField( "Par_NAttIntStored", &NParAttInt, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); + LoadField( "Int8_Par", &Int8_Par_RS, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, &Int8_Par_RT, 1, Fatal ); + } + else + { + LoadField( "Par_NAttStored", &NParAttFlt, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, Fatal, NullPtr, -1, NonFatal ); + NParAttInt = 0; + LoadField( "Int8_Par", &Int8_Par_RS, H5_SetID_KeyInfo, H5_TypeID_KeyInfo, NonFatal, &Int8_Par_RT, 1, Fatal ); + } if ( Float8_Par_check_flag != 0 && sizeof(real) != sizeof(real_par) ) Aux_Error( ERROR_INFO, "Must adopt FLOAT8_PAR=FLOAT8 in Makefile when Float8_Par is not stored in the snapshot !!\n"); - } + } // if ( WithPar ) else { - NParAtt = 0; - NPar = 0; - } + NParAttFlt = 0; + NParAttInt = 0; + NPar = 0; + } // if ( WithPar ) ... else ... // field and particle attribute labels FieldLabel_In = new char* [NField]; @@ -181,12 +209,21 @@ void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, LoadField( Key, &MagLabel_In[v], H5_SetID_InputPara, H5_TypeID_InputPara, Fatal, NullPtr, -1, NonFatal ); } - ParAttLabel_In = new char* [NParAtt]; - for (int v=0; v= 2500 ) sprintf( Key, "ParAttFltLabel%02d", v ); + else sprintf( Key, "ParAttLabel%02d", v ); + LoadField( Key, &ParAttFltLabel_In[v], H5_SetID_InputPara, H5_TypeID_InputPara, Fatal, NullPtr, -1, NonFatal ); + } + + ParAttIntLabel_In = new char* [NParAttInt]; + for (int v=0; v 0 ) { // 4-2. allocate the particle data array - Aux_AllocateArray2D( ParData, NParAtt, NPar ); + Aux_AllocateArray2D( ParFltData, NParAttFlt, NPar ); + Aux_AllocateArray2D( ParIntData, NParAttInt, NPar ); // 4-3. initialize HDF5 objects hsize_t H5_SetDims_ParData[1], H5_MemDims_ParData[1]; - hid_t H5_GroupID_ParData, H5_SpaceID_ParData, H5_MemID_ParData, H5_SetID_ParData[NParAtt]; + hid_t H5_GroupID_ParData, H5_SpaceID_ParData, H5_MemID_ParData, H5_SetID_ParFltData[NParAttFlt], H5_SetID_ParIntData[NParAttInt]; H5_GroupID_ParData = H5Gopen( H5_FileID, "Particle", H5P_DEFAULT ); if ( H5_GroupID_ParData < 0 ) Aux_Error( ERROR_INFO, "failed to open the group \"%s\" !!\n", "Particle" ); @@ -381,23 +421,36 @@ void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, H5_MemID_ParData = H5Screate_simple( 1, H5_MemDims_ParData, NULL ); if ( H5_MemID_ParData < 0 ) Aux_Error( ERROR_INFO, "failed to create the space \"%s\" !!\n", "H5_MemID_ParData" ); - for (int v=0; v void Aux_AllocateArray2D( T** &Array, const int J, const int I ); template void Aux_DeallocateArray2D( T** &Array ); -void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAtt, long &NPar, real_par **&ParData, - char (*&FieldLabel)[MAX_STRING], char (*&MagLabel)[MAX_STRING], char (*&ParAttLabel)[MAX_STRING] ); -void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAtt, long &NPar, real_par **&ParData, - char (*&FieldLabel)[MAX_STRING], char (*&MagLabel)[MAX_STRING], char (*&ParAttLabel)[MAX_STRING] ); +void LoadData( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAttFlt, int &NParAttInt, + long &NPar, real_par **&ParFltData, long_par **&ParIntData, char (*&FieldLabel)[MAX_STRING], char (*&MagLabel)[MAX_STRING], + char (*&ParAttFltLabel)[MAX_STRING], char (*&ParAttIntLabel)[MAX_STRING] ); +void LoadData_HDF5( const char *FileName, AMR_t &amr, int &Format, int &NField, int &NMag, int &NParAttFlt, int &NParAttInt, long &NPar, + real_par **&ParFltData, long_par **&ParIntData, char (*&FieldLabel)[MAX_STRING], char (*&MagLabel)[MAX_STRING], + char (*&ParAttFltLabel)[MAX_STRING], char (*&ParAttIntLabel)[MAX_STRING] ); void SortParticle( const long NPar, const real_par *PosX, const real_par *PosY, const real_par *PosZ, const real_par *VelX, long *IdxTable ); diff --git a/tool/analysis/gamer_compare_data/Header/TypeDef.h b/tool/analysis/gamer_compare_data/Header/TypeDef.h index 26f362f9d2..8e8ccd000c 100644 --- a/tool/analysis/gamer_compare_data/Header/TypeDef.h +++ b/tool/analysis/gamer_compare_data/Header/TypeDef.h @@ -9,13 +9,18 @@ typedef double real; typedef float real; #endif - #ifdef FLOAT8_PAR typedef double real_par; #else typedef float real_par; #endif +#ifdef INT8_PAR +typedef long long_par; +#else +typedef int long_par; +#endif + // models #define HYDRO 1 diff --git a/tool/analysis/gamer_compare_data/Main.cpp b/tool/analysis/gamer_compare_data/Main.cpp index 55479f120c..bea61de90e 100644 --- a/tool/analysis/gamer_compare_data/Main.cpp +++ b/tool/analysis/gamer_compare_data/Main.cpp @@ -6,12 +6,13 @@ static AMR_t amr1, amr2; static char *FileName_In1=NULL, *FileName_In2=NULL, *FileName_Out=NULL; static bool UseCorner=false, MaxErrOnly=false; -static int NField1=-1, NField2=-1, NMag1=-1, NMag2=-1, NParAtt1=-1, NParAtt2=-1, Format1=-1, Format2=-1; +static int NField1=-1, NField2=-1, NMag1=-1, NMag2=-1, NParAttFlt1=-1, NParAttFlt2=-1, NParAttInt1=-1, NParAttInt2=-1, Format1=-1, Format2=-1; static long NPar1=-1, NPar2=-1; static double TolErr=__FLT_MIN__; -static real_par **ParData1=NULL, **ParData2=NULL; -static char (*FieldLabel1)[MAX_STRING]=NULL, (*MagLabel1)[MAX_STRING]=NULL, (*ParAttLabel1)[MAX_STRING]=NULL; -static char (*FieldLabel2)[MAX_STRING]=NULL, (*MagLabel2)[MAX_STRING]=NULL, (*ParAttLabel2)[MAX_STRING]=NULL; +static real_par **ParFltData1=NULL, **ParFltData2=NULL; +static long_par **ParIntData1=NULL, **ParIntData2=NULL; +static char (*FieldLabel1)[MAX_STRING]=NULL, (*MagLabel1)[MAX_STRING]=NULL, (*ParAttFltLabel1)[MAX_STRING]=NULL, (*ParAttIntLabel1)[MAX_STRING]=NULL; +static char (*FieldLabel2)[MAX_STRING]=NULL, (*MagLabel2)[MAX_STRING]=NULL, (*ParAttFltLabel2)[MAX_STRING]=NULL, (*ParAttIntLabel2)[MAX_STRING]=NULL; @@ -425,22 +426,38 @@ int CompareParticleData() if ( NPar1 > 0 ) { - if ( NParAtt1 != NParAtt2 ) - Aux_Error( ERROR_INFO, "inconsistent numbers of particle attributes (%d vs %d) !!\n", NParAtt1, NParAtt2 ); + if ( NParAttFlt1 != NParAttFlt2 ) + Aux_Error( ERROR_INFO, "inconsistent numbers of particle floating-point attributes (%d vs %d) !!\n", NParAttFlt1, NParAttFlt2 ); - if ( ParData1 == NULL || ParData2 == NULL ) - Aux_Error( ERROR_INFO, "particle arrays have not been allocated yet !!\n" ); + if ( NParAttInt1 != NParAttInt2 ) + Aux_Error( ERROR_INFO, "inconsistent numbers of particle integer attributes (%d vs %d) !!\n", NParAttInt1, NParAttInt2 ); + + if ( NParAttFlt1 != 0 && ( ParFltData1 == NULL || ParFltData2 == NULL ) ) + Aux_Error( ERROR_INFO, "particle floating-point arrays have not been allocated yet !!\n" ); + + if ( NParAttInt1 != 0 && ( ParIntData1 == NULL || ParIntData2 == NULL ) ) + Aux_Error( ERROR_INFO, "particle integer arrays have not been allocated yet !!\n" ); if ( Format1 == 2 && Format2 == 2 ) { - for (int v=0; v 0 ) @@ -453,21 +470,26 @@ int CompareParticleData() // do not call SortParticle() if NPar==0 since ParDataX[0/1/2][] is ill-defined if ( NPar1 > 0 ) { - SortParticle( NPar1, ParData1[1], ParData1[2], ParData1[3], ParData1[4], IdxTable1 ); - SortParticle( NPar2, ParData2[1], ParData2[2], ParData2[3], ParData2[4], IdxTable2 ); + SortParticle( NPar1, ParFltData1[1], ParFltData1[2], ParFltData1[3], ParFltData1[4], IdxTable1 ); + SortParticle( NPar2, ParFltData2[1], ParFltData2[2], ParFltData2[3], ParFltData2[4], IdxTable2 ); } // compare data double AbsErr, RelErr; + long AbsIntErr; long ParID1, ParID2; - real_par Data1, Data2; + real_par FltData1, FltData2; + long_par IntData1, IntData2; bool ErrorDetected = false; - double MaxErrPar_Data[NParAtt1][4]; - long MaxErrPar_Info[NParAtt1][3]; + double MaxFltErrPar_Data[NParAttFlt1][4]; + long MaxFltErrPar_Info[NParAttFlt1][3]; + long MaxIntErrPar_Data[NParAttInt1][3]; + long MaxIntErrPar_Info[NParAttInt1][3]; - for (int v=0; v= TolErr || !isfinite(RelErr) ) { ErrorDetected = true; if ( MaxErrOnly ) { - if ( fabs(RelErr) > fabs(MaxErrPar_Data[v][3]) ) { - MaxErrPar_Info[v][0] = ParID1; - MaxErrPar_Info[v][1] = ParID2; - MaxErrPar_Info[v][2] = v; - - MaxErrPar_Data[v][0] = Data1; - MaxErrPar_Data[v][1] = Data2; - MaxErrPar_Data[v][2] = AbsErr; - MaxErrPar_Data[v][3] = RelErr; + if ( fabs(RelErr) > fabs(MaxFltErrPar_Data[v][3]) ) { + MaxFltErrPar_Info[v][0] = ParID1; + MaxFltErrPar_Info[v][1] = ParID2; + MaxFltErrPar_Info[v][2] = v; + + MaxFltErrPar_Data[v][0] = FltData1; + MaxFltErrPar_Data[v][1] = FltData2; + MaxFltErrPar_Data[v][2] = AbsErr; + MaxFltErrPar_Data[v][3] = RelErr; } } else fprintf( File, " %12ld %12ld %4d %14.7e %14.7e %14.7e %14.7e\n", - ParID1, ParID2, v, Data1, Data2, AbsErr, RelErr ); + ParID1, ParID2, v, FltData1, FltData2, AbsErr, RelErr ); } } // output the maximum errors if ( MaxErrOnly ) { - for (int v=0; v labs(MaxIntErrPar_Data[v][2]) ) { + MaxIntErrPar_Info[v][0] = ParID1; + MaxIntErrPar_Info[v][1] = ParID2; + MaxIntErrPar_Info[v][2] = v; + + MaxIntErrPar_Data[v][0] = (long)IntData1; + MaxIntErrPar_Data[v][1] = (long)IntData2; + MaxIntErrPar_Data[v][2] = AbsIntErr; + } + } + + else + fprintf( File, " %12ld %12ld %4d %14ld %14ld %14ld\n", + ParID1, ParID2, v, (long)IntData1, (long)IntData2, AbsIntErr ); + } + } + +// output the maximum errors + if ( MaxErrOnly ) + { + for (int v=0; v( ParData1 ); - Aux_DeallocateArray2D( ParData2 ); + Aux_DeallocateArray2D( ParFltData1 ); + Aux_DeallocateArray2D( ParFltData2 ); + Aux_DeallocateArray2D( ParIntData1 ); + Aux_DeallocateArray2D( ParIntData2 ); delete [] FieldLabel1; delete [] FieldLabel2; delete [] MagLabel1; delete [] MagLabel2; - delete [] ParAttLabel1; - delete [] ParAttLabel2; + delete [] ParAttFltLabel1; + delete [] ParAttFltLabel2; + delete [] ParAttIntLabel1; + delete [] ParAttIntLabel2; Aux_Message( stdout, "done\n" ); @@ -583,10 +664,10 @@ int main( int argc, char ** argv ) CheckParameter(); - LoadData( FileName_In1, amr1, Format1, NField1, NMag1, NParAtt1, NPar1, ParData1, - FieldLabel1, MagLabel1, ParAttLabel1 ); - LoadData( FileName_In2, amr2, Format2, NField2, NMag2, NParAtt2, NPar2, ParData2, - FieldLabel2, MagLabel2, ParAttLabel2 ); + LoadData( FileName_In1, amr1, Format1, NField1, NMag1, NParAttFlt1, NParAttInt1, NPar1, + ParFltData1, ParIntData1, FieldLabel1, MagLabel1, ParAttFltLabel1, ParAttIntLabel1 ); + LoadData( FileName_In2, amr2, Format2, NField2, NMag2, NParAttFlt2, NParAttInt2, NPar2, + ParFltData2, ParIntData2, FieldLabel2, MagLabel2, ParAttFltLabel2, ParAttIntLabel2 ); int ErrorDetected = false; diff --git a/tool/analysis/gamer_compare_data/Makefile b/tool/analysis/gamer_compare_data/Makefile index b1ae1756ed..01909455cb 100644 --- a/tool/analysis/gamer_compare_data/Makefile +++ b/tool/analysis/gamer_compare_data/Makefile @@ -15,9 +15,12 @@ SIMU_OPTION += -DMODEL=HYDRO # double precision #SIMU_OPTION += -DFLOAT8 -# double precision for particle attributes +# double precision for particle floating-point attributes #SIMU_OPTION += -DFLOAT8_PAR +# long integer for particle integer attributes +SIMU_OPTION += -DINT8_PAR + # debug mode #SIMU_OPTION += -DGAMER_DEBUG diff --git a/tool/analysis/gamer_extract_profile/GAMER_Functions/LoadData.cpp b/tool/analysis/gamer_extract_profile/GAMER_Functions/LoadData.cpp index 63e5e6a6b1..3cba1db359 100644 --- a/tool/analysis/gamer_extract_profile/GAMER_Functions/LoadData.cpp +++ b/tool/analysis/gamer_extract_profile/GAMER_Functions/LoadData.cpp @@ -10,7 +10,8 @@ static void Load_Parameter_Before_2000( FILE *File, const int FormatVersion, boo void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadPot, int *NX0_Tot, double &BoxSize, double &Gamma, double &ELBDM_Eta, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, - const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, int &NParVarOut ); + const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, + int &NParFltVarOut, int &NParIntVarOut ); static void CompareVar( const char *VarName, const bool RestartVar, const bool RuntimeVar, const bool Fatal ); static void CompareVar( const char *VarName, const int RestartVar, const int RuntimeVar, const bool Fatal ); static void CompareVar( const char *VarName, const long RestartVar, const long RuntimeVar, const bool Fatal ); @@ -194,7 +195,7 @@ void LoadData() // b. load all simulation parameters // ================================================================================================= bool DataOrder_xyzv, LoadPot, LoadPar; - int LoadParDens, NParVarOut; + int LoadParDens, NParFltVarOut, NParIntVarOut; double BoxSize; # if ( MODEL != ELBDM ) double ELBDM_ETA = NULL_REAL; @@ -204,16 +205,17 @@ void LoadData() { Load_Parameter_Before_2000( File, FormatVersion, DataOrder_xyzv, LoadPot, NX0_TOT, BoxSize, GAMMA, ELBDM_ETA, HeaderOffset_Makefile, HeaderOffset_Constant, HeaderOffset_Parameter ); - LoadPar = false; - LoadParDens = 0; - NParVarOut = -1; + LoadPar = false; + LoadParDens = 0; + NParFltVarOut = -1; + NParIntVarOut = -1; } else { Load_Parameter_After_2000( File, FormatVersion, LoadPot, NX0_TOT, BoxSize, GAMMA, ELBDM_ETA, HeaderOffset_Makefile, HeaderOffset_Constant, HeaderOffset_Parameter, - LoadPar, LoadParDens, NParVarOut ); + LoadPar, LoadParDens, NParFltVarOut, NParIntVarOut ); DataOrder_xyzv = false; } @@ -281,7 +283,8 @@ void LoadData() ExpectSize += ParInfoSize; } - ExpectSize += (long)NParVarOut*NPar*sizeof(real); + ExpectSize += (long)NParFltVarOut*NPar*sizeof(real_par); + ExpectSize += (long)NParIntVarOut*NPar*sizeof(long_par); } fseek( File, 0, SEEK_END ); @@ -867,15 +870,16 @@ void Load_Parameter_Before_2000( FILE *File, const int FormatVersion, bool &Data // HeaderOffset_X : Offsets of different headers // LoadPar : Whether or not the RESTART file stores the particle data // LoadParDens : Whether or not the RESTART file stores the particle density data on grids -// NParVarOut : Number of particle variables stored in the file (for check file size only) +// NParFltVarOut : Number of particle floating-point variables stored in the file (for check file size only) +// NParIntVarOut : Number of particle integer variables stored in the file (for check file size only) // -// Return : DataOrder_xyzv, LoadPot, NX0_Tot, BoxSize, Gamma, ELBDM_Eta, LoadPar, LoadParDens, NParVarOut +// Return : DataOrder_xyzv, LoadPot, NX0_Tot, BoxSize, Gamma, ELBDM_Eta, LoadPar, LoadParDens, NParFltVarOut, NParIntVarOut //------------------------------------------------------------------------------------------------------- void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadPot, int *NX0_Tot, double &BoxSize, double &Gamma, double &ELBDM_Eta, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, - int &NParVarOut ) + int &NParFltVarOut, int &NParIntVarOut ) { Aux_Message( stdout, " Loading simulation parameters ...\n" ); @@ -935,7 +939,8 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP bool use_psolver_10to14; int ncomp_fluid, patch_size, flu_ghost_size, pot_ghost_size, gra_ghost_size, check_intermediate; int flu_block_size_x, flu_block_size_y, pot_block_size_x, pot_block_size_z, gra_block_size_z; - int par_nvar, par_npassive; + int par_nvar_flt, par_npassive_flt; + int par_nvar_int, par_npassive_int; double min_value, max_error; fseek( File, HeaderOffset_Constant, SEEK_SET ); @@ -961,8 +966,10 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP fread( &gra_block_size_z, sizeof(int), 1, File ); if ( particle ) { - fread( &par_nvar, sizeof(int), 1, File ); - fread( &par_npassive, sizeof(int), 1, File ); } + fread( &par_nvar_flt, sizeof(int), 1, File ); + fread( &par_npassive_flt, sizeof(int), 1, File ); + fread( &par_nvar_int, sizeof(int), 1, File ); + fread( &par_npassive_int, sizeof(int), 1, File ); } // c. load the simulation parameters recorded in the file "Input__Parameter" @@ -1109,11 +1116,27 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP if ( LoadPar ) { - if ( FormatVersion > 2131 ) NParVarOut = par_nvar; // after version 2131, par_nvar = PAR_NATT_STORED - else NParVarOut = 7 + par_npassive; // mass, position x/y/z, velocity x/y/z, and passive variables + if ( FormatVersion >= 2300 ) + { + NParFltVarOut = par_nvar_flt; // after version 2300, par_nvar_flt = PAR_NATT_FLT_STORED + NParIntVarOut = par_nvar_int; // after version 2300, par_nvar_int = PAR_NATT_INT_STORED + } + else if ( FormatVersion > 2131 ) + { + NParFltVarOut = par_nvar_flt; // after version 2131, par_nvar_flt = PAR_NATT_STORED + NParIntVarOut = 0; + } + else + { + NParFltVarOut = 7 + par_npassive_flt; // mass, position x/y/z, velocity x/y/z, and passive variables + NParIntVarOut = 0; + } } else - NParVarOut = -1; + { + NParFltVarOut = -1; + NParIntVarOut = -1; + } } // FUNCTION : Load_Parameter_After_2000 diff --git a/tool/analysis/gamer_extract_profile/GAMER_Functions/Prepare_PatchData.cpp b/tool/analysis/gamer_extract_profile/GAMER_Functions/Prepare_PatchData.cpp index f165bc4d5a..db26c717d4 100644 --- a/tool/analysis/gamer_extract_profile/GAMER_Functions/Prepare_PatchData.cpp +++ b/tool/analysis/gamer_extract_profile/GAMER_Functions/Prepare_PatchData.cpp @@ -408,7 +408,7 @@ void Prepare_PatchData( const int lv, real *h_Input_Array, const int GhostSize, } // OpenMP parallel region -// free memroy +// free memory for (int s=0; s<26; s++) delete [] TSib[s]; } // FUNCTION : Prepare_PatchData diff --git a/tool/analysis/gamer_extract_profile/Header/TypeDef.h b/tool/analysis/gamer_extract_profile/Header/TypeDef.h index 26e48d55c0..47da85d358 100644 --- a/tool/analysis/gamer_extract_profile/Header/TypeDef.h +++ b/tool/analysis/gamer_extract_profile/Header/TypeDef.h @@ -9,6 +9,18 @@ typedef double real; typedef float real; #endif +#ifdef FLOAT8_PAR +typedef double real_par; +#else +typedef float real_par; +#endif + +#ifdef INT8_PAR +typedef long long_par; +#else +typedef int long_par; +#endif + #define WRONG -999999 diff --git a/tool/analysis/gamer_extract_profile/Makefile b/tool/analysis/gamer_extract_profile/Makefile index 96111a4549..075a445800 100644 --- a/tool/analysis/gamer_extract_profile/Makefile +++ b/tool/analysis/gamer_extract_profile/Makefile @@ -15,6 +15,12 @@ SIMU_OPTION += -DMODEL=HYDRO # double precision #SIMU_OPTION += -DFLOAT8 +# double precision for particle floating-point attributes +#SIMU_OPTION += -DFLOAT8_PAR + +# long integer for particle integer attributes +SIMU_OPTION += -DINT8_PAR + # debug mode #SIMU_OPTION += -DGAMER_DEBUG diff --git a/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData.cpp b/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData.cpp index 99abc8031a..0640867246 100644 --- a/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData.cpp +++ b/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData.cpp @@ -4,14 +4,16 @@ #endif static void Load_Parameter_Before_2000( FILE *File, const int FormatVersion, bool &DataOrder_xyzv, - bool &LoadPot, int *NX0_Tot, double &BoxSize, double &Gamma, double &ELBDM_Eta, + bool &LoadPot, int *NX0_Tot, double &BoxSize, double &Gamma, + double &ELBDM_Eta, double &ELBDM_Mass, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, const long HeaderOffset_Parameter, bool &Comoving ); static void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadPot, int *NX0_Tot, - double &BoxSize, double &Gamma, double &ELBDM_Eta, + double &BoxSize, double &Gamma, double &ELBDM_Eta, double &ELBDM_Mass, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, - const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, int &NParVarOut, - double &H0, bool &WithUnit, double &Unit_L, double &Unit_M, double &Unit_T, double &Unit_V, + const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, + int &NParFltVarOut, int &NParIntVarOut, double &H0, bool &WithUnit, + double &Unit_L, double &Unit_M, double &Unit_T, double &Unit_V, double &Unit_D, double &Unit_E, double &Unit_P, double &Mu, bool &Comoving ); static void CompareVar( const char *VarName, const bool RestartVar, const bool RuntimeVar, const bool Fatal ); static void CompareVar( const char *VarName, const int RestartVar, const int RuntimeVar, const bool Fatal ); @@ -185,19 +187,20 @@ void LoadData() // b. load all simulation parameters // ================================================================================================= bool DataOrder_xyzv, OutputPar; - int NParVarOut; + int NParFltVarOut, NParIntVarOut; double BoxSize; # if ( MODEL != ELBDM ) - double ELBDM_ETA; + double ELBDM_ETA, ELBDM_MASS; # endif if ( FormatVersion < 2000 ) { - Load_Parameter_Before_2000( File, FormatVersion, DataOrder_xyzv, OutputPot, NX0_TOT, BoxSize, GAMMA, ELBDM_ETA, + Load_Parameter_Before_2000( File, FormatVersion, DataOrder_xyzv, OutputPot, NX0_TOT, BoxSize, GAMMA, ELBDM_ETA, ELBDM_MASS, HeaderOffset_Makefile, HeaderOffset_Constant, HeaderOffset_Parameter, Comoving ); OutputPar = false; OutputParDens = 0; - NParVarOut = -1; + NParFltVarOut = -1; + NParIntVarOut = -1; WithUnit = false; H0 = Unit_L = Unit_M = Unit_T = Unit_V = Unit_D = Unit_E = Unit_P = MU = WRONG; @@ -205,9 +208,9 @@ void LoadData() else { - Load_Parameter_After_2000( File, FormatVersion, OutputPot, NX0_TOT, BoxSize, GAMMA, ELBDM_ETA, + Load_Parameter_After_2000( File, FormatVersion, OutputPot, NX0_TOT, BoxSize, GAMMA, ELBDM_ETA, ELBDM_MASS, HeaderOffset_Makefile, HeaderOffset_Constant, HeaderOffset_Parameter, - OutputPar, OutputParDens, NParVarOut, + OutputPar, OutputParDens, NParFltVarOut, NParIntVarOut, H0, WithUnit, Unit_L, Unit_M, Unit_T, Unit_V, Unit_D, Unit_E, Unit_P, MU, Comoving ); DataOrder_xyzv = false; } @@ -284,7 +287,8 @@ void LoadData() ExpectSize += ParInfoSize; } - ExpectSize += (long)NParVarOut*NPar*sizeof(real); + ExpectSize += (long)NParFltVarOut*NPar*sizeof(real_par); + ExpectSize += (long)NParIntVarOut*NPar*sizeof(long_par); } fseek( File, 0, SEEK_END ); @@ -599,15 +603,17 @@ void LoadData() // LoadPot : Whether or not the RESTART file stores the potential data // NX0_Tot : Total number of base-level cells along each direction // BoxSize : Physical size of the simulation box -// Gamma : ratio of specific heat +// Gamma : Ratio of specific heat // ELBDM_Eta : Particle mass / Planck constant in ELBDM +// ELBDM_Mass : Particle mass in ELBDM // HeaderOffset_X : Offsets of different headers // Comoving : true --> cosmological simulations in comoving coords. // -// Return : DataOrder_xyzv, LoadPot, NX0_Tot, BoxSize, Gamma, ELBDM_Eta, Comoving +// Return : DataOrder_xyzv, LoadPot, NX0_Tot, BoxSize, Gamma, ELBDM_Eta, ELBDM_Mass, Comoving //------------------------------------------------------------------------------------------------------- void Load_Parameter_Before_2000( FILE *File, const int FormatVersion, bool &DataOrder_xyzv, - bool &LoadPot, int *NX0_Tot, double &BoxSize, double &Gamma, double &ELBDM_Eta, + bool &LoadPot, int *NX0_Tot, double &BoxSize, double &Gamma, + double &ELBDM_Eta, double &ELBDM_Mass, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, const long HeaderOffset_Parameter, bool &Comoving ) { @@ -809,6 +815,7 @@ void Load_Parameter_Before_2000( FILE *File, const int FormatVersion, bool &Data for (int d=0; d<3; d++) NX0_Tot[d] = nx0_tot[d]; ELBDM_Eta = elbdm_mass / planck_const; + ELBDM_Mass = elbdm_mass; Comoving = comoving; } // FUNCTION : Load_Parameter_Before_2000 @@ -826,26 +833,29 @@ void Load_Parameter_Before_2000( FILE *File, const int FormatVersion, bool &Data // LoadPot : Whether or not the RESTART file stores the potential data // NX0_Tot : Total number of base-level cells along each direction // BoxSize : Physical size of the simulation box -// Gamma : ratio of specific heat -// ELBDM_Eta : mass/planck_const in ELBDM +// Gamma : Ratio of specific heat +// ELBDM_Eta : Particle mass / Planck constant in ELBDM +// ELBDM_Mass : Particle mass in ELBDM // HeaderOffset_X : Offsets of different headers // LoadPar : Whether or not the RESTART file stores the particle data // LoadParDens : Whether or not the RESTART file stores the particle density on grids -// NParVarOut : Number of particles attributes stored (for checking the file size only) +// NParFltVarOut : Number of particle floating-point attributes stored (for checking the file size only) +// NParIntVarOut : Number of particle integer attributes stored (for checking the file size only) // H0 : Dimensionless Hubble parameter // WithUnit : true --> restart file stores the code units // Unit_* : Code units // Mu : Mean molecular weight // Comoving : true --> cosmological simulations in comoving coords. // -// Return : DataOrder_xyzv, LoadPot, NX0_Tot, BoxSize, Gamma, ELBDM_Eta, LoadPar, LoadParDens, NParVarOut, +// Return : DataOrder_xyzv, LoadPot, NX0_Tot, BoxSize, Gamma, ELBDM_Eta, ELBDM_Mass, LoadPar, LoadParDens, NParVarOut, // H0, WithUnit, Unit_*, Mu, Comoving //------------------------------------------------------------------------------------------------------- void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadPot, int *NX0_Tot, - double &BoxSize, double &Gamma, double &ELBDM_Eta, + double &BoxSize, double &Gamma, double &ELBDM_Eta, double &ELBDM_Mass, const long HeaderOffset_Makefile, const long HeaderOffset_Constant, - const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, int &NParVarOut, - double &H0, bool &WithUnit, double &Unit_L, double &Unit_M, double &Unit_T, double &Unit_V, + const long HeaderOffset_Parameter, bool &LoadPar, int &LoadParDens, + int &NParFltVarOut, int &NParIntVarOut, double &H0, bool &WithUnit, + double &Unit_L, double &Unit_M, double &Unit_T, double &Unit_V, double &Unit_D, double &Unit_E, double &Unit_P, double &Mu, bool &Comoving ) { @@ -905,7 +915,8 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP bool use_psolver_10to14; int ncomp_fluid, patch_size, flu_ghost_size, pot_ghost_size, gra_ghost_size, check_intermediate; int flu_block_size_x, flu_block_size_y, pot_block_size_x, pot_block_size_z, gra_block_size_z; - int par_nvar, par_npassive; + int par_nvar_flt, par_npassive_flt; + int par_nvar_int, par_npassive_int; double min_value, max_error; fseek( File, HeaderOffset_Constant, SEEK_SET ); @@ -929,14 +940,18 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP fread( &pot_block_size_x, sizeof(int), 1, File ); fread( &pot_block_size_z, sizeof(int), 1, File ); fread( &gra_block_size_z, sizeof(int), 1, File ); - fread( &par_nvar, sizeof(int), 1, File ); - fread( &par_npassive, sizeof(int), 1, File ); + fread( &par_nvar_flt, sizeof(int), 1, File ); + fread( &par_npassive_flt, sizeof(int), 1, File ); + fread( &par_nvar_int, sizeof(int), 1, File ); + fread( &par_npassive_int, sizeof(int), 1, File ); // reset parameters if ( !particle ) { - par_nvar = WRONG; - par_npassive = WRONG; + par_nvar_flt = WRONG; + par_npassive_flt = WRONG; + par_nvar_int = WRONG; + par_npassive_int = WRONG; } @@ -1097,6 +1112,7 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP BoxSize = box_size; Gamma = gamma; ELBDM_Eta = elbdm_mass / elbdm_planck_const; + ELBDM_Mass = elbdm_mass; for (int d=0; d<3; d++) NX0_Tot[d] = nx0_tot[d]; H0 = hubble0; @@ -1113,11 +1129,27 @@ void Load_Parameter_After_2000( FILE *File, const int FormatVersion, bool &LoadP if ( LoadPar ) { - if ( FormatVersion > 2131 ) NParVarOut = par_nvar; // after version 2131, par_nvar = PAR_NATT_STORED - else NParVarOut = 7 + par_npassive; // mass, position x/y/z, velocity x/y/z, and passive variables + if ( FormatVersion >= 2300 ) + { + NParFltVarOut = par_nvar_flt; // after version 2300, par_nvar_flt = PAR_NATT_FLT_STORED + NParIntVarOut = par_nvar_int; // after version 2300, par_nvar_int = PAR_NATT_INT_STORED + } + else if ( FormatVersion > 2131 ) + { + NParFltVarOut = par_nvar_flt; // after version 2131, par_nvar_flt = PAR_NATT_STORED + NParIntVarOut = 0; + } + else + { + NParFltVarOut = 7 + par_npassive_flt; // mass, position x/y/z, velocity x/y/z, and passive variables + NParIntVarOut = 0; + } } else - NParVarOut = -1; + { + NParFltVarOut = -1; + NParIntVarOut = -1; + } } // FUNCTION : Load_Parameter_After_2000 diff --git a/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData_HDF5.cpp b/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData_HDF5.cpp index 35c378623b..46686a2c25 100644 --- a/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData_HDF5.cpp +++ b/tool/analysis/gamer_extract_uniform/GAMER_Functions/LoadData_HDF5.cpp @@ -179,7 +179,8 @@ void LoadData_HDF5( const char *FileName ) LoadField( "ELBDM_Mass", &ELBDM_Mass, H5_SetID_InputPara, H5_TypeID_InputPara, Fatal, NullPtr, -1, NonFatal ); LoadField( "ELBDM_PlanckConst", &ELBDM_PlanckConst, H5_SetID_InputPara, H5_TypeID_InputPara, Fatal, NullPtr, -1, NonFatal ); - ELBDM_ETA = ELBDM_Mass / ELBDM_PlanckConst; + ELBDM_ETA = ELBDM_Mass / ELBDM_PlanckConst; + ELBDM_MASS = ELBDM_Mass; # endif // check if B field is included diff --git a/tool/analysis/gamer_extract_uniform/Header/Global.h b/tool/analysis/gamer_extract_uniform/Header/Global.h index dc73492ebc..2053d944a2 100644 --- a/tool/analysis/gamer_extract_uniform/Header/Global.h +++ b/tool/analysis/gamer_extract_uniform/Header/Global.h @@ -23,6 +23,7 @@ extern char *FileName_In; #if ( MODEL == ELBDM ) extern double ELBDM_ETA; +extern double ELBDM_MASS; extern bool ELBDM_IntPhase; #endif diff --git a/tool/analysis/gamer_extract_uniform/Header/HDF5_Typedef.h b/tool/analysis/gamer_extract_uniform/Header/HDF5_Typedef.h index 9ecf11f684..4c599be08c 100644 --- a/tool/analysis/gamer_extract_uniform/Header/HDF5_Typedef.h +++ b/tool/analysis/gamer_extract_uniform/Header/HDF5_Typedef.h @@ -48,6 +48,10 @@ struct Info_t double Unit_E; double Unit_P; +# if ( MODEL == ELBDM ) + double ELBDM_Mass; +# endif + }; // struct Info_t diff --git a/tool/analysis/gamer_extract_uniform/Header/TypeDef.h b/tool/analysis/gamer_extract_uniform/Header/TypeDef.h index 121efbd42f..7bc5c7a75c 100644 --- a/tool/analysis/gamer_extract_uniform/Header/TypeDef.h +++ b/tool/analysis/gamer_extract_uniform/Header/TypeDef.h @@ -9,6 +9,18 @@ typedef double real; typedef float real; #endif +#ifdef FLOAT8_PAR +typedef double real_par; +#else +typedef float real_par; +#endif + +#ifdef INT8_PAR +typedef long long_par; +#else +typedef int long_par; +#endif + // models #define HYDRO 1 diff --git a/tool/analysis/gamer_extract_uniform/Main.cpp b/tool/analysis/gamer_extract_uniform/Main.cpp index b89c65ec91..2f172fc249 100644 --- a/tool/analysis/gamer_extract_uniform/Main.cpp +++ b/tool/analysis/gamer_extract_uniform/Main.cpp @@ -58,6 +58,7 @@ double Unit_L, Unit_M, Unit_T, Unit_V, Unit_D, Unit_E, Unit_P; #if ( MODEL == ELBDM ) double ELBDM_ETA; +double ELBDM_MASS; bool ELBDM_IntPhase = true; #endif @@ -571,6 +572,7 @@ void TakeNote( int argc, char *argv[] ) printf( "MU = %13.7e\n", MU ); # elif ( MODEL == ELBDM ) printf( "ELBDM_ETA = %13.7e\n", ELBDM_ETA ); + printf( "ELBDM_MASS = %13.7e\n", ELBDM_MASS ); printf( "ELBDM_IntPhase = %s\n", (ELBDM_IntPhase)?"YES":"NO" ); # endif printf( "WithUnit = %d\n", WithUnit ); @@ -1072,6 +1074,9 @@ void SetHDF5Info( hid_t &H5_FileID ) H5Tinsert( H5_ComID_Info, "Unit_D", HOFFSET(Info_t,Unit_D ), H5T_NATIVE_DOUBLE ); H5Tinsert( H5_ComID_Info, "Unit_E", HOFFSET(Info_t,Unit_E ), H5T_NATIVE_DOUBLE ); H5Tinsert( H5_ComID_Info, "Unit_P", HOFFSET(Info_t,Unit_P ), H5T_NATIVE_DOUBLE ); +# if ( MODEL == ELBDM ) + H5Tinsert( H5_ComID_Info, "ELBDM_Mass", HOFFSET(Info_t,ELBDM_Mass ), H5T_NATIVE_DOUBLE ); +# endif // free memory H5_Status = H5Tclose( H5_ArrID_3Int ); @@ -1094,6 +1099,11 @@ void SetHDF5Info( hid_t &H5_FileID ) Info.Unit_D = (WithUnit) ? Unit_D : 1.0; Info.Unit_E = (WithUnit) ? Unit_E : 1.0; Info.Unit_P = (WithUnit) ? Unit_P : 1.0; +# if ( MODEL == ELBDM ) + const double Const_eV = 1.6021766208e-12; + const double Const_c = 2.99792458e10; + Info.ELBDM_Mass = (WithUnit) ? ELBDM_MASS*Unit_M/( Const_eV/(Const_c*Const_c) ) : ELBDM_MASS; +# endif for (int d=0; d<3; d++) { diff --git a/tool/analysis/gamer_extract_uniform/Makefile b/tool/analysis/gamer_extract_uniform/Makefile index 2c597a624c..b00c119432 100644 --- a/tool/analysis/gamer_extract_uniform/Makefile +++ b/tool/analysis/gamer_extract_uniform/Makefile @@ -15,6 +15,12 @@ SIMU_OPTION += -DMODEL=HYDRO # double precision #SIMU_OPTION += -DFLOAT8 +# double precision for particle floating-point attributes +#SIMU_OPTION += -DFLOAT8_PAR + +# long integer for particle integer attributes +SIMU_OPTION += -DINT8_PAR + # enable OpenMP parallelization SIMU_OPTION += -DOPENMP diff --git a/tool/config/set_settings.sh b/tool/config/set_settings.sh new file mode 100644 index 0000000000..69387c766b --- /dev/null +++ b/tool/config/set_settings.sh @@ -0,0 +1,296 @@ +#!/bin/bash + +################### DEFINE KEYS ################### +# The keys can not contain spaces or start with `-` +declare -A KEY_DESCRIPTIONS +KEY_DESCRIPTIONS=( + ["machine"]="Specify the machine name" +) +################################################### + +#################### UTILITIES #################### + +# List of valid keys +VALID_KEYS=("${!KEY_DESCRIPTIONS[@]}") + +# For padding keys with trailing spaces to format output +MAX_KEY_LENGTH=0 +for key in "${VALID_KEYS[@]}"; do + if [ ${#key} -gt $MAX_KEY_LENGTH ]; then + MAX_KEY_LENGTH=${#key} + fi +done + +# Print keys in a formatted way +print_key() { + # $1 : the key name + # $2 : the key value or additional message + # $3 : indent number (optional, default 0) + printf "%${3}s" "" + printf "%-${MAX_KEY_LENGTH}s %s\n" "$1" "$2" +} + +show_valid_keys() { + echo "Valid keys and their functionalities:" + for key in "${!KEY_DESCRIPTIONS[@]}"; do + print_key "$key" "${KEY_DESCRIPTIONS[$key]}" 2 + done +} + +show_help() { + echo "Usage:" + echo " $0 (--local | --global) [-l] --= ..." + echo " $0 (--local | --global) [-l] (-d | --delete) ..." + echo " $0 (--local | --global) (-l | --list)" + echo " $0 (-h | --help)" + echo "" + echo "Options:" + echo " --local Use local settings" + echo " --global Use global settings" + echo " --= Set a parameter" + echo " -d, --delete key Delete a parameter" + echo " --clear-all Clear all parameters" + echo " -l, --list List current settings" + echo " -h, --help Show this help message" + echo "" + show_valid_keys +} + +##################### PARSER ###################### + +# Parser parameters +LOCAL=false +GLOBAL=false +LIST=false +SET=false +DELETE=false +KEYS_PROCESSED=0 +declare -A SETTINGS +DELETE_KEYS=() + +# Parser utility functions +parse_set_parameter() { + local param="$1" + local key="${param%%=*}" + if [[ "$param" != *=* ]]; then + echo "Error: Invalid format for the key '$key'. Use --$key=." >&2 + exit 1 + fi + local value="${param#*=}" + SETTINGS["$key"]="$value" +} + +parse_delete_keys() { + KEYS_PROCESSED=0 + while [[ "$#" -gt 0 && "${1:0:1}" != "-" ]]; do + DELETE_KEYS+=("$1") + shift + KEYS_PROCESSED=$((KEYS_PROCESSED + 1)) + done +} + +# Main parser loop +while [[ "$#" -gt 0 ]]; do + if [[ "${1:0:1}" = "-" && "${1:0:2}" != "--" ]]; then # Short options + opt="${1:1}" + shift + while [[ -n "$opt" ]]; do # Possibly combined + case "${opt:0:1}" in + l) LIST=true ;; + h) show_help; exit 0 ;; + d) + DELETE=true + # Put the remaining combined short options back to the argument list + # Warning: This method will only apply if all other options are not order sensitive + if [[ -n "${opt:1}" ]]; then + set -- "$@" "-$(echo "${opt:1}" | tr -d 'd')" + fi + parse_delete_keys "$@" + shift $KEYS_PROCESSED + break ;; + *) + echo "Error: Unknown option: -${opt:0:1}" >&2 + printf "$(show_help)\n" >&2 + exit 1 ;; + esac + opt="${opt:1}" + done + else # Long options + case $1 in + --local) + LOCAL=true + SETTING_TYPE="local" + SETTING_FILE="../../src/.local_settings" + shift ;; + --global) + GLOBAL=true; + SETTING_TYPE="global" + SETTING_FILE="$HOME/.config/gamer/global_settings" + shift ;; + --list) LIST=true; shift ;; + --help) show_help; exit 0 ;; + --delete) + DELETE=true + shift + parse_delete_keys "$@" + shift $KEYS_PROCESSED ;; + --clear-all) + DELETE=true + DELETE_KEYS=("${VALID_KEYS[@]}") # Set DELETE_KEYS to all valid keys + shift ;; + --*) + SET=true + parse_set_parameter "${1#--}" + shift ;; + *) + echo "Error: Unknown option: $1" >&2 + printf "$(show_help)\n" >&2 + exit 1 ;; + esac + fi +done + +############### VALIDATE PARAMETERS ############### + +# Ensure at least one operation is specified +if [ "$SET" = false ] && [ "$DELETE" = false ] && [ "$LIST" = false ]; then + echo "Error: Specify at least one operation." >&2 + printf "$(show_help)\n" >&2 + exit 1 +fi + +# Validate the keys and values for setting +if [ "$SET" = true ]; then + for key in "${!SETTINGS[@]}"; do + if [[ ! " ${VALID_KEYS[@]} " =~ " $key " ]]; then + echo "Error: Invalid key '$key'." >&2 + printf "$(show_valid_keys)\n" >&2 + exit 1 + fi + if [[ -z "${SETTINGS[$key]}" ]]; then + echo "Error: The value for the key '$key' cannot be empty. Use --$key=." >&2 + exit 1 + fi + if [[ "${SETTINGS[$key]}" =~ \ ]]; then + echo "Error: The value for the key '$key' cannot contain spaces." >&2 + exit 1 + fi + done +fi + +# Ensure mutually exclusive operations +if [ "$SET" = true ] && [ "$DELETE" = true ]; then + echo "Error: Cannot set and delete parameters at the same time." >&2 + exit 1 +fi + +# Validate the keys for deletion +if [ "$DELETE" = true ]; then + if [ ${#DELETE_KEYS[@]} -eq 0 ]; then + echo "Error: No keys specified for deletion." >&2 + exit 1 + fi + for key in "${DELETE_KEYS[@]}"; do + if [[ ! " ${VALID_KEYS[@]} " =~ " $key " ]]; then + echo "Error: Invalid key '$key' for deletion." >&2 + printf "$(show_valid_keys)\n" >&2 + exit 1 + fi + done +fi + +# Ensure either --local or --global is specified +if [ "$LOCAL" = true ] && [ "$GLOBAL" = true ]; then + echo "Error: Cannot specify both --local and --global." >&2 + exit 1 +elif [ "$LOCAL" = false ] && [ "$GLOBAL" = false ]; then + echo "Error: Specify either --local or --global." >&2 + exit 1 +fi + +################ LOAD SETTINGS FILE ############### + +cd "$(dirname "$0")" + +# Load if the settings file exists +declare -A EXISTING_SETTINGS +if [ -f "$SETTING_FILE" ]; then + while read -r LINE; do + [[ "$LINE" =~ ^#.*$ ]] && continue + key="$(echo "$LINE" | awk '{print $1}')" + value="$(echo "$LINE" | awk '{print $2}')" + EXISTING_SETTINGS["$key"]="$value" + done < "$SETTING_FILE" +fi + +################# UPDATE SETTINGS ################# + +# The head of the list +if [ "$LIST" = true ]; then # Header for listing settings + echo "$SETTING_TYPE settings in $SETTING_FILE" + echo "---------------------------" +fi + +# Main loop to update or delete settings +for key in "${VALID_KEYS[@]}"; do + old_value="${EXISTING_SETTINGS[$key]}" + new_value="${SETTINGS[$key]}" + + if [ "$SET" = true ] && [ -n "$new_value" ]; then # The key will be set + + EXISTING_SETTINGS["$key"]="$new_value" # Update or set new value + if [ "$LIST" = true ]; then + if [ -z "$old_value" ]; then + print_key "$key" "$new_value (new)" + else + print_key "$key" "$old_value -> $new_value" + fi + fi + + elif [ "$DELETE" = true ] && [[ " ${DELETE_KEYS[@]} " =~ " $key " ]]; then # The key will be deleted + + unset EXISTING_SETTINGS["$key"] # Delete the key + if [ "$LIST" = true ] && [ -n "$old_value" ]; then + print_key "$key" "$old_value -> (deleted)" + fi + + elif [ "$LIST" = true ] && [ -n "$old_value" ]; then # List the existing settings + print_key "$key" "$old_value" + fi +done +[ "$LIST" = true ] && echo "---------------------------" + +################ SAVE SETTINGS FILE ############### + +if [ "$SET" = true ] || [ "$DELETE" = true ]; then + + # Create the directory and the settings file if it doesn't exist + dir="$(dirname "$SETTING_FILE")" + if [ ! -d "$dir" ]; then + mkdir -p "$dir" + echo "Created directory $dir." + fi + if [ ! -f "$SETTING_FILE" ]; then + if touch "$SETTING_FILE"; then + echo "Created file $(basename "$SETTING_FILE") in $dir." + else + echo "Fatal: Failed to create file $(basename "$SETTING_FILE") in $dir." >&2 + exit 1 + fi + fi + + # Write updated settings to file + { + echo "# GAMER setting file" + for key in "${!EXISTING_SETTINGS[@]}"; do + print_key "${key}" "${EXISTING_SETTINGS[$key]}" + done + } > "$SETTING_FILE" + + # Check if writing to file was successful + if [ $? -ne 0 ]; then + echo "Fatal: Failed to write to '$SETTING_FILE'." >&2 + exit 1 + fi + echo "Successfully updated $SETTING_TYPE settings." +fi diff --git a/tool/inits/create_PAR_IC.cpp b/tool/inits/create_PAR_IC.cpp new file mode 100644 index 0000000000..b51120733b --- /dev/null +++ b/tool/inits/create_PAR_IC.cpp @@ -0,0 +1,67 @@ +#include + +//#define FLOAT8_PAR +#define INT8_PAR + + + +#ifdef FLOAT8_PAR +typedef double real_par; +#else +typedef float real_par; +#endif + +#ifdef INT8_PAR +typedef long long_par; +#else +typedef int long_par; +#endif + + +int main() +{ + + const int NUM_PARTICLE = 20000; + const int NUM_ATTRIBUTE_FLT = 7; + const int NUM_ATTRIBUTE_INT = 1; + const bool PAR_IC_ID_ATT = true; // data format of PAR_IC: (true: [id][attribute], false: [attribute][id]; row-major) + + real_par (*ParIC_Flt)[NUM_PARTICLE] = new real_par [NUM_ATTRIBUTE_FLT][NUM_PARTICLE]; + long_par (*ParIC_Int)[NUM_PARTICLE] = new long_par [NUM_ATTRIBUTE_INT][NUM_PARTICLE]; + + for (int p=0; p eps * mp.norm(a) and counter < maxiter: \n", + " delta = Minv * r\n", + " a = a - delta \n", + " r = M * a - f.T\n", + " counter += 1\n", + " return a\n", + "\n", + " def computeExtension(self, x, g, Gamma, Delta, d, mode, f):\n", + " M = self.getM(g, Gamma, Delta, d, mode)\n", + " Minv = self.invertComplexM(M, 0) \n", + " a = self.iterativeRefinement(M, Minv, f) \n", + " frec = self.reconstruct(x, a, g, Gamma, Delta, d, mode)\n", + " return frec\n", + " \n", + " def debug(self):\n", + " fig, axs = plt.subplots(self.m, 2, figsize=(3.54*2, 3.54*4), dpi=100) \n", + " fig.suptitle(\"Reproduce figure 5.2 in Mark Lyon's thesis\")\n", + "\n", + " for i, (ybasis, yrec) in enumerate(zip(self.evenbasis, self.evenfrecs)): \n", + " axs[i,0].plot(self.xeval, ybasis, lw = 5)\n", + " y = np.array([mp.re(yrec[i]) for i in range(len(yrec))])\n", + " axs[i,0].plot(self.xext, y)\n", + " for i, (ybasis, yrec) in enumerate(zip(self.oddbasis, self.oddfrecs)): \n", + " axs[i,1].plot(self.xeval, ybasis, lw = 5)\n", + " y = np.array([mp.re(yrec[i]) for i in range(len(yrec))])\n", + " axs[i,1].plot(self.xext, y)\n", + " plt.show()\n", + "\n", + " fig, axs = plt.subplots(self.m, 2, figsize=(3.54*2, 3.54*4), dpi=200) \n", + " fig.suptitle(\"Verify that imaginary parts are zero up to double precision\")\n", + " for i, (ybasis, yrec) in enumerate(zip(self.evenbasis, self.evenfrecs)): \n", + " y = [mp.im(yrec[i]) for i in range(len(yrec))]\n", + " axs[i,0].plot(self.xext, y)\n", + " for i, (ybasis, yrec) in enumerate(zip(self.oddbasis, self.oddfrecs)): \n", + " y = [mp.im(yrec[i]) for i in range(len(yrec))]\n", + " axs[i,1].plot(self.xext, y)\n", + " plt.show()\n", + "\n", + " print(\"Verify how well the Gram polynomials are approximated in the new basis...\\n\")\n", + " \n", + " xtest = mp.linspace(1 - self.Delta, 1, 900) \n", + " r = self.m \n", + " mode = self.M_EVEN_K\n", + " evenerrors = []\n", + " for i in range(r): \n", + " yeval = self.rgs.evaluateBasis(xtest, i)\n", + " frec = self.reconstruct(xtest, self.evencoeffs[i], self.g, self.Gamma, self.Delta, self.d, mode)\n", + " y = np.array([mp.re(frec[i]) for i in range(len(frec))])\n", + " evenerrors.append(mp.norm(yeval - frec, p = mp.inf))\n", + " plt.title(f\"Even error {np.float(evenerrors[-1]):1.1e}\")\n", + " plt.plot(xtest, yeval, label=f\"{i} even\")\n", + " plt.plot(xtest, y, label=f\"{i} even\")\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " mode = self.M_ODD_K\n", + " odderrors = []\n", + " for i in range(r): \n", + " yeval = self.rgs.evaluateBasis(xtest, i)\n", + " frec = self.reconstruct(xtest, self.oddcoeffs[i], self.g, self.Gamma, self.Delta, self.d, mode)\n", + " y = np.array([mp.re(frec[i]) for i in range(len(frec))])\n", + " odderrors.append(mp.norm(yeval - frec, p = mp.inf))\n", + " plt.title(f\"Odd error {np.float(odderrors[-1]):1.1e}\")\n", + " plt.plot(xtest, yeval, label=f\"{i} even\")\n", + " plt.plot(xtest, y, label=f\"{i} even\")\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " for i in range(r): \n", + " print(f\"f{i}_even: {evenerrors[i]} f{i}_odd: {odderrors[i]}\")\n", + "\n", + "class GramFEFixedSizeExtension: \n", + "\n", + " def __init__(self, N, m, nDelta, nd, Gamma, g): \n", + " self.N = N \n", + "\n", + " # compute accurate Gram-Fourier extension\n", + " extension = SVDFourierExtension(m, nDelta, nd, Gamma, g)\n", + " self.extension = extension \n", + "\n", + " # size of extension \n", + " nExt = nd - 2\n", + "\n", + " # matrix with left and right Gram polynomials \n", + " # Pb = np.block([[Pl, np.zeros((nDelta, nDelta))], [np.zeros((nDelta, nDelta)), Pr]])\n", + " Pb = mp.zeros(2*m, 2*nDelta) \n", + " for i in range(m):\n", + " for j in range(nDelta): \n", + " Pb[i, j ] = extension.Pl[i, j]\n", + " Pb[i + m, j + nDelta] = extension.Pr[i, j]\n", + "\n", + " # matrix that combines left and right Gram polynomials to get even and odd extensions\n", + " # mix = np.block([[np.identity(nDelta) * 0.5, np.identity(nDelta) * 0.5], [np.identity(nDelta) * (-0.5), np.identity(nDelta) * 0.5]])\n", + " Shuffle = mp.zeros(2*m) \n", + " for i in range(m):\n", + " Shuffle[i , i ] = +mp.mpf(1)/mp.mpf(2)\n", + " Shuffle[i , i + m] = +mp.mpf(1)/mp.mpf(2)\n", + " Shuffle[i + m, i ] = -mp.mpf(1)/mp.mpf(2)\n", + " Shuffle[i + m, i + m] = +mp.mpf(1)/mp.mpf(2)\n", + "\n", + " # matrix that combines left and right extensions \n", + " # Fb = np.transpose(np.concatenate([Fe, Fo], axis=0))\n", + " # Fe = F[:nDelta, nDelta:nDelta + nd - 2]\n", + " # Fo = F[nDelta:, nDelta:nDelta + nd - 2]\n", + "\n", + " Fb = mp.matrix(nExt, 2 * m)\n", + " for i in range(nExt):\n", + " for j in range(m): \n", + " Fb[i, j ] = extension.F[j , nDelta + i]\n", + " Fb[i, j + m] = extension.F[j + m, nDelta + i]\n", + "\n", + " # matrix that maps the input function to the extended domain \n", + " #extendWavefunction = np.block([[np.identity(N)],\n", + " # [np.identity(nDelta), np.zeros((nDelta, N - nDelta))],\n", + " # [np.zeros((nDelta, N - nDelta)), np.identity(nDelta)]]\n", + " # )\n", + " extendWavefunction = mp.zeros(N + 2 * nDelta, N)\n", + " for i in range(N):\n", + " extendWavefunction[i,i] = 1\n", + "\n", + " for i in range(nDelta):\n", + " extendWavefunction[N + i, i] = 1\n", + " extendWavefunction[N + nDelta + i, N - nDelta + i] = 1\n", + "\n", + " # matrix that maps left and right boundary to extension\n", + " self.boundary2Extension = Fb * Shuffle * Pb \n", + " self.numpyboundary2Extension = np.array(self.boundary2Extension.tolist(), dtype=np.complex256).reshape(nExt, 2*nDelta).astype(np.float128)\n", + " self.numpyboundary2Extension.tofile(f\"boundary2extension_tables/nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin\")\n", + "\n", + " self.nExtended = N + nExt\n", + "\n", + " # matrix that maps the input function to the extended wave function \n", + " #computeExtension = np.block([[np.identity(N), np.zeros((N, 2*nDelta))],\n", + " # [np.zeros((nd - 2, N)), transform]])\n", + " computeExtension = mp.zeros( N + nExt, N + 2*nDelta )\n", + " for i in range(N):\n", + " computeExtension[i, i] = 1\n", + " for i in range(nExt):\n", + " for j in range(2 * nDelta):\n", + " computeExtension[N + i, N +j] = self.boundary2Extension[i, j]\n", + "\n", + " self.computeExtension = computeExtension @ extendWavefunction\n", + " self.numpyComputeExtension = np.array(self.computeExtension.tolist(), dtype=np.complex256).reshape(self.nExtended, self.N).astype(np.float128)\n", + " self.numpyComputeExtension.tofile(f\"extension_tables/N={self.N}_nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin\")\n", + "\n", + " # matrix that computes FFT \n", + " self.computeFFT = self.dftmat(self.nExtended)\n", + " self.numpyFFTMatrix = np.array(self.computeFFT.tolist(), dtype=np.complex256).reshape(self.nExtended, self.nExtended)\n", + " self.numpyFFTMatrix.tofile(f\"fft_tables/N={self.nExtended}.bin\")\n", + "\n", + " # matrix that extends and computes FFT \n", + " self.computeExtendedFFT = self.computeFFT * self.computeExtension\n", + " self.numpyComputeExtensionFFT = np.array(self.computeExtendedFFT.tolist(), dtype=np.complex256).reshape(self.nExtended, self.N)\n", + " self.numpyComputeExtensionFFT.tofile(f\"extension_tables/FFT_N={self.N}_nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin\")\n", + "\n", + " # matrix that computes inverse FFT \n", + " self.computeIFFT = self.idftmat(self.nExtended)\n", + " self.numpyIFFTMatrix = np.array(self.computeIFFT.tolist(), dtype=np.complex256).reshape(self.nExtended, self.nExtended)\n", + " self.numpyIFFTMatrix.tofile(f\"ifft_tables/N={self.nExtended}.bin\")\n", + "\n", + " def dftmat(self, N):\n", + " M = mp.matrix(N, N)\n", + " for i in range(N):\n", + " for j in range(N): \n", + " M[i, j] = mp.exp(-2j * mp.pi * i * j / N)\n", + " \n", + " return M\n", + " \n", + " def idftmat(self, N):\n", + " M = mp.matrix(N, N)\n", + " for i in range(N):\n", + " for j in range(N): \n", + " M[i, j] = mp.exp(+2j * mp.pi * i * j / N) / N\n", + "\n", + " return M\n", + " \n", + " def debug(self, func = lambda x: np.sin(10 * x)): \n", + " f = func(np.linspace(0, 1, self.N))\n", + " fext = self.numpyComputeExtension @ f\n", + " plt.title(\"x-space\") \n", + " plt.plot(f, label=\"f\")\n", + " plt.plot(fext, label=\"periodic extension of f\") \n", + " plt.legend()\n", + " plt.show() \n", + "\n", + " fhat1 = scipy.fft.fft(fext) \n", + " fhat2 = self.numpyComputeExtensionFFT @ f\n", + "\n", + " plt.title(\"k-space\")\n", + " plt.loglog(np.abs(fhat1), label=\"Scipy FFT\") \n", + " plt.loglog(np.abs(fhat2), label=\"Matrix FFT\")\n", + " plt.legend()\n", + " plt.show() \n", + "\n", + " print(f\"Difference between f and inverse f: {np.mean(np.abs((self.numpyIFFTMatrix @ fhat2)[:len(f)] - f))}\")\n", + " \n", + "\n", + "class GramFEInterpolation: \n", + "\n", + " def __init__(self, N, m, nDelta, nd, Gamma, g): \n", + " self.N = N \n", + " self.m = m \n", + " self.nDelta = nDelta\n", + " self.nd = nd \n", + " self.Gamma = Gamma \n", + " self.g = g \n", + "\n", + " # compute accurate Gram-Fourier extension\n", + " self.extension = GramFEFixedSizeExtension(N, m, nDelta, nd, Gamma, g)\n", + "\n", + " # matrix that evaluates extended input function in k-space at the interpolation points xx \n", + " xend = 1 * ((N - 1) / (self.extension.nExtended))\n", + " dx = xend / (N - 1)\n", + " xx = mp.linspace(mp.mpf(3)/mp.mpf(4) * dx, xend - mp.mpf(3)/mp.mpf(4) * dx , 2 * (N - 2))\n", + " computeInterpolation = self.computeInterpolationMatrix(self.extension.nExtended, xx)\n", + "\n", + "\n", + " # matrix that maps the input function of size N to the 2 * (N - 2) interpolated values (requires a ghost boundary of at least one)\n", + " self.interpolationMatrix = computeInterpolation @ self.extension.computeFFT @ self.extension.computeExtension\n", + " self.numpyInterpolationMatrix = np.array(self.interpolationMatrix.tolist(), dtype=complex).reshape(2 * (N - 2), N).astype(float)\n", + " self.numpyInterpolationMatrix.tofile(f\"interpolation_tables/N={N}_m={m}_nDelta={nDelta}_nd={nd}_Gamma={Gamma}_g={g}.bin\")\n", + "\n", + "\n", + "\n", + " def computeInterpolationMatrix(self, N, xarray): \n", + " N1 = len(xarray)\n", + " M = mp.matrix(N1, N)\n", + " for i in range(N1): \n", + " for j in range(N):\n", + " if j < N/2 + 1:\n", + " kn = j \n", + " else: \n", + " kn = j - N \n", + " M[i, j] = mp.exp(2j * mp.pi * xarray[i] * kn) / N\n", + " return M \n", + " \n", + " def debug(self, func = lambda x: np.sin(10 * x)):\n", + "\n", + " # Generate the x values at which to sample the function\n", + " x = np.linspace(0, 1, self.N)\n", + " dx = x[1]-x[0]\n", + "\n", + " # Evaluate the function at the sample points\n", + " y = func(x)\n", + "\n", + " dx = 1/(self.N - 1) \n", + " xx = np.linspace(0.75 * dx, 1 - 0.75*dx, 2 * (self.N - 2))\n", + " \n", + " # Compute the FFT of the function\n", + " interp = self.numpyInterpolationMatrix @ y \n", + "\n", + "\n", + " # Print the interpolated value\n", + " plt.title(\"Gram interpolation routine\")\n", + " plt.plot(x,func(x),'-', label=\"Original\")\n", + " plt.plot(xx, interp, label=\"Interpolated\")\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " plt.title(\"Interpolation error\")\n", + " plt.yscale(\"log\")\n", + " plt.plot(xx, np.abs(interp-func(xx)),'.')\n", + " plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compute SVD extensions" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SVD: nd = 26 m = 14\n", + "SVD: nd = 28 m = 14\n", + "SVD: nd = 30 m = 14\n", + "SVD: nd = 32 m = 14\n", + "SVD: nd = 34 m = 14\n" + ] + } + ], + "source": [ + "\n", + "#### DEFAULT PARAMS\n", + "# m = 14\n", + "# nDelta = 14\n", + "# nd = 34\n", + "# Gamma = 150\n", + "# g = 63\n", + "####################\n", + "\n", + "Gamma = 150\n", + "g = 63\n", + "nDelta = 14\n", + "m = 14\n", + "for nd in range(26, 36, 2): \n", + " print(f\"SVD: nd = {nd} m = {m}\")\n", + " svdext = SVDFourierExtension(m, nDelta, nd, Gamma, g) \n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Demonstrate debugging features" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_113239/44383384.py:407: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " self.numpyComputeExtension = np.array(self.computeExtension.tolist(), dtype=np.complex128).reshape(self.nExtended, self.N).astype(np.float128)\n", + "/tmp/ipykernel_113239/44383384.py:484: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " self.numpyInterpolationMatrix = np.array(self.interpolationMatrix.tolist(), dtype=complex).reshape(2 * (N - 2), N).astype(float)\n" + ] + } + ], + "source": [ + "N = 16\n", + "gramfeint = GramFEInterpolation(N, 5, 8, 26, Gamma, g)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Debug Gram orthogonalisation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gramfeint.extension.extension.debug()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Debug SVD continuation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gramfeint.extension.debug()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Debug interpolation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gramfeint.debug()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compute SVD interpolation objects" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Gamma = 150\n", + "g = 63\n", + "nd = 32\n", + "m = 14 \n", + "# Let polynomial order be size of interpolation domain up to N = 14\n", + "for N in range(3, 15): \n", + " print(f\"SVD: N = {N}\")\n", + " svdext = GramFEInterpolation(N, N, N, nd, Gamma, g)\n", + " \n", + "# Keep polynomial order fixed for larger domain sizes for stability \n", + "for N in range(15, 33): \n", + " print(f\"SVD: N = {N}\")\n", + " svdext = GramFEFixedSizeExtension(N, m, m, nd, Gamma, g) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_6248/2373660462.py:393: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " self.numpyboundary2Extension = np.array(self.boundary2Extension.tolist(), dtype=np.complex256).reshape(nExt, 2*nDelta).astype(np.float128)\n", + "/tmp/ipykernel_6248/2373660462.py:409: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " self.numpyComputeExtension = np.array(self.computeExtension.tolist(), dtype=np.complex256).reshape(self.nExtended, self.N).astype(np.float128)\n" + ] + } + ], + "source": [ + "for N in [32, 48, 64]: \n", + " for nd in [34]: \n", + " for nDelta in [14]: \n", + " for m in [14]:\n", + " Gamma = 150\n", + " g = 63\n", + " GramFEFixedSizeExtension(N, m, nDelta, nd, Gamma, g) " + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create header files for GAMER" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create GramFE_ExtensionTables.h" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt \n", + "import numpy as np \n", + "import scipy\n", + "\n", + "def printCMatrix(mat, name, arraysize, file):\n", + " n, m = mat.shape \n", + "\n", + " print(f\"const static __float128 {name}[{arraysize}] = \", end=\"\", file=file)\n", + " print(\"{\", file=file)\n", + " for i in range(n):\n", + " print(\"\", end=\"\", file=file)\n", + " for j in range(m):\n", + " print(f\"{np.real(mat[i,j]):35.35e}q, {np.imag(mat[i,j]):35.35e}q\", end=\"\", file=file)\n", + " if j != m - 1:\n", + " print(\", \", end=\"\", file=file)\n", + " \n", + "\n", + " print(\"\", end=\",\\n\", file=file) \n", + " print(\"}\", end=\";\\n\", file=file) \n", + "\n", + "def printRMatrix(mat, name, arraysize1, arraysize2, file):\n", + " n, m = mat.shape \n", + "\n", + " print(f\"GPU_DEVICE_VARIABLE const static gramfe_fft_float {name}[{arraysize1}][{arraysize2}] = \", end=\"\", file=file)\n", + " print(\"{\", file=file)\n", + " for i in range(n):\n", + " print(\"{\", end=\"\", file=file)\n", + " for j in range(m):\n", + " print(f\"{mat[i,j]:35.35e}\", end=\"\", file=file)\n", + " if j != m - 1:\n", + " print(\", \", end=\"\", file=file)\n", + " \n", + "\n", + " print(\"}\", end=\",\\n\", file=file) \n", + " print(\"}\", end=\";\\n\", file=file) \n", + "\n", + "with open(\"GramFE_ExtensionTables.h\", \"w\") as f:\n", + "\n", + " print(\n", + " r\"\"\"\n", + "\n", + "# ifndef __GRAM_EXTENSION_TABLES_H__\n", + "# define __GRAM_EXTENSION_TABLES_H__\n", + "\n", + "# include \"CUFLU.h\"\n", + "# include \"Macro.h\"\n", + "\n", + "# if ( MODEL == ELBDM && WAVE_SCHEME == WAVE_GRAMFE )\n", + "\n", + "\n", + "// **********************************************************************************************************\n", + "// ** Precomputed (at least) double precision values of Gram polynomials and their periodic Fourier **\n", + "// ** extensions as used in the Gram-Fourier extension algorithm. **\n", + "// ** For FFT algorithm: **\n", + "// ** GRAMFE_NDELTA = 14 **\n", + "// ** GRAMFE_ND = 24, 26, 28, 30, 32 **\n", + "// ** GRAMFE_ORDER = GRAMFE_ORDER **\n", + "// ** **\n", + "// ** For matrix multiplication algorithm: **\n", + "// ** PATCH_SIZE = 8, 16, 32 **\n", + "// ** GRAMFE_NDELTA = 14 **\n", + "// ** GRAMFE_ND = 32 **\n", + "// ** GRAMFE_ORDER = 14 **\n", + "// **********************************************************************************************************\n", + "\n", + "# if ( GRAMFE_SCHEME == GRAMFE_MATMUL )\n", + "\n", + "\"\"\", file=f)\n", + "\n", + "\n", + "\n", + " N = 32 \n", + " g = 63 \n", + " Gamma = 150 \n", + " first = 1\n", + " nD = 14 \n", + " nd = 34\n", + " ghostBoundary = 8\n", + "\n", + " for N in [32, 48]: \n", + " for nd in [34]: \n", + " nExtension = N + nd - 2 \n", + " for nDelta in [14]: \n", + " for m in [14]:\n", + " nD = nDelta\n", + " extendandfft = np.fromfile(f\"extension_tables/FFT_N={N}_nD={nD}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin\", dtype=np.complex256).reshape((nExtension, N))\n", + " extend = np.fromfile(f\"extension_tables/N={N}_nD={nD}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin\", dtype=np.float128).reshape(nExtension, N)\n", + " fft = np.fromfile(f\"fft_tables/N={nExtension}.bin\", dtype=np.complex256).reshape((nExtension, nExtension))\n", + " ifft = np.fromfile(f\"ifft_tables/N={nExtension}.bin\", dtype=np.complex256).reshape((nExtension, nExtension))[ghostBoundary:N-ghostBoundary, :]\n", + "\n", + " if first: \n", + " print(f\"\\n# if (PATCH_SIZE == {int(N/2) - 8} && GRAMFE_ND == {nd - 2} && GRAMFE_NDELTA == {nD} && GRAMFE_ORDER == {m})\\n\", file=f)\n", + " first = 0\n", + " else:\n", + " print(f\"\\n# elif (PATCH_SIZE == {int(N/2) - 8} && GRAMFE_ND == {nd - 2} && GRAMFE_NDELTA == {nD} && GRAMFE_ORDER == {m})\\n\", file=f)\n", + "\n", + " printCMatrix( fft, \"GramFE_FFT\", \"2 * GRAMFE_FLU_NXT * GRAMFE_FLU_NXT\", file=f)\n", + " printCMatrix(ifft, \"GramFE_IFFT\", \"2 * PS2 * GRAMFE_FLU_NXT\", file=f)\n", + " printCMatrix(extend, \"GramFE_Extend\", \"2 * GRAMFE_FLU_NXT * FLU_NXT\", file=f)\n", + " print(\n", + " r\"\"\"# else\n", + "# error: ERROR : Unsupported fixed size Gram extension\n", + "# endif\n", + "\n", + "#elif ( GRAMFE_SCHEME == GRAMFE_FFT )\n", + "\"\"\", file=f) \n", + "\n", + "\n", + " g = 63 \n", + " Gamma = 150 \n", + " first = 1\n", + " for nD in [14]:\n", + " for nd in [26, 28, 30, 32, 34]:\n", + "\n", + "\n", + " F = np.fromfile(f\"extension_tables/F_nD={nD}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin\", dtype=np.float128).reshape(nD * 2, 2 * nD + 2 * nd - 4) \n", + " Fe = F[:nD, nD:nD + nd - 2]\n", + " Fo = F[nD:, nD:nD + nd - 2]\n", + "\n", + "\n", + " if first: \n", + " print(f\"\\n# if (GRAMFE_NDELTA == {nD} && GRAMFE_ND == {nd - 2})\\n\", file=f)\n", + " first = 0\n", + " else:\n", + " print(f\"\\n# elif (GRAMFE_NDELTA == {nD} && GRAMFE_ND == {nd - 2})\\n\", file=f)\n", + "\n", + "\n", + " printRMatrix(Fe, \"Fe\", \"GRAMFE_NDELTA\", \"GRAMFE_ND\", file=f)\n", + " print(\"\", file=f)\n", + " printRMatrix(Fo, \"Fo\", \"GRAMFE_NDELTA\", \"GRAMFE_ND\", file=f)\n", + " print(\"\", file=f)\n", + "\n", + " print(\n", + " r\"\"\"# else\n", + "# error: ERROR : Unsupported Gram Fourier Extension\n", + "# endif\"\"\", file=f)\n", + "\n", + " first = 1\n", + "\n", + " for nD in [14]:\n", + " m = nD \n", + " Pl = np.fromfile(f\"polynomial_tables/Pleft_m={m}_nD={nD}.bin\", dtype=np.float128).reshape(m, nD) \n", + " Pr = np.fromfile(f\"polynomial_tables/Pright_m={m}_nD={nD}.bin\", dtype=np.float128).reshape(m, nD) \n", + "\n", + " if first: \n", + " print(f\"\\n# if (GRAMFE_NDELTA == {nD} && GRAMFE_ORDER == {m})\\n\", file=f)\n", + " first = 0\n", + " else:\n", + " print(f\"\\n# elif (GRAMFE_NDELTA == {nD} && GRAMFE_ORDER == {m})\\n\", file=f)\n", + "\n", + " printRMatrix(Pl, \"Pl\", \"GRAMFE_ORDER\", \"GRAMFE_NDELTA\", file=f)\n", + " print(\"\", file=f)\n", + " printRMatrix(Pr, \"Pr\", \"GRAMFE_ORDER\", \"GRAMFE_NDELTA\", file=f)\n", + " print(\n", + " r\"\"\"# else\n", + "# error: ERROR : Unsupported Gram Polynomial\n", + "# endif\"\"\", file=f) \n", + "\n", + "\n", + "\n", + "\n", + " print(\n", + " r\"\"\"\n", + "# endif // # GRAMFE_SCHEME\n", + "# endif // # if ( WAVE_SCHEME == WAVE_GRAMFE )\n", + "# endif // # ifndef __GRAM_EXTENSION_TABLES_H__\"\"\", file=f)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create GramInterpolationTables.h" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt \n", + "import numpy as np \n", + "import scipy\n", + "\n", + "\n", + "def printCMatrix(mat, name, f):\n", + " n, m = mat.shape \n", + "\n", + " print(f\"\\t\\t\\t\\treturn new double[{n*m}]\", file=f)\n", + " print(\"\\t\\t\\t\\t\\t{\", file=f)\n", + " for i in range(n):\n", + " print(\"\\t\\t\\t\\t\\t\", end=\"\", file=f)\n", + " for j in range(m):\n", + " print(f\"{mat[i,j]:10.17f}\", end=\"\", file=f)\n", + " if j != m - 1:\n", + " print(\", \", end=\"\", file=f)\n", + " \n", + "\n", + " if i != n - 1:\n", + " print(\",\", file=f) \n", + " print(\"\\n\\t\\t\\t\\t\\t}\", end=\";\\n\", file=f) \n", + "\n", + "with open(\"GramInterpolationTables.h\", \"w\") as f:\n", + "\n", + " print(\n", + " r\"\"\"\n", + " # ifndef __GRAM_INTERPOLATION_TABLES_H__\n", + " # define __GRAM_INTERPOLATION_TABLES_H__\n", + "\n", + "\n", + " # include \"CUFLU.h\"\n", + " # include \"Macro.h\"\n", + "\n", + " # ifdef SUPPORT_SPECTRAL_INT \n", + "\n", + " // **********************************************************************************************************\n", + " // ** Precomputed (at least) double precision values of interpolation tables based on Gram-Fourier **\n", + " // ** extensions for fixed input sizes N. **\n", + " // ** SUPPORTED N = {3, 64} **\n", + " // **********************************************************************************************************\n", + "\n", + " double* GramFE_GetSpectralInterpolationTable(size_t N) \n", + " {\n", + " switch(N) {\"\"\", file=f)\n", + "\n", + "\n", + " for N in range(3, 65): \n", + "\n", + " F = np.fromfile(f\"interpolation_tables/N={N}.bin\", dtype=float).reshape(2 * (N-2), N) \n", + " print(f\"\\t\\t\\tcase {N}:\", file=f)\n", + " printCMatrix(F, f\"GFEI_N{N}\", f=f)\n", + " print( \"\\t\\t\\t\\tbreak;\", file=f)\n", + " \n", + " print(\n", + " r\"\"\"\n", + " default: \n", + " Aux_Error(ERROR_INFO, \"Unsupported size of spectral interpolation table!!\\n\");\n", + " return NULL;\n", + " }\n", + " }\n", + "\n", + " # endif // # ifdef SUPPORT_SPECTRAL_INT \n", + " # endif // # ifndef __GRAM_INTERPOLATION_TABLES_H__\"\"\", file=f)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tool/table_maker/GramFE/compute_interpolation_tables.py b/tool/table_maker/GramFE/compute_interpolation_tables.py new file mode 100644 index 0000000000..e2eff543c6 --- /dev/null +++ b/tool/table_maker/GramFE/compute_interpolation_tables.py @@ -0,0 +1,620 @@ +from mpi4py import MPI + +import matplotlib.pyplot as plt +import numpy as np +import scipy +import os + +from mpmath import * + + +# This script computes the tables required for the spectral interpolation in GAMER +# +# No OpenMP parallelisation, launch with as many MPI nodes as desired, e.g. with 3 nodes and +# mpirun -map-by ppr:16:socket:pe=1 python3 compute_interpolation_tables.py +# The script takes a few hours to run and will not output any log messages during that time. +# +# Spectral interpolation for the psidm branch can be enabled +# via the compile time option SUPPORT_SPECTRAL_INT + +# The spectral interpolation algorithm requires two kinds of tables +# 1. Interpolation matrices that map an input vector of size N to an interpolated vector at 2 * (N - 2) with high accuracy +# Given a vector with values f(x_i) with x_0 = 0, x_1 = 1, x_2 = 2 and N = 3 +# Multiplication with the interpolation matrices yields an output vector with the interpolated values +# f(y_j) with y_0 = 0.75 and y_1 = 1.25 +# +# The respective tables are stored as binary files in double precision in the folder interpolation_tables +# +# 2. Tables that given an input function, compute its periodic Gram-Fourier extension +# This is because for large N, the interpolation algorithm uses a Gram FE extension at runtime and interpolates the input function using the FFT algorithm +# +# The respective tables are stored as binary files in double precision in the folder boundary2extension_tables + +mp.dps = 256 +eps = 1e-256 +comm = MPI.COMM_WORLD +rank = comm.Get_rank() +nprocs = comm.Get_size() + +base_path = "./" + +sub_directories = ["boundary2extension_tables", "interpolation_tables"] + + +if rank == 0: + try: + os.mkdir(base_path) + except OSError as error: + print(error) + + for sub_dir in sub_directories: + try: + os.mkdir(base_path + "/" + sub_dir) + except OSError as error: + print(error) + +# Make other ranks wait for rank 0 +comm.barrier() + +# Implement the Gram Schmidt orthogonalisation algorithm using mpmath +class GramSchmidt: + def __init__(self, x, m): + self.x = x + self.m = m + self.A = mp.zeros(m, len(x)) + #Linear map for polynomial scalar product + for i in range(m): + for j in range(len(x)): + #Polynomial basis {1, x, x^2, x^3, x^4, ..., x^m} + self.A[i, j] = x[j]**i + + #Write basis vector as columns of matrix V + self.V = mp.eye(m) + + self.U = self.modifiedGramSchmidt(self.V) + + def evaluateBasis(self, x, basis_element): + #Linear map for polynomial scalar product + A = mp.zeros(self.m, len(x)) + for i in range(self.m): + for j in range(len(x)): + #Polynomial basis {1, x, x^2, x^3, x^4, ..., x^m} + A[i, j] = x[j]**i + ei = self.U[:, basis_element].T * A + + return ei + + def sp(self, u, v): + return mp.fsum((u.T * self.A) * (v.T * self.A).T) + + def proj(self, u, v): + a1 = self.sp(v, u) + a2 = self.sp(u, u) + return a1/a2 * u + + def norm(self, u): + return mp.sqrt(self.sp(u, u)) + + def modifiedGramSchmidt(self, V): + n, k = V.rows, V.cols + U = V.copy() + U[:, 0] = V[:, 0] / self.norm(V[:, 0]) + + for i in range(1, k): + for j in range(i, k): + U[:, j] = U[:, j] - self.proj(U[:, i - 1], U[:, j]) + + + U[:, i] = U[:, i] / self.norm(U[:, i]) + return U + + def projectFunction(self, f): + coeffs = mp.matrix(1, self.m) + + for i in range(self.m): + basis = (self.U[:, i].T * self.A) + coeffs[0, i] = mp.fsum(f * basis.T) + + + return coeffs + + def reconstructFunction(self, coeffs, x = None): + if x == None: + A = self.A + else: + A = mp.zeros(self.m, len(x)) + for i in range(self.m): + for j in range(len(x)): + #Polynomial basis {1, x, x^2, x^3, x^4, ..., x^m} + self.A[i] = x[j]**i + + frec = mp.matrix(1, A.cols) + for i in range(self.m): + frec += coeffs[0, i] * (self.U[:, i].T * A) + return frec + + def debug(self): + m = self.m + u_ij = mp.zeros(m) + + plt.title(f"Unorthogonalised polynomials m = {m}") + for i in range(m): + plt.plot(self.x, self.V[:, i].T * self.A, label=f"x^{i}") + plt.legend() + plt.show() + + + + plt.title(f"Orthonormalised polynomials m = {m}") + for i in range(m): + plt.plot(self.x, self.U[:, i].T * self.A, label=f"{i}") + plt.legend() + plt.show() + + print("The orthonormalised polynomials and their scalar products") + for i in range(m): + for j in range(m): + u_ij[i, j] = self.sp(self.U[:, i], self.U[:, j]) + print(f"i = {i} u_ij = {u_ij[i, :]}") + +class SVDFourierExtension: + # Implement the SVD Fourier continuation algorithm using mpmath + M_ALL_K = 0 + M_EVEN_K = 1 + M_ODD_K = 2 + + def __init__(self, m, nDelta, nd, Gamma, g): + self.m = m + self.nDelta = nDelta + self.nd = nd + self.Gamma = Gamma + self.g = g + # Set up evaluation grid + self.h = 1/(nd - 1) + self.d = (nd - 1) * self.h + self.Delta = (nDelta - 1) * self.h + + x = mp.linspace(0, 1, nd) + + # Compute left and right Gram Schmidt extensions + leftBoundary = x[ :nDelta] + rightBoundary = x[-nDelta: ] + + self.lgs = GramSchmidt(leftBoundary, m) + self.rgs = GramSchmidt(rightBoundary, m) + + dxeval = self.Delta/(Gamma - 1) + self.xeval = mp.matrix(1, Gamma) + for i in range(Gamma): + self.xeval[0, i] = 1 - self.Delta + i * dxeval + + #Set up extension grid + self.xext = mp.linspace(1 - self.Delta, 1 + self.Delta + 2*self.d, 1000) + mode = self.M_EVEN_K + M = self.getM(g, Gamma, self.Delta, self.d, mode) + Minv = self.invertComplexM(M, 0) + self.evencoeffs = [] + self.evenbasis = [] + self.evenfrecs = [] + for i in range(m): + yeval = self.rgs.evaluateBasis(self.xeval, i) + a = self.iterativeRefinement(M, Minv, yeval) + frec = self.reconstruct(self.xext, a, g, Gamma, self.Delta, self.d, mode) + self.evencoeffs.append(a) + self.evenbasis.append(yeval) + self.evenfrecs.append(frec) + + + mode = self.M_ODD_K + M = self.getM(g, Gamma, self.Delta, self.d, mode) + Minv = self.invertComplexM(M, 0) + self.oddcoeffs = [] + self.oddbasis = [] + self.oddfrecs = [] + for i in range(m): + yeval = self.rgs.evaluateBasis(self.xeval, i) + a = self.iterativeRefinement(M, Minv, yeval) + frec = self.reconstruct(self.xext, a, g, Gamma, self.Delta, self.d, mode) + self.oddcoeffs.append(a) + self.oddbasis.append(yeval) + self.oddfrecs.append(frec) + + Next = 2 * nd + 2 * nDelta - 4 + xstore = mp.matrix(1, Next) + for i in range(Next): + xstore[i] = 1 - self.Delta + i * self.h + + self.F = mp.matrix(2 * m, Next) + + mode = self.M_EVEN_K + + for i in range(m): + self.F[i, :] = self.reconstruct(xstore, self.evencoeffs[i], g, Gamma, self.Delta, self.d, mode) + + mode = self.M_ODD_K + for i in range(m): + self.F[i+m, :] = self.reconstruct(xstore, self.oddcoeffs[i], g, Gamma, self.Delta, self.d, mode) + + self.Pr = mp.matrix(m, nDelta) + self.Pl = mp.matrix(m, nDelta) + for i in range(m): + self.Pr[i, :] = self.rgs.evaluateBasis(rightBoundary, i) + self.Pl[i, :] = self.lgs.evaluateBasis(leftBoundary, i) + + + #self.numpyF = np.array(self.F.apply(mp.re), dtype=np.float128).reshape(2 * m, Next) + #self.numpyF.tofile(f"{base_path}/extension_tables/F_nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin") + #self.numpyPr = np.array(self.Pr, dtype=np.float128).reshape(m, nDelta) + #self.numpyPr.tofile(f"{base_path}/polynomial_tables/Pright_m={m}_nD={nDelta}.bin") + #self.numpyPl = np.array(self.Pl, dtype=np.float128).reshape(m, nDelta) + #self.numpyPl.tofile(f"{base_path}/polynomial_tables/Pleft_m={m}_nD={nDelta}.bin") + + # Pick Fourier modes + def t(self, g, mode = M_ALL_K): + if g % 2 == 0: + k = np.arange(-int(-g/2) + 1, int(g/2) + 1) + else: + k = np.arange(-int((g-1)/2), int((g-1)/2) + 1) + + if mode == self.M_EVEN_K: + k = k[k % 2 == 0] + elif mode == self.M_ODD_K: + k = k[k % 2 == 1] + + return k * mp.mpf(1) + + # Return array for evaluation of Gram polynomials + def getX(self, Delta, Gamma): + dxeval = Delta/(Gamma - 1) + xeval = mp.matrix(1, Gamma) + for i in range(Gamma): + xeval[0, i] = 1 - Delta + i * dxeval + return xeval + + # Return array with values of plane waves at evaluation points + def getM(self, g, Gamma, Delta, d, mode): + ks = self.t(g, mode) + x = self.getX(Delta, Gamma) + M = mp.matrix(Gamma, len(ks)) + for i in range(Gamma): + for j, k in enumerate(ks): + M[i, j] = mp.exp(1j * k * np.pi / (d + Delta) * x[0, i]) + return M + + # Invert plane wave array using SVD with truncation of singular values below threshold + def invertComplexM(self, M, cutoff): + U, s, Vh = mp.svd(M) + sinv = mp.diag(s) + r = M.cols + if M.rows < M.cols: + r = M.rows + for i in range(r): + if s[i] < cutoff: + sinv[i, i] = 0 + else: + sinv[i, i] = 1/s[i] + + Vht = Vh.transpose_conj() + Ut = U.transpose_conj() + f1 = sinv * Ut + f2 = Vht * f1 + return f2 + + # Evaluate Fourier extension at point x + def reconstruct(self, x, a, g, Gamma, Delta, d, mode): + ks = self.t(g, mode) + rec = mp.matrix(1, len(x)) + for j, coeff in enumerate(a): + for i in range(len(x)): + rec[i] += coeff * mp.exp(1j * ks[j] * np.pi / (d + Delta) * x[i]) + return rec + + # Iterative refinement for SVD-based matrix inversion + def iterativeRefinement(self, M, Minv, f, threshold = 100, maxiter = 3000): + a = Minv * f.T + r = M * a - f.T + counter = 0 + while mp.norm(r) > eps * mp.norm(a) and counter < maxiter: + delta = Minv * r + a = a - delta + r = M * a - f.T + counter += 1 + return a + + def computeExtension(self, x, g, Gamma, Delta, d, mode, f): + M = self.getM(g, Gamma, Delta, d, mode) + Minv = self.invertComplexM(M, 0) + a = self.iterativeRefinement(M, Minv, f) + frec = self.reconstruct(x, a, g, Gamma, Delta, d, mode) + return frec + + def debug(self): + fig, axs = plt.subplots(self.m, 2, figsize=(3.54*2, 3.54*4), dpi=100) + fig.suptitle("Reproduce figure 5.2 in Mark Lyon's thesis") + + for i, (ybasis, yrec) in enumerate(zip(self.evenbasis, self.evenfrecs)): + axs[i,0].plot(self.xeval, ybasis, lw = 5) + y = np.array([mp.re(yrec[i]) for i in range(len(yrec))]) + axs[i,0].plot(self.xext, y) + for i, (ybasis, yrec) in enumerate(zip(self.oddbasis, self.oddfrecs)): + axs[i,1].plot(self.xeval, ybasis, lw = 5) + y = np.array([mp.re(yrec[i]) for i in range(len(yrec))]) + axs[i,1].plot(self.xext, y) + plt.show() + + fig, axs = plt.subplots(self.m, 2, figsize=(3.54*2, 3.54*4), dpi=200) + fig.suptitle("Verify that imaginary parts are zero up to double precision") + for i, (ybasis, yrec) in enumerate(zip(self.evenbasis, self.evenfrecs)): + y = [mp.im(yrec[i]) for i in range(len(yrec))] + axs[i,0].plot(self.xext, y) + for i, (ybasis, yrec) in enumerate(zip(self.oddbasis, self.oddfrecs)): + y = [mp.im(yrec[i]) for i in range(len(yrec))] + axs[i,1].plot(self.xext, y) + plt.show() + + print("Verify how well the Gram polynomials are approximated in the new basis...\n") + + xtest = mp.linspace(1 - self.Delta, 1, 900) + r = self.m + mode = self.M_EVEN_K + evenerrors = [] + for i in range(r): + yeval = self.rgs.evaluateBasis(xtest, i) + frec = self.reconstruct(xtest, self.evencoeffs[i], self.g, self.Gamma, self.Delta, self.d, mode) + y = np.array([mp.re(frec[i]) for i in range(len(frec))]) + evenerrors.append(mp.norm(yeval - frec, p = mp.inf)) + plt.title(f"Even error {np.float(evenerrors[-1]):1.1e}") + plt.plot(xtest, yeval, label=f"{i} even") + plt.plot(xtest, y, label=f"{i} even") + plt.legend() + plt.show() + + mode = self.M_ODD_K + odderrors = [] + for i in range(r): + yeval = self.rgs.evaluateBasis(xtest, i) + frec = self.reconstruct(xtest, self.oddcoeffs[i], self.g, self.Gamma, self.Delta, self.d, mode) + y = np.array([mp.re(frec[i]) for i in range(len(frec))]) + odderrors.append(mp.norm(yeval - frec, p = mp.inf)) + plt.title(f"Odd error {np.float(odderrors[-1]):1.1e}") + plt.plot(xtest, yeval, label=f"{i} even") + plt.plot(xtest, y, label=f"{i} even") + plt.legend() + plt.show() + + for i in range(r): + print(f"f{i}_even: {evenerrors[i]} f{i}_odd: {odderrors[i]}") + +class GramFEFixedSizeExtension: + + def __init__(self, N, m, nDelta, nd, Gamma, g): + self.N = N + + # compute accurate Gram-Fourier extension + extension = SVDFourierExtension(m, nDelta, nd, Gamma, g) + self.extension = extension + + # size of extension + nExt = nd - 2 + + # matrix with left and right Gram polynomials + # Pb = np.block([[Pl, np.zeros((nDelta, nDelta))], [np.zeros((nDelta, nDelta)), Pr]]) + Pb = mp.zeros(2*m, 2*nDelta) + for i in range(m): + for j in range(nDelta): + Pb[i, j ] = extension.Pl[i, j] + Pb[i + m, j + nDelta] = extension.Pr[i, j] + + # matrix that combines left and right Gram polynomials to get even and odd extensions + # mix = np.block([[np.identity(nDelta) * 0.5, np.identity(nDelta) * 0.5], [np.identity(nDelta) * (-0.5), np.identity(nDelta) * 0.5]]) + Shuffle = mp.zeros(2*m) + for i in range(m): + Shuffle[i , i ] = +mp.mpf(1)/mp.mpf(2) + Shuffle[i , i + m] = +mp.mpf(1)/mp.mpf(2) + Shuffle[i + m, i ] = -mp.mpf(1)/mp.mpf(2) + Shuffle[i + m, i + m] = +mp.mpf(1)/mp.mpf(2) + + # matrix that combines left and right extensions + # Fb = np.transpose(np.concatenate([Fe, Fo], axis=0)) + # Fe = F[:nDelta, nDelta:nDelta + nd - 2] + # Fo = F[nDelta:, nDelta:nDelta + nd - 2] + + Fb = mp.matrix(nExt, 2 * m) + for i in range(nExt): + for j in range(m): + Fb[i, j ] = extension.F[j , nDelta + i] + Fb[i, j + m] = extension.F[j + m, nDelta + i] + + # matrix that maps the input function to the extended domain + #extendWavefunction = np.block([[np.identity(N)], + # [np.identity(nDelta), np.zeros((nDelta, N - nDelta))], + # [np.zeros((nDelta, N - nDelta)), np.identity(nDelta)]] + # ) + extendWavefunction = mp.zeros(N + 2 * nDelta, N) + for i in range(N): + extendWavefunction[i,i] = 1 + + for i in range(nDelta): + extendWavefunction[N + i, i] = 1 + extendWavefunction[N + nDelta + i, N - nDelta + i] = 1 + + # matrix that maps left and right boundary to extension + self.boundary2Extension = Fb * Shuffle * Pb + self.numpyboundary2Extension = np.array(self.boundary2Extension.tolist(), dtype=np.complex256).reshape(nExt, 2*nDelta).astype(np.float128) + self.numpyboundary2Extension.tofile(f"{base_path}/boundary2extension_tables/nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin") + + self.nExtended = N + nExt + + # matrix that maps the input function to the extended wave function + #computeExtension = np.block([[np.identity(N), np.zeros((N, 2*nDelta))], + # [np.zeros((nd - 2, N)), transform]]) + computeExtension = mp.zeros( N + nExt, N + 2*nDelta ) + for i in range(N): + computeExtension[i, i] = 1 + for i in range(nExt): + for j in range(2 * nDelta): + computeExtension[N + i, N +j] = self.boundary2Extension[i, j] + + self.computeExtension = computeExtension @ extendWavefunction + #self.numpyComputeExtension = np.array(self.computeExtension.tolist(), dtype=np.complex256).reshape(self.nExtended, self.N).astype(np.float128) + #self.numpyComputeExtension.tofile(f"{base_path}/extension_tables/N={self.N}_nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin") + + # matrix that computes FFT + self.computeFFT = self.dftmat(self.nExtended) + #self.numpyFFTMatrix = np.array(self.computeFFT.tolist(), dtype=np.complex256).reshape(self.nExtended, self.nExtended) + #self.numpyFFTMatrix.tofile(f"{base_path}/fft_tables/N={self.nExtended}.bin") + + # matrix that extends and computes FFT + self.computeExtendedFFT = self.computeFFT * self.computeExtension + #self.numpyComputeExtensionFFT = np.array(self.computeExtendedFFT.tolist(), dtype=np.complex256).reshape(self.nExtended, self.N) + #self.numpyComputeExtensionFFT.tofile(f"{base_path}/extension_tables/FFT_N={self.N}_nD={nDelta}_nd={nd}_m={m}_g={g}_Gamma={Gamma}.bin") + + # matrix that computes inverse FFT + self.computeIFFT = self.idftmat(self.nExtended) + # self.numpyIFFTMatrix = np.array(self.computeIFFT.tolist(), dtype=np.complex256).reshape(self.nExtended, self.nExtended) + # self.numpyIFFTMatrix.tofile(f"{base_path}/ifft_tables/N={self.nExtended}.bin") + + def dftmat(self, N): + M = mp.matrix(N, N) + for i in range(N): + for j in range(N): + M[i, j] = mp.exp(-2j * mp.pi * i * j / N) + + return M + + def idftmat(self, N): + M = mp.matrix(N, N) + for i in range(N): + for j in range(N): + M[i, j] = mp.exp(+2j * mp.pi * i * j / N) / N + + return M + + def debug(self, func = lambda x: np.sin(10 * x)): + f = func(np.linspace(0, 1, self.N)) + fext = self.numpyComputeExtension @ f + plt.title("x-space") + plt.plot(f, label="f") + plt.plot(fext, label="periodic extension of f") + plt.legend() + plt.show() + + fhat1 = scipy.fft.fft(fext) + fhat2 = self.numpyComputeExtensionFFT @ f + + plt.title("k-space") + plt.loglog(np.abs(fhat1), label="Scipy FFT") + plt.loglog(np.abs(fhat2), label="Matrix FFT") + plt.legend() + plt.show() + + print(f"Difference between f and inverse f: {np.mean(np.abs((self.numpyIFFTMatrix @ fhat2)[:len(f)] - f))}") + + + +class GramFEInterpolation: + + def __init__(self, N, m, nDelta, nd, Gamma, g): + self.N = N + self.m = m + self.nDelta = nDelta + self.nd = nd + self.Gamma = Gamma + self.g = g + + # compute accurate Gram-Fourier extension + self.extension = GramFEFixedSizeExtension(N, m, nDelta, nd, Gamma, g) + + # matrix that evaluates extended input function in k-space at the interpolation points xx + xend = 1 * ((N - 1) / (self.extension.nExtended)) + dx = xend / (N - 1) + xx = mp.linspace(mp.mpf(3)/mp.mpf(4) * dx, xend - mp.mpf(3)/mp.mpf(4) * dx , 2 * (N - 2)) + computeInterpolation = self.computeInterpolationMatrix(self.extension.nExtended, xx) + + + # matrix that maps the input function of size N to the 2 * (N - 2) interpolated values (requires a ghost boundary of at least one) + self.interpolationMatrix = computeInterpolation @ self.extension.computeFFT @ self.extension.computeExtension + self.numpyInterpolationMatrix = np.array(self.interpolationMatrix.tolist(), dtype=complex).reshape(2 * (N - 2), N).astype(float) + self.numpyInterpolationMatrix.tofile(f"{base_path}/interpolation_tables/N={N}_m={m}_nDelta={nDelta}_nd={nd}_Gamma={Gamma}_g={g}.bin") + + + + def computeInterpolationMatrix(self, N, xarray): + N1 = len(xarray) + M = mp.matrix(N1, N) + for i in range(N1): + for j in range(N): + if j < N/2 + 1: + kn = j + else: + kn = j - N + M[i, j] = mp.exp(2j * mp.pi * xarray[i] * kn) / N + return M + + def debug(self, func = lambda x: np.sin(10 * x)): + + # Generate the x values at which to sample the function + x = np.linspace(0, 1, self.N) + dx = x[1]-x[0] + + # Evaluate the function at the sample points + y = func(x) + + dx = 1/(self.N - 1) + xx = np.linspace(0.75 * dx, 1 - 0.75*dx, 2 * (self.N - 2)) + + # Compute the FFT of the function + interp = self.numpyInterpolationMatrix @ y + + + # Print the interpolated value + plt.title("Gram interpolation routine") + plt.plot(x,func(x),'-', label="Original") + plt.plot(xx, interp, label="Interpolated") + plt.legend() + plt.show() + + plt.title("Interpolation error") + plt.yscale("log") + plt.plot(xx, np.abs(interp-func(xx)),'.') + plt.show() + + +# Fixed parameters of Gram FE algorithn +Gamma = 150 +g = 63 + +# Input sizes for interpolation tables +N_min = 4 +N_max = 32 +interpolation_table_iterations = N_max + 1 - N_min + +# Extension sizes for extension tables +nd_min = 24 +nd_max = 36 +extension_table_iterations = nd_max + 1 - nd_min + +total_iterations = interpolation_table_iterations + extension_table_iterations + +# Compute the interpolation and extension tables in parallel loop +for i in range(rank, total_iterations + 1, nprocs): + if i < interpolation_table_iterations: + N = i + N_min + nd = 32 + m = 8 + + print(f"Rank {rank}: Computing interpolation table for N = {N}") + # Let polynomial order be size of interpolation domain + if N <= m: + GramFEInterpolation(N = N, m = N, nDelta = N, nd = nd, Gamma = Gamma, g = g) + # Keep polynomial order fixed for larger domain sizes for stability + else: + GramFEInterpolation(N = N, m = m, nDelta = m, nd = nd, Gamma = Gamma, g = g) + else: + # Compute extension tables with different sizes for fast FFTs + nd = i - interpolation_table_iterations + nd_min + m = 8 + + print(f"Rank {rank}: Computing fixed extension for nd = {nd}") + # Keyword N not used for computing extension tables, 16 is placeholder + GramFEFixedSizeExtension(N = 16, m = m, nDelta = m, nd = nd, Gamma = Gamma, g = g) \ No newline at end of file diff --git a/tool/table_maker/GramFE/create_softlink.sh b/tool/table_maker/GramFE/create_softlink.sh new file mode 100644 index 0000000000..6dbcad32fd --- /dev/null +++ b/tool/table_maker/GramFE/create_softlink.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Create softlinks for interpolation tables + +# GAMER expects interpolation tables to have filenames in the format "N=i.bin" +# where i is the size of the input vector to be interpolated +# Specify the directory where your original files are located +original_directory="." + +# Specify the directory where you want to create the soft links +soft_links_directory="." + +# Create soft links for the files with the specified naming convention +for file in N=*_m=*_nDelta=*_nd=*_Gamma=*_g=*.bin; do + # Extract the value of N from the filename + n_value=$(echo "$file" | sed -n 's/.*N=\([0-9]*\)_m.*/\1/p') + + # Create a soft link with the desired naming convention + ln -f -s "$original_directory/$file" "$soft_links_directory/N=$n_value.bin" +done diff --git a/tool/wiki/sync_runtime_parameter.py b/tool/wiki/sync_runtime_parameter.py new file mode 100644 index 0000000000..d5d7f3eb91 --- /dev/null +++ b/tool/wiki/sync_runtime_parameter.py @@ -0,0 +1,216 @@ +#!/bin/python3 +""" +## What it can do + +Automatically update `doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md` +when any of the following files are changed, updated, or pushed: +- `tool/wiki/sync_runtime_parameter.py` +- `src/Init/Init_Load_Parameter.cpp` +- `example/test_problem/Template/Input__Parameter` + +## How it works + +1. Detection: + The new workflow, "Update All Parameters Wiki Page", detects changes in any of the three specified files. +2. Execution: + If changes are detected, the workflow runs the script `tool/wiki/sync_runtime_parameter.py`. +3. Update: + The script updates `doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-All.md` by creating + a new commit with the message: `[Workflow] Update all parameters wiki page`. + +## Script Algorithm + +1. Extract Parameter Names and Comments: + Retrieve all parameter names and their associated short comments from `example/test_problem/Template/Input__Parameter`. +2. Retrieve Parameter Details: + Gather the minimum, maximum, and default values of each parameter from `src/Init/Init_Load_Parameter.cpp`. +3. Link Integration: + Identify the original page links using the references placed at the top of each runtime parameter + wiki page (e.g., `[BOX_SIZE](#BOX_SIZE),  `). +4. Markdown Generation: + Compile the extracted data and generate the updated markdown file. +""" +#==================================================================================================== +# Imports +#==================================================================================================== +import re +from string import ascii_uppercase as auc + + + +#==================================================================================================== +# Global constants +#==================================================================================================== +ALL_PARAM_FILE = "../../example/input/Input__Parameter" +PARAM_CPP_FILE = "../../src/Init/Init_Load_Parameter.cpp" +LINK_FILES = [ "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Chemistry-and-Radiation.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Cosmology.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Feedback.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-GPU.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-General.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Gravity.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Hydro.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Initial-Conditions.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Interpolation.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-MPI-and-OpenMP.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Miscellaneous.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Outputs.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Particles.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Refinement.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Star-Formation.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Timestep.md", + "../../doc/wiki/Runtime-Parameters-related/Runtime-Parameters:-Units.md" + ] +OUT_MD = "Runtime-Parameters:-All.md" +REPLACE_DICT = { "NoMin_double":"None", "NoMax_double":"None", "NoDef_double":"None", + "NoMin_int":"None", "NoMax_int":"None", + "NoMin_long":"None", "NoMax_long":"None", + "NoDef_str":"None", "Useless_str":"None", + "Useless_bool":"None", + "true":"1", "false":"0", + "__DBL_MAX__":"1.79769313e+308", "Eps_double":"2.22507386e-308" + } + + + +#==================================================================================================== +# Classes +#==================================================================================================== +class parameter(): + def __init__( self, string ): + name, description = self.get_name_description( string ) + self.name = name + self.link_name = name + self.default = "" + self.minimum = "" + self.maximum = "" + self.description = description + self.NAdd = 0 + + def get_name_description( self, string ): + words = string.split() + name = words[0] + description = "" + for i in range(3, len(words)): + description += words[i] + ' ' + return name, description[:-1] + + def append_description( self, string ): + words = string.split() + self.description += "
" if self.name == "TESTPROB_ID" else ' ' + self.description += ' '.join(words[1:]) + return + + def get_link_name( self, file_dict ): + for file_name in file_dict: + search_pattern = "[%s](#%s)"%(self.name, self.name) + if search_pattern in file_dict[file_name]: + self.link_name = "[[ %s \\| %s#%s ]]"%(self.name, file_name, self.name) + return True + return False + + + +#==================================================================================================== +# Main +#==================================================================================================== +with open( ALL_PARAM_FILE, 'r' ) as f: + lines = f.readlines() + +with open( PARAM_CPP_FILE, 'r' ) as f: + lines_cpp = f.readlines() + +link_source_mds = {} +for file_path in LINK_FILES: + file_name = file_path.split('/')[-1][:-3] # get the filename without path and trailing `.md` + with open( file_path, 'r' ) as f: + link_source_mds[file_name] = f.read() + +params = {} + +# get all parameters from ALL_PARAM_FILE +# NOTE: assuming the line starts with space should be the comment of the above line +last_key = "" +for i, line in enumerate(lines): + if line[0] == '\n': continue + if line[0] == '#': continue + if line[0] == ' ': + params[last_key].append_description( line ) + continue + last_key = line.split()[0] + params[last_key] = parameter( line ) + +# get all default, min, max, and value from PARAM_CPP_FILE +for i, line in enumerate(lines_cpp): + if "ReadPara->Add" not in line: continue + words = list( filter( None, re.split( ',| ', line ) ) ) + if "//" == words[0]: continue + key = words[1][1:-1] + default = words[3] + minimum = words[4] + maximum = words[5] + + if key not in params: + print( "%-30s does not exist in %s"%(key, ALL_PARAM_FILE) ) + continue + + if params[key].NAdd >= 1: + print( "%-30s has more than one ReadPara->Add() function in %s"%(key, PARAM_CPP_FILE) ) + params[key].default = "Depend" + params[key].minimum = "Depend" + params[key].maximum = "Depend" + else: + params[key].default = REPLACE_DICT[default] if default in REPLACE_DICT else default + params[key].minimum = REPLACE_DICT[minimum] if minimum in REPLACE_DICT else minimum + params[key].maximum = REPLACE_DICT[maximum] if maximum in REPLACE_DICT else maximum + params[key].NAdd += 1 + +# get the detailed description link from LINK_FILES +for p in params: + status = params[p].get_link_name( link_source_mds ) + if not status: + print( "Can not find the description of %-30s in all runtime parameter pages!"%(p) ) + +# output the markdown file +with open( OUT_MD, 'w' ) as f: + param_str_format = '| %-100s | %15s | %15s | %15s | %s |\n' + + f.write( '> [!CAUTION]\n' ) + f.write( '> Please do not edit this file (page) manually, since the workflow will overwrite your changes.\n' ) + f.write( '\n' ) + f.write( 'This file (page) is automatically generated by the workflow `Update all parameters wiki page` using the script `tool/wiki/sync_runtime_parameter.py`.\n' ) + f.write( '\n' ) + f.write( 'The workflow is triggered when changes are pushed to any of the following files:\n' ) + f.write( '- `src/Init/Init_Load_Parameter.cpp`\n' ) + f.write( '- `example/input/Input__Paramter`\n' ) + f.write( '- `tool/wiki/sync_runtime_parameter.py`\n' ) + f.write( '\n' ) + f.write( 'For variables with `Default/Min/Max` labeled as `Depend`, click the parameter names for more details.\n' ) + f.write( '\n' ) + f.write( '# Index\n' ) + f.write( ', '.join( ['[%s](#%s)'%(i, i) for i in auc] ) ) + f.write( '\n' ) + + start_char = '' + params_sorted_key = sorted( params.keys() ) + for key in params_sorted_key: + # add alphabet title + if start_char != key[0]: + start_char = key[0] + f.write( '\n' ) + f.write( "# %s\n"%(start_char) ) + f.write( param_str_format%("Name", "Default", "Min", "Max", "Short description") ) + f.write( param_str_format%(":---", ":---", ":---", ":---", ":---") ) + + string = param_str_format%(params[key].link_name, params[key].default, params[key].minimum, params[key].maximum, params[key].description) + f.write( string ) + + f.write( '\n' ) + f.write( '\n' ) + f.write( '## Remarks\n' ) + f.write( '\n' ) + f.write( '\n' ) + f.write( '
\n' ) + f.write( '\n' ) + f.write( '## Links\n' ) + f.write( '* [[Main page of Runtime Parameters | Runtime Parameters]]\n' )