diff --git a/bluemath_tk/waves/series.py b/bluemath_tk/waves/series.py index c719507..e8e0174 100644 --- a/bluemath_tk/waves/series.py +++ b/bluemath_tk/waves/series.py @@ -101,7 +101,7 @@ def series_TMA(waves, depth): gamma - Jonswap spectrum peak parammeter warmup - spin up time (s) deltat - delta time (s) - tendc - simulation period (s) + comptime - simulation period (s) returns 2D numpy array with series time and elevation """ @@ -112,11 +112,11 @@ def series_TMA(waves, depth): gamma = waves["gamma"] warmup = waves["warmup"] deltat = waves["deltat"] - tendc = waves["tendc"] + comptime = waves["comptime"] g = 9.801 # series duration - duration = int(tendc + warmup) + duration = int(comptime + warmup) time = np.arange(0, duration, deltat) # series frequency diff --git a/bluemath_tk/wrappers/_base_wrappers.py b/bluemath_tk/wrappers/_base_wrappers.py index d3148a7..17e94bc 100644 --- a/bluemath_tk/wrappers/_base_wrappers.py +++ b/bluemath_tk/wrappers/_base_wrappers.py @@ -8,12 +8,23 @@ from typing import List, Union import numpy as np +import pandas as pd import xarray as xr from jinja2 import Environment, FileSystemLoader from ..core.models import BlueMathModel from ._utils_wrappers import copy_files, write_array_in_file +sbatch_file_example = """ +#!/bin/bash +#SBATCH --job-name=your_job_name # Job name +#SBATCH --partition=geocean # Standard output and error log +#SBATCH --mem=4gb # Memory per node in GB (see also --mem-per-cpu) + +case_dir=$(ls | awk "NR == $SLURM_ARRAY_TASK_ID") +yourLauncher.sh --case-dir $case_dir > $case_dir/wrapper_out.log 2> $case_dir/wrapper_error.log +""" + class BaseModelWrapper(BlueMathModel): """ @@ -23,8 +34,10 @@ class BaseModelWrapper(BlueMathModel): ---------- templates_dir : str The directory where the templates are stored. - model_parameters : dict + metamodel_parameters : dict The parameters to be used in the templates. + fixed_parameters : dict + The fixed parameters for the model. output_dir : str The directory where the output files will be saved. env : Environment @@ -35,6 +48,10 @@ class BaseModelWrapper(BlueMathModel): The list with cases directories. cases_context : List[dict] The list with cases context. + thread : threading.Thread + The thread for background execution. + status_queue : Queue + The queue to update the status. Methods ------- @@ -44,6 +61,8 @@ class BaseModelWrapper(BlueMathModel): Execute bash commands. list_available_launchers -> dict List the available launchers. + list_default_parameters -> pd.DataFrame + List the default parameters. set_cases_dirs_from_output_dir -> None Set the cases directories from the output directory. write_array_in_file -> None @@ -58,6 +77,8 @@ class BaseModelWrapper(BlueMathModel): create_cases_context_all_combinations -> List[dict] Create an array of dictionaries with each possible combination of values from the input dictionary. + build_case -> None + Build the input files for a case. build_cases -> None Create the cases folders and render the input files. run_case -> None @@ -79,7 +100,8 @@ class BaseModelWrapper(BlueMathModel): def __init__( self, templates_dir: str, - model_parameters: dict, + metamodel_parameters: dict, + fixed_parameters: dict, output_dir: str, templates_name: List[str] = "all", default_parameters: dict = None, @@ -90,15 +112,18 @@ def __init__( super().__init__() if default_parameters is not None: - self._check_parameters_type( - default_parameters=default_parameters, model_parameters=model_parameters + fixed_parameters = self._check_parameters_type( + default_parameters=default_parameters, + metamodel_parameters=metamodel_parameters, + fixed_parameters=fixed_parameters, ) self.templates_dir = templates_dir - self.model_parameters = model_parameters + self.metamodel_parameters = metamodel_parameters + self.fixed_parameters = fixed_parameters self.output_dir = output_dir self._env = Environment(loader=FileSystemLoader(self.templates_dir)) if templates_name == "all": - self.logger.warning( + self.logger.info( f"Templates name is 'all', so all templates in {self.templates_dir} will be used." ) self.templates_name = self.env.list_templates() @@ -115,20 +140,16 @@ def env(self) -> Environment: return self._env def _check_parameters_type( - self, default_parameters: dict, model_parameters: dict + self, + default_parameters: dict, + metamodel_parameters: dict, + fixed_parameters: dict, ) -> None: """ Check if the parameters have the correct type. - This function is called in the __init__ method of the BaseModelWrapper, - but default_parameters are defined in the child classes. - This way, child classes can define default types for parameters. - - Parameters - ---------- - default_parameters : dict - The default parameters type for the model. - model_parameters : dict - The parameters to be used in the templates. + This functions checks if the parameters in the metamodel_parameters have the + correct type according to the default_parameters. + Then, it updates the fixed_parameters with the default_parameters values. Raises ------ @@ -136,23 +157,31 @@ def _check_parameters_type( If a parameter has the wrong type. """ - for model_param, param_value in model_parameters.items(): - if model_param not in default_parameters: + for metamodel_param, param_value in metamodel_parameters.items(): + if metamodel_param not in default_parameters: self.logger.warning( - f"Parameter {model_param} is not in the default_parameters" + f"Parameter {metamodel_param} is not in the default_parameters" ) else: if isinstance(param_value, (list, np.ndarray)) and all( - isinstance(item, default_parameters[model_param]) + isinstance(item, default_parameters[metamodel_param]["type"]) for item in param_value ): self.logger.info( - f"Parameter {model_param} has the correct type: {default_parameters[model_param]}" + f"Parameter {metamodel_param} has the correct type: {default_parameters[metamodel_param]}" ) else: raise ValueError( - f"Parameter {model_param} has the wrong type: {default_parameters[model_param]}" + f"Parameter {metamodel_param} has the wrong type: {default_parameters[metamodel_param]}" ) + for default_param, param_info in default_parameters.items(): + if ( + default_param not in fixed_parameters + and param_info.get("value") is not None + ): + fixed_parameters[default_param] = param_info.get("value") + + return fixed_parameters def _exec_bash_commands( self, str_cmd: str, out_file: str = None, err_file: str = None, cwd: str = None @@ -217,6 +246,23 @@ def list_available_launchers(self) -> dict: else: raise AttributeError("The attribute available_launchers is not defined.") + def list_default_parameters(self) -> pd.DataFrame: + """ + List the default parameters. + + Returns + ------- + pd.DataFrame + A DataFrame with the default parameters. + """ + + if hasattr(self, "default_parameters"): + return pd.DataFrame(self.default_parameters) + else: + raise AttributeError( + "The attribute default_parameters is not defined in the child class." + ) + def set_cases_dirs_from_output_dir(self) -> None: """ Set the cases directories from the output directory. @@ -299,9 +345,9 @@ def create_cases_context_one_by_one(self) -> List[dict]: parameter values. """ - num_cases = len(next(iter(self.model_parameters.values()))) + num_cases = len(next(iter(self.metamodel_parameters.values()))) array_of_contexts = [] - for param, values in self.model_parameters.items(): + for param, values in self.metamodel_parameters.items(): if len(values) != num_cases: raise ValueError( f"All parameters must have the same number of values in one_by_one mode, check {param}" @@ -310,7 +356,7 @@ def create_cases_context_one_by_one(self) -> List[dict]: for case_num in range(num_cases): case_context = { param: values[case_num] - for param, values in self.model_parameters.items() + for param, values in self.metamodel_parameters.items() } array_of_contexts.append(case_context) @@ -328,8 +374,8 @@ def create_cases_context_all_combinations(self) -> List[dict]: parameter values. """ - keys = self.model_parameters.keys() - values = self.model_parameters.values() + keys = self.metamodel_parameters.keys() + values = self.metamodel_parameters.values() combinations = itertools.product(*values) array_of_contexts = [ @@ -338,7 +384,27 @@ def create_cases_context_all_combinations(self) -> List[dict]: return array_of_contexts - def build_cases(self, mode: str = "one_by_one") -> None: + def build_case( + self, + case_context: dict, + case_dir: str, + ) -> None: + """ + Build the input files for a case. + + Parameters + ---------- + case_context : dict + The case context. + case_dir : str + The case directory. + """ + + pass + + def build_cases( + self, mode: str = "one_by_one", cases_to_build: List[int] = None + ) -> None: """ Create the cases folders and render the input files. @@ -347,6 +413,8 @@ def build_cases(self, mode: str = "one_by_one") -> None: mode : str, optional The mode to create the cases. Can be "all_combinations" or "one_by_one". Default is "one_by_one". + cases_to_build : List[int], optional + The list with the cases to build. Default is None. """ if mode == "all_combinations": @@ -355,11 +423,22 @@ def build_cases(self, mode: str = "one_by_one") -> None: self.cases_context = self.create_cases_context_one_by_one() else: raise ValueError(f"Invalid mode to create cases: {mode}") - for case_num, case_context in enumerate(self.cases_context): + + if cases_to_build is not None: + self.cases_context = [self.cases_context[i] for i in cases_to_build] + else: + cases_to_build = list(range(len(self.cases_context))) + + for case_num, case_context in zip(cases_to_build, self.cases_context): case_context["case_num"] = case_num case_dir = op.join(self.output_dir, f"{case_num:04}") self.cases_dirs.append(case_dir) os.makedirs(case_dir, exist_ok=True) + case_context.update(self.fixed_parameters) + self.build_case( + case_context=case_context, + case_dir=case_dir, + ) for template_name in self.templates_name: self.render_file_from_template( template_name=template_name, @@ -370,11 +449,16 @@ def build_cases(self, mode: str = "one_by_one") -> None: f"{len(self.cases_dirs)} cases created in {mode} mode and saved in {self.output_dir}" ) + # Save an example sbatch file in the output directory + with open(f"{self.output_dir}/sbatch_example.sh", "w") as file: + file.write(sbatch_file_example) + self.logger.info(f"SBATCH example file generated in {self.output_dir}") + def run_case( self, case_dir: str, launcher: str, - ouput_log_file: str = "wrapper_out.log", + output_log_file: str = "wrapper_out.log", error_log_file: str = "wrapper_error.log", ) -> None: """ @@ -386,7 +470,7 @@ def run_case( The case directory. launcher : str The launcher to run the case. - ouput_log_file : str, optional + output_log_file : str, optional The name of the output log file. Default is "wrapper_out.log". error_log_file : str, optional The name of the error log file. Default is "wrapper_error.log". @@ -397,11 +481,11 @@ def run_case( # Run the case in the case directory self.logger.info(f"Running case in {case_dir} with launcher={launcher}.") - ouput_log_file = op.join(case_dir, ouput_log_file) + output_log_file = op.join(case_dir, output_log_file) error_log_file = op.join(case_dir, error_log_file) self._exec_bash_commands( str_cmd=launcher, - out_file=ouput_log_file, + out_file=output_log_file, err_file=error_log_file, cwd=case_dir, ) @@ -598,26 +682,27 @@ def join_postprocessed_files( def postprocess_cases( self, cases_to_postprocess: List[int] = None, - num_workers: int = None, write_output_nc: bool = True, clean_after: bool = False, force: bool = False, + **kwargs, ) -> Union[xr.Dataset, List[xr.Dataset]]: """ Postprocess the model output. + All extra keyword arguments will be passed to the postprocess_case method. Parameters ---------- cases_to_postprocess : List[int], optional The list with the cases to postprocess. Default is None. - num_workers : int, optional - The number of parallel workers. Default is None. write_output_nc : bool, optional Write the output postprocessed file. Default is True. clean_after : bool, optional Clean the cases directories after postprocessing. Default is False. force : bool, optional Force the postprocessing. Default is False. + **kwargs + Additional keyword arguments to be passed to the postprocess_case method. Returns ------- @@ -625,9 +710,6 @@ def postprocess_cases( The postprocessed file or the list with the postprocessed files. """ - if num_workers is None: - num_workers = self.num_workers - output_postprocessed_file_path = op.join( self.output_dir, "output_postprocessed.nc" ) @@ -657,27 +739,17 @@ def postprocess_cases( cases_to_postprocess = list(range(len(self.cases_dirs))) cases_dir_to_postprocess = copy.deepcopy(self.cases_dirs) - if num_workers > 1: - postprocessed_files = self.parallel_execute( - func=self.postprocess_case, - items=zip(cases_to_postprocess, cases_dir_to_postprocess), - num_workers=num_workers, - ) - postprocessed_files = list(postprocessed_files.values()) - else: - postprocessed_files = [] - for case_num, case_dir in zip( - cases_to_postprocess, cases_dir_to_postprocess - ): - try: - postprocessed_file = self.postprocess_case( - case_num=case_num, case_dir=case_dir - ) - postprocessed_files.append(postprocessed_file) - except Exception as e: - self.logger.error( - f"Output not postprocessed for case {case_num}. Error: {e}." - ) + postprocessed_files = [] + for case_num, case_dir in zip(cases_to_postprocess, cases_dir_to_postprocess): + try: + postprocessed_file = self.postprocess_case( + case_num=case_num, case_dir=case_dir, **kwargs + ) + postprocessed_files.append(postprocessed_file) + except Exception as e: + self.logger.error( + f"Output not postprocessed for case {case_num}. Error: {e}." + ) try: output_postprocessed = self.join_postprocessed_files( @@ -690,9 +762,9 @@ def postprocess_cases( output_postprocessed.to_netcdf(output_postprocessed_file_path) if clean_after: self.logger.warning("Cleaning up all cases dirs.") - self._exec_bash_commands( - str_cmd=f"rm -rf {self.output_dir}/*", cwd=self.output_dir - ) + # self._exec_bash_commands( + # str_cmd=f"rm -rf {self.output_dir}/*/*", cwd=self.output_dir + # ) self.logger.info("Clean up completed.") return output_postprocessed except NotImplementedError as exc: diff --git a/bluemath_tk/wrappers/swash/swash_example.py b/bluemath_tk/wrappers/swash/swash_example.py index 064690b..3898af8 100644 --- a/bluemath_tk/wrappers/swash/swash_example.py +++ b/bluemath_tk/wrappers/swash/swash_example.py @@ -1,187 +1,85 @@ +import inspect import os +import os.path as op import numpy as np from bluemath_tk.datamining.lhs import LHS from bluemath_tk.datamining.mda import MDA -from bluemath_tk.waves.series import series_TMA, waves_dispersion from bluemath_tk.wrappers.swash.swash_wrapper import SwashModelWrapper -def convert_seconds_to_hour_minutes_seconds(seconds): - seconds = seconds % (24 * 3600) - hour = seconds // 3600 - seconds %= 3600 - minutes = seconds // 60 - seconds %= 60 - - return f"{str(int(hour)).zfill(2)}{str(int(minutes)).zfill(2)}{str(int(seconds)).zfill(2)}.000" - - -class VeggySwashModelWrapper(SwashModelWrapper): - """ - Wrapper for the SWASH model with vegetation. - """ - - gamma: int = 2 - deltat: int = 1 - - def build_case( - self, - case_context: dict, - case_dir: str, - ) -> None: - """ - Build the input files for a case. - - Parameters - ---------- - case_context : dict - The case context. - case_dir : str - The case directory. - """ - - # Build the input waves - waves_dict = { - "H": case_context["Hs"], - "T": np.sqrt( - (case_context["Hs"] * 2 * np.pi) - / (self.gravity * case_context["Hs_L0"]) - ), - "gamma": self.gamma, - "warmup": self.warmup, - "deltat": self.deltat, - "tendc": self.tendc, - } - waves = series_TMA(waves=waves_dict, depth=self.depth_array[0]) - # Save the waves to a file - self.write_array_in_file( - array=waves, filename=os.path.join(case_dir, "waves.bnd") - ) - - # Calculate computational parameters - tendc = convert_seconds_to_hour_minutes_seconds(self.tendc + self.warmup) - L1, _k1, _c1 = waves_dispersion(T=waves_dict["T"], h=1.0) - _L, _k, c = waves_dispersion(T=waves_dict["T"], h=self.depth_array[0]) - # comp_dx = L1 / np.abs(self.depth[0]) # MAL: Hecho por JAvi y Valva - dx = L1 / self.n_nodes_per_wavelength - deltc = 0.5 * dx / (np.sqrt(self.gravity * self.depth_array[0]) + np.abs(c)) - mxc = int(self.xlenc / dx) - - # Update the case context - case_context["xlenc"] = self.xlenc - case_context["mxc"] = mxc - case_context["mxinp"] = self.mxinp - case_context["dxinp"] = self.dxinp - case_context["deltc"] = deltc - case_context["tendc"] = tendc - - class ChySwashModelWrapper(SwashModelWrapper): """ - Wrapper for the SWASH model with vegetation. + Wrapper for the SWASH model with friction. """ - gamma: int = 2 - deltat: int = 1 - default_Cf = 0.002 + default_Cf = 0.0002 def build_case( self, case_context: dict, case_dir: str, ) -> None: - """ - Build the input files for a case. - - Parameters - ---------- - case_context : dict - The case context. - case_dir : str - The case directory. - """ - - # Build the input waves - waves_dict = { - "H": case_context["Hs"], - "T": np.sqrt( - (case_context["Hs"] * 2 * np.pi) - / (self.gravity * case_context["Hs_L0"]) - ), - "gamma": self.gamma, - "warmup": self.warmup, - "deltat": self.deltat, - "tendc": self.tendc, - } - waves = series_TMA(waves=waves_dict, depth=self.depth_array[0]) - # Save the waves to a file - self.write_array_in_file( - array=waves, filename=os.path.join(case_dir, "waves.bnd") - ) + super().build_case(case_context=case_context, case_dir=case_dir) # Build the input friction file friction = np.ones((len(self.depth_array))) * self.default_Cf - # friction[int(self.Cf_init):int(self.Cf_end)] = case_context["Cf"] + friction[ + int(self.fixed_parameters["Cf_ini"]) : int(self.fixed_parameters["Cf_fin"]) + ] = case_context["Cf"] np.savetxt(os.path.join(case_dir, "friction.txt"), friction, fmt="%.6f") - # Calculate computational parameters - tendc = convert_seconds_to_hour_minutes_seconds(self.tendc + self.warmup) - L1, _k1, _c1 = waves_dispersion(T=waves_dict["T"], h=1.0) - _L, _k, c = waves_dispersion(T=waves_dict["T"], h=self.depth_array[0]) - # comp_dx = L1 / np.abs(self.depth[0]) # MAL: Hecho por JAvi y Valva - dx = L1 / self.n_nodes_per_wavelength - deltc = 0.5 * dx / (np.sqrt(self.gravity * self.depth_array[0]) + np.abs(c)) - mxc = int(self.xlenc / dx) - - # Update the case context - case_context["xlenc"] = self.xlenc - case_context["mxc"] = mxc - case_context["mxinp"] = self.mxinp - case_context["dxinp"] = self.dxinp - case_context["deltc"] = deltc - case_context["tendc"] = tendc - # Usage example if __name__ == "__main__": - # Define the input parameters - templates_dir = ( - "/home/tausiaj/GitHub-GeoOcean/BlueMath/bluemath_tk/wrappers/swash/templates/" - ) - # Get 5 cases using LHS and MDA - lhs = LHS(num_dimensions=3) - lhs_data = lhs.generate( - dimensions_names=["Hs", "Hs_L0", "vegetation_height"], - lower_bounds=[0.5, 0.0, 0.0], - upper_bounds=[3.0, 0.05, 1.5], - num_samples=500, + # Define the output directory + output_dir = "/home/tausiaj/GitHub-GeoOcean/BlueMath/test_cases/CHY" # CHANGE THIS TO YOUR DESIRED OUTPUT DIRECTORY! + # Templates directory + swash_file_path = op.dirname(inspect.getfile(SwashModelWrapper)) + templates_dir = op.join(swash_file_path, "templates") + # Fixed parameters + fixed_parameters = { + "dxinp": 1.5, # bathymetry grid spacing + "default_Cf": 0.002, # Friction manning coefficient (m^-1/3 s) + "Cf_ini": 700 / 1.5, # Friction start cell + "Cf_fin": 1250 / 1.5, # Friction end cell + "comptime": 7200, # Simulation duration (s) + "warmup": 7200 * 0.15, # Warmup duration (s) + "n_nodes_per_wavelength": 60, # number of nodes per wavelength + } + # LHS + variables_to_analyse_in_metamodel = ["Hs", "Hs_L0", "WL", "Cf", "Cr"] + lhs_parameters = { + "num_samples": 10000, + "dimensions_names": variables_to_analyse_in_metamodel, + "lower_bounds": [0.15, 0.0005, -0.6, 0.025, 0.4], + "upper_bounds": [1.6, 0.009, 0.356, 0.2, 0.8], + } + lhs = LHS(num_dimensions=len(variables_to_analyse_in_metamodel)) + df_dataset = lhs.generate( + dimensions_names=lhs_parameters.get("dimensions_names"), + lower_bounds=lhs_parameters.get("lower_bounds"), + upper_bounds=lhs_parameters.get("upper_bounds"), + num_samples=lhs_parameters.get("num_samples"), ) - mda = MDA(num_centers=5) - mda.logger.setLevel("DEBUG") - mda.fit(data=lhs_data) - model_parameters = mda.centroids.to_dict(orient="list") - output_dir = "/home/tausiaj/GitHub-GeoOcean/BlueMath/test_cases/swash/" - # Create an instance of the SWASH model wrapper - swash_wrapper = VeggySwashModelWrapper( + # MDA + mda_parameters = {"num_centers": 5} + mda = MDA(num_centers=mda_parameters.get("num_centers")) + mda.fit(data=df_dataset) + metamodel_parameters = mda.centroids.to_dict(orient="list") + # ChySwashModelWrapper + swash_wrapper = ChySwashModelWrapper( templates_dir=templates_dir, - model_parameters=model_parameters, + metamodel_parameters=metamodel_parameters, + fixed_parameters=fixed_parameters, output_dir=output_dir, - depth_array=np.loadtxt( - "/home/tausiaj/GitHub-GeoOcean/BlueMath/bluemath_tk/wrappers/swash/templates/depth.bot" - ), - dxinp=1.0, - n_nodes_per_wavelength=60, - tendc=7200, - warmup=7200 * 0.15, + depth_array=np.loadtxt(op.join(templates_dir, "depth.bot")), ) # Build the input files swash_wrapper.build_cases(mode="one_by_one") - # List available launchers - print(swash_wrapper.list_available_launchers()) - # Run the model using docker_serial launcher - # swash_wrapper.run_cases(launcher="docker_serial", num_workers=5) - # Post-process the output files - # postprocessed_data = swash_wrapper.postprocess_cases(num_workers=1) - # print(postprocessed_data) + # Run the simulations + swash_wrapper.run_cases(launcher="docker_serial", num_workers=5) + # Post-process the results + swash_wrapper.postprocess_cases(output_vars=["Msetup", "Hrms", "Hfreqs"]) + print("Done!") diff --git a/bluemath_tk/wrappers/swash/swash_wrapper.py b/bluemath_tk/wrappers/swash/swash_wrapper.py index 9a9a31d..7afa13c 100644 --- a/bluemath_tk/wrappers/swash/swash_wrapper.py +++ b/bluemath_tk/wrappers/swash/swash_wrapper.py @@ -1,5 +1,4 @@ import os -import os.path as op import re from typing import List, Tuple @@ -8,6 +7,7 @@ import xarray as xr from scipy.signal import find_peaks +from ...waves.series import series_TMA, waves_dispersion from ...waves.spectra import spectral_analysis from ...waves.statistics import upcrossing from .._base_wrappers import BaseModelWrapper @@ -15,6 +15,16 @@ np.random.seed(42) # TODO: check global behavior. +def convert_seconds_to_hour_minutes_seconds(seconds): + seconds = seconds % (24 * 3600) + hour = seconds // 3600 + seconds %= 3600 + minutes = seconds // 60 + seconds %= 60 + + return f"{str(int(hour)).zfill(2)}{str(int(minutes)).zfill(2)}{str(int(seconds)).zfill(2)}.000" + + class SwashModelWrapper(BaseModelWrapper): """ Wrapper for the SWASH model. @@ -28,22 +38,6 @@ class SwashModelWrapper(BaseModelWrapper): The available launchers for the wrapper. postprocess_functions : dict The postprocess functions for the wrapper. - depth_array : np.ndarray - The depth array (working for 1D arrays for the moment). - xlenc : int - The length in meters of the computational domain. - mxc : int - The number of computational cells. - mxinp : int - The number of input points. - dxinp : float - The input points spacing (to calculate the meters). - n_nodes_per_wavelength : int - The number of nodes per wavelength. - deltc : float - The time step (DeltaT). - tendc : float - The total computation time. Methods ------- @@ -81,7 +75,56 @@ class SwashModelWrapper(BaseModelWrapper): """ default_parameters = { - "vegetation_height": float, + "Hs": { + "type": float, + "value": None, + "description": "Significant wave height.", + }, + "Hs_L0": { + "type": float, + "value": None, + "description": "Wave height at deep water.", + }, + "WL": { + "type": float, + "value": None, + "description": "Water level.", + }, + "vegetation_height": { + "type": float, + "value": None, + "description": "The vegetation height.", + }, + "dxinp": { + "type": float, + "value": 1.0, + "description": "The input spacing.", + }, + "n_nodes_per_wavelength": { + "type": int, + "value": 60, + "description": "The number of nodes per wavelength.", + }, + "comptime": { + "type": int, + "value": 180, + "description": "The computational time.", + }, + "warmup": { + "type": int, + "value": 0, + "description": "The warmup time.", + }, + "gamma": { + "type": int, + "value": 2, + "description": "The gamma parameter.", + }, + "deltat": { + "type": int, + "value": 1, + "description": "The time step.", + }, } available_launchers = { @@ -94,7 +137,7 @@ class SwashModelWrapper(BaseModelWrapper): postprocess_functions = { "Ru2": "calculate_runup2", - "RuDist": "calculate_runup", + "Runlev": "calculate_runup", "Msetup": "calculate_setup", "Hrms": "calculate_statistical_analysis", "Hfreqs": "calculate_spectral_analysis", @@ -104,13 +147,10 @@ class SwashModelWrapper(BaseModelWrapper): def __init__( self, templates_dir: str, - model_parameters: dict, + metamodel_parameters: dict, + fixed_parameters: dict, output_dir: str, depth_array: np.ndarray, - dxinp: float, - n_nodes_per_wavelength: int, - tendc: int, - warmup: int = 0, templates_name: dict = "all", debug: bool = True, ) -> None: @@ -120,7 +160,8 @@ def __init__( super().__init__( templates_dir=templates_dir, - model_parameters=model_parameters, + metamodel_parameters=metamodel_parameters, + fixed_parameters=fixed_parameters, output_dir=output_dir, templates_name=templates_name, default_parameters=self.default_parameters, @@ -129,53 +170,63 @@ def __init__( name=self.__class__.__name__, level="DEBUG" if debug else "INFO" ) self.depth_array = depth_array - self.mxinp = len(depth_array) - 1 - self.dxinp = dxinp - self.xlenc = int(self.mxinp * self.dxinp) - self.mxc: int = None - self.n_nodes_per_wavelength = n_nodes_per_wavelength - self.tendc = tendc - self.warmup = warmup - - def build_cases( + self.mxinp = len(self.depth_array) - 1 + self.xlenc = int(self.mxinp * self.fixed_parameters["dxinp"]) + self.fixed_parameters["mxinp"] = self.mxinp + self.fixed_parameters["xlenc"] = self.xlenc + self.fixed_parameters["tendc"] = convert_seconds_to_hour_minutes_seconds( + self.fixed_parameters["comptime"] + self.fixed_parameters["warmup"] + ) + + def build_case( self, - mode: str = "one_by_one", + case_context: dict, + case_dir: str, ) -> None: """ - Create the cases folders and render the input files. + Build the input files for a case. Parameters ---------- - mode : str, optional - The mode to create the cases. Can be "all_combinations" or "one_by_one". - Default is "one_by_one". + case_context : dict + The case context. + case_dir : str + The case directory. """ - if mode == "all_combinations": - self.cases_context = self.create_cases_context_all_combinations() - elif mode == "one_by_one": - self.cases_context = self.create_cases_context_one_by_one() - else: - raise ValueError(f"Invalid mode to create cases: {mode}") - for case_num, case_context in enumerate(self.cases_context): - case_context["case_num"] = f"{case_num:04}" - case_dir = op.join(self.output_dir, f"{case_num:04}") - self.cases_dirs.append(case_dir) - os.makedirs(case_dir, exist_ok=True) - self.build_case( - case_context=case_context, - case_dir=case_dir, - ) - for template_name in self.templates_name: - self.render_file_from_template( - template_name=template_name, - context=case_context, - output_filename=op.join(case_dir, template_name), - ) - self.logger.info( - f"{len(self.cases_dirs)} cases created in {mode} mode and saved in {self.output_dir}" + # Build the input waves + waves_dict = { + "H": case_context["Hs"], + "T": np.sqrt( + (case_context["Hs"] * 2 * np.pi) + / (self.gravity * case_context["Hs_L0"]) + ), + "warmup": case_context["warmup"], + "comptime": case_context["comptime"], + "gamma": case_context["gamma"], + "deltat": case_context["deltat"], + } + waves = series_TMA(waves=waves_dict, depth=self.depth_array[0]) + # Save the waves to a file + self.write_array_in_file( + array=waves, filename=os.path.join(case_dir, "waves.bnd") ) + # Calculate computational parameters + # Assuming there is always 1m of setup due to (IG, VLF) + L1, _k1, _c1 = waves_dispersion(T=waves_dict["T"], h=1.0) + _L, _k, c = waves_dispersion(T=waves_dict["T"], h=self.depth_array[0]) + dx = L1 / case_context["n_nodes_per_wavelength"] + + # Computational time step + deltc = 0.5 * dx / (np.sqrt(self.gravity * self.depth_array[0]) + np.abs(c)) + # Computational grid modifications + mxc = int(self.mxinp / dx) + + # Update the case context + case_context["mxc"] = mxc + case_context["deltc"] = deltc + def list_available_postprocess_vars(self) -> List[str]: """ List available postprocess variables. @@ -239,17 +290,23 @@ def _convert_case_output_files_to_nc( """ df_output = self._read_tabfile(file_path=output_path) + df_output[["Xp", "Yp", "Tsec"]] = df_output[["Xp", "Yp", "Tsec"]].astype( + int + ) # TODO: check if this is correct df_output.set_index( ["Xp", "Yp", "Tsec"], inplace=True ) # set index to Xp, Yp and Tsec - ds_ouput = df_output.to_xarray() + ds_output = df_output.to_xarray() df_run = self._read_tabfile(file_path=run_path) + df_run[["Tsec"]] = df_run[["Tsec"]].astype( + int + ) # TODO: check if this is correct df_run.set_index(["Tsec"], inplace=True) ds_run = df_run.to_xarray() # merge output files to one xarray.Dataset - ds = xr.merge([ds_ouput, ds_run], compat="no_conflicts") + ds = xr.merge([ds_output, ds_run], compat="no_conflicts") # assign correct coordinate case_num ds.coords["case_num"] = case_num @@ -305,7 +362,12 @@ def monitor_cases(self) -> pd.DataFrame: return pd.DataFrame(cases_percentage.items(), columns=["Case", "Percentage"]) def postprocess_case( - self, case_num: int, case_dir: str, output_vars: List[str] = None + self, + case_num: int, + case_dir: str, + output_vars: List[str] = None, + remove_tab: bool = False, + remove_nc: bool = False, ) -> xr.Dataset: """ Convert tab output files to netCDF file. @@ -318,6 +380,10 @@ def postprocess_case( The case directory. output_vars : list, optional The output variables to postprocess. Default is None. + remove_tab : bool, optional + Remove the tab files. Default is False. + remove_nc : bool, optional + Remove the netCDF file. Default is False. Returns ------- @@ -367,6 +433,13 @@ def postprocess_case( # Save Dataset to netCDF file ds.to_netcdf(os.path.join(case_dir, "output_postprocessed.nc")) + # Remove raw files to save space + if remove_tab: + os.remove(output_path) + os.remove(run_path) + if remove_nc: + os.remove(output_nc_path) + return ds def join_postprocessed_files( @@ -549,28 +622,50 @@ def calculate_statistical_analysis( # for every X coordinate in domain df_Hrms = pd.DataFrame() + # for x in output_nc["Xp"].values: + # dsw = output_nc.sel(Xp=x) + + # # obtain series of water level + # series_water = dsw["Watlev"].values + # time_series = dsw["Tsec"].values + + # # perform statistical analysis + # # _, Hi = upcrossing(time_series, series_water) + # _, Hi = upcrossing(np.vstack([time_series, series_water]).T) + # Hi = np.std(series_water) + # # Calculo de Pablo Zubia + # #standard_deviation = np.std(series_water) + + # # calculate Hrms + # Hrms_x = np.sqrt(np.sum(Hi**2)/len(Hi)) + # df_Hrms.loc[x, "Hrms"] = Hrms_x + + # # convert pd DataFrame to xr Dataset + # df_Hrms.index.name = "Xp" + # ds = df_Hrms.to_xarray() + + # # assign coordinate case_num + # ds = ds.assign_coords({"case_num": [output_nc["case_num"].values]}) + + # return ds + for x in output_nc["Xp"].values: dsw = output_nc.sel(Xp=x) # obtain series of water level series_water = dsw["Watlev"].values - time_series = dsw["Tsec"].values + # time_series = dsw['Tsec'].values - # perform statistical analysis - # _, Hi = upcrossing(time_series, series_water) - _, Hi = upcrossing(np.vstack([time_series, series_water]).T) - - # calculate Hrms - Hrms_x = np.sqrt(np.mean(Hi**2)) + standard_deviation = np.std(series_water) + Hrms_x = 2 * np.sqrt(2 * standard_deviation**2) df_Hrms.loc[x, "Hrms"] = Hrms_x # convert pd DataFrame to xr Dataset df_Hrms.index.name = "Xp" ds = df_Hrms.to_xarray() - # assign coordinate case_num + # assign coordinate case_id ds = ds.assign_coords({"case_num": [output_nc["case_num"].values]}) - return ds def calculate_spectral_analysis( diff --git a/bluemath_tk/wrappers/swash/templates/INPUT b/bluemath_tk/wrappers/swash/templates/INPUT index f6d698b..ae4fc70 100644 --- a/bluemath_tk/wrappers/swash/templates/INPUT +++ b/bluemath_tk/wrappers/swash/templates/INPUT @@ -1,59 +1,59 @@ -$Project name -PROJECT 'myproj' '{{ case_num }}' -$ -$Set water level -SET LEVEL=1.0 -$ -$(1D-mode, flume) or (2D-mode, basin) -MODE DYNanic ONED -COORD CARTesian -$Computational grid: geographic location, size, resolution and orientation -CGRID 0 0 0 {{ xlenc }} 0 {{ mxc }} 0 -$ -$Multi-layered mode -VERT 1 -$ -$Reading bathymetry values from file -INPGRID BOTTOM 0 0 0 {{ mxinp }} 0 {{ dxinp }} 0 -READINP BOTTOM 1 'depth.bot' 1 0 FREE -$ -$Reading vegetation values from file -INPGRID NPLANTS 0 0 0 {{ mxinp }} 0 {{ dxinp }} 0 -READINP NPLANTS 1 'plants.txt' 1 0 FREE -$ -$Initial values for flow variables -INIT ZERO -$ -$Hydraulic boundary conditions -BOU SIDE W CCW BTYPE WEAK CON SERIES 'waves.bnd' -BOU SIDE E CCW BTYPE RADIATION -SPON E 10 -$ -$Physics -BREAK -VEGETATION {{ vegetation_height }} 0.5009019570650376 1 1.0 -$Numerics -NONHYDrostatic BOX 1. PREConditioner ILU -$ -$Output quantities -DISCRET UPW MOM -DISCRET UPW UMOM H NONE -DISCRET UPW WMOM H NONE -DISCRET CORR -$ -$Time integration -TIMEI 0.1 0.5 -$ -QUANTITY XP hexp=10 -QUANT RUNUP delrp 0.01 -$ -CURVE 'line' 0 0 {{ mxinp }} {{ mxinp }} 0 -TABLE 'line' HEAD 'output.tab' TSEC XP YP BOTL WATL QMAG OUTPUT 0 1 SEC -$ -TABLE 'NOGRID' HEAD 'run.tab' TSEC RUNUP OUTPUT 0 1 SEC -$ -$Starts computation -TEST 1,0 -COMPUTE 000000.000 {{ deltc }} SEC {{ tendc }} -STOP +$Project name +PROJECT 'molokai' '{{ case_num }}' +$ +$Set water level +SET LEVEL={{ WL }} +$ +$(1D-mode, flume) or (2D-mode, basin) +MODE DYNanic ONED +COORD CARTesian +$Computational grid: geographic location, size, resolution and orientation +CGRID 0 0 0 {{ xlenc }} 0 {{ mxc }} 0 +$ +$Multi-layered mode +VERT 5 +$ +$Reading bathymetry values from file +INPGRID BOTTOM 0 0 0 {{ mxinp }} 0 {{ dxinp }} 0.0 +READINP BOTTOM 1 'depth.bot' 1 0 FREE +$ +$Reading friction values from file +INPGRID FRICTION 0 0 0 {{ mxinp }} 0 {{ dxinp }} 0.0 +READINP FRICTION 1 'friction.txt' 1 0 FREE +$ +FRIC MANNING +$Initial values for flow variables +INIT ZERO +$ +$Hydraulic boundary conditions +BOU SIDE W CCW BTYPE WEAK CON SERIES 'waves.bnd' +BOU SIDE E CCW BTYPE RADIATION +SPON E 10 +$ +$Physics +BREAK {{ Cr }} +$Numerics +NONHYDROSTATIC BOX 1. PRECONDITIONER ILU +$ +$Output quantities +DISCRET UPW MOM +DISCRET UPW UMOM H NONE +DISCRET UPW WMOM H NONE +DISCRET CORR +$ +$Time integration +TIMEI 0.1 0.5 +$ +QUANTITY XP hexp=10 +QUANT RUNUP delrp 0.01 +$ +CURVE 'line' 0 0 {{ xlenc }} {{ xlenc }} 0 +TABLE 'line' HEAD 'output.tab' TSEC XP YP WATL OUTPUT 0 1 SEC +$ +TABLE 'NOGRID' HEAD 'run.tab' TSEC RUNUP OUTPUT 0 1 SEC +$ +$Starts computation +TEST 1,0 +COMPUTE 000000.000 {{ deltc }} SEC {{ tendc }} +STOP $ \ No newline at end of file diff --git a/bluemath_tk/wrappers/swash/templates/depth.bot b/bluemath_tk/wrappers/swash/templates/depth.bot index 75246e4..53bb868 100644 --- a/bluemath_tk/wrappers/swash/templates/depth.bot +++ b/bluemath_tk/wrappers/swash/templates/depth.bot @@ -1,1400 +1,1335 @@ -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 -9.974999999999999645e+00 -9.949999999999999289e+00 -9.925000000000000711e+00 -9.900000000000000355e+00 -9.875000000000000000e+00 -9.849999999999999645e+00 -9.824999999999999289e+00 -9.800000000000000711e+00 -9.775000000000000355e+00 -9.750000000000000000e+00 -9.724999999999999645e+00 -9.699999999999999289e+00 -9.675000000000000711e+00 -9.650000000000000355e+00 -9.625000000000000000e+00 -9.599999999999999645e+00 -9.574999999999999289e+00 -9.550000000000000711e+00 -9.525000000000000355e+00 -9.500000000000000000e+00 -9.474999999999999645e+00 -9.449999999999999289e+00 -9.425000000000000711e+00 -9.400000000000000355e+00 -9.375000000000000000e+00 -9.349999999999999645e+00 -9.324999999999999289e+00 -9.300000000000000711e+00 -9.275000000000000355e+00 -9.250000000000000000e+00 -9.224999999999999645e+00 -9.199999999999999289e+00 -9.175000000000000711e+00 -9.150000000000000355e+00 -9.125000000000000000e+00 -9.099999999999999645e+00 -9.074999999999999289e+00 -9.050000000000000711e+00 -9.025000000000000355e+00 -9.000000000000000000e+00 -8.974999999999999645e+00 -8.949999999999999289e+00 -8.925000000000000711e+00 -8.900000000000000355e+00 -8.875000000000000000e+00 -8.849999999999999645e+00 -8.824999999999999289e+00 -8.800000000000000711e+00 -8.775000000000000355e+00 -8.750000000000000000e+00 -8.724999999999999645e+00 -8.699999999999999289e+00 -8.675000000000000711e+00 -8.650000000000000355e+00 -8.625000000000000000e+00 -8.599999999999999645e+00 -8.574999999999999289e+00 -8.550000000000000711e+00 -8.525000000000000355e+00 -8.500000000000000000e+00 -8.474999999999999645e+00 -8.449999999999999289e+00 -8.425000000000000711e+00 -8.400000000000000355e+00 -8.375000000000000000e+00 -8.349999999999999645e+00 -8.324999999999999289e+00 -8.300000000000000711e+00 -8.275000000000000355e+00 -8.250000000000000000e+00 -8.224999999999999645e+00 -8.199999999999999289e+00 -8.175000000000000711e+00 -8.150000000000000355e+00 -8.125000000000000000e+00 -8.099999999999999645e+00 -8.074999999999999289e+00 -8.050000000000000711e+00 -8.025000000000000355e+00 -8.000000000000000000e+00 -7.974999999999999645e+00 -7.950000000000000178e+00 -7.924999999999999822e+00 -7.900000000000000355e+00 -7.875000000000000000e+00 -7.849999999999999645e+00 -7.825000000000000178e+00 -7.799999999999999822e+00 -7.775000000000000355e+00 -7.750000000000000000e+00 -7.724999999999999645e+00 -7.700000000000000178e+00 -7.674999999999999822e+00 -7.650000000000000355e+00 -7.625000000000000000e+00 -7.599999999999999645e+00 -7.575000000000000178e+00 -7.549999999999999822e+00 -7.525000000000000355e+00 -7.500000000000000000e+00 -7.474999999999999645e+00 -7.450000000000000178e+00 -7.424999999999999822e+00 -7.400000000000000355e+00 -7.375000000000000000e+00 -7.349999999999999645e+00 -7.325000000000000178e+00 -7.299999999999999822e+00 -7.275000000000000355e+00 -7.250000000000000000e+00 -7.224999999999999645e+00 -7.200000000000000178e+00 -7.174999999999999822e+00 -7.150000000000000355e+00 -7.125000000000000000e+00 -7.099999999999999645e+00 -7.075000000000000178e+00 -7.049999999999999822e+00 -7.025000000000000355e+00 -7.000000000000000000e+00 -6.974999999999999645e+00 -6.950000000000000178e+00 -6.924999999999999822e+00 -6.900000000000000355e+00 -6.875000000000000000e+00 -6.849999999999999645e+00 -6.825000000000000178e+00 -6.799999999999999822e+00 -6.775000000000000355e+00 -6.750000000000000000e+00 -6.724999999999999645e+00 -6.700000000000000178e+00 -6.674999999999999822e+00 -6.650000000000000355e+00 -6.625000000000000000e+00 -6.599999999999999645e+00 -6.575000000000000178e+00 -6.549999999999999822e+00 -6.525000000000000355e+00 -6.500000000000000000e+00 -6.474999999999999645e+00 -6.450000000000000178e+00 -6.424999999999999822e+00 -6.400000000000000355e+00 -6.375000000000000000e+00 -6.349999999999999645e+00 -6.325000000000000178e+00 -6.299999999999999822e+00 -6.275000000000000355e+00 -6.250000000000000000e+00 -6.224999999999999645e+00 -6.200000000000000178e+00 -6.174999999999999822e+00 -6.150000000000000355e+00 -6.125000000000000000e+00 -6.099999999999999645e+00 -6.075000000000000178e+00 -6.049999999999999822e+00 -6.025000000000000355e+00 -6.000000000000000000e+00 -5.974999999999999645e+00 -5.950000000000000178e+00 -5.924999999999999822e+00 -5.900000000000000355e+00 -5.875000000000000000e+00 -5.849999999999999645e+00 -5.825000000000000178e+00 -5.799999999999999822e+00 -5.775000000000000355e+00 -5.750000000000000000e+00 -5.724999999999999645e+00 -5.700000000000000178e+00 -5.674999999999999822e+00 -5.650000000000000355e+00 -5.625000000000000000e+00 -5.599999999999999645e+00 -5.575000000000000178e+00 -5.549999999999999822e+00 -5.525000000000000355e+00 -5.500000000000000000e+00 -5.474999999999999645e+00 -5.450000000000000178e+00 -5.424999999999999822e+00 -5.400000000000000355e+00 -5.375000000000000000e+00 -5.349999999999999645e+00 -5.325000000000000178e+00 -5.299999999999999822e+00 -5.275000000000000355e+00 -5.250000000000000000e+00 -5.224999999999999645e+00 -5.200000000000000178e+00 -5.174999999999999822e+00 -5.150000000000000355e+00 -5.125000000000000000e+00 -5.099999999999999645e+00 -5.075000000000000178e+00 -5.049999999999999822e+00 -5.025000000000000355e+00 -5.000000000000000000e+00 -4.974999999999999645e+00 -4.950000000000000178e+00 -4.924999999999999822e+00 -4.900000000000000355e+00 -4.875000000000000000e+00 -4.849999999999999645e+00 -4.825000000000000178e+00 -4.799999999999999822e+00 -4.775000000000000355e+00 -4.750000000000000000e+00 -4.724999999999999645e+00 -4.700000000000000178e+00 -4.674999999999999822e+00 -4.650000000000000355e+00 -4.625000000000000000e+00 -4.599999999999999645e+00 -4.575000000000000178e+00 -4.549999999999999822e+00 -4.525000000000000355e+00 -4.500000000000000000e+00 -4.474999999999999645e+00 -4.450000000000000178e+00 -4.424999999999999822e+00 -4.400000000000000355e+00 -4.375000000000000000e+00 -4.349999999999999645e+00 -4.325000000000000178e+00 -4.299999999999999822e+00 -4.275000000000000355e+00 -4.250000000000000000e+00 -4.224999999999999645e+00 -4.200000000000000178e+00 -4.174999999999999822e+00 -4.150000000000000355e+00 -4.125000000000000000e+00 -4.099999999999999645e+00 -4.075000000000000178e+00 -4.049999999999999822e+00 -4.025000000000000355e+00 -4.000000000000000000e+00 -3.975000000000000089e+00 -3.950000000000000178e+00 -3.924999999999999822e+00 -3.899999999999999911e+00 -3.875000000000000000e+00 -3.850000000000000089e+00 -3.825000000000000178e+00 -3.799999999999999822e+00 -3.774999999999999911e+00 -3.750000000000000000e+00 -3.725000000000000089e+00 -3.700000000000000178e+00 -3.674999999999999822e+00 -3.649999999999999911e+00 -3.625000000000000000e+00 -3.600000000000000089e+00 -3.575000000000000178e+00 -3.549999999999999822e+00 -3.524999999999999911e+00 -3.500000000000000000e+00 -3.475000000000000089e+00 -3.450000000000000178e+00 -3.424999999999999822e+00 -3.399999999999999911e+00 -3.375000000000000000e+00 -3.350000000000000089e+00 -3.325000000000000178e+00 -3.299999999999999822e+00 -3.274999999999999911e+00 -3.250000000000000000e+00 -3.225000000000000089e+00 -3.200000000000000178e+00 -3.174999999999999822e+00 -3.149999999999999911e+00 -3.125000000000000000e+00 -3.100000000000000089e+00 -3.075000000000000178e+00 -3.049999999999999822e+00 -3.024999999999999911e+00 -3.000000000000000000e+00 -2.975000000000000089e+00 -2.950000000000000178e+00 -2.924999999999999822e+00 -2.899999999999999911e+00 -2.875000000000000000e+00 -2.850000000000000089e+00 -2.825000000000000178e+00 -2.799999999999999822e+00 -2.774999999999999911e+00 -2.750000000000000000e+00 -2.725000000000000089e+00 -2.700000000000000178e+00 -2.674999999999999822e+00 -2.649999999999999911e+00 -2.625000000000000000e+00 -2.600000000000000089e+00 -2.575000000000000178e+00 -2.549999999999999822e+00 -2.524999999999999911e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.500000000000000000e+00 -2.450000000000000178e+00 -2.399999999999999911e+00 -2.350000000000000089e+00 -2.299999999999999822e+00 -2.250000000000000000e+00 -2.200000000000000178e+00 -2.149999999999999911e+00 -2.100000000000000089e+00 -2.049999999999999822e+00 -2.000000000000000000e+00 -1.949999999999999956e+00 -1.899999999999999911e+00 -1.850000000000000089e+00 -1.800000000000000044e+00 -1.750000000000000000e+00 -1.699999999999999956e+00 -1.649999999999999911e+00 -1.600000000000000089e+00 -1.550000000000000044e+00 -1.500000000000000000e+00 -1.449999999999999956e+00 -1.399999999999999911e+00 -1.350000000000000089e+00 -1.300000000000000044e+00 -1.250000000000000000e+00 -1.199999999999999956e+00 -1.149999999999999911e+00 -1.100000000000000089e+00 -1.050000000000000044e+00 -1.000000000000000000e+00 -9.499999999999999556e-01 -9.000000000000000222e-01 -8.499999999999999778e-01 -8.000000000000000444e-01 -7.500000000000000000e-01 -6.999999999999999556e-01 -6.500000000000000222e-01 -5.999999999999999778e-01 -5.500000000000000444e-01 -5.000000000000000000e-01 -4.500000000000000111e-01 -4.000000000000000222e-01 -3.499999999999999778e-01 -2.999999999999999889e-01 -2.500000000000000000e-01 -2.000000000000000111e-01 -1.499999999999999944e-01 -1.000000000000000056e-01 -5.000000000000000278e-02 -0.000000000000000000e+00 --5.000000000000000278e-02 --1.000000000000000056e-01 --1.499999999999999944e-01 --2.000000000000000111e-01 --2.500000000000000000e-01 --2.999999999999999889e-01 --3.499999999999999778e-01 --4.000000000000000222e-01 --4.500000000000000111e-01 --5.000000000000000000e-01 --5.500000000000000444e-01 --5.999999999999999778e-01 --6.500000000000000222e-01 --6.999999999999999556e-01 --7.500000000000000000e-01 --8.000000000000000444e-01 --8.499999999999999778e-01 --9.000000000000000222e-01 --9.499999999999999556e-01 --1.000000000000000000e+00 --1.050000000000000044e+00 --1.100000000000000089e+00 --1.149999999999999911e+00 --1.199999999999999956e+00 --1.250000000000000000e+00 --1.300000000000000044e+00 --1.350000000000000089e+00 --1.399999999999999911e+00 --1.449999999999999956e+00 --1.500000000000000000e+00 --1.550000000000000044e+00 --1.600000000000000089e+00 --1.649999999999999911e+00 --1.699999999999999956e+00 --1.750000000000000000e+00 --1.800000000000000044e+00 --1.850000000000000089e+00 --1.899999999999999911e+00 --1.949999999999999956e+00 --2.000000000000000000e+00 --2.049999999999999822e+00 --2.100000000000000089e+00 --2.149999999999999911e+00 --2.200000000000000178e+00 --2.250000000000000000e+00 --2.299999999999999822e+00 --2.350000000000000089e+00 --2.399999999999999911e+00 --2.450000000000000178e+00 --2.500000000000000000e+00 --2.549999999999999822e+00 --2.600000000000000089e+00 --2.649999999999999911e+00 --2.700000000000000178e+00 --2.750000000000000000e+00 --2.799999999999999822e+00 --2.850000000000000089e+00 --2.899999999999999911e+00 --2.950000000000000178e+00 --3.000000000000000000e+00 --3.049999999999999822e+00 --3.100000000000000089e+00 --3.149999999999999911e+00 --3.200000000000000178e+00 --3.250000000000000000e+00 --3.299999999999999822e+00 --3.350000000000000089e+00 --3.399999999999999911e+00 --3.450000000000000178e+00 --3.500000000000000000e+00 --3.549999999999999822e+00 --3.600000000000000089e+00 --3.649999999999999911e+00 --3.700000000000000178e+00 --3.750000000000000000e+00 --3.799999999999999822e+00 --3.850000000000000089e+00 --3.899999999999999911e+00 --3.950000000000000178e+00 --4.000000000000000000e+00 --4.049999999999999822e+00 --4.099999999999999645e+00 --4.150000000000000355e+00 --4.200000000000000178e+00 --4.250000000000000000e+00 --4.299999999999999822e+00 --4.349999999999999645e+00 --4.400000000000000355e+00 --4.450000000000000178e+00 --4.500000000000000000e+00 --4.549999999999999822e+00 --4.599999999999999645e+00 --4.650000000000000355e+00 --4.700000000000000178e+00 --4.750000000000000000e+00 --4.799999999999999822e+00 --4.849999999999999645e+00 --4.900000000000000355e+00 --4.950000000000000178e+00 --4.950000000000000178e+00 --4.945000000000000284e+00 --4.945000000000000284e+00 --4.940000000000000391e+00 --4.940000000000000391e+00 --4.940000000000000391e+00 --4.934999999999999609e+00 --4.934999999999999609e+00 --4.929999999999999716e+00 --4.929999999999999716e+00 --4.924999999999999822e+00 --4.924999999999999822e+00 --4.919999999999999929e+00 --4.919999999999999929e+00 --4.915000000000000036e+00 --4.915000000000000036e+00 --4.910000000000000142e+00 --4.905000000000000249e+00 --4.905000000000000249e+00 --4.900000000000000355e+00 --4.900000000000000355e+00 --4.894999999999999574e+00 --4.894999999999999574e+00 --4.894999999999999574e+00 --4.889999999999999680e+00 --4.889999999999999680e+00 --4.884999999999999787e+00 --4.884999999999999787e+00 --4.879999999999999893e+00 --4.879999999999999893e+00 --4.875000000000000000e+00 --4.875000000000000000e+00 --4.870000000000000107e+00 --4.870000000000000107e+00 --4.865000000000000213e+00 --4.860000000000000320e+00 --4.860000000000000320e+00 --4.855000000000000426e+00 --4.855000000000000426e+00 --4.855000000000000426e+00 --4.849999999999999645e+00 --4.849999999999999645e+00 --4.844999999999999751e+00 --4.844999999999999751e+00 --4.839999999999999858e+00 --4.839999999999999858e+00 --4.834999999999999964e+00 --4.834999999999999964e+00 --4.830000000000000071e+00 --4.830000000000000071e+00 --4.825000000000000178e+00 --4.820000000000000284e+00 --4.820000000000000284e+00 --4.815000000000000391e+00 --4.815000000000000391e+00 --4.809999999999999609e+00 --4.809999999999999609e+00 --4.809999999999999609e+00 --4.804999999999999716e+00 --4.804999999999999716e+00 --4.799999999999999822e+00 --4.799999999999999822e+00 --4.794999999999999929e+00 --4.794999999999999929e+00 --4.790000000000000036e+00 --4.790000000000000036e+00 --4.785000000000000142e+00 --4.780000000000000249e+00 --4.780000000000000249e+00 --4.775000000000000355e+00 --4.775000000000000355e+00 --4.769999999999999574e+00 --4.769999999999999574e+00 --4.769999999999999574e+00 --4.764999999999999680e+00 --4.764999999999999680e+00 --4.759999999999999787e+00 --4.759999999999999787e+00 --4.754999999999999893e+00 --4.754999999999999893e+00 --4.750000000000000000e+00 --4.750000000000000000e+00 --4.745000000000000107e+00 --4.740000000000000213e+00 --4.740000000000000213e+00 --4.735000000000000320e+00 --4.735000000000000320e+00 --4.730000000000000426e+00 --4.730000000000000426e+00 --4.730000000000000426e+00 --4.724999999999999645e+00 --4.724999999999999645e+00 --4.719999999999999751e+00 --4.719999999999999751e+00 --4.714999999999999858e+00 --4.714999999999999858e+00 --4.709999999999999964e+00 --4.709999999999999964e+00 --4.705000000000000071e+00 --4.705000000000000071e+00 --4.700000000000000178e+00 --4.695000000000000284e+00 --4.695000000000000284e+00 --4.690000000000000391e+00 --4.690000000000000391e+00 --4.690000000000000391e+00 --4.684999999999999609e+00 --4.684999999999999609e+00 --4.679999999999999716e+00 --4.679999999999999716e+00 --4.674999999999999822e+00 --4.674999999999999822e+00 --4.669999999999999929e+00 --4.669999999999999929e+00 --4.665000000000000036e+00 --4.665000000000000036e+00 --4.660000000000000142e+00 --4.660000000000000142e+00 --4.655000000000000249e+00 --4.650000000000000355e+00 --4.650000000000000355e+00 --4.644999999999999574e+00 --4.644999999999999574e+00 --4.644999999999999574e+00 --4.639999999999999680e+00 --4.639999999999999680e+00 --4.634999999999999787e+00 --4.634999999999999787e+00 --4.629999999999999893e+00 --4.629999999999999893e+00 --4.625000000000000000e+00 --4.625000000000000000e+00 --4.620000000000000107e+00 --4.615000000000000213e+00 --4.615000000000000213e+00 --4.610000000000000320e+00 --4.610000000000000320e+00 --4.605000000000000426e+00 --4.605000000000000426e+00 --4.605000000000000426e+00 --4.599999999999999645e+00 --4.599999999999999645e+00 --4.594999999999999751e+00 --4.594999999999999751e+00 --4.589999999999999858e+00 --4.589999999999999858e+00 --4.584999999999999964e+00 --4.584999999999999964e+00 --4.580000000000000071e+00 --4.580000000000000071e+00 \ No newline at end of file +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +25.0 +24.949977238973 +24.90086491902663 +24.879237492879167 +24.906742095947234 +24.876018524169833 +24.799764633178636 +24.730493545532166 +24.827493031819632 +24.82427597045893 +24.771859486897768 +24.71586354573563 +24.717274347941032 +24.689142862955666 +24.619883855183833 +24.616635640462196 +24.541100184122666 +24.4811795552571 +24.3600323994954 +24.33856836954747 +24.2918459574381 +24.22857030232743 +24.1620604197184 +24.12041791280107 +24.10226885477697 +24.043997446695936 +24.036305109659768 +24.010434468587164 +23.949747085571264 +23.91119511922197 +23.888418197631797 +23.871415456136003 +23.85089747110997 +23.820852915445897 +23.80967521667473 +23.791901906331333 +23.8125127156575 +23.797962188720664 +23.793339411417602 +23.750905990600533 +23.719985961914034 +23.688606262207003 +23.66688664754227 +23.6143525441487 +23.58916536966957 +23.597242991129534 +23.5353107452392 +23.504934310913068 +23.467171986897768 +23.46192232767737 +23.472251256306933 +23.428170522054 +23.430301666259698 +23.41323026021317 +23.37708918253573 +23.307148615519168 +23.27879397074373 +23.266398747762 +23.21290206909177 +23.15393956502273 +23.138011296590136 +23.136325836181598 +23.093853632608997 +23.069882074991835 +23.009250005086233 +22.9468390146891 +22.912339528401635 +22.898791631062803 +22.885167439778602 +22.852009455362936 +22.796240488688102 +22.73041470845533 +22.724672317504837 +22.659394582112565 +22.629528681437137 +22.527479171752862 +22.527786890665634 +22.519217809041265 +22.468179066975896 +22.396605173746668 +22.321791330973266 +22.360854466756166 +22.2720387776692 +22.184150695800735 +22.176162083943634 +22.113992691039968 +22.108095804850205 +22.065607706705702 +22.015704472859667 +21.9533087412516 +21.923276265462203 +21.883406321207634 +21.84619458516433 +21.82681973775223 +21.810939153035434 +21.7628192901611 +21.737045288085866 +21.686961491902633 +21.66473007202143 +21.604998270670535 +21.615180969238235 +21.550700505574465 +21.534008026123033 +21.461556752522768 +21.43719100952143 +21.3366483052571 +21.2614332834879 +21.17719968159987 +21.135391235351534 +21.091815948486268 +21.007975260416632 +20.970092773437464 +20.88889503479 +20.82144228617347 +20.750383377075135 +20.668022155761665 +20.613840738932264 +20.4991327921549 +20.460297266642197 +20.39780934651687 +20.30454126993813 +20.2299702962239 +20.1797657012939 +20.099075953165666 +20.0594895680745 +19.9068444569905 +19.8240044911702 +19.699149449666297 +19.588456471761 +19.394701004028267 +19.062995274861635 +18.747334798177032 +18.102762222290032 +17.3237082163492 +17.0737546284993 +16.469440460205035 +16.170405387878333 +15.727392196655233 +15.542532602945899 +15.170979499816866 +14.822810808817465 +14.7076091766357 +14.255628267923967 +13.813156763712533 +13.623641649881968 +13.340375582377101 +13.282336235046335 +12.944255193074502 +12.972096761067666 +12.932656606038334 +12.873529434204066 +12.8573811848958 +12.7852525711059 +12.796308517456033 +12.6656980514526 +12.701954205830832 +12.538351376851333 +12.246160189310666 +12.142131487528433 +12.016954421997 +11.8083197275797 +11.5171467463175 +11.448683738708434 +11.306138356526667 +11.2918841044108 +11.282448132832767 +11.2012205123901 +11.186138788858967 +11.219949086507134 +10.986519177754667 +10.8862498601277 +10.794377644856732 +10.646450042724567 +10.500689188639297 +10.554624239603626 +10.461661656697572 +10.509399731953867 +10.634340922037701 +10.721719741821232 +10.8880774180094 +10.900989532470634 +10.7648035685221 +10.899195353190066 +10.848694483439099 +10.54029146830237 +10.14259020487463 +9.926195780436174 +9.857409795125296 +9.926224390665647 +10.140895207722936 +10.169772148132303 +9.909095764160122 +10.03143946329751 +9.66370550791421 +9.61093743642171 +9.582032521565752 +9.716975847879993 +9.719475746154773 +9.696458816528299 +9.491062800089514 +9.364958127339676 +9.24951044718424 +9.127551396687819 +8.927333831787102 +8.85773913065592 +8.817642211914055 +8.83983198801676 +8.791618982950839 +8.787240982055659 +8.929084777832026 +9.029824256896967 +9.431104342142707 +9.284155845642088 +8.98398876190185 +8.862243334452307 +8.69001388549804 +8.57817888259887 +8.18118810653686 +8.245029290517166 +8.414656639099114 +8.51598501205444 +8.21840079625447 +8.072731653849283 +7.942326068878169 +7.8919552167256635 +7.57638104756673 +7.50492366154988 +7.69839207331339 +7.41987260182698 +7.1595652898152595 +7.21335140864054 +7.11629962921142 +7.192653973897293 +6.902434349060054 +6.7051612536112435 +6.578870296478267 +6.607038338979083 +6.4632695515950465 +6.377407073974607 +6.1488930384318 +5.89786036809285 +5.687311967213944 +5.60881344477335 +5.437458515167234 +5.462761243184404 +5.294840335845943 +5.026396433512367 +5.10403474171956 +4.96311235427856 +5.07548316319783 +5.102670987447096 +5.06811682383219 +4.9946494102478 +4.811717033386227 +4.77493604024251 +4.587076187133784 +4.617873668670647 +4.291261355082187 +4.1593826611836695 +4.196264743804927 +4.3587784767150834 +4.432475884755447 +4.45363616943359 +4.318430582682287 +4.309316396713253 +4.2600998083750365 +4.12244550387064 +4.104924917221067 +3.9856890042622837 +4.059204816818233 +3.945832729339594 +4.01217110951741 +4.055552244186397 +3.9094203313191698 +3.88164329528808 +3.6916493574778166 +3.74242297808329 +3.9944079717000265 +3.935639699300127 +3.8651676972707065 +3.99688347180684 +4.179355144500726 +4.436509927113847 +4.67949239412943 +4.714931646982824 +4.682673613230384 +4.692822535832717 +4.502110560735063 +4.426411390304559 +4.584188540776567 +4.589328527450561 +4.577325344085686 +4.541442473729447 +4.398806651433303 +4.114416281382237 +4.179692427317296 +4.651808102925616 +4.528078476587926 +4.72254411379496 +5.380600611368813 +5.428591330846146 +5.5438704490661594 +5.739745616912839 +5.5742435455322195 +6.387530803680413 +6.569924036661781 +6.727960586547844 +6.6812415122985795 +6.595241228739417 +6.565009911855057 +6.527607123057041 +6.506785551706947 +6.487016995747879 +6.501859664916986 +6.49182271957397 +6.460379441579181 +6.484049161275223 +6.47468487421671 +6.4889438947041755 +6.529834906260167 +6.562057971954343 +6.581436475117997 +6.6419768333435 +6.67067956924438 +6.72003046671549 +6.726028760274247 +6.738666216532383 +6.707928180694573 +6.546840349833164 +6.069464365641274 +5.778771082560216 +4.85926548639933 +4.186954339345293 +3.959607680638627 +3.7223763465881263 +3.5423127810160264 +3.4621274471282937 +3.3961659272511766 +3.2528630097707065 +3.22822038332621 +3.1831500530242867 +3.01496871312459 +3.0460564295450836 +3.082822561264033 +2.982419331868483 +2.8647658824920597 +2.9975140889485634 +3.04020309448242 +2.988698085149123 +2.86487555503845 +2.932254473368323 +2.8833026885986306 +2.77916852633158 +2.6592930952707867 +2.6355712413787766 +2.698192675908403 +2.7814220587412506 +2.805457512537633 +2.77443488438924 +2.7762278715769404 +2.83278330167134 +2.8855063120524065 +2.8769884904225598 +2.962267716725663 +2.935369809468584 +2.4408629735310834 +2.4268865585327064 +2.6792532602945904 +2.6671905517578067 +2.48445852597554 +2.42376891771952 +2.54280459880828 +2.5469816128412837 +2.5654518604278533 +2.6171307563781667 +2.6114527384440067 +2.4973564545313467 +2.2287408510843867 +2.08004740873972 +2.0274103879928536 +2.0049735705057734 +1.9022175470987903 +1.9909256696700999 +2.0516879558563197 +1.8677914937337199 +1.835955341656997 +1.7585505644480366 +1.7262548605600934 +1.5867979129155432 +1.52787323792775 +1.55847024917602 +1.5819996595382635 +1.6453313032786 +1.3533236185709567 +1.2176802158355666 +1.264406601587927 +1.258383154869079 +1.3621990283330199 +1.2901677687962831 +1.0677060286203999 +1.073065439860023 +1.18435168266296 +1.2571052312850899 +1.2635072271029133 +1.3039612770080538 +1.180628756682076 +1.126907885074612 +0.8997726837793977 +1.0815858046213782 +1.5220432281494098 +1.4056187470753931 +1.75149456659952 +1.8767277399698867 +1.7622700532277369 +1.8854097922643003 +1.8184760808944667 +1.963785171508783 +1.8989067872365302 +1.8253536224365199 +1.74544521172841 +1.6009968519210764 +1.3655034303665134 +1.39985422293345 +1.3674686749776133 +1.4023724397023465 +1.3313035567601466 +1.37489541371663 +1.2898924350738465 +1.2419306834538733 +1.1715078552563944 +1.2252235412597636 +1.2879872322082466 +1.2863290309905966 +1.4392121235529567 +1.3541921377181965 +1.4524452686309768 +1.43919428189595 +1.4250888427098534 +1.4324368238449068 +1.4411777456601431 +1.5426448583602834 +1.5793231725692733 +1.7955026626586832 +1.58841188748677 +1.57649874687194 +1.43331170082092 +1.4638672471046419 +1.5515369971593167 +1.54563800493876 +1.6882859865824333 +1.4050855636596633 +1.7946323951085335 +1.4910835425058966 +1.4693698485692301 +1.5726987918217932 +1.7209786176681465 +1.7197975715001368 +1.5010365247726403 +1.4102361996968567 +1.4202358325322397 +1.2498341798782302 +1.2258956034978168 +1.2315990130106567 +1.117161472638445 +1.0740012725194268 +1.73649096488952 +1.8110556205113666 +2.0537987152735333 +1.85335485140482 +2.014668067296343 +2.0272432963053366 +2.3823797702789236 +2.3610551357269234 +2.23989669481913 +2.2828956445058166 +2.33366803328196 +2.146469950675957 +2.17094218730926 +2.11340697606404 +2.0197630921999576 +1.6778604785601254 +1.6097419659296623 +1.89909732341766 +1.6306945085525433 +1.5675686200459786 +1.3573525150616927 +1.4852943221727983 +1.473429918289183 +1.4318173130353253 +1.2980015675226813 +1.2242709199587474 +1.3512665629386855 +1.381083567937211 +1.0708131591478958 +0.9079664150873806 +0.9552531441052716 +0.8795150915781637 +0.8005741635958348 +0.8578868707021053 +0.9127023021380097 +0.925832231839495 +0.8862450520197537 +0.8075377941131586 +0.713444610436757 +0.784811913967132 +0.8009831508000685 +0.8121182521184277 +0.7737190922101337 +0.8251502712567648 +0.8664490779240923 +0.8757050633430472 +0.8268445332845046 +0.8356585899988808 +0.8155046900113424 +0.8253247936566667 +0.8324853777885429 +0.8073355754216506 +0.793373823165893 +0.8563236792882281 +0.8385467926661171 +0.8050000667572017 +0.7926639715830476 +0.8129531939824416 +0.8137420614560441 +0.762475947539011 +0.7014011542002354 +0.7638334830602007 +0.7226683894793187 +0.7193255424499507 +0.712758918603261 +0.7188412547111507 +0.7509174148241673 +0.767914275328318 +0.799274623394012 +0.7533416152000424 +0.7521073818206783 +0.75720864534378 +0.752025147279103 +0.7279477715492243 +0.7468376557032265 +0.7843407988548278 +0.8178753654162083 +0.8179414272308346 +0.803280134995778 +0.781991163889567 +0.7461319565773006 +0.766285161177317 +0.7713449994722996 +0.7858924667040504 +0.7536433339118953 +0.7347367604573564 +0.7435489694277444 +0.7485927542050673 +0.7815673351287833 +0.7947664260864253 +0.8037857810656224 +0.8079402248064674 +0.8087181250254307 +0.8129546244939166 +0.8023690978686013 +0.7664115230242405 +0.7849898735682164 +0.7648139993349706 +0.7626666824022923 +0.7670878171920773 +0.7742375334103896 +0.7706131537755326 +0.8046304583549494 +0.8256511886914567 +0.801750262578328 +0.7867567936579384 +0.7931033174196873 +0.8179400960604347 +0.8062234322230016 +0.7755837241808571 +0.7709509134292597 +0.8171948790550226 +0.8444371024767553 +0.8382307887077327 +0.8551436265309645 +0.8481778105099993 +0.7921654184659316 +0.7742267449696852 +0.7781094113985696 +0.7979031999905901 +0.7764981786410007 +0.790092507998148 +0.7647852698961887 +0.7227004369099929 +0.7517874042193093 +0.7592829863230385 +0.8245285948117567 +0.8327339887619013 +0.8264169494311006 +0.8449173370997106 +0.7861770788828526 +0.7696090340614316 +0.749499142169952 +0.7484530011812843 +0.7792729735374446 +0.7435944875081377 +0.6936251322428383 +0.7137895027796423 +0.7270878354708351 +0.7735210855801897 +0.8158143758773773 +0.8300382494926444 +0.8411009907722446 +0.8315735658009844 +0.7787100871404009 +0.7763062914212538 +0.8068939248720796 +0.8125431934992466 +0.8242850899696347 +0.8140680193901058 +0.8880764444669084 +0.9311143755912776 +0.8977424701054884 +0.8566151460011797 +0.8376818696657811 +0.8636081020037331 +0.846839547157287 +0.8809676766395564 +0.8451835115750627 +0.860678354899088 +0.899561742941538 +0.9184540510177609 +0.9063646594683327 +0.935786346594492 +0.8691836595535274 +0.8628024260203041 +0.8749498128890987 +0.8595525821050004 +0.8436279296874994 +0.8547390302022294 +0.7875223159790034 +0.7840155363082882 +0.8022559881210324 +0.8882027864456173 +0.878069718678792 +0.8813662131627393 +0.856372932593027 +0.8460400303204851 +0.84383487701416 +0.8534018596013384 +0.8875696460405984 +0.8360666632652277 +0.847265462080637 +0.8372198144594822 +0.8127410809199013 +0.8541966676712033 +0.8467114766438796 +0.7951111594835915 +0.7290277083714797 +0.7402267456054683 +0.8803209463755287 +0.9274963935216264 +0.9385068019231156 +0.9393637379010493 +0.910563786824544 +0.9061052997906996 +0.8648046453793837 +0.835487286249796 +0.873537858327229 +0.8392216364542641 +0.7961739699045811 +0.8130712906519566 +0.819679160912831 +0.8431211511294044 +0.9168419241905207 +0.910266717274983 +0.8873569965362543 +0.8641749024391167 +0.8157990773518873 +0.801007846991221 +0.8475480477015175 +0.852118094762166 +0.8693551421165461 +0.873954236507415 +0.8849604129791254 +0.9278666973113981 +0.910500645637511 +0.9088239868481951 +0.9015870491663609 +0.8806024988492323 +0.8734696706136064 +0.8729001681009922 +0.819567481676737 +0.8216708699862161 +0.8391004403432203 +0.8335873881975807 +0.8184310595194493 +0.8133698105812069 +0.8079289992650343 +0.8116783698399855 +0.7964945832888279 +0.7892396052678423 +0.8050183852513624 +0.7914880315462747 +0.8080138166745501 +0.8075699408849077 +0.7962358792622881 +0.7878578702608735 +0.7929980158805843 +0.7924996217091872 +0.7788372635841364 +0.7902914086977638 +0.7712619105974827 +0.775260428587595 +0.7510247230529784 +0.7385274569193516 +0.7121336857477819 +0.7119391163190203 +0.7256933252016697 +0.7276948889096574 +0.7357909878094987 +0.7582666277885434 +0.7585966189702348 +0.7430566946665443 +0.7969550490379333 +0.8066251277923581 +0.8045930067698156 +0.8094533880551653 +0.784126857916514 +0.7801663676897683 +0.767985880374908 +0.7670760353406263 +0.7688310345013933 +0.7690917452176406 +0.7626348137855524 +0.7575992147127787 +0.7524697383244826 +0.7469343940416966 +0.748106678326924 +0.7561162312825513 +0.7528325517972303 +0.7601157625516253 +0.7548082868258149 +0.7511889537175493 +0.7531124750773106 +0.7699490189552304 +0.7671161492665607 +0.7615383863449091 +0.750920931498209 +0.7485678990681963 +0.743802110354105 +0.7403834263483681 +0.7431256969769789 +0.732988278071085 +0.7287789980570469 +0.7267257173856096 +0.735300819079081 +0.7358958919843034 +0.7386148969332375 +0.7392436663309726 +0.73605461915334 +0.7326668500900263 +0.7043312986691787 +0.7047219673792516 +0.730636556943257 +0.73262079556783 +0.7213393449783316 +0.7118569413820897 +0.7055165966351824 +0.710639158884684 +0.7146968245506283 +0.7117455800374343 +0.6960999369621274 +0.6934788028399144 +0.6998607913653053 +0.6944836775461827 +0.706949214140574 +0.6953173677126564 +0.6868878404299412 +0.6932086547215777 +0.6780633727709446 +0.6896298925081887 +0.6835384567578631 +0.6861384510993953 +0.7036454478899633 +0.6995978951454159 +0.6881398558616634 +0.6822305917739864 +0.6928338805834446 +0.688524941603342 +0.6863512595494584 +0.6835672855377193 +0.6930961410204564 +0.7015269597371413 +0.6855770150820409 +0.6792856057484938 +0.6742800871531167 +0.676733752091725 +0.6997832059860226 +0.6899430553118386 +0.7010829846064244 +0.6842471361160273 +0.7037577430407204 +0.7020146250724787 +0.6797940135002131 +0.6799040834108983 +0.6806745926539101 +0.659062723318735 +0.6695477565129596 +0.6694873571395871 +0.6686256329218541 +0.658642748991648 +0.6279250184694923 +0.6100953420003251 +0.5967773000399262 +0.5758745670318596 +0.597871303558349 +0.597046275933583 +0.6154187321662897 +0.6107885837554926 +0.6059456467628476 +0.6164453029632567 +0.6245758930842077 +0.6276121536890663 +0.6505859096844987 +0.6527772943178807 +0.6640651623407997 +0.6556995511054989 +0.6655197540918983 +0.6952127416928607 +0.7195350329081213 +0.6994200746218361 +0.7311291098594662 +0.6885582009951271 +0.6818264524141943 +0.7028224666913343 +0.6742357611656186 +0.6699048280715939 +0.6720407207806903 +0.6430021921793617 +0.6102422674496963 +0.615156451861063 +0.601441214481989 +0.6053469975789384 +0.611015677452087 +0.6296399831771846 +0.672652721405029 +0.6808266242345171 +0.6763670841852821 +0.678444405396779 +0.6793174346288039 +0.6728571256001783 +0.6654535730679827 +0.6619612177213027 +0.6509292920430494 +0.6475027998288466 +0.636790454387664 +0.6341957052548723 +0.6303924918174743 +0.6283951997756952 +0.6121883392333983 +0.6016533176104223 +0.5965968767801916 +0.597698032855987 +0.5806524952252703 +0.5919677416483556 +0.5826191107432043 +0.589302023251851 +0.5870897769927973 +0.5844676693280534 +0.5898258090019224 +0.5919040838877354 +0.5943838953971856 +0.5886468887329099 +0.5883993903795873 +0.5766363938649489 +0.5595993399620053 +0.5569685697555536 +0.536520620187123 +0.5026266574859614 +0.46391815940539005 +0.4514709313710523 +0.43993839621543834 +0.40338120857874493 +0.25456496079762697 +0.170143082737922 +0.0012891686831911335 +-0.0723141046861807 +-0.21087100605169865 +-0.293938835461934 +-0.5503705143928523 +-0.736470520496368 +-1.1609101096789018 +-1.2810556888580267 +-1.34315133094787 +-1.358573476473487 +-1.4428465366363465 +-1.4469298124313301 +-1.4107644557952834 +-1.3912632067998203 +-1.33758346239725 +-1.25374035040537 +-1.1192842324574743 +-1.1170399983723918 +-1.1350409984588603 +-1.149164477984106 +-1.0466585159301713 +-1.0849566459655733 +-1.1671874125798467 +-1.1556453704833953 +-1.110842764377592 +-1.1091522177060407 +-1.0899144013722688 +-1.1159978310267096 +-1.2672624985376932 +-1.3255410591761232 +-1.3109470605850166 +-1.30364839235941 +-1.2499266068140635 +-1.2411401669184332 +-1.2492213249206532 +-1.2893706162770533 +-1.35851184527079 +-1.3891197045644066 +-1.39044046401977 +-1.35629284381866 +-1.3156083027521734 +-1.3060185114542602 +-1.3693310419718365 +-1.3674274285634331 +-1.3152492443720434 +-1.29540141423543 +-1.2512867450714067 +-1.22071246306101 +-1.2836081981658867 +-1.2866822083791032 +-1.2466971874236998 +-1.2343291044235167 +-1.2838584184646533 +-1.31752792994181 +-1.3650554418563765 +-1.3499516646067267 +-1.2854045232137 +-1.28821921348571 +-1.2956965764363566 +-1.32754508654276 +-1.4321711460749267 +-1.4870316187540633 +-1.6001000404357868 +-1.5572091738382934 +-1.4991691112518302 +-1.4853003422419169 +-1.4427150487899734 +-1.47539095083872 +-1.5539634227752634 +-1.5556966861088999 +-1.50443788369496 +-1.5539663632710734 +-1.6723229090372633 +-1.7337275743484433 +-1.9007566769917768 +-1.9179473320643068 +-1.959074854850763 +-1.9783296982447265 +-2.0368367830912235 +-2.063295761744173 +-2.146726290384923 +-2.1784540017445835 +-2.3130422433217297 +-2.333165327707923 +-2.32971628506978 +-2.3510847091674734 +-2.4087623755137066 +-2.4347058137257833 +-2.4784360726674333 +-2.5060110092163033 +-2.5714321136474565 +-2.5893356800079266 +-2.7022511959075906 +-2.7645335197448673 +-2.7939430077870635 +-2.822978576024367 +-2.92064754168192 +-2.9727326234181697 +-2.996651252110793 +-3.055549860000607 +-3.0891932646433466 +-3.1215105056762638 +-3.206927617390947 +-3.214969317118323 +-3.2887837092081633 +-3.284073511759433 +-3.34734479586283 +-3.41303753852844 +-3.4706366062164267 +-3.4781144460042266 +-3.5459078947702967 +-3.57475900650024 +-3.6312015851338635 +-3.66341304779052 +-3.7129118442535334 +-3.764595349629713 +-3.809021075566603 +-3.860372861226397 +-3.9747983614603632 +-3.9995417594909632 +-4.084459940592446 \ No newline at end of file diff --git a/bluemath_tk/wrappers/swash/templates/plants.txt b/bluemath_tk/wrappers/swash/templates/plants.txt deleted file mode 100644 index ab79fd2..0000000 --- a/bluemath_tk/wrappers/swash/templates/plants.txt +++ /dev/null @@ -1,1400 +0,0 @@ -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -1.000000e+00 -6.447157e-01 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00 \ No newline at end of file