diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..e7ad052 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,32 @@ +# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. +# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions +on: + push: + branches: + - main + - master + pull_request: + branches: + - main + - master + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: macOS-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + - uses: r-lib/actions/setup-r@v1 + - name: Install dependencies + run: | + install.packages(c("remotes", "rcmdcheck")) + remotes::install_deps(dependencies = TRUE) + shell: Rscript {0} + - name: Check + run: | + options(crayon.enabled = TRUE) + rcmdcheck::rcmdcheck(args = "--no-manual", error_on = "error") + shell: Rscript {0} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..75e14c7 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,116 @@ +# Code of Conduct - prospect + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, +threatening, offensive, or harmful. + +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will +communicate reasons for moderation decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at . +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://contributor-covenant.org/), version +[1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct/code_of_conduct.md) and +[2.0](https://www.contributor-covenant.org/version/2/0/code_of_conduct/code_of_conduct.md), +and was generated by [contributing-gen](https://github.com/bttger/contributing-gen). \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..38dc1ab --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,150 @@ + +# Contributing to prospect + +Thanks for taking the time to contribute! + +All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. + +> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: +> - Star the project +> - Tweet about it +> - Refer this project in your project's readme +> - Mention the project at local meetups and tell your friends/colleagues + + +## Table of Contents + +- [Code of Conduct](#code-of-conduct) +- [I Have a Question](#i-have-a-question) +- [I Want To Contribute](#i-want-to-contribute) + - [Reporting Bugs](#reporting-bugs) + - [Suggesting Enhancements](#suggesting-enhancements) + - [Your First Code Contribution](#your-first-code-contribution) + - [Improving The Documentation](#improving-the-documentation) +- [Styleguides](#styleguides) + - [Commit Messages](#commit-messages) +- [Join The Project Team](#join-the-project-team) + + +## Code of Conduct + +This project and everyone participating in it is governed by the +[prospect Code of Conduct](https://github.com/jbferet/prospectblob/master/CODE_OF_CONDUCT.md). +By participating, you are expected to uphold this code. Please report unacceptable behavior +to . + + +## I Have a Question + +> If you want to ask a question, we assume that you have read the available [Documentation](https://jbferet.gitlab.io/prospect/). + +Before you ask a question, it is best to search for existing [Issues](https://github.com/jbferet/prospect/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first. + +If you then still feel the need to ask a question and need clarification, we recommend the following: + +- Open an [Issue](https://github.com/jbferet/prospect/issues/new). +- Provide as much context as you can about what you're running into. +- Provide project and platform versions, depending on what seems relevant. + +We will then take care of the issue as soon as possible. + +## I Want To Contribute + +> ### Legal Notice +> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license. + +### Reporting Bugs + +> Please submit an issue to report any bug you identified. +Make sure that you provide sufficient information to reproduce this bug: script allowing reproducing the bug, error message associated, identification of the function responsible for the bug, version of the package... + + + + +#### Before Submitting a Bug Report + +A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible. + +- Make sure that you are using the latest version. +- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://jbferet.gitlab.io/prospect/). If you are looking for support, you might want to check [this section](#i-have-a-question)). +- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/jbferet/prospectissues?q=label%3Abug). +- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue. +- Collect information about the bug: + - Stack trace (Traceback) + - OS, Platform and Version (Windows, Linux, macOS, x86, ARM) + - Version of the interpreter, compiler, SDK, runtime environment, package manager, depending on what seems relevant. + - Possibly your input and the output + - Can you reliably reproduce the issue? And can you also reproduce it with older versions? + + +#### How Do I Submit a Good Bug Report? + +> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to . + + +We use GitHub issues to track bugs and errors. If you run into an issue with the project: + +- Open an [Issue](https://github.com/jbferet/prospect/issues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.) +- Explain the behavior you would expect and the actual behavior. +- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case. +- Provide the information you collected in the previous section. + +Once it's filed: + +- The project team will label the issue accordingly. +- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. +- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution). + + + + +### Suggesting Enhancements + +This section guides you through submitting an enhancement suggestion for prospect, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions. + + +#### Before Submitting an Enhancement + +- Make sure that you are using the latest version. +- Read the [documentation](https://jbferet.gitlab.io/prospect/) carefully and find out if the functionality is already covered, maybe by an individual configuration. +- Perform a [search](https://github.com/jbferet/prospect/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. +- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library. + + +#### How Do I Submit a Good Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://github.com/jbferet/prospect/issues). + +- Use a **clear and descriptive title** for the issue to identify the suggestion. +- Provide a **step-by-step description of the suggested enhancement** in as many details as possible. +- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you. +- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. +- **Explain why this enhancement would be useful** to most prospect users. You may also want to point out the other projects that solved it better and which could serve as inspiration. + + + +### Your First Code Contribution + + +### Improving The Documentation + +The documentation is not systematically kept up-to-date with the update of the package, due to lack of time from the main developers. We apologize if these tutorials raise errors. +If this is the case, pleasse report errors by submitting an issue. Any help identifying the error will be appreciated! +Updates, improvements and corrections of the documentation are very welcome. + + +## Styleguides +### Commit Messages + + +## Join The Project Team + + + +## Attribution +This guide is based on the **contributing-gen**. [Make your own](https://github.com/bttger/contributing-gen)! diff --git a/DESCRIPTION b/DESCRIPTION index 6b67b49..1a7578f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: prospect Title: PROSPECT leaf radiative transfer model and inversion routines -Version: 1.4.0 +Version: 1.5.0 Authors@R: c(person(given = "Jean-Baptiste", family = "Feret", email = "jb.feret@teledetection.fr", @@ -19,20 +19,20 @@ Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) RoxygenNote: 7.2.3 -Suggests: knitr, - rmarkdown +Suggests: + knitr, + emojifont, + rmarkdown, + testthat (>= 3.0.0) Imports: expint, pracma, future, NlcOptim, future.apply, - emojifont, progress, - Metrics, - ggplot2, - randomcoloR, dplyr VignetteBuilder: knitr URL: https://gitlab.com/jbferet/prospect BugReports: https://gitlab.com/jbferet/prospect/issues +Config/testthat/edition: 3 diff --git a/LICENSE.md b/LICENSE.md index 0104829..8672f90 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,595 +1,21 @@ -GNU General Public License -========================== - -_Version 3, 29 June 2007_ -_Copyright © 2007 Free Software Foundation, Inc. <>_ - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and other -kinds of works. - -The licenses for most software and other practical works are designed to take away -your freedom to share and change the works. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change all versions of a -program--to make sure it remains free software for all its users. We, the Free -Software Foundation, use the GNU General Public License for most of our software; it -applies also to any other work released this way by its authors. You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute -copies of free software (and charge for them if you wish), that you receive source -code or can get it if you want it, that you can change the software or use pieces of -it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or -asking you to surrender the rights. Therefore, you have certain responsibilities if -you distribute copies of the software, or if you modify it: responsibilities to -respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, -you must pass on to the recipients the same freedoms that you received. You must make -sure that they, too, receive or can get the source code. And you must show them these -terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: **(1)** assert -copyright on the software, and **(2)** offer you this License giving you legal permission -to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is -no warranty for this free software. For both users' and authors' sake, the GPL -requires that modified versions be marked as changed, so that their problems will not -be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of -the software inside them, although the manufacturer can do so. This is fundamentally -incompatible with the aim of protecting users' freedom to change the software. The -systematic pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we have designed -this version of the GPL to prohibit the practice for those products. If such problems -arise substantially in other domains, we stand ready to extend this provision to -those domains in future versions of the GPL, as needed to protect the freedom of -users. - -Finally, every program is threatened constantly by software patents. States should -not allow patents to restrict development and use of software on general-purpose -computers, but in those that do, we wish to avoid the special danger that patents -applied to a free program could make it effectively proprietary. To prevent this, the -GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -## TERMS AND CONDITIONS - -### 0. Definitions - -“This License” refers to version 3 of the GNU General Public License. - -“Copyright” also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - -“The Program” refers to any copyrightable work licensed under this -License. Each licensee is addressed as “you”. “Licensees” and -“recipients” may be individuals or organizations. - -To “modify” a work means to copy from or adapt all or part of the work in -a fashion requiring copyright permission, other than the making of an exact copy. The -resulting work is called a “modified version” of the earlier work or a -work “based on” the earlier work. - -A “covered work” means either the unmodified Program or a work based on -the Program. - -To “propagate” a work means to do anything with it that, without -permission, would make you directly or secondarily liable for infringement under -applicable copyright law, except executing it on a computer or modifying a private -copy. Propagation includes copying, distribution (with or without modification), -making available to the public, and in some countries other activities as well. - -To “convey” a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through a computer -network, with no transfer of a copy, is not conveying. - -An interactive user interface displays “Appropriate Legal Notices” to the -extent that it includes a convenient and prominently visible feature that **(1)** -displays an appropriate copyright notice, and **(2)** tells the user that there is no -warranty for the work (except to the extent that warranties are provided), that -licensees may convey the work under this License, and how to view a copy of this -License. If the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - -### 1. Source Code - -The “source code” for a work means the preferred form of the work for -making modifications to it. “Object code” means any non-source form of a -work. - -A “Standard Interface” means an interface that either is an official -standard defined by a recognized standards body, or, in the case of interfaces -specified for a particular programming language, one that is widely used among -developers working in that language. - -The “System Libraries” of an executable work include anything, other than -the work as a whole, that **(a)** is included in the normal form of packaging a Major -Component, but which is not part of that Major Component, and **(b)** serves only to -enable use of the work with that Major Component, or to implement a Standard -Interface for which an implementation is available to the public in source code form. -A “Major Component”, in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system (if any) on which -the executable work runs, or a compiler used to produce the work, or an object code -interpreter used to run it. - -The “Corresponding Source” for a work in object code form means all the -source code needed to generate, install, and (for an executable work) run the object -code and to modify the work, including scripts to control those activities. However, -it does not include the work's System Libraries, or general-purpose tools or -generally available free programs which are used unmodified in performing those -activities but which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for the work, and -the source code for shared libraries and dynamically linked subprograms that the work -is specifically designed to require, such as by intimate data communication or -control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate -automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -### 2. Basic Permissions - -All rights granted under this License are granted for the term of copyright on the -Program, and are irrevocable provided the stated conditions are met. This License -explicitly affirms your unlimited permission to run the unmodified Program. The -output from running a covered work is covered by this License only if the output, -given its content, constitutes a covered work. This License acknowledges your rights -of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without -conditions so long as your license otherwise remains in force. You may convey covered -works to others for the sole purpose of having them make modifications exclusively -for you, or provide you with facilities for running those works, provided that you -comply with the terms of this License in conveying all material for which you do not -control copyright. Those thus making or running the covered works for you must do so -exclusively on your behalf, under your direction and control, on terms that prohibit -them from making any copies of your copyrighted material outside their relationship -with you. - -Conveying under any other circumstances is permitted solely under the conditions -stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -### 3. Protecting Users' Legal Rights From Anti-Circumvention Law - -No covered work shall be deemed part of an effective technological measure under any -applicable law fulfilling obligations under article 11 of the WIPO copyright treaty -adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention -of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of -technological measures to the extent such circumvention is effected by exercising -rights under this License with respect to the covered work, and you disclaim any -intention to limit operation or modification of the work as a means of enforcing, -against the work's users, your or third parties' legal rights to forbid circumvention -of technological measures. - -### 4. Conveying Verbatim Copies - -You may convey verbatim copies of the Program's source code as you receive it, in any -medium, provided that you conspicuously and appropriately publish on each copy an -appropriate copyright notice; keep intact all notices stating that this License and -any non-permissive terms added in accord with section 7 apply to the code; keep -intact all notices of the absence of any warranty; and give all recipients a copy of -this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer -support or warranty protection for a fee. - -### 5. Conveying Modified Source Versions - -You may convey a work based on the Program, or the modifications to produce it from -the Program, in the form of source code under the terms of section 4, provided that -you also meet all of these conditions: - -* **a)** The work must carry prominent notices stating that you modified it, and giving a -relevant date. -* **b)** The work must carry prominent notices stating that it is released under this -License and any conditions added under section 7. This requirement modifies the -requirement in section 4 to “keep intact all notices”. -* **c)** You must license the entire work, as a whole, under this License to anyone who -comes into possession of a copy. This License will therefore apply, along with any -applicable section 7 additional terms, to the whole of the work, and all its parts, -regardless of how they are packaged. This License gives no permission to license the -work in any other way, but it does not invalidate such permission if you have -separately received it. -* **d)** If the work has interactive user interfaces, each must display Appropriate Legal -Notices; however, if the Program has interactive interfaces that do not display -Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are -not by their nature extensions of the covered work, and which are not combined with -it such as to form a larger program, in or on a volume of a storage or distribution -medium, is called an “aggregate” if the compilation and its resulting -copyright are not used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work in an aggregate -does not cause this License to apply to the other parts of the aggregate. - -### 6. Conveying Non-Source Forms - -You may convey a covered work in object code form under the terms of sections 4 and -5, provided that you also convey the machine-readable Corresponding Source under the -terms of this License, in one of these ways: - -* **a)** Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by the Corresponding Source fixed on a -durable physical medium customarily used for software interchange. -* **b)** Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by a written offer, valid for at least -three years and valid for as long as you offer spare parts or customer support for -that product model, to give anyone who possesses the object code either **(1)** a copy of -the Corresponding Source for all the software in the product that is covered by this -License, on a durable physical medium customarily used for software interchange, for -a price no more than your reasonable cost of physically performing this conveying of -source, or **(2)** access to copy the Corresponding Source from a network server at no -charge. -* **c)** Convey individual copies of the object code with a copy of the written offer to -provide the Corresponding Source. This alternative is allowed only occasionally and -noncommercially, and only if you received the object code with such an offer, in -accord with subsection 6b. -* **d)** Convey the object code by offering access from a designated place (gratis or for -a charge), and offer equivalent access to the Corresponding Source in the same way -through the same place at no further charge. You need not require recipients to copy -the Corresponding Source along with the object code. If the place to copy the object -code is a network server, the Corresponding Source may be on a different server -(operated by you or a third party) that supports equivalent copying facilities, -provided you maintain clear directions next to the object code saying where to find -the Corresponding Source. Regardless of what server hosts the Corresponding Source, -you remain obligated to ensure that it is available for as long as needed to satisfy -these requirements. -* **e)** Convey the object code using peer-to-peer transmission, provided you inform -other peers where the object code and Corresponding Source of the work are being -offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the -Corresponding Source as a System Library, need not be included in conveying the -object code work. - -A “User Product” is either **(1)** a “consumer product”, which -means any tangible personal property which is normally used for personal, family, or -household purposes, or **(2)** anything designed or sold for incorporation into a -dwelling. In determining whether a product is a consumer product, doubtful cases -shall be resolved in favor of coverage. For a particular product received by a -particular user, “normally used” refers to a typical or common use of -that class of product, regardless of the status of the particular user or of the way -in which the particular user actually uses, or expects or is expected to use, the -product. A product is a consumer product regardless of whether the product has -substantial commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - -“Installation Information” for a User Product means any methods, -procedures, authorization keys, or other information required to install and execute -modified versions of a covered work in that User Product from a modified version of -its Corresponding Source. The information must suffice to ensure that the continued -functioning of the modified object code is in no case prevented or interfered with -solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for -use in, a User Product, and the conveying occurs as part of a transaction in which -the right of possession and use of the User Product is transferred to the recipient -in perpetuity or for a fixed term (regardless of how the transaction is -characterized), the Corresponding Source conveyed under this section must be -accompanied by the Installation Information. But this requirement does not apply if -neither you nor any third party retains the ability to install modified object code -on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to -continue to provide support service, warranty, or updates for a work that has been -modified or installed by the recipient, or for the User Product in which it has been -modified or installed. Access to a network may be denied when the modification itself -materially and adversely affects the operation of the network or violates the rules -and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with -this section must be in a format that is publicly documented (and with an -implementation available to the public in source code form), and must require no -special password or key for unpacking, reading or copying. - -### 7. Additional Terms - -“Additional permissions” are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. Additional -permissions that are applicable to the entire Program shall be treated as though they -were included in this License, to the extent that they are valid under applicable -law. If additional permissions apply only to part of the Program, that part may be -used separately under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any -additional permissions from that copy, or from any part of it. (Additional -permissions may be written to require their own removal in certain cases when you -modify the work.) You may place additional permissions on material, added by you to a -covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a -covered work, you may (if authorized by the copyright holders of that material) -supplement the terms of this License with terms: - -* **a)** Disclaiming warranty or limiting liability differently from the terms of -sections 15 and 16 of this License; or -* **b)** Requiring preservation of specified reasonable legal notices or author -attributions in that material or in the Appropriate Legal Notices displayed by works -containing it; or -* **c)** Prohibiting misrepresentation of the origin of that material, or requiring that -modified versions of such material be marked in reasonable ways as different from the -original version; or -* **d)** Limiting the use for publicity purposes of names of licensors or authors of the -material; or -* **e)** Declining to grant rights under trademark law for use of some trade names, -trademarks, or service marks; or -* **f)** Requiring indemnification of licensors and authors of that material by anyone -who conveys the material (or modified versions of it) with contractual assumptions of -liability to the recipient, for any liability that these contractual assumptions -directly impose on those licensors and authors. - -All other non-permissive additional terms are considered “further -restrictions” within the meaning of section 10. If the Program as you received -it, or any part of it, contains a notice stating that it is governed by this License -along with a term that is a further restriction, you may remove that term. If a -license document contains a further restriction but permits relicensing or conveying -under this License, you may add to a covered work material governed by the terms of -that license document, provided that the further restriction does not survive such -relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in -the relevant source files, a statement of the additional terms that apply to those -files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a -separately written license, or stated as exceptions; the above requirements apply -either way. - -### 8. Termination - -You may not propagate or modify a covered work except as expressly provided under -this License. Any attempt otherwise to propagate or modify it is void, and will -automatically terminate your rights under this License (including any patent licenses -granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a -particular copyright holder is reinstated **(a)** provisionally, unless and until the -copyright holder explicitly and finally terminates your license, and **(b)** permanently, -if the copyright holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently -if the copyright holder notifies you of the violation by some reasonable means, this -is the first time you have received notice of violation of this License (for any -work) from that copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of -parties who have received copies or rights from you under this License. If your -rights have been terminated and not permanently reinstated, you do not qualify to -receive new licenses for the same material under section 10. - -### 9. Acceptance Not Required for Having Copies - -You are not required to accept this License in order to receive or run a copy of the -Program. Ancillary propagation of a covered work occurring solely as a consequence of -using peer-to-peer transmission to receive a copy likewise does not require -acceptance. However, nothing other than this License grants you permission to -propagate or modify any covered work. These actions infringe copyright if you do not -accept this License. Therefore, by modifying or propagating a covered work, you -indicate your acceptance of this License to do so. - -### 10. Automatic Licensing of Downstream Recipients - -Each time you convey a covered work, the recipient automatically receives a license -from the original licensors, to run, modify and propagate that work, subject to this -License. You are not responsible for enforcing compliance by third parties with this -License. - -An “entity transaction” is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an organization, or -merging organizations. If propagation of a covered work results from an entity -transaction, each party to that transaction who receives a copy of the work also -receives whatever licenses to the work the party's predecessor in interest had or -could give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if the predecessor -has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or -affirmed under this License. For example, you may not impose a license fee, royalty, -or other charge for exercise of rights granted under this License, and you may not -initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging -that any patent claim is infringed by making, using, selling, offering for sale, or -importing the Program or any portion of it. - -### 11. Patents - -A “contributor” is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The work thus -licensed is called the contributor's “contributor version”. - -A contributor's “essential patent claims” are all patent claims owned or -controlled by the contributor, whether already acquired or hereafter acquired, that -would be infringed by some manner, permitted by this License, of making, using, or -selling its contributor version, but do not include claims that would be infringed -only as a consequence of further modification of the contributor version. For -purposes of this definition, “control” includes the right to grant patent -sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license -under the contributor's essential patent claims, to make, use, sell, offer for sale, -import and otherwise run, modify and propagate the contents of its contributor -version. - -In the following three paragraphs, a “patent license” is any express -agreement or commitment, however denominated, not to enforce a patent (such as an -express permission to practice a patent or covenant not to sue for patent -infringement). To “grant” such a patent license to a party means to make -such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the -Corresponding Source of the work is not available for anyone to copy, free of charge -and under the terms of this License, through a publicly available network server or -other readily accessible means, then you must either **(1)** cause the Corresponding -Source to be so available, or **(2)** arrange to deprive yourself of the benefit of the -patent license for this particular work, or **(3)** arrange, in a manner consistent with -the requirements of this License, to extend the patent license to downstream -recipients. “Knowingly relying” means you have actual knowledge that, but -for the patent license, your conveying the covered work in a country, or your -recipient's use of the covered work in a country, would infringe one or more -identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you -convey, or propagate by procuring conveyance of, a covered work, and grant a patent -license to some of the parties receiving the covered work authorizing them to use, -propagate, modify or convey a specific copy of the covered work, then the patent -license you grant is automatically extended to all recipients of the covered work and -works based on it. - -A patent license is “discriminatory” if it does not include within the -scope of its coverage, prohibits the exercise of, or is conditioned on the -non-exercise of one or more of the rights that are specifically granted under this -License. You may not convey a covered work if you are a party to an arrangement with -a third party that is in the business of distributing software, under which you make -payment to the third party based on the extent of your activity of conveying the -work, and under which the third party grants, to any of the parties who would receive -the covered work from you, a discriminatory patent license **(a)** in connection with -copies of the covered work conveyed by you (or copies made from those copies), or **(b)** -primarily for and in connection with specific products or compilations that contain -the covered work, unless you entered into that arrangement, or that patent license -was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied -license or other defenses to infringement that may otherwise be available to you -under applicable patent law. - -### 12. No Surrender of Others' Freedom - -If conditions are imposed on you (whether by court order, agreement or otherwise) -that contradict the conditions of this License, they do not excuse you from the -conditions of this License. If you cannot convey a covered work so as to satisfy -simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not convey it at all. For example, if you -agree to terms that obligate you to collect a royalty for further conveying from -those to whom you convey the Program, the only way you could satisfy both those terms -and this License would be to refrain entirely from conveying the Program. - -### 13. Use with the GNU Affero General Public License - -Notwithstanding any other provision of this License, you have permission to link or -combine any covered work with a work licensed under version 3 of the GNU Affero -General Public License into a single combined work, and to convey the resulting work. -The terms of this License will continue to apply to the part which is the covered -work, but the special requirements of the GNU Affero General Public License, section -13, concerning interaction through a network will apply to the combination as such. - -### 14. Revised Versions of this License - -The Free Software Foundation may publish revised and/or new versions of the GNU -General Public License from time to time. Such new versions will be similar in spirit -to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that -a certain numbered version of the GNU General Public License “or any later -version” applies to it, you have the option of following the terms and -conditions either of that numbered version or of any later version published by the -Free Software Foundation. If the Program does not specify a version number of the GNU -General Public License, you may choose any version ever published by the Free -Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU -General Public License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no -additional obligations are imposed on any author or copyright holder as a result of -your choosing to follow a later version. - -### 15. Disclaimer of Warranty - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE -DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -### 16. Limitation of Liability - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS -PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE -OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE -WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -### 17. Interpretation of Sections 15 and 16 - -If the disclaimer of warranty and limitation of liability provided above cannot be -given local legal effect according to their terms, reviewing courts shall apply local -law that most closely approximates an absolute waiver of all civil liability in -connection with the Program, unless a warranty or assumption of liability accompanies -a copy of the Program in return for a fee. - -_END OF TERMS AND CONDITIONS_ - -## How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to -the public, the best way to achieve this is to make it free software which everyone -can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them -to the start of each source file to most effectively state the exclusion of warranty; -and each file should have at least the “copyright” line and a pointer to -where the full notice is found. - - - Copyright (C) 2020 Jean-Baptiste Feret - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like this -when it starts in an interactive mode: - - prospect Copyright (C) 2020 Jean-Baptiste Feret - This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type 'show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate parts of -the General Public License. Of course, your program's commands might be different; -for a GUI interface, you would use an “about box”. - -You should also get your employer (if you work as a programmer) or school, if any, to -sign a “copyright disclaimer” for the program, if necessary. For more -information on this, and how to apply and follow the GNU GPL, see -<>. - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider it -more useful to permit linking proprietary applications with the library. If this is -what you want to do, use the GNU Lesser General Public License instead of this -License. But first, please read -<>. +MIT License + +Copyright (c) 2020-present Jean-Baptiste Féret + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/NAMESPACE b/NAMESPACE index 656d76b..7796044 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -12,18 +12,15 @@ export(PROSPECT) export(PROSPECT_LUT) export(SetInitParm) export(SetNValues) -export(Warn_MissingInput) export(calctav) export(check_prospect_parms) +export(check_version_prospect) +export(colour_to_ansi) export(optimal_features_SFS) -export(plotinv) -export(print_msg_classLOP) -export(print_msg_lengthLOP) +export(print_msg) export(reshape_lop4inversion) export(tryInversion) import(dplyr) -import(ggplot2) -importFrom(Metrics,rmse) importFrom(expint,expint) importFrom(future,multisession) importFrom(future,plan) @@ -32,7 +29,6 @@ importFrom(future.apply,future_lapply) importFrom(pracma,fmincon) importFrom(pracma,rmserr) importFrom(progress,progress_bar) -importFrom(randomcoloR,distinctColorPalette) importFrom(stats,lm) importFrom(stats,runif) importFrom(utils,tail) diff --git a/NEWS.md b/NEWS.md index 6a0e50b..c4b9588 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,20 @@ +# prospect v1.5.0 +version following reviews for publication in JOSS + +## Changes +- change license to MIT (Issue#3: Consider a different license) +- include plain text version of specific absorption coefficients with variable prospect::SpecPROSPECT_FullRange (Issue#4: Consider including plain-text versions of PROSPECT coefficients) +- remove function plotinv and corresponding required packages (Issue#5: Move randomcoloR to Suggests) +- pre-calculate calctav for angles 40 degrees (default) and 90 degrees (always needed) and add them to SpecPROSPECT_FullRange (Issue#6: Pre-calculate calctav) +- added tests for PROSPECT, Invert_PROSPECT and Invert_PROSPECT_OPT (Issue#7: Add automated unit tests) +- add CONTRIBUTION.md and CODE_OF_CONDUCT.md (Issue#8: Add contribution guide) +- update documentation and harmonize with corresponding code for JOSS manuscript (Issue#10: harmonize web tutorial with JOSS manuscript examples) +- overall update of the code to work with dataframes more systematically +- only two versions now defined in the package (D and PRO), and the use of brown pigments is accessible during inversion by setting Est_Brown_Pigments == TRUE + +## fixes +- fixed error occuring when PROSPECT-PRO inversion performed to assess EWT + # prospect v1.4.0 ## fixes diff --git a/R/Lib_PROSPECT.R b/R/Lib_PROSPECT.R index ecbb780..d88716e 100644 --- a/R/Lib_PROSPECT.R +++ b/R/Lib_PROSPECT.R @@ -11,15 +11,16 @@ # ============================================================================== #' core function running PROSPECT -#' This function allows simulations using PROSPECT-D or PROSPECT-PRO depending on -#' the parameterization. +#' This function allows simulations using PROSPECT-D or PROSPECT-PRO depending +#' on the parameterization. # This code includes numerical optimizations proosed in the FLUSPECT code # Authors: Wout Verhoef, Christiaan van der Tol (tol@itc.nl), Joris Timmermans, # Date: 2007 # Update from PROSPECT to FLUSPECT: January 2011 (CvdT) #' -#' @param SpecPROSPECT list. Includes optical constants -#' refractive index, specific absorption coefficients and corresponding spectral bands +#' @param SpecPROSPECT list. Includes spectral constants derived from +#' SpecPROSPECT_FullRange: refractive index, specific absorption coefficients +#' and corresponding spectral bands #' @param N numeric. Leaf structure parameter #' @param CHL numeric. Chlorophyll content (microg.cm-2) #' @param CAR numeric. Carotenoid content (microg.cm-2) @@ -34,47 +35,32 @@ #' @return leaf directional-hemispherical reflectance and transmittance #' @importFrom expint expint #' @export -PROSPECT <- function(SpecPROSPECT, N = 1.5, CHL = 40.0, +PROSPECT <- function(SpecPROSPECT = NULL, N = 1.5, CHL = 40.0, CAR = 8.0, ANT = 0.0, BROWN = 0.0, EWT = 0.01, - LMA = NULL, PROT = 0.0, CBC = 0.0, alpha = 40.0) { + LMA = NULL, PROT = 0, CBC = 0, alpha = 40.0) { - # if calling PROSPECT-PRO (protein content or CBC defined by user) - # then set LMA to 0 in any case - if (!is.null(PROT) | !is.null(CBC)) { - if (PROT > 0 | CBC > 0){ - if (is.null(LMA)) LMA <- 0 - } - if (!LMA==0 & (PROT > 0 | CBC > 0)) { - message("PROT and/or CBC are not set to 0") - message("LMA is not set to 0 neither, which is physically incorrect") - message("(LMA = PROT + CBC)") - message("We assume that PROSPECT-PRO was called and set LMA to 0") - message("Please correct input parameters LMA, PROT and/or CBC if needed") - LMA <- 0 - } - } - # if calling PROSPECT-D (protein content or CBC defined by user and > 0) - # setting default value for LMA - if (is.null(LMA)){ - LMA <- 0.008 - } + # default: simulates leaf optics using full spectral range + if (is.null(SpecPROSPECT)) SpecPROSPECT <- prospect::SpecPROSPECT_FullRange + # check if LMA, PROT and CBC are correctly parameterized + dm_val <- check_version_prospect(LMA, PROT, CBC) + # compute total absorption corresponding to each homogeneous layer + Kall <- (CHL * SpecPROSPECT$SAC_CHL + + CAR * SpecPROSPECT$SAC_CAR + + ANT * SpecPROSPECT$SAC_ANT + + BROWN * SpecPROSPECT$SAC_BROWN + + EWT * SpecPROSPECT$SAC_EWT + + dm_val$LMA * SpecPROSPECT$SAC_LMA + + dm_val$PROT * SpecPROSPECT$SAC_PROT + + dm_val$CBC * SpecPROSPECT$SAC_CBC) / N - # if PROSPECT values are provided as individual parameters - Input_PROSPECT <- data.frame('CHL' = CHL, 'CAR' = CAR, 'ANT' = ANT, 'BROWN' = BROWN, - 'EWT' = EWT, 'LMA' = LMA, 'PROT' = PROT, 'CBC' = CBC, - 'N' = N, 'alpha' =alpha) - - - Kall <- (Input_PROSPECT$CHL * SpecPROSPECT$SAC_CHL + Input_PROSPECT$CAR * SpecPROSPECT$SAC_CAR + - Input_PROSPECT$ANT * SpecPROSPECT$SAC_ANT + Input_PROSPECT$BROWN * SpecPROSPECT$SAC_BROWN + - Input_PROSPECT$EWT * SpecPROSPECT$SAC_EWT + Input_PROSPECT$LMA * SpecPROSPECT$SAC_LMA + - Input_PROSPECT$PROT * SpecPROSPECT$SAC_PROT + Input_PROSPECT$CBC * SpecPROSPECT$SAC_CBC) / Input_PROSPECT$N - - j <- which(Kall > 0) # Non-conservative scattering (normal case) + # Non-conservative scattering (normal case) when Kall > 0 + j <- which(Kall <= 0) t1 <- (1 - Kall) * exp(-Kall) t2 <- (Kall * Kall) * expint(Kall) - tau <- matrix(1, ncol = 1, nrow = length(t1)) - tau[j] <- t1[j] + t2[j] + tau <- t1 + t2 + if (length(j)>0) tau[j] <- 1 + # tau <- matrix(1, ncol = 1, nrow = length(t1)) + # tau[j] <- t1[j] + t2[j] # *********************************************************************** # reflectance and transmittance of one layer @@ -85,9 +71,13 @@ PROSPECT <- function(SpecPROSPECT, N = 1.5, CHL = 40.0, # *********************************************************************** # reflectivity and transmissivity at the interface # *********************************************************************** - talf <- calctav(Input_PROSPECT$alpha, SpecPROSPECT$nrefrac) + if (alpha == 40) { + talf <- SpecPROSPECT$calctav_40 + } else { + talf <- calctav(alpha, SpecPROSPECT$nrefrac) + } ralf <- 1 - talf - t12 <- calctav(90, SpecPROSPECT$nrefrac) + t12 <- SpecPROSPECT$calctav_90 r12 <- 1 - t12 t21 <- t12 / (SpecPROSPECT$nrefrac**2) r21 <- 1 - t21 @@ -115,7 +105,7 @@ PROSPECT <- function(SpecPROSPECT, N = 1.5, CHL = 40.0, a <- (1 + rq - tq + D) / (2 * r) b <- (1 - rq + tq + D) / (2 * t) - bNm1 <- b**(Input_PROSPECT$N - 1) + bNm1 <- b**(N - 1) bN2 <- bNm1**2 a2 <- a**2 denom <- a2 * bN2 - 1 @@ -127,18 +117,19 @@ PROSPECT <- function(SpecPROSPECT, N = 1.5, CHL = 40.0, Tsub[j] <- t[j] / (t[j] + (1 - t[j]) * (N - 1)) Rsub[j] <- 1 - Tsub[j] - # Reflectance and transmittance of the leaf: combine top layer with next N-1 layers + # leaf reflectance and transmittance : combine top layer with next N-1 layers denom <- 1 - Rsub * r tran <- Ta * Tsub / denom refl <- Ra + (Ta * Rsub * t) / denom - my_list <- list("Reflectance" = refl, "Transmittance" = tran, "wvl" = SpecPROSPECT$lambda) - return(my_list) + return(data.frame('wvl' = SpecPROSPECT$lambda, + 'Reflectance' = refl, + 'Transmittance' = tran)) } #' computation of transmissivity of a dielectric plane surface, #' averaged over all directions of incidence and over all polarizations. #' -#' @param alpha numeric. Maximum incidence angle defining the solid angle of incident light +#' @param alpha numeric. max incidence angle of solid angle of incident light #' @param nr numeric. refractive index #' #' @return numeric. Transmissivity of a dielectric plane surface @@ -180,102 +171,132 @@ calctav <- function(alpha, nr) { return(tav) } +#' This function checks if the input parameters are defined as expected +#' to run either PROSPECT-D or PROSPECT-PRO +#' @param LMA numeric. content corresponding to LMA +#' @param PROT numeric. content corresponding to protein content +#' @param CBC numeric. content corresponding to carbon based constituents +#' +#' @return list. updated LMA, PROT and CBC +#' @export + +check_version_prospect <- function(LMA, PROT, CBC){ + # PROSPECT-D as default value + if (is.null(LMA) & PROT == 0 & CBC == 0) LMA <- 0.008 + # PROSPECT-PRO if PROT or CBC are not NULL + if (is.null(LMA) & (PROT > 0 | CBC > 0)) LMA <- 0 + # if calling PROSPECT-PRO (protein content or CBC defined by user) + # then set LMA to 0 in any case + if (!LMA==0 & (PROT > 0 | CBC > 0)) { + print_msg('version_PROSPECT') + LMA <- 0 + } + return(list('LMA' = LMA, 'PROT' = PROT, 'CBC' = CBC)) +} + +#' This function adapts SpecPROSPECT accordingly to experimental data +#' or to a spectral domain defined by UserDomain +#' @param lambda numeric. Spectral bands corresponding to experimental data +#' @param SpecPROSPECT list. Includes optical constants +#' refractive index, specific absorption coefficients and corresponding spectral bands +#' @param Refl numeric. Measured reflectance data +#' @param Tran numeric. Measured Transmittance data +#' @param UserDomain numeric. either Lower and upper bounds for domain of interest (optional) +#' or list of spectral bands of interest +#' @param UL_Bounds boolean. set to TRUE if UserDomain only includes lower and upper band, +#' set to FALSE if UserDomain is a list of spectral bands (in nm) +#' +#' @return list including spectral properties at the new resolution +#' @import dplyr +#' @importFrom utils tail +#' @export + +FitSpectralData <- function(lambda, SpecPROSPECT = NULL, + Refl = NULL, Tran = NULL, + UserDomain = NULL, UL_Bounds = FALSE) { + # default: simulates leaf optics using full spectral range + if (is.null(SpecPROSPECT)) SpecPROSPECT <- prospect::SpecPROSPECT_FullRange + # convert Refl and Tran into dataframe if needed + if (class(Refl)[1]%in%c('numeric', 'matrix')) Refl <- data.frame(Refl) + if (class(Tran)[1]%in%c('numeric', 'matrix')) Tran <- data.frame(Tran) + # Adjust LOP: check common spectral domain between PROSPECT and leaf optics + if (!is.null(Refl)) Refl <- Refl %>% filter(lambda%in%SpecPROSPECT$lambda) + if (!is.null(Tran)) Tran <- Tran %>% filter(lambda%in%SpecPROSPECT$lambda) + lambda <- lambda[lambda%in%SpecPROSPECT$lambda] + # Adjust PROSPECT + lb <- lambda + SpecPROSPECT <- SpecPROSPECT %>% filter(SpecPROSPECT$lambda%in%lb) + # if UserDomain is defined + if (!is.null(UserDomain)) { + if (UL_Bounds==TRUE) UserDomain <- seq(min(UserDomain), max(UserDomain)) + if (!is.null(Refl)) Refl <- Refl %>% filter(lambda%in%UserDomain) + if (!is.null(Tran)) Tran <- Tran %>% filter(lambda%in%UserDomain) + lambda <- lambda[lambda%in%UserDomain] + # Adjust PROSPECT + SpecPROSPECT <- SpecPROSPECT %>% filter(SpecPROSPECT$lambda%in%UserDomain) + if (any(!UserDomain%in%lambda)){ + message('leaf optics out of range defined by UserDomain') + } + } + RT <- reshape_lop4inversion(Refl = Refl, + Tran = Tran, + SpecPROSPECT = SpecPROSPECT) + return(list("SpecPROSPECT" = SpecPROSPECT, "lambda" = lambda, + "Refl" = RT$Refl, "Tran" = RT$Tran, "nbSamples" = RT$nbSamples)) +} + #' computation of a LUT of leaf optical properties using a set of #' leaf chemical & structural parameters #' -#' @param SpecPROSPECT dataframe. Includes optical constants -#' refractive index, specific absorption coefficients and corresponding spectral bands +#' @param SpecPROSPECT list. spectral constants +#' refractive index, specific absorption coefficients & spectral bands #' @param Input_PROSPECT dataframe. full list of PROSPECT input parameters. Default = Set to NULL -#' @param N numeric. Leaf structure parameter -#' @param CHL numeric. Chlorophyll content (microg.cm-2) -#' @param CAR numeric. Carotenoid content (microg.cm-2) -#' @param ANT numeric. Anthocyain content (microg.cm-2) -#' @param BROWN numeric. Brown pigment content (Arbitrary units) -#' @param EWT numeric. Equivalent Water Thickness (g.cm-2) -#' @param LMA numeric. Leaf Mass per Area (g.cm-2) -#' @param PROT numeric. protein content (g.cm-2) -#' @param CBC numeric. NonProtCarbon-based constituent content (g.cm-2) -#' @param alpha numeric. Solid angle for incident light at surface of leaf #' #' @return list. LUT including leaf reflectance and transmittance #' @export -PROSPECT_LUT <- function(SpecPROSPECT, Input_PROSPECT = NULL, N = NULL, CHL = NULL, - CAR = NULL, ANT = NULL, BROWN = NULL, EWT = NULL, - LMA = NULL, PROT = NULL, CBC = NULL, alpha = NULL) { +PROSPECT_LUT <- function(Input_PROSPECT, SpecPROSPECT = NULL) { + if (is.null(SpecPROSPECT)) SpecPROSPECT <- prospect::SpecPROSPECT_FullRange # expected PROSPECT input parameters - ExpectedParms <- data.frame( - "CHL" = 0, "CAR" = 0, "ANT" = 0, "BROWN" = 0, "EWT" = 0, - "LMA" = 0, "PROT" = 0, "CBC" = 0, "N" = 1.5, "alpha" = 40 - ) - # if parameters already provided as a list - if (!is.null(Input_PROSPECT)) { - # identify missing elements - Parm2Add <- which(names(ExpectedParms) %in% names(Input_PROSPECT) == FALSE) - # check if all parameters are included. - if (length(Parm2Add) > 0) { - # print warning - Warn_MissingInput(Input_PROSPECT, ExpectedParms) - } - } else if (is.null(Input_PROSPECT)) { - # create a list of input parameters - Input_PROSPECT <- list( - "CHL" = CHL, "CAR" = CAR, "ANT" = ANT, - "BROWN" = BROWN, "EWT" = EWT, "LMA" = LMA, - "PROT" = PROT, "CBC" = CBC, "N" = N, - "alpha" = alpha - ) - # check if one or some input parametrs are NULL - OK_Parm <- which((lengths(Input_PROSPECT) != 0) == TRUE) - Parm2Add <- which((lengths(Input_PROSPECT) != 0) == FALSE) - # if missing parameter - if (length(Parm2Add) > 0) { - Input_PROSPECT <- Input_PROSPECT[-Parm2Add] - # print warning - Warn_MissingInput(Input_PROSPECT, ExpectedParms) - } - } + ExpectedParms <- data.frame('CHL' = 0, 'CAR' = 0, 'ANT' = 0, 'BROWN' = 0, + 'EWT' = 0, 'LMA' = 0, 'PROT' = 0, 'CBC' = 0, + 'N' = 1.5, 'alpha' = 40) + # parameters provided + inOK <- names(Input_PROSPECT) + # identify missing elements + Parm2Add <- which(!names(ExpectedParms) %in% inOK) + # check if all parameters are included. + if (length(Parm2Add) > 0) print_msg(cause = 'Missing_Input', + args = list('Input' = inOK, + 'Expected' = ExpectedParms)) + # re-order missing elements the end of the list using default value - Input_PROSPECT <- Complete_Input_PROSPECT(Input_PROSPECT, Parm2Add, ExpectedParms) + Input_PROSPECT <- Complete_Input_PROSPECT(Input_PROSPECT = Input_PROSPECT, + Parm2Add = Parm2Add, + ExpectedParms = ExpectedParms) # print number of samples to be simulated - nbSamples <- length(Input_PROSPECT[[1]]) - paste("A LUT will be produced, including", as.character(nbSamples), "samples", sep = " ") + nbSamples <- nrow(Input_PROSPECT) + messageLUT <- paste('A LUT with', nbSamples, 'samples will be produced') + cat(colour_to_ansi('green'), messageLUT, "\033[0m\n") # run PROSPECT for nbSamples - LUT_Refl <- LUT_Tran <- matrix(0, nrow = length(SpecPROSPECT$lambda), ncol = nbSamples) - for (i in 1:nbSamples) { - LUT_tmp <- do.call(PROSPECT, c(list(SpecPROSPECT = SpecPROSPECT), Input_PROSPECT[i, ])) - LUT_Refl[, i] <- LUT_tmp$Reflectance - LUT_Tran[, i] <- LUT_tmp$Transmittance + run_list_PROSPECT <- function(Input_PROSPECT, SpecPROSPECT){ + LUT_tmp <- do.call(PROSPECT, + c(list(SpecPROSPECT = SpecPROSPECT), + Input_PROSPECT)) + return(LUT_tmp) } - LUT <- list("Reflectance" = LUT_Refl, "Transmittance" = LUT_Tran, "Input_PROSPECT" = Input_PROSPECT) - return(LUT) -} - -#' Display warning message to inform about the parametrs default values -#' used during PROSPECT simulations -#' -#' @param Input_PROSPECT list. Input parameters sent to PROSPECT by user -#' @param ExpectedParms list. Full set of parameters expected to run PROSPECT -#' -#' @return WhichMissing missing parameters -#' @export -Warn_MissingInput <- function(Input_PROSPECT, ExpectedParms) { - message("_________________ WARNING _________________") - message(" The list of parameters provided for LUT ") - message(" in the Input_PROSPECT variable ") - message("does not include the full set of parameters") - message("") - # message(' Set of parameters included: ') - # print(names(Input_PROSPECT)) - # message('') - # message(' Set of parameters expected: ') - # print(names(ExpectedParms)) - # message('') - message(" The following parameters will be set to ") - message(" their default value as given here ") - WhichMissing <- (ExpectedParms[which(names(ExpectedParms) %in% names(Input_PROSPECT) == FALSE)]) - print(WhichMissing) + indiv_leaves <- split(Input_PROSPECT, + factor(seq(1:nbSamples))) + LUT_tmp <- lapply(X = indiv_leaves, + FUN = run_list_PROSPECT, + SpecPROSPECT = SpecPROSPECT) + LUT_Refl <- as.data.frame(lapply(LUT_tmp,'[[', 'Reflectance')) + LUT_Tran <- as.data.frame(lapply(LUT_tmp,'[[', 'Transmittance')) + names(LUT_Refl) <- names(LUT_Tran) <- paste0('sample_',seq(1,nbSamples)) + return(list('Reflectance' = LUT_Refl, + 'Transmittance' = LUT_Tran, + 'Input_PROSPECT' = Input_PROSPECT)) } #' Complete the list of PROSPECT parameters with default values @@ -293,14 +314,46 @@ Complete_Input_PROSPECT <- function(Input_PROSPECT, Parm2Add, ExpectedParms) { for (i in Parm2Add) { ii <- ii + 1 nbInputs <- nbInputs + 1 - Input_PROSPECT[[nbInputs]] <- matrix(ExpectedParms[[i]], ncol = 1, nrow = nbSamples) + Input_PROSPECT[[nbInputs]] <- matrix(ExpectedParms[[i]], + ncol = 1, nrow = nbSamples) names(Input_PROSPECT)[[nbInputs]] <- names(ExpectedParms)[[i]] } - Input_PROSPECT <- data.frame( - "CHL" = matrix(Input_PROSPECT$CHL, ncol = 1), "CAR" = matrix(Input_PROSPECT$CAR, ncol = 1), "ANT" = matrix(Input_PROSPECT$ANT, ncol = 1), - "BROWN" = matrix(Input_PROSPECT$BROWN, ncol = 1), "EWT" = matrix(Input_PROSPECT$EWT, ncol = 1), "LMA" = matrix(Input_PROSPECT$LMA, ncol = 1), - "PROT" = matrix(Input_PROSPECT$PROT, ncol = 1), "CBC" = matrix(Input_PROSPECT$CBC, ncol = 1), "N" = matrix(Input_PROSPECT$N, ncol = 1), - "alpha" = matrix(Input_PROSPECT$alpha, ncol = 1) - ) - return(Input_PROSPECT) + return(data.frame('CHL' = matrix(Input_PROSPECT$CHL, ncol = 1), + 'CAR' = matrix(Input_PROSPECT$CAR, ncol = 1), + 'ANT' = matrix(Input_PROSPECT$ANT, ncol = 1), + 'BROWN' = matrix(Input_PROSPECT$BROWN, ncol = 1), + 'EWT' = matrix(Input_PROSPECT$EWT, ncol = 1), + 'LMA' = matrix(Input_PROSPECT$LMA, ncol = 1), + 'PROT' = matrix(Input_PROSPECT$PROT, ncol = 1), + 'CBC' = matrix(Input_PROSPECT$CBC, ncol = 1), + 'N' = matrix(Input_PROSPECT$N, ncol = 1), + 'alpha' = matrix(Input_PROSPECT$alpha, ncol = 1))) +} + + +#' Convert plain text colour to ANSI code +#' +#' @param colour colour in plain text ("red", "green", etc.) to convert to ANSI +#' +#' @return string representing provided colour as ANSI encoding +#' +#' @examples +#' colour_to_ansi("red") # gives: "\033[31m" +#' @export + +colour_to_ansi <- function(colour) { + # Note ANSI colour codes + colour_codes <- list("black" = 30, + "red" = 31, + "green" = 32, + "yellow" = 33, + "blue" = 34, + "magenta" = 35, + "cyan" = 36, + "white" = 37) + + # Create ANSI version of colour + ansi_colour <- paste0("\033[", colour_codes[[colour]], "m") + return(ansi_colour) } + diff --git a/R/Lib_PROSPECT_Inversion.R b/R/Lib_PROSPECT_Inversion.R index 22fa1aa..cd145b7 100644 --- a/R/Lib_PROSPECT_Inversion.R +++ b/R/Lib_PROSPECT_Inversion.R @@ -28,7 +28,8 @@ #' @param xlub data.frame. Boundaries of the parameters to estimate. #' The data.frame must have columns corresponding to \code{Parms2Estimate} first line being #' the lower boundaries and second line the upper boundaries. -#' @param alphaEst boolean. should alpha be estimated or not? +#' @param Est_Brown_Pigments boolean. should brown pigments be accounted for during inversion? +#' @param Est_alpha boolean. should alpha be accounted for during inversion? #' @param verbose boolean. set true to get info about adjustment of tolerance or initialization #' @param progressBar boolean. show progressbar? #' @@ -55,68 +56,75 @@ #' @importFrom pracma fmincon #' @export #' @md -Invert_PROSPECT <- function(SpecPROSPECT, Refl = NULL, Tran = NULL, +Invert_PROSPECT <- function(SpecPROSPECT = NULL, + Refl = NULL, Tran = NULL, InitValues = data.frame( - CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0.01, EWT = 0.01, - LMA = 0.01, PROT = 0.001, CBC = 0.009, N = 1.5, alpha = 40), + CHL = 40, CAR = 10, + ANT = 0.1, BROWN = 0.0, + EWT = 0.01, LMA = 0.01, + PROT = 0.001, CBC = 0.009, + N = 1.5, alpha = 40), Parms2Estimate = "ALL", PROSPECT_version = "D", MeritFunction = "Merit_RMSE_PROSPECT", xlub = data.frame( - CHL = c(1e-4, 150), CAR = c(1e-4, 25), ANT = c(0, 50), - BROWN = c(0, 1), EWT = c(1e-8, 0.1), LMA = c(1e-8, .06), - PROT = c(1e-7, .006), CBC = c(1e-6, .054), N = c(.5, 4), - alpha = c(10, 90)), - alphaEst = FALSE,verbose = FALSE, - progressBar=TRUE) { + CHL = c(1e-4, 150), CAR = c(1e-4, 25), + ANT = c(0, 50), BROWN = c(0, 1), + EWT = c(1e-8, 0.1), LMA = c(1e-8, 0.06), + PROT = c(1e-7, 0.006), CBC = c(1e-6, 0.054), + N = c(0.5, 4), alpha = c(10, 90)), + Est_Brown_Pigments = FALSE, Est_alpha = FALSE, + verbose = FALSE, progressBar = TRUE) { + if (is.null(SpecPROSPECT)) SpecPROSPECT <- prospect::SpecPROSPECT_FullRange # add default values to xlub in case they were not defined - xlub_default <- data.frame(CHL = c(1e-4, 150), CAR = c(1e-4, 25), ANT = c(0, 50), - BROWN = c(0, 1), EWT = c(1e-8, 0.1), LMA = c(1e-6, .06), - PROT = c(1e-7, .006), CBC = c(1e-6, .054), N = c(.5, 4), - alpha = c(10, 90)) - + xlub_default <- data.frame(CHL = c(1e-4, 150), CAR = c(1e-4, 25), + ANT = c(0, 50), BROWN = c(0, 1), + EWT = c(1e-8, 0.1), LMA = c(1e-6, .06), + PROT = c(1e-7, .006), CBC = c(1e-6, .054), + N = c(.5, 4), alpha = c(10, 90)) AddedParm_LB <- setdiff(names(xlub_default),names(xlub)) - for (ad in AddedParm_LB){ - xlub[[ad]] <- xlub_default[[ad]] - } - + for (ad in AddedParm_LB) xlub[[ad]] <- xlub_default[[ad]] # check if list of parameters applicable to PROSPECT version parms_checked <- check_prospect_parms(PROSPECT_version = PROSPECT_version, - alphaEst = alphaEst, Parms2Estimate = Parms2Estimate, + Est_Brown_Pigments = Est_Brown_Pigments, + Est_alpha = Est_alpha, xlub = xlub, InitValues = InitValues) # check if data class is compatible and convert into data.frame - RT <- reshape_lop4inversion(Refl = Refl, Tran = Tran, SpecPROSPECT = SpecPROSPECT) + RT <- reshape_lop4inversion(Refl = Refl, + Tran = Tran, + SpecPROSPECT = SpecPROSPECT) OutPROSPECT <- list() if (progressBar==TRUE){ pb <- progress::progress_bar$new( - format = "Inverting PROSPECT [:bar] :percent in :elapsedfull , estimated time remaining :eta", + format = "Inverting PROSPECT [:bar] :percent in :elapsedfull, estimated time remaining :eta", total = RT$nbSamples, clear = FALSE, width= 100) } - for (idsample in 1:RT$nbSamples){ - res <- tryInversion(x0 = parms_checked$InitValues, MeritFunction = MeritFunction, + for (idsample in seq_len(RT$nbSamples)){ + res <- tryInversion(x0 = parms_checked$InitValues, + MeritFunction = MeritFunction, SpecPROSPECT = SpecPROSPECT, - Refl = RT$Refl[,idsample], Tran = RT$Tran[,idsample], + Refl = RT$Refl[[idsample]], Tran = RT$Tran[[idsample]], Parms2Estimate = parms_checked$Parms2Estimate, - lb = parms_checked$lb, ub = parms_checked$ub, verbose = verbose) + lb = parms_checked$lb, ub = parms_checked$ub, + verbose = verbose) if (NA %in% res$par){ ModifyInit <- match(parms_checked$Parms2Estimate,names(parms_checked$InitValues)) updateInitValues <- parms_checked$InitValues updateInitValues[ModifyInit] <- 1.1*updateInitValues[ModifyInit] res <- tryInversion(x0 = updateInitValues, MeritFunction = MeritFunction, SpecPROSPECT = SpecPROSPECT, - Refl = RT$Refl[,idsample], Tran = RT$Tran[,idsample], + Refl = RT$Refl[[idsample]], Tran = RT$Tran[[idsample]], Parms2Estimate = parms_checked$Parms2Estimate, - lb = parms_checked$lb, ub = parms_checked$ub, verbose = TRUE) + lb = parms_checked$lb, ub = parms_checked$ub, + verbose = verbose) } names(res$par) <- parms_checked$Parms2Estimate OutPROSPECT[[idsample]] <- parms_checked$InitValues OutPROSPECT[[idsample]][names(res$par)] <- res$par - if (progressBar==TRUE){ - pb$tick() - } + if (progressBar==TRUE) pb$tick() } OutPROSPECT <- do.call(rbind,OutPROSPECT) return(OutPROSPECT) @@ -142,43 +150,40 @@ Invert_PROSPECT <- function(SpecPROSPECT, Refl = NULL, Tran = NULL, #' @importFrom pracma fmincon #' @export -tryInversion <- function(x0, MeritFunction, SpecPROSPECT, Refl, Tran, Parms2Estimate, - lb, ub, verbose = FALSE) { +tryInversion <- function(x0, MeritFunction, SpecPROSPECT, Refl, Tran, + Parms2Estimate, lb, ub, verbose = FALSE) { - res <-list() - res$par <- NA * c(1:length(Parms2Estimate)) - for (i in seq(-14,-2,1)){ - Tolerance = 10**(i) + res <-list('par' = NA*vector(length = length(Parms2Estimate))) + TolRange <- seq(-14,-2,1) + for (i in TolRange){ + Tolerance <- 10**(i) if (is.na(res$par[1])){ res <- tryCatch( { res <- fmincon( - x0 = as.numeric(x0[Parms2Estimate]), fn = MeritFunction, gr = NULL, + x0 = as.numeric(x0[Parms2Estimate]), + fn = MeritFunction, gr = NULL, SpecPROSPECT = SpecPROSPECT, Refl = Refl, Tran = Tran, Input_PROSPECT = x0, Parms2Estimate = Parms2Estimate, method = "SQP", A = NULL, b = NULL, Aeq = NULL, beq = NULL, - lb = as.numeric(lb), ub = as.numeric(ub), hin = NULL, heq = NULL, tol = Tolerance, - maxfeval = 2000, maxiter = 1000 + lb = as.numeric(lb), ub = as.numeric(ub), hin = NULL, heq = NULL, + tol = Tolerance, maxfeval = 2000, maxiter = 1000 ) }, error = function(cond) { - if (verbose){ - message('Adjusting Tolerance value for iterative optimization: ',Tolerance) - } - res <- list() - res$par <- NA * c(1:length(Parms2Estimate)) - return(res) + if (verbose) print_msg(cause = 'AdjustTol', + args = list('Tolerance' = Tolerance)) + return(list('par' = NA*vector(length = length(Parms2Estimate)))) }, - finally = { - } + finally = {} ) } } # test if one of the parameters to be estimated reached lower or upper bound + attempt <- 0 names(res$par) <- Parms2Estimate reinit <- FALSE - attempt <- 0 for (parm in Parms2Estimate){ if (isTRUE(all.equal(res$par[[parm]], lb[[parm]]))){ reinit <- TRUE @@ -190,23 +195,16 @@ tryInversion <- function(x0, MeritFunction, SpecPROSPECT, Refl, Tran, Parms2Esti } } if (is.na(as.numeric(res$par[[1]]))){ - for (parm in Parms2Estimate){ - # x0[parm] <- 0.5*(x0[parm]+ub[[parm]]) - x0[parm] <- lb[[parm]]+runif(1)*(ub[[parm]]-lb[[parm]]) - } + for (parm in Parms2Estimate) x0[parm] <- lb[[parm]]+runif(1)*(ub[[parm]]-lb[[parm]]) reinit <- TRUE } # if lower or upper band reached, perform new inversion with readjusted initial values while (reinit==TRUE & attempt<2){ attempt <- attempt+1 - if (verbose){ - message('lower or upper bound reached for one or several parameters to estimate') - message('re-run inversion with updated initial values to attempt proper convergence') - } - res <-list() - res$par <- NA * c(1:length(Parms2Estimate)) - for (i in seq(-14,-2,1)){ - Tolerance = 10**(i) + if (verbose) print_msg(cause = 'ULBounds') + res <- list('par' = NA*vector(length = length(Parms2Estimate))) + for (i in TolRange){ + Tolerance <- 10**(i) if (is.na(res$par[1])){ res <- tryCatch( { @@ -215,24 +213,19 @@ tryInversion <- function(x0, MeritFunction, SpecPROSPECT, Refl, Tran, Parms2Esti SpecPROSPECT = SpecPROSPECT, Refl = Refl, Tran = Tran, Input_PROSPECT = x0, Parms2Estimate = Parms2Estimate, method = "SQP", A = NULL, b = NULL, Aeq = NULL, beq = NULL, - lb = as.numeric(lb), ub = as.numeric(ub), hin = NULL, heq = NULL, tol = Tolerance, - maxfeval = 2000, maxiter = 1000 - ) + lb = as.numeric(lb), ub = as.numeric(ub), hin = NULL, heq = NULL, + tol = Tolerance, maxfeval = 2000, maxiter = 1000) }, error = function(cond) { - if (verbose){ - message('Adjusting Tolerance value for iterative optimization: ',Tolerance) - } - res <- list() - res$par <- NA * c(1:length(Parms2Estimate)) - return(res) + if (verbose) print_msg(cause = 'AdjustTol', + args = list('Tolerance' = Tolerance)) + return(list('par' = NA*vector(length = length(Parms2Estimate)))) }, - finally = { - } + finally = {} ) } } - names(res$par) = Parms2Estimate + names(res$par) <- Parms2Estimate reinit <- FALSE for (parm in Parms2Estimate){ if (isTRUE(all.equal(res$par[[parm]], lb[[parm]]))){ @@ -261,7 +254,8 @@ tryInversion <- function(x0, MeritFunction, SpecPROSPECT, Refl, Tran, Parms2Esti #' #' @return fc estimates of the parameters #' @export -Merit_RMSE_PROSPECT <- function(x, SpecPROSPECT, Refl, Tran, Input_PROSPECT, Parms2Estimate) { +Merit_RMSE_PROSPECT <- function(x, SpecPROSPECT, Refl, Tran, + Input_PROSPECT, Parms2Estimate) { x[x < 0] <- 0 Input_PROSPECT[Parms2Estimate] <- x RT <- do.call("PROSPECT", c(list(SpecPROSPECT = SpecPROSPECT), Input_PROSPECT)) @@ -287,142 +281,11 @@ CostVal_RMSE <- function(RT, Refl, Tran) { return(fc) } -#' This function adapts SpecPROSPECT accordingly to experimental data -#' or to a spectral domain defined by UserDomain -#' @param SpecPROSPECT list. Includes optical constants -#' refractive index, specific absorption coefficients and corresponding spectral bands -#' @param lambda numeric. Spectral bands corresponding to experimental data -#' @param Refl numeric. Measured reflectance data -#' @param Tran numeric. Measured Transmittance data -#' @param UserDomain numeric. either Lower and upper bounds for domain of interest (optional) -#' or list of spectral bands of interest -#' @param UL_Bounds boolean. set to TRUE if UserDomain only includes lower and upper band, -#' set to FALSE if UserDomain is a list of spectral bands (in nm) -#' -#' @return res list including spectral properties at the new resolution -#' @importFrom utils tail -#' @export -FitSpectralData <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, UserDomain = NULL, UL_Bounds = FALSE) { - LowerPROSPECT <- SpecPROSPECT$lambda[1] - UpperPROSPECT <- tail(SpecPROSPECT$lambda, n = 1) - LowerLOP <- lambda[1] - UpperLOP <- tail(lambda, n = 1) - # if only need to fit PROSPECT data with spctral dat aprovided by user - if (is.null(UserDomain)) { - if (LowerPROSPECT > LowerLOP) { - warning("________________________ WARNING _______________________") - warning("User spectal data will be shrinked to start at the same ") - warning(" Spectral band as SpecPROSPECT, which is ") - print(LowerPROSPECT) - LowerBand_LOP <- which(abs(lambda - LowerPROSPECT) == min(abs(lambda - LowerPROSPECT))) - LowerBand_Spec <- 1 - } else if (LowerPROSPECT < LowerLOP) { - LowerBand_Spec <- which(abs(SpecPROSPECT$lambda - LowerLOP) == min(abs(SpecPROSPECT$lambda - LowerLOP))) - LowerBand_LOP <- 1 - } else if (LowerPROSPECT == LowerLOP) { - LowerBand_Spec <- 1 - LowerBand_LOP <- 1 - } - if (UpperPROSPECT < UpperLOP) { - warning("________________________ WARNING _______________________") - warning(" User spectal data will be shrinked to end at the same ") - warning(" Spectral band as SpecPROSPECT, which is ") - print(UpperPROSPECT) - UpperBand_LOP <- which(abs(lambda - UpperPROSPECT) == min(abs(lambda - UpperPROSPECT))) - UpperBand_Spec <- length(SpecPROSPECT$lambda) - } else if (UpperPROSPECT > UpperLOP) { - UpperBand_Spec <- which(abs(SpecPROSPECT$lambda - UpperLOP) == min(abs(SpecPROSPECT$lambda - UpperLOP))) - UpperBand_LOP <- length(lambda) - } else if (UpperPROSPECT == UpperLOP) { - UpperBand_Spec <- length(SpecPROSPECT$lambda) - UpperBand_LOP <- length(lambda) - } - # if user specifies a spectral domain which is different from PROSPECT and user data - } else if (!is.null(UserDomain)) { - LowerUser <- min(UserDomain) - UpperUser <- max(UserDomain) - if (LowerLOP > LowerUser | UpperLOP < UpperUser | LowerPROSPECT > LowerUser | UpperPROSPECT < UpperUser) { - if (LowerPROSPECT > LowerUser | UpperPROSPECT < UpperUser) { - warning("________________________ WARNING _______________________") - warning(" The spectral domain defined in UserDomain provided as ") - warning(" input in function FitSpectralData does not match with ") - warning(" the spectral domain covered by PROSPECT ") - warning(" ") - warning(" PLEASE ADJUST UserDomain ") - warning(" ") - stop() - } - if (LowerLOP > LowerUser | UpperLOP < UpperUser) { - warning("________________________ WARNING _______________________") - warning(" The spectral domain defined in UserDomain provided as ") - warning(" input in function FitSpectralData does not match with ") - warning(" the spectral domain covered by user data ") - warning(" ") - warning(" PLEASE ADJUST UserDomain ") - warning(" ") - stop() - } - } else { - if (LowerLOP <= LowerUser) { - LowerBand_LOP <- which(abs(lambda - LowerUser) == min(abs(lambda - LowerUser))) - } - if (UpperLOP >= UpperUser) { - UpperBand_LOP <- which(abs(lambda - UpperUser) == min(abs(lambda - UpperUser))) - } - if (LowerPROSPECT <= LowerUser) { - LowerBand_Spec <- which(abs(SpecPROSPECT$lambda - LowerUser) == min(abs(SpecPROSPECT$lambda - LowerUser))) - } - if (UpperPROSPECT >= UpperUser) { - UpperBand_Spec <- which(abs(SpecPROSPECT$lambda - UpperUser) == min(abs(SpecPROSPECT$lambda - UpperUser))) - } - } - } - SubSpecPROSPECT <- SpecPROSPECT[LowerBand_Spec:UpperBand_Spec, ] - Sublambda <- lambda[LowerBand_LOP:UpperBand_LOP] - if (!length(Sublambda) == length(SubSpecPROSPECT$lambda)) { - warning("______________________ WARNING _____________________") - warning(" PROSPECT expects 1nm spectal sampling ") - warning("The data provided as input shows unexpected sampling") - warning(" Please prepare your data accordingly before ") - warning(" running PROSPECT inversion ") - warning(" The process will stop ") - stop() - } - SubRefl <- SubTran <- NULL - if (!is.null(Refl)) { - SubRefl <- Refl[LowerBand_LOP:UpperBand_LOP, ] - } - if (!is.null(Tran)) { - SubTran <- Tran[LowerBand_LOP:UpperBand_LOP, ] - } - # in case a list of spectral bands has been provided, not only boundaries - if (!UL_Bounds & !is.null(UserDomain)){ - # select spectral bands defined in UL_Bounds - spectralBands <- unique(as.integer(UserDomain)) - SpectralLocation <- match(spectralBands,SubSpecPROSPECT$lambda) - SpectralLocation <- SpectralLocation[which(!is.na(SpectralLocation))] - RT <- reshape_lop4inversion(Refl = SubRefl, Tran = SubTran, SpecPROSPECT = SubSpecPROSPECT) - SubRefl <- RT$Refl - SubTran <- RT$Tran - if (!is.null(SubRefl)){ - SubRefl <- SubRefl[SpectralLocation,] - } - if (!is.null(SubTran)){ - SubTran <- SubTran[SpectralLocation,] - } - Sublambda <- Sublambda[SpectralLocation] - SubSpecPROSPECT <- SubSpecPROSPECT[SpectralLocation,] - } - RT <- reshape_lop4inversion(SubRefl, SubTran, SubSpecPROSPECT) - res <- list("SpecPROSPECT" = SubSpecPROSPECT, "lambda" = Sublambda, - "Refl" = RT$Refl, "Tran" = RT$Tran, "nbSamples" = RT$nbSamples) - return(res) -} #' This function defines a regression model to estimate N from R only or T only +#' @param lambda numeric. spectral bands corresponding to experimental data #' @param SpecPROSPECT list. Includes optical constants #' refractive index, specific absorption coefficients and corresponding spectral bands -#' @param lambda numeric. spectral bands corresponding to experimental data #' @param Refl numeric. Measured reflectance data #' @param Tran numeric. Measured Transmittance data #' @param OptWL_R list. optimal wavelengths used to estimate N from R only @@ -431,16 +294,11 @@ FitSpectralData <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, User #' @return Nprior vector corresponding to teh prior estimation of N based on R only or T only #' @importFrom stats lm runif #' @export -Get_Nprior <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, +Get_Nprior <- function(lambda, SpecPROSPECT = NULL, Refl = NULL, Tran = NULL, OptWL_R = list(NIR = 800,SWIR = 1131), OptWL_T = list(NIR = 753,SWIR = 1121)) { - # definition of the optimal spectral band based on data available - # OptWL_R <- OptWL_T <- list() - # OptWL_R$NIR <- 800 - # OptWL_R$SWIR <- 1131 - # OptWL_T$NIR <- 753 - # OptWL_T$SWIR <- 1121 + if (is.null(SpecPROSPECT)) SpecPROSPECT <- prospect::SpecPROSPECT_FullRange # if prior information based on Reflectance if (is.null(Tran)) { # if required spectral bands in the original data @@ -451,28 +309,15 @@ Get_Nprior <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, OptWL <- SpecPROSPECT$lambda[which(abs(OptWL_R$SWIR-SpecPROSPECT$lambda)==min(abs(OptWL_R$SWIR-SpecPROSPECT$lambda)))] # else if NIR band available } else if (!OptWL_R$SWIR %in% SpecPROSPECT$lambda & OptWL_R$NIR %in% SpecPROSPECT$lambda) { - warning("________________________ WARNING _______________________") - warning("The optimal prior estimation of N using Reflectance only") - warning("requires information at 1131nm.") - warning("The reflectance does not include this spectral band") - warning("Using reflectance at 800 nm instead") + print_msg(cause = 'Nprior_noRefl') OptWL <- OptWL_R$NIR # else if close to NIR band available } else if (!OptWL_R$NIR %in% SpecPROSPECT$lambda & min(abs(OptWL_R$NIR-SpecPROSPECT$lambda))<10) { - warning("________________________ WARNING _______________________") - warning("The optimal prior estimation of N using Reflectance only") - warning("requires information at 1131nm.") - warning("The reflectance does not include this spectral band") - warning("Using reflectance at 800 nm instead") + print_msg(cause = 'Nprior_noRefl') OptWL <- SpecPROSPECT$lambda[which(abs(OptWL_R$NIR-SpecPROSPECT$lambda)==min(abs(OptWL_R$NIR-SpecPROSPECT$lambda)))] # else if NIR band available } else if (!OptWL_R$SWIR %in% SpecPROSPECT$lambda & !OptWL_R$NIR %in% SpecPROSPECT$lambda) { - warning("________________________ WARNING _______________________") - warning("The spectral information of the reflectance provided here") - warning("does not contain the spectral bands required to estimate") - warning("prior information about N.") - warning("The proces will stop") - stop() + print_msg(cause = 'Nprior_noRefl_atAll') } } else if (is.null(Refl)) { if (OptWL_T$SWIR %in% SpecPROSPECT$lambda) { @@ -480,68 +325,51 @@ Get_Nprior <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, } else if (!OptWL_T$SWIR %in% SpecPROSPECT$lambda & min(abs(OptWL_T$SWIR-SpecPROSPECT$lambda))<10) { OptWL <- SpecPROSPECT$lambda[which(abs(OptWL_T$SWIR-SpecPROSPECT$lambda)==min(abs(OptWL_T$SWIR-SpecPROSPECT$lambda)))] } else if (!OptWL_T$SWIR %in% SpecPROSPECT$lambda & OptWL_T$NIR %in% SpecPROSPECT$lambda) { - warning("________________________ WARNING _______________________") - warning("The optimal prior estimation of N using Transmittance only") - warning("requires information at 1121nm.") - warning("The Transmittance does not include this spectral band") - warning("Using Transmittance at 753 nm instead") + print_msg(cause = 'Nprior_noTran') OptWL <- OptWL_T$NIR } else if (!OptWL_T$NIR %in% SpecPROSPECT$lambda & min(abs(OptWL_T$NIR-SpecPROSPECT$lambda))<10) { - warning("________________________ WARNING _______________________") - warning("The optimal prior estimation of N using Reflectance only") - warning("requires information at 1131nm.") - warning("The reflectance does not include this spectral band") - warning("Using reflectance at 800 nm instead") + print_msg(cause = 'Nprior_noTran') OptWL <- SpecPROSPECT$lambda[which(abs(OptWL_T$NIR-SpecPROSPECT$lambda)==min(abs(OptWL_T$NIR-SpecPROSPECT$lambda)))] } else if (!OptWL_T$SWIR %in% SpecPROSPECT$lambda & !OptWL_T$NIR %in% SpecPROSPECT$lambda) { - warning("________________________ WARNING _______________________") - warning("The spectral information of the Transmittance provided here") - warning("does not contain the spectral bands required to estimate") - warning("prior information about N.") - warning("The proces will stop") - stop() + print_msg(cause = 'Nprior_noTran_atAll') } } # get the subdomain corresponding to OptWL SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, lambda = lambda, - Refl = Refl, Tran = Tran, UserDomain = c(OptWL, OptWL),UL_Bounds = TRUE) - SubSpecPROSPECT <- SubData$SpecPROSPECT - Sublambda <- SubData$lambda - SubRefl <- SubData$Refl - subTran <- SubData$Tran + Refl = Refl, Tran = Tran, + UserDomain = c(OptWL, OptWL), UL_Bounds = TRUE) # create a LUT using only the spectral band of interest nbSim <- 1000 - CHL <- 0.5 + 100 * runif(nbSim) - CAR <- 0.5 + 20 * runif(nbSim) - EWT <- 0.001 + 0.02 * runif(nbSim) - LMA <- 0.001 + 0.01 * runif(nbSim) - N <- 1 + 1.5 * runif(nbSim) - Input_PROSPECT <- data.frame(CHL, CAR, EWT, LMA, N) - LUT <- PROSPECT_LUT(SubSpecPROSPECT, Input_PROSPECT) + Input_PROSPECT <- data.frame('CHL' = 0.5 + 100 * runif(nbSim), + 'CAR' = 0.5 + 20 * runif(nbSim), + 'EWT' = 0.001 + 0.02 * runif(nbSim), + 'LMA' = 0.001 + 0.01 * runif(nbSim), + 'N' = 1 + 1.5 * runif(nbSim)) + LUT <- PROSPECT_LUT(Input_PROSPECT = Input_PROSPECT, + SpecPROSPECT = SubData$SpecPROSPECT) # fit a linear model between if (is.null(Tran)) { - Ratio <- LUT$Reflectance / (1 - LUT$Reflectance) - Ratio_Meas <- data.matrix(SubRefl) / (1 - data.matrix(SubRefl)) + Ratio <- data.frame(c(unlist(LUT$Reflectance))) / (1 - data.frame(c(unlist(LUT$Reflectance)))) + Ratio_Meas <- data.frame(c(unlist(SubData$Refl))) / (1 - data.frame(c(unlist(SubData$Refl)))) } else if (is.null(Refl)) { - Ratio <- (1 - LUT$Transmittance) / LUT$Transmittance - Ratio_Meas <- (1 - data.matrix(subTran)) / data.matrix(subTran) + Ratio <- (1 - data.frame(c(unlist(LUT$Transmittance)))) / data.frame(c(unlist(LUT$Transmittance))) + Ratio_Meas <- (1 - data.frame(c(unlist(SubData$Tran)))) / data.frame(c(unlist(SubData$Tran))) } - N_Model <- lm(matrix(LUT$Input_PROSPECT$N) ~ matrix(Ratio)) + N_Model <- lm(c(LUT$Input_PROSPECT$N) ~ c(Ratio[[1]])) NpriorMOD <- N_Model$coefficients[2] * Ratio + N_Model$coefficients[1] Nprior <- N_Model$coefficients[2] * Ratio_Meas + N_Model$coefficients[1] rownames(Nprior) <- NULL - Nprior <- data.frame(matrix(Nprior,ncol = 1)) colnames(Nprior) <- 'N' return(Nprior) } #' This function uses optimal configuration identified by Spafford et al. (2020) to estimate leaf chemistry #' prior information on N is provided if only Reflectance or only Transmittance is available +#' @param lambda numeric. spectral bands corresponding to experimental data #' @param SpecPROSPECT list. Includes optical constants #' refractive index, specific absorption coefficients and corresponding spectral bands -#' @param lambda numeric. spectral bands corresponding to experimental data #' @param Refl numeric. Measured reflectance data #' @param Tran numeric. Measured Transmittance data #' @param PROSPECT_version character. Version of prospect model used for the inversion: '5', '5B', 'D', 'DB', 'PRO', 'PROB', @@ -561,8 +389,8 @@ Get_Nprior <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, #' @importFrom stats lm runif #' @importFrom progress progress_bar #' @export -Invert_PROSPECT_OPT <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, - PROSPECT_version = 'D',Parms2Estimate = 'ALL', +Invert_PROSPECT_OPT <- function(lambda, SpecPROSPECT = NULL, Refl = NULL, Tran = NULL, + PROSPECT_version = 'D', Parms2Estimate = 'ALL', InitValues = data.frame( CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0.01, EWT = 0.01, LMA = 0.01, PROT = 0.001, CBC = 0.009, N = 1.5, alpha = 40), @@ -574,92 +402,78 @@ Invert_PROSPECT_OPT <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, verbose = FALSE, progressBar = TRUE) { + if (is.null(SpecPROSPECT)) SpecPROSPECT <- prospect::SpecPROSPECT_FullRange + # versions implemented in the package + if (!PROSPECT_version%in%c('D','PRO')) print_msg(cause = 'WrongVersion') + # if brown pigments required + if ('BROWN'%in%Parms2Estimate) { + print_msg(cause = 'NoBrown_OPT') + Parms2Estimate <- Parms2Estimate[-match('BROWN',Parms2Estimate)] + } # define optimal domain for the different constituents - OptDomain_RT <- list('CHL' = seq(700,720), 'CAR' = seq(520,560), 'ANT' = seq(400,800), - 'EWT' = seq(1700,2400), 'LMA' = seq(1700,2400), 'PROT' = c(seq(2100,2139),seq(2160,2179)), - 'CBC' = c(seq(1480,1499),seq(1560,1579),seq(1760,1799),seq(2040,2059),seq(2120,2139), - seq(2160,2239),seq(2260,2279),seq(2340,2359),seq(2380,2399))) - OptDomain <-OptDomain_R <- OptDomain_T <- OptDomain_RT - + OptDomain <-OptDomain_R <- OptDomain_T <- prospect::OptDomain_RT # check if list of parameters applicable to PROSPECT version - parms_checked <- check_prospect_parms(PROSPECT_version, alphaEst=FALSE, - Parms2Estimate, xlub, InitValues) - allParms <- parms_checked$Parms2Estimate - - if (is.na(match(PROSPECT_version,c('5','5B','D','DB','PRO','PROB')))){ - stop('PROSPECT_version not available. Choice is limited to "5", "5B", "D", "DB", "PRO", "PROB".') - } - if (PROSPECT_version == "5B" | PROSPECT_version == "DB" | PROSPECT_version == "PROB") { - message('brown pigments are not accounted for when performing optimal estimation of leaf chemistry') - message('model version excluding brown pigments will be used instead') - if (!is.na(match('BROWN',allParms))){ - allParms <- allParms[-match('BROWN',allParms)] - } - PROSPECT_version <- gsub(pattern = 'B',replacement = '',x = PROSPECT_version) - } - Parms2Estimate <- allParms + parms_checked <- check_prospect_parms(PROSPECT_version = PROSPECT_version, + Parms2Estimate = Parms2Estimate, + Est_Brown_Pigments = FALSE, + Est_alpha = FALSE, + xlub = xlub, + InitValues = InitValues) + Parms2Estimate <- parms_checked$Parms2Estimate ANTinit <- parms_checked$InitValues$ANT - - if (PROSPECT_version == 'PRO' & !is.na(match('LMA',Parms2Estimate))){ - message('LMA is not estimated directly using PROSPECT-PRO') - message('Please run inversion for PROSPECT-PRO and sum PROT and CBC') - message('if you want to get estimated LMA from PROSPECT-PRO') + if (PROSPECT_version == 'PRO' & 'LMA'%in%Parms2Estimate){ + print_msg(cause = 'version_PROSPECT_Invert_PROSPECT_OPT') } - - AdjustedLOP <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, lambda = lambda, - Refl = Refl, Tran = Tran, - UserDomain = c(max(min(SpecPROSPECT$lambda),min(lambda)), - min(max(SpecPROSPECT$lambda),max(lambda))), - UL_Bounds = T) - - # check if data class is compatible and convert into data.frame - RT <- reshape_lop4inversion(Refl = AdjustedLOP$Refl, Tran = AdjustedLOP$Tran, - SpecPROSPECT = AdjustedLOP$SpecPROSPECT) - Nprior <- SetNValues(Refl = RT$Refl, Tran = RT$Tran, + # adjust leaf optics and convert to data frame if needed + AdjustedLOP <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, + lambda = lambda, + Refl = Refl, Tran = Tran) + # prior assessment of N if R or T missing + Nprior <- SetNValues(Refl = AdjustedLOP$Refl, + Tran = AdjustedLOP$Tran, SpecPROSPECT = AdjustedLOP$SpecPROSPECT) ParmEst <- list() - if (is.null(RT$Refl) | is.null(RT$Tran)){ - ParmEst$N <- Nprior - } - if (length(which(Parms2Estimate=='N'))>0){ - Parms2Estimate <- Parms2Estimate[-which(Parms2Estimate=='N')] - } - List_Init <- SetInitParm(Parms2Estimate = Parms2Estimate, ParmEst = ParmEst, - PROSPECT_version = PROSPECT_version, Nprior = Nprior, - ANTinit = ANTinit, OptDomain = OptDomain, - Refl = RT$Refl, Tran = RT$Tran) + if (is.null(AdjustedLOP$Refl) | is.null(AdjustedLOP$Tran)) ParmEst$N <- Nprior + if ('N'%in%Parms2Estimate) Parms2Estimate <- Parms2Estimate[-which(Parms2Estimate=='N')] + # initialize parameters for each sample (useful when using prior N) + List_Init <- SetInitParm(Parms2Estimate = Parms2Estimate, + ParmEst = ParmEst, + PROSPECT_version = PROSPECT_version, + Nprior = Nprior, + ANTinit = ANTinit, + OptDomain = OptDomain, + Refl = AdjustedLOP$Refl, + Tran = AdjustedLOP$Tran) ParmEst <- List_Init$ParmEst for (parm in List_Init$Parms2Estimate){ if (length(ParmEst[[parm]])==0){ # Fit spectral data to match PROSPECT with user optical properties OptLOP <- FitSpectralData(SpecPROSPECT = AdjustedLOP$SpecPROSPECT, - lambda = AdjustedLOP$lambda, - Refl = RT$Refl, Tran = RT$Tran, - UserDomain = OptDomain[[parm]], - UL_Bounds = List_Init$UL_Bounds[[parm]]) - if (parm=='EWT' & !is.na(match('LMA',Parms2Estimate))){ ParmDisplay <- 'EWT & LMA'} - else {ParmDisplay <- parm} + lambda = AdjustedLOP$lambda, + Refl = AdjustedLOP$Refl, + Tran = AdjustedLOP$Tran, + UserDomain = OptDomain[[parm]], + UL_Bounds = List_Init$UL_Bounds[[parm]]) + ParmDisplay <- parm + if (parm=='EWT' & 'LMA'%in%Parms2Estimate) ParmDisplay <- 'EWT & LMA' if (progressBar==TRUE){ pb <- progress::progress_bar$new( format = paste("Estimation of ",ParmDisplay," [:bar] :percent in :elapsedfull , estimated time remaining :eta"), - total = RT$nbSamples, clear = FALSE, width= 100) + total = AdjustedLOP$nbSamples, clear = FALSE, width= 100) } - for (i in 1:RT$nbSamples){ + for (i in seq_len(AdjustedLOP$nbSamples)){ res <- Invert_PROSPECT(SpecPROSPECT = OptLOP$SpecPROSPECT, - Refl = OptLOP$Refl[,i], Tran = OptLOP$Tran[,i], + Refl = OptLOP$Refl[[i]], + Tran = OptLOP$Tran[[i]], PROSPECT_version = List_Init$PROSPECT_version[[parm]], Parms2Estimate = List_Init$Parms2Estimate_tmp[[parm]], InitValues = List_Init$InitValues[[parm]][i,], xlub = xlub, verbose = verbose) ParmEst[[parm]][i] <- res[[parm]] - if (parm=='EWT' & !is.na(match('LMA',Parms2Estimate))){ - ParmEst$LMA[i] <- res$LMA - } - if (progressBar==TRUE){ - pb$tick() - } + if (parm=='EWT' & !is.na(match('LMA',Parms2Estimate))) ParmEst$LMA[i] <- res$LMA + if (progressBar==TRUE) pb$tick() } } } @@ -692,7 +506,7 @@ Invert_PROSPECT_OPT <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, #' @param PROSPECT_version character. Version of prospect model used for the inversion: '5', '5B', 'D', 'DB', 'PRO', 'PROB', #' @param MeritFunction character. name of the function to be used as merit function #' with given criterion to minimize (default = RMSE) -#' @param alphaEst boolean. should alpha be estimated or not? +#' @param Est_alpha boolean. should alpha be estimated or not? #' @param verbose boolean. set to TRUE to display sample number to be inverted #' @param nbCPU numeric. defines number of CPU for multithread processing #' @@ -707,19 +521,22 @@ Invert_PROSPECT_OPT <- function(SpecPROSPECT, lambda, Refl = NULL, Tran = NULL, #' @importFrom future.apply future_lapply #' @export -optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, Target, - Parms2Estimate = "ALL", +optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, + Target, Parms2Estimate = "ALL", InitValues = data.frame( - CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0.01, EWT = 0.01, - LMA = 0.01, PROT = 0.001, CBC = 0.009, N = 1.5, alpha = 40), + CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0.01, + EWT = 0.01, LMA = 0.01, PROT = 0.001, + CBC = 0.009, N = 1.5, alpha = 40), xlub = data.frame( - CHL = c(1e-4, 150), CAR = c(1e-4, 25), ANT = c(0, 50), - BROWN = c(0, 1), EWT = c(1e-8, 0.1), LMA = c(1e-6, .06), - PROT = c(1e-7, .006), CBC = c(1e-6, .054), N = c(.5, 4), - alpha = c(10, 90)), + CHL = c(1e-4, 150), CAR = c(1e-4, 25), + ANT = c(0, 50), BROWN = c(0, 1), + EWT = c(1e-8, 0.1), LMA = c(1e-6, .06), + PROT = c(1e-7, .006), CBC = c(1e-6, .054), + N = c(.5, 4), alpha = c(10, 90)), SpecPROSPECT, spectral_domain, spectral_width, - number_features,PROSPECT_version = 'D', MeritFunction = "Merit_RMSE_PROSPECT", - alphaEst = FALSE, verbose = FALSE, + number_features,PROSPECT_version = 'D', + MeritFunction = "Merit_RMSE_PROSPECT", + Est_alpha = FALSE, verbose = FALSE, nbCPU = 1,Continue = FALSE, AlreadyDone = NULL){ # split spectral_domain into subdomains based on spectral_width @@ -727,9 +544,7 @@ optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, T x <- seq_along(FullDomain) subdomains <- split(FullDomain,ceiling(x/spectral_width)) nb_subdomains <- length(subdomains) - # spectral bands identified as optimal - if (Continue){ # number of features to start from featStart <- length(AlreadyDone$RMSE)+1 @@ -739,10 +554,10 @@ optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, T minRMSE <- AlreadyDone$RMSE # number of features to start from - for (i in 1:length(AlreadyDone$RMSE)){ - for (j in length(subdomains):1){ + for (i in seq_len(length(AlreadyDone$RMSE))){ + for (j in rev(seq_len(length.out = length(subdomains)))){ if (AlreadyDone$SpectralFeatures_List[[i]][1] %in% subdomains[[j]]){ - subdomains[[j]] = NULL + subdomains[[j]] <- NULL } } } @@ -758,18 +573,24 @@ optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, T for (feat in featStart:number_features){ message(paste('Identify Feature #',feat)) Perf <- c() - # multiprocess of spectral species distribution and alpha diversity metrics plan(multisession, workers = nbCPU) ## Parallelize using four cores schedule <- ceiling(length(subdomains)/nbCPU) Estimated_Parm <- future_lapply(subdomains,FUN = Invert_PROSPECT_subdomain, Refl = Refl, Tran = Tran, - SpecPROSPECT = SpecPROSPECT, lambda = lambda, BiochTruth = BiochTruth, - Target = Target, Parms2Estimate = Parms2Estimate, Initial_Features = Initial_Features, - PROSPECT_version = PROSPECT_version, MeritFunction = MeritFunction, alphaEst = alphaEst, - InitValues = InitValues, xlub = xlub, verbose = FALSE, future.scheduling = schedule) + SpecPROSPECT = SpecPROSPECT, + lambda = lambda, BiochTruth = BiochTruth, + Target = Target, + Parms2Estimate = Parms2Estimate, + Initial_Features = Initial_Features, + PROSPECT_version = PROSPECT_version, + MeritFunction = MeritFunction, + Est_alpha = Est_alpha, + InitValues = InitValues, + xlub = xlub, verbose = FALSE, + future.scheduling = schedule) plan(sequential) Perf <- c() - for (i in 1:length(Estimated_Parm)){ + for (i in seq_len(length(Estimated_Parm))){ Perf <- c(Perf,Estimated_Parm[[i]]$Perf) } BestPerf <- which(Perf==min(Perf,na.rm = TRUE)) @@ -783,8 +604,10 @@ optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, T subdomains[[BestPerf[1]]] <- NULL } } - res <- list('SpectralFeatures'=Initial_Features,'SpectralFeatures_List'=Initial_Features_list,'EstimatedParm'=Estimated_All,'RMSE'=minRMSE) - return(res) + return(list('SpectralFeatures' = Initial_Features, + 'SpectralFeatures_List' = Initial_Features_list, + 'EstimatedParm' = Estimated_All, + 'RMSE' = minRMSE)) } @@ -805,8 +628,9 @@ optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, T #' they are used either as initialization values for parameters to estimate, #' or as fix values for other parameters. #' Parameters not compatible with PROSPECT_version are not taken into account. -#' @param PROSPECT_version character. Version of prospect model used for the inversion: '5', '5B', 'D', 'DB', 'PRO', 'PROB' -#' @param alphaEst boolean. should alpha be estimated or not? +#' @param PROSPECT_version character. Version of prospect model used for the inversion: 'D' or 'PRO' +#' @param Est_Brown_Pigments boolean. should brown pigments be accounted for during inversion? +#' @param Est_alpha boolean. should alpha be accounted for during inversion? #' @param MeritFunction character. name of the function to be used as merit function #' with given criterion to minimize (default = RMSE) #' @param xlub data.frame. Boundaries of the parameters to estimate. @@ -817,142 +641,148 @@ optimal_features_SFS <- function(Refl = NULL, Tran = NULL, lambda, BiochTruth, T #' @importFrom pracma rmserr #' @export -Invert_PROSPECT_subdomain <- function(New_Features, Refl, Tran, SpecPROSPECT, lambda, BiochTruth, +Invert_PROSPECT_subdomain <- function(New_Features, Refl, Tran, SpecPROSPECT, + lambda, BiochTruth, Target, Parms2Estimate, Initial_Features, InitValues = data.frame( - CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0.01, EWT = 0.01, - LMA = 0.01, PROT = 0.001, CBC = 0.009, N = 1.5, alpha = 40), - PROSPECT_version = "D", MeritFunction = "Merit_RMSE_PROSPECT", alphaEst = FALSE, + CHL = 40, CAR = 10, ANT = 0.1, + BROWN = 0.01, EWT = 0.01, LMA = 0.01, + PROT = 0.001, CBC = 0.009, N = 1.5, + alpha = 40), + PROSPECT_version = "D", + MeritFunction = "Merit_RMSE_PROSPECT", + Est_Brown_Pigments = FALSE, + Est_alpha = FALSE, xlub = data.frame( - CHL = c(1e-4, 150), CAR = c(1e-4, 25), ANT = c(0, 50), - BROWN = c(0, 1), EWT = c(1e-8, 0.1), LMA = c(1e-6, .06), - PROT = c(1e-7, .006), CBC = c(1e-6, .054), N = c(.5, 4), - alpha = c(10, 90)), + CHL = c(1e-4, 150), CAR = c(1e-4, 25), + ANT = c(0, 50), BROWN = c(0, 1), + EWT = c(1e-8, 0.1), LMA = c(1e-6, .06), + PROT = c(1e-7, .006), CBC = c(1e-6, .054), + N = c(.5, 4), alpha = c(10, 90)), verbose = FALSE){ SpectralDomain <- c(Initial_Features,New_Features) # Fit spectral data to match PROSPECT with user optical properties SubData <- FitSpectralData(SpecPROSPECT=SpecPROSPECT, lambda=lambda, - Refl=Refl, Tran=Tran, UserDomain = SpectralDomain,UL_Bounds = FALSE) + Refl=Refl, Tran=Tran, UserDomain = SpectralDomain) # Invert PROSPECT with optimal spectral information Est <- c() - for (i in 1:SubData$nbSamples){ - if (verbose){ - print(i) - } - res <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT,Refl = SubData$Refl[,i],Tran = SubData$Tran[,i], - PROSPECT_version = PROSPECT_version,Parms2Estimate = Parms2Estimate,InitValues = InitValues, - MeritFunction = MeritFunction, xlub = xlub, alphaEst = alphaEst) + for (i in seq_len(length.out = SubData$nbSamples)){ + if (verbose) print(i) + res <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl[,i],Tran = SubData$Tran[,i], + PROSPECT_version = PROSPECT_version, + Parms2Estimate = Parms2Estimate, + InitValues = InitValues, + MeritFunction = MeritFunction, + xlub = xlub, + Est_Brown_Pigments = Est_Brown_Pigments, + Est_alpha = Est_alpha) # only save results for variable of interest Est <- c(Est,res[[Target]]) } - Perf <- rmserr(BiochTruth,Est,summary = FALSE)$rmse + Perf <- pracma::rmserr(BiochTruth,Est,summary = FALSE)$rmse rm(Refl,Tran,SubData) gc() - my_list <- list("Estimated" = Est,"Perf" = Perf) - return(my_list) + return(list("Estimated" = Est,"Perf" = Perf)) } -#' Function plotting results of PROSPECT inversion for a given biophysical property -#' -#' @param BP_df dataframe. should include fields 'estimated', 'measured', and 'config' -#' @param Labs character. labels for X and Y axes -#' @param MinMax numeric. min and max axis values -#' @param Colors character. colors corresponding to the different configurations in BP_df -#' @param stats boolean. should statistics be displayed on figure -#' @param filename character. path for the file to be saved -#' @return plotxy ggplot object -#' @import ggplot2 -#' @import dplyr -#' @importFrom Metrics rmse -#' @importFrom randomcoloR distinctColorPalette -#' @export -plotinv <- function(BP_df, Labs = NULL, MinMax = NULL, Colors = NULL, - stats = TRUE, filename = NULL){ - - if (is.null(BP_df$config)) BP_df$config <- NA - if (is.null(Labs)) Labs <- c('Estimated', 'Measured') - if (is.null(Colors)) Colors <- randomcoloR::distinctColorPalette(unique(BP_df$config)) - measest_vals <- c(BP_df$measured, BP_df$estimated) - if (is.null(MinMax)) { - MinMax0 <- c(min(measest_vals, na.rm = T), - max(measest_vals, na.rm = T)) - MinMax <- c(min(0,MinMax0[1]-0.1*diff(MinMax0)), - MinMax0[2]+0.1*diff(MinMax0)) - - } - plotxy <- ggplot2::ggplot(BP_df, aes(x = estimated, - y = measured, - group = config)) + - geom_point(aes(pch = config, color = config, stroke = 1)) + - theme(aspect.ratio = 1) + - xlim(MinMax[1], MinMax[2]) + ylim(MinMax[1], MinMax[2]) + - scale_color_manual(values = Colors) + - scale_shape_manual(values = c(20,20)) + - labs(x = Labs$x, y = Labs$y) + - theme(legend.position = "bottom", - legend.title = element_text(color = "white"), - legend.text = element_text(size = 14), - axis.text = element_text(size=15), - axis.title.x = element_text(size=16, face="bold"), - axis.title.y = element_text(size=16, face="bold")) + - guides(fill = guide_legend(nrow = 2),size = 'none') - - # Add 1:1 line - plotxy <- plotxy + geom_abline(slope = 1, intercept = 0,linetype='dashed',size=1.25) - # add statistics if needed - BP_conf <- group_split(BP_df %>% group_by(config)) - if (stats ==TRUE){ - # add R2 value - for (conf in 1:length(unique(BP_df$config))){ - chl.lm = lm(estimated ~ measured, data = BP_conf[[conf]]) - R2 <- summary(chl.lm)$r.squared - R2.expr <- paste("bolditalic(R ^ 2) == ",format(round(R2, 2),nsmall = 2)) - plotxy <- plotxy + annotate("text", vjust = "bottom", - x = MinMax[1] +0.00*diff(MinMax), - y = MinMax[1] +(1.07-0.1*conf)*diff(MinMax), - label = R2.expr, parse = TRUE, hjust = 0, size=5, - color = Colors[conf]) - } - # add RMSE value - for (conf in 1:length(unique(BP_df$config))){ - RMSE <- Metrics::rmse(actual = BP_conf[[conf]]$measured, - predicted = BP_conf[[conf]]$estimated) - RMSE.expr <- paste("bolditalic(RMSE) ==",format(round(RMSE, 2),nsmall = 2)) - plotxy <- plotxy + annotate("text", vjust = "bottom", - x = MinMax[1] +0.3*diff(MinMax), - y = MinMax[1] +(1.07-0.1*conf)*diff(MinMax), - label = RMSE.expr, parse = TRUE, hjust = 0, size=5, - color = Colors[conf]) - } - } - if (!is.null(filename)){ - ggsave(filename = filename, plot = plotxy, device = "png", - scale = 1, width = 12, height = 12, units = "cm", dpi = 300) - } - return(plotxy) -} - -#' Function priniting message if leaf optics do not match with spectral domain +#' Function printing message +#' - if leaf optics do not match with spectral domain +#' - if leaf optics do not match with expected data class +#' - if confusion is identified for prospect version to use +#' - if missing input variables during PROSPECT_LUT simulations +#' @param cause character. cause raising message print +#' @param args list. optional arguments used to print message #' #' @return none #' @export -print_msg_lengthLOP <- function(){ - message('MISMATCH between leaf optical properties and spectral domain') - message('Make sure leaf optical properties match with the spectral domain') - message('defined in SpecPROSPECT$lambda') - message('if not, use the function "FitSpectralData"') - return() -} -#' Function priniting message if leaf optics do not match with expected data class -#' -#' @return none -#' @export -print_msg_classLOP <- function(){ - message('the class of leaf optical properties is not identified') - message('Make sure leaf optical properties are either data.frame, or matrix, or numeric vector') - return() +print_msg <- function(cause, args = NULL){ + if (cause == 'lengthLOP'){ + message('MISMATCH between leaf optical properties and spectral domain') + message('Make sure leaf optical properties match with the spectral domain') + message('defined in SpecPROSPECT$lambda') + message('if not, use the function "FitSpectralData"') + stop() + } else if (cause == 'classLOP'){ + message('the class of leaf optical properties is not identified') + message('Make sure leaf optical properties are either data.frame, or matrix, or numeric vector') + stop() + } else if (cause == 'version_PROSPECT'){ + message("PROT and/or CBC are not set to 0") + message("LMA is not set to 0 neither, which is physically incorrect") + message("(LMA = PROT + CBC)") + message("We assume that PROSPECT-PRO was called and set LMA to 0") + message("Please correct input parameters LMA, PROT and/or CBC if needed") + } else if (cause == 'version_PROSPECT_Invert_PROSPECT_OPT'){ + message('LMA is not estimated directly using PROSPECT-PRO') + message('Please run inversion for PROSPECT-PRO and sum PROT and CBC') + message('if you want to get estimated LMA from PROSPECT-PRO') + } else if (cause == 'Missing_Input'){ + message('_________________ WARNING _________________') + message(' The list of parameters provided for LUT ') + message(' in the Input_PROSPECT variable ') + message('does not include the full set of parameters') + message('') + message(' The following parameters will be set to ') + message(' their default value as given here ') + WhichMissing <- args$Expected[which(!names(args$Expected) %in% args$Input)] + print(WhichMissing) + } else if (cause == 'diff_RTshape'){ + message('Reflectance and Transmittance do not have the same number of samples') + message('please fix that') + stop() + } else if (cause == 'WrongVersion'){ + stop('PROSPECT_version not available. Choice is limited to "5", "5B", "D", "DB", "PRO", "PROB".') + } else if (cause == 'NoBrown_OPT'){ + message('brown pigments are not accounted for when performing optimal estimation of leaf chemistry') + message('model version excluding brown pigments will be used instead') + } else if (cause == 'AdjustTol'){ + message('Adjusting Tolerance value for iterative optimization: ',args$Tolerance) + } else if (cause == 'ULBounds'){ + message('lower or upper bound reached for one or several parameters to estimate') + message('re-run inversion with updated initial values to attempt proper convergence') + } else if (cause == 'Nprior_noRefl'){ + warning("________________________ WARNING _______________________") + warning("The optimal prior estimation of N using Reflectance only") + warning("requires information at 1131nm.") + warning("The reflectance does not include this spectral band") + warning("Using reflectance at 800 nm instead") + } else if (cause == 'Nprior_noRefl_atAll'){ + warning("________________________ WARNING _______________________") + warning("The spectral information of the reflectance provided here") + warning("does not contain the spectral bands required to estimate") + warning("prior information about N.") + warning("The process will stop") + stop() + } else if (cause == 'Nprior_noTran'){ + warning("________________________ WARNING _______________________") + warning("The optimal prior estimation of N using Transmittance only") + warning("requires information at 1121nm.") + warning("The Transmittance does not include this spectral band") + warning("Using Transmittance at 753 nm instead") + } else if (cause == 'Nprior_noTran_atAll'){ + warning("________________________ WARNING _______________________") + warning("The spectral information of the Transmittance provided here") + warning("does not contain the spectral bands required to estimate") + warning("prior information about N.") + warning("The proces will stop") + stop() + } else if (cause == 'NoOpt_ANT'){ + message('Currently no optimal estimation for anthocyanins') + message('PROSPECT inversion will be performed using full spectral information') + } else if (cause == 'missing_InitValues'){ + stop('missing prospect parameters in "InitValues"') + } else if (cause == 'missing_xlub'){ + stop('missing prospect parameters in "xlub"') + } else if (cause == 'unknown_parm'){ + message('_________________ WARNING _________________') + message(' unknown parameter requested for inversion ') + print(args$Parms2Estimate[which(!args$Parms2Estimate %in% args$allParms)]) + message('will be ignored') + } + return(invisible()) } @@ -967,45 +797,35 @@ print_msg_classLOP <- function(){ #' @export reshape_lop4inversion <- function(Refl, Tran, SpecPROSPECT){ + # check if Refl/Tran is data frame, matrix or vector + # convert into data frame if not RT <- list('Refl' = Refl, 'Tran' = Tran) for (lop in names(RT)){ if (!is.null(RT[[lop]])){ - # check if data frame, matrix or vector and convert into dataframe - if (!is.na(match('matrix',class(RT[[lop]]))) | !is.na(match('data.frame',class(RT[[lop]])))){ - if (nrow(RT[[lop]])==length(SpecPROSPECT$lambda)){ - RT[[lop]] <- data.frame(RT[[lop]]) - rownames(RT[[lop]]) <- SpecPROSPECT$lambda - } else { - print_msg_lengthLOP() - } - } else if (class(RT[[lop]])[1]=='numeric'){ - if (length(RT[[lop]])==length(SpecPROSPECT$lambda)){ - RT[[lop]] <- data.frame(RT[[lop]]) - rownames(RT[[lop]]) <- SpecPROSPECT$lambda - } else { - print_msg_lengthLOP() - } - } else { - print_msg_classLOP() - } + classLOP <- class(RT[[lop]])[1] + if (!classLOP %in% c('numeric', 'matrix', 'data.frame', 'data.table')) print_msg(cause = 'classLOP') + if (classLOP %in% c('numeric', 'matrix')) RT[[lop]] <- data.frame(RT[[lop]]) + nbwl <- nrow(RT[[lop]]) + # check if the number of spectral bands is compatible with SpecPROSPECT + if (nbwl==length(SpecPROSPECT$lambda)) rownames(RT[[lop]]) <- SpecPROSPECT$lambda + if (!nbwl==length(SpecPROSPECT$lambda)) print_msg(cause = 'lengthLOP') } } - NbCols_LOP <- c(ncol(RT$Refl),ncol(RT$Tran)) - if (length(unique(NbCols_LOP))>1){ - message('Reflectance and Transmittance do not have the same number of samples') - message('please fix that') - stop() - } else{ - RT$nbSamples <- unique(NbCols_LOP) + # check if Refl & Tran have the same number of samples + if (!is.null(RT$Refl) & !is.null(RT$Tran)){ + if (!ncol(RT$Refl)==ncol(RT$Tran)) print_msg(cause = 'diff_RTshape') } + RT$nbSamples <- unique(c(ncol(RT$Refl),ncol(RT$Tran))) return(RT) } + #' Function to check good agreement between prospect version and parameter list #' #' @param PROSPECT_version character. Version of prospect model used for the inversion: '5', '5B', 'D', 'DB', 'PRO', 'PROB', #' See details. -#' @param alphaEst boolean. should alpha be estimated or not? +#' @param Est_Brown_Pigments boolean. should brown pigments be accounted for during inversion? +#' @param Est_alpha boolean. should alpha be accounted for during inversion? #' @param Parms2Estimate character vector. Parameters to estimate (can be 'ALL') #' @param xlub data.frame. Boundaries of the parameters to estimate. #' The data.frame must have columns corresponding to \code{Parms2Estimate} first line being @@ -1018,48 +838,44 @@ reshape_lop4inversion <- function(Refl, Tran, SpecPROSPECT){ #' @return list consolidated list of parameters to estimate and corresponding lower / upper boundaries #' @export -check_prospect_parms <- function(PROSPECT_version, alphaEst, Parms2Estimate, +check_prospect_parms <- function(PROSPECT_version, Parms2Estimate, + Est_Brown_Pigments, Est_alpha, xlub, InitValues){ - # define PROSPECT input parameters - allParmsList <- list() - allParmsList$'5' <- c("CHL", "CAR", "EWT", "LMA", "N") - allParmsList$'5B' <- c("CHL", "CAR", "BROWN", "EWT", "LMA", "N") - allParmsList$'D' <- c("CHL", "CAR", "ANT", "EWT", "LMA", "N") - allParmsList$'DB' <- c("CHL", "CAR", "ANT", "BROWN", "EWT", "LMA", "N") - allParmsList$'PRO' <- c("CHL", "CAR", "ANT", "EWT", "PROT", "CBC", "N") - allParmsList$'PROB' <- c("CHL", "CAR", "ANT", "BROWN", "EWT", "PROT", "CBC", "N") - if (!is.null(allParmsList[[PROSPECT_version]])){ - allParms <- allParmsList[[PROSPECT_version]] - } else { - stop('PROSPECT_version not available. Choice is limited to "5", "5B", "D", "DB", "PRO", "PROB".') - } - if (alphaEst==TRUE) allParms <- c(allParms, "alpha") - if ("ALL" %in% Parms2Estimate) { - Parms2Estimate <- allParms - } + + # check if version required is available + if (!PROSPECT_version %in% c('D', 'PRO')) print_msg(cause = 'WrongVersion') + # define parameters if PROSPECT-D or PROSPECT-PRO + if (PROSPECT_version == 'D') allParms <- c('N', 'CHL', 'CAR', 'ANT', 'EWT', 'LMA') + if (PROSPECT_version == 'PRO') allParms <- c('N', 'CHL', 'CAR', 'ANT', 'EWT', 'PROT', 'CBC') + # add brown pigments and alpha angle if required + if (Est_Brown_Pigments==TRUE) allParms <- c(allParms, "BROWN") + if (Est_alpha==TRUE) allParms <- c(allParms, "alpha") + # if 'ALL' is provided, then assess all parameters available + if ("ALL" %in% Parms2Estimate) Parms2Estimate <- allParms + # if unknown parameter is provided, then warn + if (!all(Parms2Estimate %in% allParms)) print_msg(cause = 'unknown_parm', + args = list('Parms2Estimate' =Parms2Estimate, + 'allParms'= allParms)) Parms2Estimate <- allParms[allParms %in% Parms2Estimate] - if (!all(allParms %in% names(xlub))) { - stop('Some prospect parameters are missing in argument "InitValues".') - } + # if missing value in xlub defining lower and upper boudaries + if (!all(allParms %in% names(xlub))) print_msg(cause = 'missing_xlub') + # if missing value in InitValues defining initial values for inversion + if (!all(allParms %in% names(InitValues))) print_msg(cause = 'missing_InitValues') InitValues <- InitValues[allParms[allParms %in% names(InitValues)]] - if (PROSPECT_version == "PRO" | PROSPECT_version == "PROB"){ + if (PROSPECT_version == "PRO"){ InitValues$LMA <- 0 - if (is.null(InitValues$PROT)){ InitValues$PROT <- 0.001 } - if (is.null(InitValues$CBC)){ InitValues$CBC <- 0.009 } - } - if (!all(Parms2Estimate %in% names(xlub))) { - stop('Boundaries are missing for some parameters. Please make sure all parameters to estimate have a boundary defined in argument "xlub".') + if (is.null(InitValues$PROT)) InitValues$PROT <- 0.001 + if (is.null(InitValues$CBC)) InitValues$CBC <- 0.009 } - xlub <- xlub[, Parms2Estimate] - if (PROSPECT_version=='5' | PROSPECT_version=='5B'){ - InitValues$ANT <- 0 + if (PROSPECT_version == "D"){ + InitValues$PROT <- InitValues$CBC <- 0 + if (is.null(InitValues$LMA)) InitValues$LMA <- 0.01 } - - # update init value and lower/upper boundaries for inversion based on Vars2Estimate - lb <- xlub[1, ] - ub <- xlub[2, ] - return(list('lb'=lb, 'ub'=ub, 'Parms2Estimate' = Parms2Estimate, - 'InitValues'=InitValues)) + xlub <- data.frame(xlub[Parms2Estimate]) + lb <- xlub[1,] + ub <- xlub[2,] + return(list('lb' = lb, 'ub' = ub, 'Parms2Estimate' = Parms2Estimate, + 'InitValues' = InitValues)) } #' Function set N values if reflectance or transmittance is missing @@ -1077,10 +893,10 @@ SetNValues <- function(Refl, Tran, SpecPROSPECT){ # compute prior estimate of N message('computing prior estimation of N as both R & T are not provided') Nprior <- Get_Nprior(SpecPROSPECT = SpecPROSPECT, - lambda = SpecPROSPECT$lambda, Refl = Refl, Tran = Tran) + lambda = SpecPROSPECT$lambda, + Refl = Refl, Tran = Tran) } else { - Nprior <- data.frame(rep(1.5,ncol(Refl))) - colnames(Nprior) <- 'N' + Nprior <- data.frame('N' = rep(1.5,ncol(Refl))) } return(Nprior) } @@ -1119,48 +935,139 @@ SetInitParm <- function(Parms2Estimate, ParmEst, PROSPECT_version, Nprior, message ('Cannot estimate anthocyanins using PROSPECT-5') Parms2Estimate <- Parms2Estimate[-which(Parms2Estimate=='ANT')] } else { - message('Currently no optimal estimation for anthocyanins') - message('PROSPECT inversion will be performed using full spectral information') + print_msg(cause = 'NoOpt_ANT') PROSPECT_version_tmp[[parm]] <- PROSPECT_version Parms2Estimate_tmp[[parm]] <- c('CHL', 'CAR', 'ANT') } - InitValues[[parm]] <- data.frame(CHL=40, CAR=10, ANT=ANTinit, BROWN=0, EWT=0.01, LMA=0.01, N=Nprior) + InitValues[[parm]] <- data.frame(CHL=40, CAR=10, ANT=ANTinit, + BROWN=0, EWT=0.01, LMA=0.01, N=Nprior) } if (parm == "CHL" | parm == "CAR"){ PROSPECT_version_tmp[[parm]] <- PROSPECT_version if (!PROSPECT_version =='5'){ Parms2Estimate_tmp[[parm]] <- c('CHL', 'CAR', 'ANT')} else if (PROSPECT_version =='5'){ Parms2Estimate_tmp[[parm]] <- c('CHL', 'CAR')} - InitValues[[parm]] <- data.frame(CHL=40, CAR=10, ANT=ANTinit, BROWN=0, EWT=0.01, LMA=0.01, N=Nprior) + InitValues[[parm]] <- data.frame(CHL=40, CAR=10, ANT=ANTinit, BROWN=0, + EWT=0.01, LMA=0.01, N=Nprior) } if (parm == "EWT"){ PROSPECT_version_tmp[[parm]] <- PROSPECT_version if (!PROSPECT_version =='PRO'){ Parms2Estimate_tmp[[parm]] <- c('EWT', 'LMA') - InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, LMA=0.01, N=Nprior) + InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, + LMA=0.01, N=Nprior) } else if (PROSPECT_version =='PRO'){ Parms2Estimate_tmp[[parm]] <- c('EWT', 'PROT', 'CBC') - InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, LMA=0.00, PROT=0.001, PROT=0.009, N=Nprior) + InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, + LMA=0.00, PROT=0.001, CBC=0.009, + N=Nprior) } } if (parm == "LMA" & !PROSPECT_version == 'PRO'){ PROSPECT_version_tmp[[parm]] <- PROSPECT_version Parms2Estimate_tmp[[parm]] <- c('EWT', 'LMA') - InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, LMA=0.01, N=Nprior) + InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, + LMA=0.01, N=Nprior) } if (parm == "PROT" | parm == "CBC"){ - PROSPECT_version_tmp[[parm]] = 'PRO' + PROSPECT_version_tmp[[parm]] <- 'PRO' Parms2Estimate_tmp[[parm]] <- c('EWT', 'PROT', 'CBC') - InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, LMA=0.00, PROT=0.001, CBC=0.009, N=Nprior) + InitValues[[parm]] <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, + LMA=0.00, PROT=0.001, CBC=0.009, + N=Nprior) } if (!is.null(Refl) & !is.null(Tran)){ Parms2Estimate_tmp[[parm]] <- c(Parms2Estimate_tmp[[parm]],'N') } } - return(list('Parms2Estimate' = Parms2Estimate, 'ParmEst' = ParmEst, - 'UL_Bounds' = UL_Bounds, 'PROSPECT_version' = PROSPECT_version_tmp, - 'Parms2Estimate_tmp' = Parms2Estimate_tmp, 'InitValues'=InitValues)) + return(list('Parms2Estimate' = Parms2Estimate, + 'ParmEst' = ParmEst, + 'UL_Bounds' = UL_Bounds, + 'PROSPECT_version' = PROSPECT_version_tmp, + 'Parms2Estimate_tmp' = Parms2Estimate_tmp, + 'InitValues'=InitValues)) } + +#' #' Function plotting results of PROSPECT inversion for a given biophysical property +#' #' +#' #' @param BP_df dataframe. should include fields 'estimated', 'measured', and 'config' +#' #' @param Labs character. labels for X and Y axes +#' #' @param MinMax numeric. min and max axis values +#' #' @param Colors character. colors corresponding to the different configurations in BP_df +#' #' @param stats boolean. should statistics be displayed on figure +#' #' @param filename character. path for the file to be saved +#' #' @return plotxy ggplot object +#' #' @import ggplot2 +#' #' @import dplyr +#' #' @importFrom Metrics rmse +#' #' @export +#' plotinv <- function(BP_df, Labs = NULL, MinMax = NULL, Colors = NULL, +#' stats = TRUE, filename = NULL){ +#' +#' if (is.null(BP_df$config)) BP_df$config <- NA +#' if (is.null(Labs)) Labs <- c('Estimated', 'Measured') +#' if (is.null(Colors)) Colors <- rainbow(unique(BP_df$config)) +#' +#' +#' measest_vals <- c(BP_df$measured, BP_df$estimated) +#' if (is.null(MinMax)) { +#' MinMax0 <- c(min(measest_vals, na.rm = T), +#' max(measest_vals, na.rm = T)) +#' MinMax <- c(min(0,MinMax0[1]-0.1*diff(MinMax0)), +#' MinMax0[2]+0.1*diff(MinMax0)) +#' +#' } +#' plotxy <- ggplot2::ggplot(BP_df, aes(x = estimated, +#' y = measured, +#' group = config)) + +#' geom_point(aes(pch = config, color = config, stroke = 1)) + +#' theme(aspect.ratio = 1) + +#' xlim(MinMax[1], MinMax[2]) + ylim(MinMax[1], MinMax[2]) + +#' scale_color_manual(values = Colors) + +#' scale_shape_manual(values = c(20,20)) + +#' labs(x = Labs$x, y = Labs$y) + +#' theme(legend.position = "bottom", +#' legend.title = element_text(color = "white"), +#' legend.text = element_text(size = 14), +#' axis.text = element_text(size=15), +#' axis.title.x = element_text(size=16, face="bold"), +#' axis.title.y = element_text(size=16, face="bold")) + +#' guides(fill = guide_legend(nrow = 2),size = 'none') +#' +#' # Add 1:1 line +#' plotxy <- plotxy + geom_abline(slope = 1, intercept = 0,linetype='dashed',size=1.25) +#' # add statistics if needed +#' BP_conf <- group_split(BP_df %>% group_by(config)) +#' if (stats ==TRUE){ +#' # add R2 value +#' for (conf in 1:length(unique(BP_df$config))){ +#' chl.lm = lm(estimated ~ measured, data = BP_conf[[conf]]) +#' R2 <- summary(chl.lm)$r.squared +#' R2.expr <- paste("bolditalic(R ^ 2) == ",format(round(R2, 2),nsmall = 2)) +#' plotxy <- plotxy + annotate("text", vjust = "bottom", +#' x = MinMax[1] +0.00*diff(MinMax), +#' y = MinMax[1] +(1.07-0.1*conf)*diff(MinMax), +#' label = R2.expr, parse = TRUE, hjust = 0, size=5, +#' color = Colors[conf]) +#' } +#' # add RMSE value +#' for (conf in 1:length(unique(BP_df$config))){ +#' RMSE <- Metrics::rmse(actual = BP_conf[[conf]]$measured, +#' predicted = BP_conf[[conf]]$estimated) +#' RMSE.expr <- paste("bolditalic(RMSE) ==",format(round(RMSE, 2),nsmall = 2)) +#' plotxy <- plotxy + annotate("text", vjust = "bottom", +#' x = MinMax[1] +0.3*diff(MinMax), +#' y = MinMax[1] +(1.07-0.1*conf)*diff(MinMax), +#' label = RMSE.expr, parse = TRUE, hjust = 0, size=5, +#' color = Colors[conf]) +#' } +#' } +#' if (!is.null(filename)){ +#' ggsave(filename = filename, plot = plotxy, device = "png", +#' scale = 1, width = 12, height = 12, units = "cm", dpi = 300) +#' } +#' return(plotxy) +#' } diff --git a/R/OptDomain_RT-data.R b/R/OptDomain_RT-data.R new file mode 100644 index 0000000..0d5ea5e --- /dev/null +++ b/R/OptDomain_RT-data.R @@ -0,0 +1,17 @@ +#' OptDomain_RT: optimal spectral domains defined to assess the different leaf +#' chemical constituents. +#' These optimal spectral domains were defined in +#' Féret et al. (2019) https://doi.org/10.1016/j.rse.2018.11.002 +#' Féret et al. (2021) https://doi.org/10.1016/j.rse.2020.112173 +#' Spafford et al. (2021) https://doi.org/10.1016/j.rse.2020.112176 +#' +#' @format A list including sequence of spectral bands corresponding to each +#' leaf constituent +#' - *CHL*: optimal spectral domain for CHL +#' - *CAR*: optimal spectral domain for CAR +#' - *ANT*: optimal spectral domain for ANT +#' - *EWT*: optimal spectral domain for EWT +#' - *LMA*: optimal spectral domain for LMA +#' - *PROT*: optimal spectral domain for PROT +#' - *CBC*: optimal spectral domain for CBC +"OptDomain_RT" diff --git a/R/SpecPROSPECT-data.R b/R/SpecPROSPECT-data.R deleted file mode 100644 index 10e30bf..0000000 --- a/R/SpecPROSPECT-data.R +++ /dev/null @@ -1,17 +0,0 @@ -#' optical constants defined for PROSPECT -#' -#' corresponds to spectral bands, refractive index and specific aborption coefficient -#' -#' -#' @format A dataframe including 2101 rows and 10 columns -#' - *lambda*: wavelength, between 400 nm and 2500 nm -#' - *nrefrac*: refractive index -#' - *SAC_CHL*: specific absorption coefficient for chlorophylls -#' - *SAC_CAR*: specific absorption coefficient for carotenoids -#' - *SAC_ANT*: specific absorption coefficient for anthocyanins -#' - *SAC_BROWN*: specific absorption coefficient for brown pigmnts -#' - *SAC_EWT*: specific absorption coefficient for EWT/water -#' - *SAC_LMA*: specific absorption coefficient for LMA/dry matter -#' - *SAC_PROT*: specific absorption coefficient for proteins -#' - *SAC_CBC*: specific absorption coefficient for carbon-base constituents -"SpecPROSPECT" diff --git a/R/SpecPROSPECT_FullRange-data.R b/R/SpecPROSPECT_FullRange-data.R new file mode 100644 index 0000000..7c68c1f --- /dev/null +++ b/R/SpecPROSPECT_FullRange-data.R @@ -0,0 +1,25 @@ +#' SpecPROSPECT_FullRange: optical constants defined for PROSPECT +#' +#' Corresponds to spectral bands, refractive index and specific absorption +#' coefficient for each chemica constituent, defined over the spectral domain +#' ranging from 400 nm to 2500 nm +#' +#' The specific absorption coefficients were calibrated using experimental data. +#' The details of the calibration should be found in the following publications: +#' http://dx.doi.org/10.1016/j.rse.2017.03.004 +#' https://doi.org/10.1016/j.rse.2020.112173 +#' +#' @format A dataframe including 2101 rows and 10 columns +#' - *lambda*: wavelength, between 400 nm and 2500 nm +#' - *nrefrac*: refractive index +#' - *SAC_CHL*: specific absorption coefficient for chlorophylls +#' - *SAC_CAR*: specific absorption coefficient for carotenoids +#' - *SAC_ANT*: specific absorption coefficient for anthocyanins +#' - *SAC_BROWN*: specific absorption coefficient for brown pigments +#' - *SAC_EWT*: specific absorption coefficient for water content (Equivalent Water Thickness) +#' - *SAC_LMA*: specific absorption coefficient for dry matter (Leaf Mass per Area) +#' - *SAC_PROT*: specific absorption coefficient for proteins +#' - *SAC_CBC*: specific absorption coefficient for carbon-base constituents +#' - *calctav_90*: transmissivity of a dielectric plane surface, averaged over all directions of incidence and over all polarizations for solid angle of 90 degrees +#' - *calctav_40*: transmissivity of a dielectric plane surface, averaged over all directions of incidence and over all polarizations for solid angle of 40 degrees +"SpecPROSPECT_FullRange" diff --git a/R/sysdata.rda b/R/sysdata.rda new file mode 100644 index 0000000..13fd50f Binary files /dev/null and b/R/sysdata.rda differ diff --git a/data-raw/create_sysdata.R b/data-raw/create_sysdata.R new file mode 100644 index 0000000..b9754af --- /dev/null +++ b/data-raw/create_sysdata.R @@ -0,0 +1,46 @@ +#' SpecPROSPECT_FullRange: optical constants defined for PROSPECT +#' +#' Corresponds to spectral bands, refractive index and specific absorption +#' coefficient for each chemica constituent, defined over the spectral domain +#' ranging from 400 nm to 2500 nm +#' +#' The specific absorption coefficients were calibrated using experimental data. +#' The details of the calibration should be found in the following publications: +#' http://dx.doi.org/10.1016/j.rse.2017.03.004 +#' https://doi.org/10.1016/j.rse.2020.112173 +#' +SpecPROSPECT_FullRange <- read.table(file = 'data-raw/dataSpec_PRO.txt', + header = TRUE, + sep = '\t') + +#' calctav_90 & calctav_40: transmissivity of a dielectric plane surface, +#' averaged over all directions of incidence and over all polarizations for +#' solid angle of 90 and 40 degrees +#' +calctav_90 <- prospect::calctav(90, prospect::SpecPROSPECT_FullRange$nrefrac) +calctav_40 <- prospect::calctav(40, prospect::SpecPROSPECT_FullRange$nrefrac) +SpecPROSPECT_FullRange$calctav_90 <- calctav_90 +SpecPROSPECT_FullRange$calctav_40 <- calctav_40 + +#' OptDomain_RT: optimal spectral domains defined to assess the different leaf +#' chemical constituents. +#' These optimal spectral domains were defined in +#' Féret et al. (2019) https://doi.org/10.1016/j.rse.2018.11.002 +#' Féret et al. (2021) https://doi.org/10.1016/j.rse.2020.112173 +#' Spafford et al. (2021) https://doi.org/10.1016/j.rse.2020.112176 +#' +OptDomain_RT <- list('CHL' = seq(700,720), + 'CAR' = seq(520,560), + 'ANT' = seq(400,800), + 'EWT' = seq(1700,2400), + 'LMA' = seq(1700,2400), + 'PROT' = c(seq(2100,2139), seq(2160,2179)), + 'CBC' = c(seq(1480,1499), seq(1560,1579), seq(1760,1799), + seq(2040,2059), seq(2120,2139), seq(2160,2239), + seq(2260,2279), seq(2340,2359), seq(2380,2399))) + + + +usethis::use_data(SpecPROSPECT_FullRange, OptDomain_RT, + internal = FALSE, + overwrite = TRUE) diff --git a/data-raw/dataSpec_PRO.txt b/data-raw/dataSpec_PRO.txt new file mode 100644 index 0000000..937ace4 --- /dev/null +++ b/data-raw/dataSpec_PRO.txt @@ -0,0 +1,2102 @@ +lambda nrefrac SAC_CHL SAC_CAR SAC_ANT SAC_BROWN SAC_EWT SAC_LMA SAC_PROT SAC_CBC +400 1.5115 6.48815E-02 1.67340E-01 6.66747E-02 5.27200E-01 5.80000E-05 1.09700E+02 0.00000E+00 1.27930E+02 +401 1.5115 6.67318E-02 1.67607E-01 6.40556E-02 5.26200E-01 5.85200E-05 1.03700E+02 0.00000E+00 1.20933E+02 +402 1.5115 6.85513E-02 1.67184E-01 6.19332E-02 5.25200E-01 5.90000E-05 9.79800E+01 0.00000E+00 1.14263E+02 +403 1.5115 6.99821E-02 1.67207E-01 5.99215E-02 5.24200E-01 5.98900E-05 9.24400E+01 0.00000E+00 1.07802E+02 +404 1.5115 7.09000E-02 1.67613E-01 5.82770E-02 5.23200E-01 6.10000E-05 8.71300E+01 0.00000E+00 1.01609E+02 +405 1.5115 7.13334E-02 1.67596E-01 5.66994E-02 5.22200E-01 6.20300E-05 8.23100E+01 0.00000E+00 9.59885E+01 +406 1.5108 7.13202E-02 1.67513E-01 5.53657E-02 5.21200E-01 6.30000E-05 7.80600E+01 0.00000E+00 9.10322E+01 +407 1.5101 7.12604E-02 1.67426E-01 5.41628E-02 5.20200E-01 6.39900E-05 7.40400E+01 0.00000E+00 8.63441E+01 +408 1.5095 7.12231E-02 1.67239E-01 5.31158E-02 5.19200E-01 6.50000E-05 7.01300E+01 0.00000E+00 8.17844E+01 +409 1.5088 7.12280E-02 1.66682E-01 5.19797E-02 5.18200E-01 6.60300E-05 6.65400E+01 0.00000E+00 7.75978E+01 +410 1.5081 7.14914E-02 1.65882E-01 5.09515E-02 5.17200E-01 6.70000E-05 6.30000E+01 0.00000E+00 7.34695E+01 +411 1.5076 7.18877E-02 1.65517E-01 5.01165E-02 5.16200E-01 6.79000E-05 5.95400E+01 0.00000E+00 6.94345E+01 +412 1.5071 7.20185E-02 1.65446E-01 4.93873E-02 5.15200E-01 6.90000E-05 5.61600E+01 0.00000E+00 6.54928E+01 +413 1.5065 7.18268E-02 1.65689E-01 4.86038E-02 5.14200E-01 7.05000E-05 5.30000E+01 0.00000E+00 6.18077E+01 +414 1.5060 7.14934E-02 1.66088E-01 4.78761E-02 5.13200E-01 7.20000E-05 5.00100E+01 0.00000E+00 5.83208E+01 +415 1.5055 7.11319E-02 1.66189E-01 4.73795E-02 5.12200E-01 7.31200E-05 4.72300E+01 0.00000E+00 5.50788E+01 +416 1.5050 7.07629E-02 1.66288E-01 4.68987E-02 5.11200E-01 7.40000E-05 4.46300E+01 0.00000E+00 5.20467E+01 +417 1.5046 7.04367E-02 1.66456E-01 4.65315E-02 5.10200E-01 7.49000E-05 4.22000E+01 0.00000E+00 4.92129E+01 +418 1.5041 7.00940E-02 1.66622E-01 4.61572E-02 5.09200E-01 7.60000E-05 3.99600E+01 0.00000E+00 4.66006E+01 +419 1.5037 6.98404E-02 1.66873E-01 4.57923E-02 5.08200E-01 7.74000E-05 3.78000E+01 0.00000E+00 4.40817E+01 +420 1.5032 6.98193E-02 1.67164E-01 4.54286E-02 5.07200E-01 7.90000E-05 3.56700E+01 0.00000E+00 4.15977E+01 +421 1.5029 7.00539E-02 1.67544E-01 4.51439E-02 5.06200E-01 8.06300E-05 3.36200E+01 0.00000E+00 3.92071E+01 +422 1.5026 7.02815E-02 1.67980E-01 4.48451E-02 5.05200E-01 8.20000E-05 3.17000E+01 0.00000E+00 3.69680E+01 +423 1.5022 7.05030E-02 1.68439E-01 4.45356E-02 5.04200E-01 8.29700E-05 2.99300E+01 0.00000E+00 3.49038E+01 +424 1.5019 7.04727E-02 1.68599E-01 4.42495E-02 5.03200E-01 8.40000E-05 2.83200E+01 0.00000E+00 3.30263E+01 +425 1.5016 7.05277E-02 1.68474E-01 4.41159E-02 5.02200E-01 8.55100E-05 2.67900E+01 0.00000E+00 3.12420E+01 +426 1.5013 7.08095E-02 1.68142E-01 4.39576E-02 5.01200E-01 8.70000E-05 2.53500E+01 0.00000E+00 2.95627E+01 +427 1.5010 7.13124E-02 1.68000E-01 4.38740E-02 5.00200E-01 8.80000E-05 2.40200E+01 0.00000E+00 2.80117E+01 +428 1.5008 7.16223E-02 1.67725E-01 4.38046E-02 4.99200E-01 8.90000E-05 2.27600E+01 0.00000E+00 2.65423E+01 +429 1.5005 7.19053E-02 1.67413E-01 4.38581E-02 4.98200E-01 9.05000E-05 2.15000E+01 0.00000E+00 2.50729E+01 +430 1.5002 7.24491E-02 1.67551E-01 4.38612E-02 4.97200E-01 9.20000E-05 2.02400E+01 0.00000E+00 2.36035E+01 +431 1.5000 7.30907E-02 1.67744E-01 4.39124E-02 4.96000E-01 9.30000E-05 1.90100E+01 0.00000E+00 2.21691E+01 +432 1.4997 7.36521E-02 1.67905E-01 4.39588E-02 4.94800E-01 9.40000E-05 1.78500E+01 0.00000E+00 2.08164E+01 +433 1.4995 7.40470E-02 1.67971E-01 4.40366E-02 4.93600E-01 9.55000E-05 1.67600E+01 0.00000E+00 1.95452E+01 +434 1.4992 7.43349E-02 1.67937E-01 4.41105E-02 4.92400E-01 9.70000E-05 1.57500E+01 0.00000E+00 1.83674E+01 +435 1.4990 7.45425E-02 1.67973E-01 4.42029E-02 4.91200E-01 9.80100E-05 1.48100E+01 0.00000E+00 1.72712E+01 +436 1.4988 7.46911E-02 1.68177E-01 4.42768E-02 4.90000E-01 9.90000E-05 1.39200E+01 0.00000E+00 1.62333E+01 +437 1.4986 7.46534E-02 1.68322E-01 4.43989E-02 4.88800E-01 1.00500E-04 1.31200E+01 0.00000E+00 1.53003E+01 +438 1.4984 7.45703E-02 1.68695E-01 4.45095E-02 4.87600E-01 1.02000E-04 1.23300E+01 0.00000E+00 1.43790E+01 +439 1.4982 7.42853E-02 1.69163E-01 4.46471E-02 4.86400E-01 1.03100E-04 1.16100E+01 0.00000E+00 1.35394E+01 +440 1.4980 7.37942E-02 1.69569E-01 4.47865E-02 4.85200E-01 1.04000E-04 1.09600E+01 0.00000E+00 1.27814E+01 +441 1.4977 7.28180E-02 1.69678E-01 4.49193E-02 4.84000E-01 1.05000E-04 1.04100E+01 0.00000E+00 1.21400E+01 +442 1.4974 7.16223E-02 1.69631E-01 4.50615E-02 4.82900E-01 1.06000E-04 9.92400E+00 0.00000E+00 1.15732E+01 +443 1.4972 7.04587E-02 1.69900E-01 4.52269E-02 4.81700E-01 1.07000E-04 9.41000E+00 0.00000E+00 1.09738E+01 +444 1.4969 6.91047E-02 1.69905E-01 4.54154E-02 4.80500E-01 1.08000E-04 8.94700E+00 0.00000E+00 1.04338E+01 +445 1.4966 6.75675E-02 1.69815E-01 4.55895E-02 4.79300E-01 1.09000E-04 8.50800E+00 0.00000E+00 9.92188E+00 +446 1.4964 6.60264E-02 1.69770E-01 4.57528E-02 4.78100E-01 1.10000E-04 8.08700E+00 0.00000E+00 9.43092E+00 +447 1.4962 6.44919E-02 1.69730E-01 4.58570E-02 4.76900E-01 1.11000E-04 7.64000E+00 0.00000E+00 8.90963E+00 +448 1.4959 6.26681E-02 1.69345E-01 4.59940E-02 4.75700E-01 1.12000E-04 7.26800E+00 0.00000E+00 8.47581E+00 +449 1.4957 6.07546E-02 1.68568E-01 4.61954E-02 4.74500E-01 1.13000E-04 6.93900E+00 0.00000E+00 8.09214E+00 +450 1.4955 5.87747E-02 1.67441E-01 4.64136E-02 4.73300E-01 1.14000E-04 6.66000E+00 0.00000E+00 7.76677E+00 +451 1.4953 5.67782E-02 1.66023E-01 4.66797E-02 4.72000E-01 1.15000E-04 6.42200E+00 0.00000E+00 7.48922E+00 +452 1.4951 5.47324E-02 1.64464E-01 4.69530E-02 4.70800E-01 1.16000E-04 6.22200E+00 0.00000E+00 7.25599E+00 +453 1.4949 5.28441E-02 1.62899E-01 4.71624E-02 4.69500E-01 1.17000E-04 6.01000E+00 0.00000E+00 7.00876E+00 +454 1.4947 5.11254E-02 1.61362E-01 4.73600E-02 4.68300E-01 1.18000E-04 5.78200E+00 0.00000E+00 6.74287E+00 +455 1.4945 4.95729E-02 1.59780E-01 4.75935E-02 4.67000E-01 1.19000E-04 5.57300E+00 0.00000E+00 6.49913E+00 +456 1.4943 4.81390E-02 1.58224E-01 4.78138E-02 4.65800E-01 1.20000E-04 5.37000E+00 0.00000E+00 6.26240E+00 +457 1.4942 4.68009E-02 1.56555E-01 4.80817E-02 4.64500E-01 1.21000E-04 5.17300E+00 0.00000E+00 6.03266E+00 +458 1.4940 4.56455E-02 1.54969E-01 4.83353E-02 4.63300E-01 1.22000E-04 4.94600E+00 0.00000E+00 5.76794E+00 +459 1.4939 4.46906E-02 1.53299E-01 4.85953E-02 4.62000E-01 1.23000E-04 4.76100E+00 0.00000E+00 5.55219E+00 +460 1.4937 4.38733E-02 1.51672E-01 4.88393E-02 4.60800E-01 1.24000E-04 4.57500E+00 0.00000E+00 5.33528E+00 +461 1.4935 4.31621E-02 1.49969E-01 4.91231E-02 4.59700E-01 1.25000E-04 4.41900E+00 0.00000E+00 5.15336E+00 +462 1.4934 4.26533E-02 1.48319E-01 4.93705E-02 4.58700E-01 1.26000E-04 4.25900E+00 0.00000E+00 4.96677E+00 +463 1.4932 4.22062E-02 1.46765E-01 4.96082E-02 4.57700E-01 1.27000E-04 4.11700E+00 0.00000E+00 4.80117E+00 +464 1.4931 4.17743E-02 1.45076E-01 4.98409E-02 4.56600E-01 1.28000E-04 4.00600E+00 0.00000E+00 4.67173E+00 +465 1.4929 4.12972E-02 1.43493E-01 5.01360E-02 4.55600E-01 1.28900E-04 3.94500E+00 0.00000E+00 4.60059E+00 +466 1.4928 4.09113E-02 1.42004E-01 5.04203E-02 4.54600E-01 1.30000E-04 3.85300E+00 0.00000E+00 4.49330E+00 +467 1.4927 4.05705E-02 1.40550E-01 5.07836E-02 4.53500E-01 1.31500E-04 3.78400E+00 0.00000E+00 4.41283E+00 +468 1.4925 4.03017E-02 1.39191E-01 5.11498E-02 4.52500E-01 1.33000E-04 3.67100E+00 0.00000E+00 4.28106E+00 +469 1.4924 4.00089E-02 1.38023E-01 5.15566E-02 4.51500E-01 1.34000E-04 3.55400E+00 0.00000E+00 4.14461E+00 +470 1.4923 3.97273E-02 1.37008E-01 5.19406E-02 4.50400E-01 1.35000E-04 3.46200E+00 0.00000E+00 4.03732E+00 +471 1.4922 3.95205E-02 1.36145E-01 5.23872E-02 4.49400E-01 1.36400E-04 3.36300E+00 0.00000E+00 3.92187E+00 +472 1.4920 3.92920E-02 1.35480E-01 5.28197E-02 4.48400E-01 1.38000E-04 3.28200E+00 0.00000E+00 3.82741E+00 +473 1.4919 3.90352E-02 1.34998E-01 5.34087E-02 4.47300E-01 1.39600E-04 3.18400E+00 0.00000E+00 3.71312E+00 +474 1.4917 3.87726E-02 1.34639E-01 5.39897E-02 4.46300E-01 1.41000E-04 3.10200E+00 0.00000E+00 3.61750E+00 +475 1.4916 3.85228E-02 1.34366E-01 5.44621E-02 4.45300E-01 1.42400E-04 3.05100E+00 0.00000E+00 3.55802E+00 +476 1.4915 3.82599E-02 1.34169E-01 5.49398E-02 4.44200E-01 1.44000E-04 2.98300E+00 0.00000E+00 3.47872E+00 +477 1.4914 3.78812E-02 1.33937E-01 5.55430E-02 4.43200E-01 1.45900E-04 2.94700E+00 0.00000E+00 3.43674E+00 +478 1.4912 3.75100E-02 1.33745E-01 5.61548E-02 4.42200E-01 1.48000E-04 2.91300E+00 0.00000E+00 3.39709E+00 +479 1.4911 3.71492E-02 1.33557E-01 5.66378E-02 4.41100E-01 1.49900E-04 2.86900E+00 0.00000E+00 3.34578E+00 +480 1.4910 3.67757E-02 1.33271E-01 5.71515E-02 4.40100E-01 1.52000E-04 2.80300E+00 0.00000E+00 3.26881E+00 +481 1.4909 3.63000E-02 1.32787E-01 5.76893E-02 4.38800E-01 1.54400E-04 2.77700E+00 0.00000E+00 3.23849E+00 +482 1.4907 3.57606E-02 1.32173E-01 5.82652E-02 4.37500E-01 1.57000E-04 2.75100E+00 0.00000E+00 3.20817E+00 +483 1.4906 3.52100E-02 1.31409E-01 5.88470E-02 4.36200E-01 1.59600E-04 2.72600E+00 0.00000E+00 3.17901E+00 +484 1.4904 3.45829E-02 1.30422E-01 5.94778E-02 4.35000E-01 1.62000E-04 2.70200E+00 0.00000E+00 3.15102E+00 +485 1.4903 3.39091E-02 1.29222E-01 6.00537E-02 4.33700E-01 1.64300E-04 2.67900E+00 0.00000E+00 3.12420E+00 +486 1.4902 3.31842E-02 1.27818E-01 6.06698E-02 4.32400E-01 1.67000E-04 2.65600E+00 0.00000E+00 3.09738E+00 +487 1.4900 3.23774E-02 1.26314E-01 6.12210E-02 4.31100E-01 1.70400E-04 2.63400E+00 0.00000E+00 3.07172E+00 +488 1.4899 3.15189E-02 1.24566E-01 6.18094E-02 4.29800E-01 1.74000E-04 2.61300E+00 0.00000E+00 3.04723E+00 +489 1.4897 3.05842E-02 1.22692E-01 6.23585E-02 4.28500E-01 1.77500E-04 2.59300E+00 0.00000E+00 3.02391E+00 +490 1.4896 2.96622E-02 1.20655E-01 6.29224E-02 4.27200E-01 1.81000E-04 2.57300E+00 0.00000E+00 3.00059E+00 +491 1.4895 2.86992E-02 1.18603E-01 6.34338E-02 4.26000E-01 1.84900E-04 2.55400E+00 0.00000E+00 2.97843E+00 +492 1.4893 2.76921E-02 1.16520E-01 6.39703E-02 4.24700E-01 1.89000E-04 2.53600E+00 0.00000E+00 2.95744E+00 +493 1.4892 2.66404E-02 1.14410E-01 6.44618E-02 4.23400E-01 1.93400E-04 2.51900E+00 0.00000E+00 2.93761E+00 +494 1.4890 2.55901E-02 1.12274E-01 6.49644E-02 4.22100E-01 1.98000E-04 2.50200E+00 0.00000E+00 2.91779E+00 +495 1.4889 2.45165E-02 1.10113E-01 6.54305E-02 4.20800E-01 2.03100E-04 2.48600E+00 0.00000E+00 2.89913E+00 +496 1.4887 2.34283E-02 1.07930E-01 6.59096E-02 4.19500E-01 2.09000E-04 2.47100E+00 0.00000E+00 2.88164E+00 +497 1.4885 2.23279E-02 1.05726E-01 6.63776E-02 4.18300E-01 2.15800E-04 2.45700E+00 0.00000E+00 2.86531E+00 +498 1.4884 2.12239E-02 1.03502E-01 6.68519E-02 4.17000E-01 2.23000E-04 2.44300E+00 0.00000E+00 2.84898E+00 +499 1.4882 2.01366E-02 1.01261E-01 6.73086E-02 4.15700E-01 2.30300E-04 2.43000E+00 0.00000E+00 2.83382E+00 +500 1.4880 1.90485E-02 9.90044E-02 6.77709E-02 4.14400E-01 2.38000E-04 2.41700E+00 0.00000E+00 2.81866E+00 +501 1.4878 1.79798E-02 9.67335E-02 6.81326E-02 4.13500E-01 2.46300E-04 2.40500E+00 0.00000E+00 2.80467E+00 +502 1.4876 1.69429E-02 9.44502E-02 6.84792E-02 4.12700E-01 2.55000E-04 2.39400E+00 0.00000E+00 2.79184E+00 +503 1.4875 1.59234E-02 9.21564E-02 6.88146E-02 4.11800E-01 2.64000E-04 2.38400E+00 0.00000E+00 2.78018E+00 +504 1.4873 1.49343E-02 8.98536E-02 6.91402E-02 4.10900E-01 2.73000E-04 2.37400E+00 0.00000E+00 2.76852E+00 +505 1.4871 1.39785E-02 8.75437E-02 6.93615E-02 4.10000E-01 2.81900E-04 2.36500E+00 0.00000E+00 2.75802E+00 +506 1.4869 1.30497E-02 8.52284E-02 6.95630E-02 4.09200E-01 2.91000E-04 2.35600E+00 0.00000E+00 2.74753E+00 +507 1.4867 1.21542E-02 8.29094E-02 6.98280E-02 4.08300E-01 3.00400E-04 2.34800E+00 0.00000E+00 2.73820E+00 +508 1.4865 1.12959E-02 8.05884E-02 7.00735E-02 4.07400E-01 3.10000E-04 2.34100E+00 0.00000E+00 2.73003E+00 +509 1.4863 1.04800E-02 7.82671E-02 7.02792E-02 4.06500E-01 3.19400E-04 2.33400E+00 0.00000E+00 2.72187E+00 +510 1.4861 9.70081E-03 7.59473E-02 7.04719E-02 4.05700E-01 3.29000E-04 2.32800E+00 0.00000E+00 2.71487E+00 +511 1.4859 8.95396E-03 7.36308E-02 7.06789E-02 4.04700E-01 3.39000E-04 2.32300E+00 0.00000E+00 2.70904E+00 +512 1.4856 8.24610E-03 7.13191E-02 7.08719E-02 4.03800E-01 3.49000E-04 2.31800E+00 0.00000E+00 2.70321E+00 +513 1.4854 7.58000E-03 6.90141E-02 7.10254E-02 4.02800E-01 3.58800E-04 2.31400E+00 0.00000E+00 2.69855E+00 +514 1.4851 6.95743E-03 6.67175E-02 7.11652E-02 4.01900E-01 3.68000E-04 2.31000E+00 0.00000E+00 2.69388E+00 +515 1.4849 6.38669E-03 6.44310E-02 7.12852E-02 4.00900E-01 3.76700E-04 2.30700E+00 0.00000E+00 2.69038E+00 +516 1.4846 5.86805E-03 6.21564E-02 7.13896E-02 4.00000E-01 3.86000E-04 2.30400E+00 0.00000E+00 2.68688E+00 +517 1.4844 5.40153E-03 5.98953E-02 7.14865E-02 3.99000E-01 3.96200E-04 2.30200E+00 0.00000E+00 2.68455E+00 +518 1.4841 4.99129E-03 5.76495E-02 7.15735E-02 3.98100E-01 4.04000E-04 2.30100E+00 0.00000E+00 2.68339E+00 +519 1.4839 4.63493E-03 5.54207E-02 7.16303E-02 3.97100E-01 4.06900E-04 2.30000E+00 0.00000E+00 2.68222E+00 +520 1.4836 4.33379E-03 5.32106E-02 7.16821E-02 3.96200E-01 4.09000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +521 1.4833 4.08503E-03 5.10211E-02 7.17393E-02 3.95200E-01 4.13800E-04 2.30000E+00 0.00000E+00 2.68222E+00 +522 1.4830 3.88739E-03 4.88537E-02 7.17754E-02 3.94300E-01 4.16000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +523 1.4828 3.74206E-03 4.67102E-02 7.18152E-02 3.93300E-01 4.11200E-04 2.30000E+00 0.00000E+00 2.68222E+00 +524 1.4825 3.65252E-03 4.45924E-02 7.18641E-02 3.92400E-01 4.09000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +525 1.4822 3.61178E-03 4.25020E-02 7.19587E-02 3.91400E-01 4.17600E-04 2.30000E+00 0.00000E+00 2.68222E+00 +526 1.4819 3.61934E-03 4.04407E-02 7.20597E-02 3.90500E-01 4.27000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +527 1.4816 3.67282E-03 3.84102E-02 7.21526E-02 3.89500E-01 4.26800E-04 2.30000E+00 0.00000E+00 2.68222E+00 +528 1.4813 3.76967E-03 3.64122E-02 7.22403E-02 3.88600E-01 4.23000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +529 1.4810 3.90324E-03 3.44486E-02 7.22952E-02 3.87600E-01 4.23700E-04 2.30000E+00 0.00000E+00 2.68222E+00 +530 1.4807 4.06899E-03 3.25209E-02 7.23492E-02 3.86700E-01 4.29000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +531 1.4804 4.26366E-03 3.06310E-02 7.24141E-02 3.84600E-01 4.37100E-04 2.30000E+00 0.00000E+00 2.68222E+00 +532 1.4801 4.48428E-03 2.87806E-02 7.24758E-02 3.82400E-01 4.45000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +533 1.4797 4.72995E-03 2.69713E-02 7.25103E-02 3.80300E-01 4.50600E-04 2.30000E+00 0.00000E+00 2.68222E+00 +534 1.4794 4.99348E-03 2.52050E-02 7.25285E-02 3.78200E-01 4.56000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +535 1.4791 5.27276E-03 2.34833E-02 7.25289E-02 3.76000E-01 4.63100E-04 2.30000E+00 0.00000E+00 2.68222E+00 +536 1.4788 5.56455E-03 2.18079E-02 7.25061E-02 3.73900E-01 4.70000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +537 1.4784 5.86623E-03 2.01807E-02 7.24327E-02 3.71800E-01 4.74800E-04 2.30000E+00 0.00000E+00 2.68222E+00 +538 1.4781 6.17059E-03 1.86033E-02 7.23404E-02 3.69600E-01 4.80000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +539 1.4777 6.47922E-03 1.70774E-02 7.22102E-02 3.67500E-01 4.87900E-04 2.30000E+00 0.00000E+00 2.68222E+00 +540 1.4774 6.78640E-03 1.56048E-02 7.20633E-02 3.65400E-01 4.95000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +541 1.4771 7.09000E-03 1.41872E-02 7.18369E-02 3.63900E-01 4.98300E-04 2.30000E+00 0.00000E+00 2.68222E+00 +542 1.4767 7.38800E-03 1.28264E-02 7.16024E-02 3.62500E-01 5.03000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +543 1.4764 7.67415E-03 1.15240E-02 7.13427E-02 3.61100E-01 5.14100E-04 2.30000E+00 0.00000E+00 2.68222E+00 +544 1.4760 7.94833E-03 1.02818E-02 7.10671E-02 3.59700E-01 5.27000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +545 1.4757 8.20829E-03 9.10146E-03 7.07065E-02 3.58200E-01 5.36300E-04 2.30000E+00 0.00000E+00 2.68222E+00 +546 1.4753 8.45364E-03 7.98479E-03 7.03069E-02 3.56800E-01 5.44000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +547 1.4750 8.68499E-03 6.93348E-03 6.98401E-02 3.55400E-01 5.53200E-04 2.30000E+00 0.00000E+00 2.68222E+00 +548 1.4746 8.90368E-03 5.94925E-03 6.93554E-02 3.54000E-01 5.64000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +549 1.4743 9.11190E-03 5.03384E-03 6.87563E-02 3.52500E-01 5.75900E-04 2.30000E+00 0.00000E+00 2.68222E+00 +550 1.4739 9.30939E-03 4.18898E-03 6.81398E-02 3.51100E-01 5.88000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +551 1.4735 9.50012E-03 3.41638E-03 6.74400E-02 3.50000E-01 5.99800E-04 2.30000E+00 0.00000E+00 2.68222E+00 +552 1.4732 9.68213E-03 2.71778E-03 6.67326E-02 3.48900E-01 6.11000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +553 1.4728 9.86391E-03 2.09490E-03 6.59041E-02 3.47800E-01 6.21500E-04 2.30000E+00 0.00000E+00 2.68222E+00 +554 1.4725 1.00400E-02 1.54947E-03 6.50612E-02 3.46700E-01 6.31000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +555 1.4721 1.02144E-02 1.08322E-03 6.42103E-02 3.45600E-01 6.39100E-04 2.30000E+00 0.00000E+00 2.68222E+00 +556 1.4717 1.03855E-02 6.97863E-04 6.33575E-02 3.44500E-01 6.46000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +557 1.4713 1.05557E-02 3.95138E-04 6.24373E-02 3.43400E-01 6.52000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +558 1.4709 1.07242E-02 1.76768E-04 6.15175E-02 3.42300E-01 6.58000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +559 1.4705 1.08889E-02 4.44797E-05 6.05785E-02 3.41200E-01 6.64700E-04 2.30000E+00 0.00000E+00 2.68222E+00 +560 1.4701 1.10480E-02 2.13163E-13 5.96515E-02 3.40100E-01 6.72000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +561 1.4697 1.12169E-02 0.00000E+00 5.86113E-02 3.38300E-01 6.79300E-04 2.30000E+00 0.00000E+00 2.68222E+00 +562 1.4693 1.14015E-02 0.00000E+00 5.75910E-02 3.36600E-01 6.86000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +563 1.4689 1.16055E-02 0.00000E+00 5.65542E-02 3.34800E-01 6.92000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +564 1.4685 1.18272E-02 0.00000E+00 5.55431E-02 3.33000E-01 6.99000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +565 1.4681 1.20748E-02 0.00000E+00 5.43786E-02 3.31200E-01 7.08400E-04 2.30000E+00 0.00000E+00 2.68222E+00 +566 1.4677 1.23402E-02 0.00000E+00 5.32432E-02 3.29400E-01 7.18000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +567 1.4673 1.26280E-02 0.00000E+00 5.20560E-02 3.27600E-01 7.25700E-04 2.30000E+00 0.00000E+00 2.68222E+00 +568 1.4670 1.29330E-02 0.00000E+00 5.09000E-02 3.25800E-01 7.34000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +569 1.4666 1.32595E-02 0.00000E+00 4.96714E-02 3.24100E-01 7.45500E-04 2.30000E+00 0.00000E+00 2.68222E+00 +570 1.4662 1.35979E-02 0.00000E+00 4.84808E-02 3.22300E-01 7.59000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +571 1.4658 1.39469E-02 0.00000E+00 4.73085E-02 3.20200E-01 7.72900E-04 2.30000E+00 0.00000E+00 2.68222E+00 +572 1.4654 1.43014E-02 0.00000E+00 4.61743E-02 3.18200E-01 7.87000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +573 1.4651 1.46577E-02 0.00000E+00 4.50001E-02 3.16200E-01 8.02000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +574 1.4647 1.50102E-02 0.00000E+00 4.38705E-02 3.14100E-01 8.19000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +575 1.4643 1.53567E-02 0.00000E+00 4.27812E-02 3.12100E-01 8.38600E-04 2.30000E+00 0.00000E+00 2.68222E+00 +576 1.4639 1.56935E-02 0.00000E+00 4.17338E-02 3.10000E-01 8.58000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +577 1.4635 1.60234E-02 0.00000E+00 4.06179E-02 3.08000E-01 8.75400E-04 2.30000E+00 0.00000E+00 2.68222E+00 +578 1.4632 1.63397E-02 0.00000E+00 3.95431E-02 3.05900E-01 8.96000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +579 1.4628 1.66478E-02 0.00000E+00 3.84569E-02 3.03900E-01 9.23800E-04 2.30000E+00 0.00000E+00 2.68222E+00 +580 1.4624 1.69452E-02 0.00000E+00 3.74120E-02 3.01900E-01 9.52000E-04 2.30000E+00 0.00000E+00 2.68222E+00 +581 1.4620 1.72407E-02 0.00000E+00 3.62003E-02 2.99900E-01 9.74500E-04 2.30000E+00 0.00000E+00 2.68222E+00 +582 1.4616 1.75269E-02 0.00000E+00 3.50426E-02 2.97900E-01 1.00000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +583 1.4613 1.78005E-02 0.00000E+00 3.39189E-02 2.95900E-01 1.03700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +584 1.4609 1.80658E-02 0.00000E+00 3.28458E-02 2.94000E-01 1.07900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +585 1.4605 1.83248E-02 0.00000E+00 3.17012E-02 2.92000E-01 1.11900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +586 1.4602 1.85679E-02 0.00000E+00 3.06065E-02 2.90000E-01 1.15900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +587 1.4598 1.88000E-02 0.00000E+00 2.96161E-02 2.88100E-01 1.20400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +588 1.4595 1.90186E-02 0.00000E+00 2.86652E-02 2.86100E-01 1.25300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +589 1.4591 1.92278E-02 0.00000E+00 2.77151E-02 2.84100E-01 1.30400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +590 1.4588 1.94191E-02 0.00000E+00 2.68029E-02 2.82100E-01 1.35600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +591 1.4585 1.95991E-02 0.00000E+00 2.59512E-02 2.80300E-01 1.40800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +592 1.4582 1.97663E-02 0.00000E+00 2.51335E-02 2.78400E-01 1.45900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +593 1.4579 1.99222E-02 0.00000E+00 2.42929E-02 2.76600E-01 1.51000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +594 1.4576 2.00656E-02 0.00000E+00 2.34865E-02 2.74700E-01 1.56700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +595 1.4573 2.01988E-02 0.00000E+00 2.26866E-02 2.72800E-01 1.63500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +596 1.4570 2.03266E-02 0.00000E+00 2.19176E-02 2.71000E-01 1.70000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +597 1.4567 2.04577E-02 0.00000E+00 2.10849E-02 2.69100E-01 1.75800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +598 1.4565 2.05849E-02 0.00000E+00 2.02843E-02 2.67300E-01 1.86000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +599 1.4562 2.07154E-02 0.00000E+00 1.94972E-02 2.65400E-01 2.04200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +600 1.4559 2.08540E-02 0.00000E+00 1.87401E-02 2.63600E-01 2.22400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +601 1.4556 2.10068E-02 0.00000E+00 1.79770E-02 2.61800E-01 2.32300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +602 1.4553 2.11716E-02 0.00000E+00 1.72421E-02 2.60100E-01 2.36600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +603 1.4551 2.13477E-02 0.00000E+00 1.66044E-02 2.58400E-01 2.40000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +604 1.4548 2.15458E-02 0.00000E+00 1.59870E-02 2.56600E-01 2.44800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +605 1.4545 2.17636E-02 0.00000E+00 1.54096E-02 2.54900E-01 2.51900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +606 1.4543 2.20033E-02 0.00000E+00 1.48447E-02 2.53200E-01 2.58700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +607 1.4540 2.22680E-02 0.00000E+00 1.43173E-02 2.51500E-01 2.62900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +608 1.4538 2.25525E-02 0.00000E+00 1.38003E-02 2.49700E-01 2.65300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +609 1.4535 2.28594E-02 0.00000E+00 1.32952E-02 2.48000E-01 2.67400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +610 1.4533 2.31769E-02 0.00000E+00 1.28011E-02 2.46300E-01 2.69100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +611 1.4531 2.35022E-02 0.00000E+00 1.23363E-02 2.44700E-01 2.70400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +612 1.4528 2.38419E-02 0.00000E+00 1.18837E-02 2.43100E-01 2.71500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +613 1.4526 2.41985E-02 0.00000E+00 1.13936E-02 2.41400E-01 2.72700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +614 1.4523 2.45610E-02 0.00000E+00 1.09184E-02 2.39800E-01 2.74000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +615 1.4521 2.49170E-02 0.00000E+00 1.04635E-02 2.38200E-01 2.75300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +616 1.4519 2.52691E-02 0.00000E+00 1.00219E-02 2.36600E-01 2.76400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +617 1.4517 2.56167E-02 0.00000E+00 9.58084E-03 2.35000E-01 2.77500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +618 1.4514 2.59503E-02 0.00000E+00 9.15534E-03 2.33400E-01 2.78500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +619 1.4512 2.62545E-02 0.00000E+00 8.77663E-03 2.31800E-01 2.79700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +620 1.4510 2.65303E-02 0.00000E+00 8.41103E-03 2.30200E-01 2.81000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +621 1.4508 2.67861E-02 0.00000E+00 8.05235E-03 2.28800E-01 2.82400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +622 1.4506 2.70098E-02 0.00000E+00 7.70727E-03 2.27300E-01 2.83900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +623 1.4504 2.72066E-02 0.00000E+00 7.37548E-03 2.25800E-01 2.85400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +624 1.4502 2.73792E-02 0.00000E+00 7.05665E-03 2.24400E-01 2.86800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +625 1.4500 2.75228E-02 0.00000E+00 6.75045E-03 2.22900E-01 2.88100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +626 1.4498 2.76449E-02 0.00000E+00 6.45657E-03 2.21500E-01 2.89300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +627 1.4497 2.77392E-02 0.00000E+00 6.17467E-03 2.20000E-01 2.90700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +628 1.4495 2.78211E-02 0.00000E+00 5.90444E-03 2.18500E-01 2.92200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +629 1.4494 2.78951E-02 0.00000E+00 5.64554E-03 2.17100E-01 2.93800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +630 1.4492 2.79776E-02 0.00000E+00 5.39765E-03 2.15600E-01 2.95500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +631 1.4491 2.80723E-02 0.00000E+00 5.16045E-03 2.14300E-01 2.97200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +632 1.4489 2.81944E-02 0.00000E+00 4.93362E-03 2.12900E-01 2.98800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +633 1.4488 2.83603E-02 0.00000E+00 4.71682E-03 2.11500E-01 3.00000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +634 1.4486 2.85729E-02 0.00000E+00 4.50973E-03 2.10200E-01 3.01100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +635 1.4485 2.88460E-02 0.00000E+00 4.31204E-03 2.08800E-01 3.02300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +636 1.4484 2.91814E-02 0.00000E+00 4.12341E-03 2.07400E-01 3.03800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +637 1.4483 2.95993E-02 0.00000E+00 3.94352E-03 2.06100E-01 3.05700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +638 1.4482 3.00771E-02 0.00000E+00 3.77204E-03 2.04700E-01 3.07600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +639 1.4481 3.06343E-02 0.00000E+00 3.60865E-03 2.03300E-01 3.09400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +640 1.4480 3.12475E-02 0.00000E+00 3.45303E-03 2.02000E-01 3.11100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +641 1.4479 3.19268E-02 0.00000E+00 3.30485E-03 2.00700E-01 3.12700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +642 1.4478 3.26585E-02 0.00000E+00 3.16378E-03 1.99400E-01 3.14400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +643 1.4478 3.34412E-02 0.00000E+00 3.02951E-03 1.98100E-01 3.16200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +644 1.4477 3.42546E-02 0.00000E+00 2.90170E-03 1.96800E-01 3.18100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +645 1.4476 3.51007E-02 0.00000E+00 2.78004E-03 1.95500E-01 3.20200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +646 1.4475 3.59489E-02 0.00000E+00 2.66419E-03 1.94200E-01 3.22300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +647 1.4475 3.67793E-02 0.00000E+00 2.55383E-03 1.92900E-01 3.24200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +648 1.4474 3.75880E-02 0.00000E+00 2.44865E-03 1.91600E-01 3.26300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +649 1.4474 3.83232E-02 0.00000E+00 2.34830E-03 1.90300E-01 3.28900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +650 1.4473 3.90136E-02 0.00000E+00 2.25247E-03 1.89000E-01 3.31500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +651 1.4473 3.96312E-02 0.00000E+00 2.16084E-03 1.87800E-01 3.33800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +652 1.4472 4.02217E-02 0.00000E+00 2.07308E-03 1.86500E-01 3.36200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +653 1.4472 4.08042E-02 0.00000E+00 1.98886E-03 1.85300E-01 3.39000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +654 1.4471 4.14183E-02 0.00000E+00 1.90786E-03 1.84100E-01 3.42300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +655 1.4471 4.21067E-02 0.00000E+00 1.82975E-03 1.82900E-01 3.46100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +656 1.4470 4.28800E-02 0.00000E+00 1.75422E-03 1.81600E-01 3.50800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +657 1.4470 4.38083E-02 0.00000E+00 1.68093E-03 1.80400E-01 3.56700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +658 1.4469 4.48612E-02 0.00000E+00 1.60956E-03 1.79200E-01 3.63600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +659 1.4469 4.61069E-02 0.00000E+00 1.53979E-03 1.78000E-01 3.71200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +660 1.4468 4.74949E-02 0.00000E+00 1.47128E-03 1.76800E-01 3.79100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +661 1.4468 4.91126E-02 0.00000E+00 1.40373E-03 1.75500E-01 3.86600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +662 1.4468 5.08487E-02 0.00000E+00 1.33680E-03 1.74200E-01 3.93100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +663 1.4467 5.27301E-02 0.00000E+00 1.27016E-03 1.72900E-01 3.98100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +664 1.4467 5.46996E-02 0.00000E+00 1.20350E-03 1.71700E-01 4.01900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +665 1.4467 5.67611E-02 0.00000E+00 1.13648E-03 1.70400E-01 4.04900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +666 1.4466 5.88679E-02 0.00000E+00 1.06879E-03 1.69100E-01 4.07200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +667 1.4466 6.08295E-02 0.00000E+00 1.00010E-03 1.67900E-01 4.08700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +668 1.4465 6.27500E-02 0.00000E+00 9.30077E-04 1.66600E-01 4.09800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +669 1.4465 6.44721E-02 0.00000E+00 8.58406E-04 1.65300E-01 4.10900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +670 1.4464 6.61121E-02 0.00000E+00 7.84759E-04 1.64100E-01 4.12200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +671 1.4464 6.74706E-02 0.00000E+00 7.10017E-04 1.62700E-01 4.13700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +672 1.4463 6.86749E-02 0.00000E+00 6.38835E-04 1.61300E-01 4.15000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +673 1.4463 6.96352E-02 0.00000E+00 5.71243E-04 1.60000E-01 4.16000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +674 1.4462 7.04652E-02 0.00000E+00 5.07271E-04 1.58600E-01 4.17300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +675 1.4462 7.09948E-02 0.00000E+00 4.46948E-04 1.57200E-01 4.19600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +676 1.4461 7.14015E-02 0.00000E+00 3.90303E-04 1.55900E-01 4.22300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +677 1.4460 7.13582E-02 0.00000E+00 3.37366E-04 1.54500E-01 4.24800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +678 1.4460 7.11272E-02 0.00000E+00 2.88166E-04 1.53200E-01 4.27000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +679 1.4459 7.01854E-02 0.00000E+00 2.42734E-04 1.51800E-01 4.29300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +680 1.4458 6.89206E-02 0.00000E+00 2.01097E-04 1.50400E-01 4.31800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +681 1.4457 6.65762E-02 0.00000E+00 1.63286E-04 1.49100E-01 4.34700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +682 1.4457 6.39476E-02 0.00000E+00 1.29330E-04 1.47800E-01 4.38100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +683 1.4456 6.04821E-02 0.00000E+00 9.92589E-05 1.46400E-01 4.41800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +684 1.4456 5.68583E-02 0.00000E+00 7.31016E-05 1.45100E-01 4.45800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +685 1.4455 5.27473E-02 0.00000E+00 5.08877E-05 1.43700E-01 4.50000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +686 1.4454 4.87258E-02 0.00000E+00 3.26466E-05 1.42400E-01 4.54500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +687 1.4453 4.47070E-02 0.00000E+00 1.84079E-05 1.41100E-01 4.59400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +688 1.4453 4.08585E-02 0.00000E+00 8.20091E-06 1.39700E-01 4.64600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +689 1.4452 3.71411E-02 0.00000E+00 2.05514E-06 1.38400E-01 4.70100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +690 1.4451 3.36710E-02 0.00000E+00 0.00000E+00 1.37000E-01 4.76000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +691 1.4450 3.04587E-02 0.00000E+00 0.00000E+00 1.35800E-01 4.82700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +692 1.4450 2.75021E-02 0.00000E+00 0.00000E+00 1.34500E-01 4.90300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +693 1.4449 2.47868E-02 0.00000E+00 0.00000E+00 1.33300E-01 4.98600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +694 1.4449 2.23303E-02 0.00000E+00 0.00000E+00 1.32000E-01 5.07100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +695 1.4448 2.01436E-02 0.00000E+00 0.00000E+00 1.30800E-01 5.15400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +696 1.4447 1.81733E-02 0.00000E+00 0.00000E+00 1.29500E-01 5.24400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +697 1.4446 1.64205E-02 0.00000E+00 0.00000E+00 1.28300E-01 5.35100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +698 1.4446 1.48521E-02 0.00000E+00 0.00000E+00 1.27000E-01 5.47000E-03 2.30000E+00 0.00000E+00 2.68222E+00 +699 1.4445 1.34714E-02 0.00000E+00 0.00000E+00 1.25800E-01 5.59400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +700 1.4444 1.22406E-02 0.00000E+00 0.00000E+00 1.24500E-01 5.72200E-03 2.30000E+00 0.00000E+00 2.68222E+00 +701 1.4443 1.11549E-02 0.00000E+00 0.00000E+00 1.23400E-01 5.85500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +702 1.4442 1.01925E-02 0.00000E+00 0.00000E+00 1.22300E-01 5.99500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +703 1.4441 9.34301E-03 0.00000E+00 0.00000E+00 1.21200E-01 6.14600E-03 2.30000E+00 0.00000E+00 2.68222E+00 +704 1.4440 8.58695E-03 0.00000E+00 0.00000E+00 1.20000E-01 6.30300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +705 1.4439 7.91505E-03 0.00000E+00 0.00000E+00 1.18900E-01 6.46300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +706 1.4438 7.31259E-03 0.00000E+00 0.00000E+00 1.17800E-01 6.62800E-03 2.30000E+00 0.00000E+00 2.68222E+00 +707 1.4437 6.77109E-03 0.00000E+00 0.00000E+00 1.16700E-01 6.80400E-03 2.30000E+00 0.00000E+00 2.68222E+00 +708 1.4435 6.28030E-03 0.00000E+00 0.00000E+00 1.15600E-01 6.99300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +709 1.4434 5.83221E-03 0.00000E+00 0.00000E+00 1.14400E-01 7.19700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +710 1.4433 5.42144E-03 0.00000E+00 0.00000E+00 1.13300E-01 7.41500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +711 1.4431 5.04490E-03 0.00000E+00 0.00000E+00 1.12200E-01 7.64700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +712 1.4430 4.69652E-03 0.00000E+00 0.00000E+00 1.11100E-01 7.89300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +713 1.4428 4.37346E-03 0.00000E+00 0.00000E+00 1.10000E-01 8.15700E-03 2.30000E+00 0.00000E+00 2.68222E+00 +714 1.4427 4.07204E-03 0.00000E+00 0.00000E+00 1.08900E-01 8.44500E-03 2.30000E+00 0.00000E+00 2.68222E+00 +715 1.4425 3.79222E-03 0.00000E+00 0.00000E+00 1.07800E-01 8.76300E-03 2.30000E+00 0.00000E+00 2.68222E+00 +716 1.4423 3.53020E-03 0.00000E+00 0.00000E+00 1.06700E-01 9.10900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +717 1.4422 3.28562E-03 0.00000E+00 0.00000E+00 1.05600E-01 9.47900E-03 2.30000E+00 0.00000E+00 2.68222E+00 +718 1.4420 3.05749E-03 0.00000E+00 0.00000E+00 1.04600E-01 9.87100E-03 2.30000E+00 0.00000E+00 2.68222E+00 +719 1.4419 2.84347E-03 0.00000E+00 0.00000E+00 1.03500E-01 1.02900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +720 1.4417 2.64340E-03 0.00000E+00 0.00000E+00 1.02400E-01 1.07200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +721 1.4415 2.45633E-03 0.00000E+00 0.00000E+00 1.01300E-01 1.11900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +722 1.4413 2.28092E-03 0.00000E+00 0.00000E+00 1.00300E-01 1.16800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +723 1.4411 2.11680E-03 0.00000E+00 0.00000E+00 9.93100E-02 1.21800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +724 1.4409 1.96361E-03 0.00000E+00 0.00000E+00 9.82900E-02 1.26800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +725 1.4407 1.82056E-03 0.00000E+00 0.00000E+00 9.72700E-02 1.31900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +726 1.4405 1.68688E-03 0.00000E+00 0.00000E+00 9.62500E-02 1.37200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +727 1.4403 1.56284E-03 0.00000E+00 0.00000E+00 9.52400E-02 1.42800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +728 1.4402 1.44677E-03 0.00000E+00 0.00000E+00 9.42200E-02 1.48700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +729 1.4400 1.33883E-03 0.00000E+00 0.00000E+00 9.32000E-02 1.55100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +730 1.4398 1.23860E-03 0.00000E+00 0.00000E+00 9.21800E-02 1.62100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +731 1.4396 1.14590E-03 0.00000E+00 0.00000E+00 9.12000E-02 1.69900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +732 1.4394 1.05907E-03 0.00000E+00 0.00000E+00 9.02200E-02 1.78700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +733 1.4393 9.78276E-04 0.00000E+00 0.00000E+00 8.92400E-02 1.88600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +734 1.4391 9.04086E-04 0.00000E+00 0.00000E+00 8.82700E-02 1.99200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +735 1.4389 8.36090E-04 0.00000E+00 0.00000E+00 8.72900E-02 2.10100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +736 1.4387 7.72889E-04 0.00000E+00 0.00000E+00 8.63100E-02 2.20700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +737 1.4385 7.15026E-04 0.00000E+00 0.00000E+00 8.53300E-02 2.30600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +738 1.4384 6.61618E-04 0.00000E+00 0.00000E+00 8.43500E-02 2.39400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +739 1.4382 6.12349E-04 0.00000E+00 0.00000E+00 8.33700E-02 2.46900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +740 1.4380 5.67642E-04 0.00000E+00 0.00000E+00 8.23900E-02 2.53200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +741 1.4378 5.27220E-04 0.00000E+00 0.00000E+00 8.15500E-02 2.58300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +742 1.4377 4.89940E-04 0.00000E+00 0.00000E+00 8.07000E-02 2.62300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +743 1.4375 4.56364E-04 0.00000E+00 0.00000E+00 7.98500E-02 2.65200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +744 1.4374 4.25665E-04 0.00000E+00 0.00000E+00 7.90100E-02 2.67200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +745 1.4372 3.98123E-04 0.00000E+00 0.00000E+00 7.81600E-02 2.68900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +746 1.4371 3.73159E-04 0.00000E+00 0.00000E+00 7.73200E-02 2.70200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +747 1.4370 3.51044E-04 0.00000E+00 0.00000E+00 7.64700E-02 2.71300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +748 1.4368 3.31411E-04 0.00000E+00 0.00000E+00 7.56200E-02 2.72200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +749 1.4367 3.13711E-04 0.00000E+00 0.00000E+00 7.47800E-02 2.72800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +750 1.4366 2.98414E-04 0.00000E+00 0.00000E+00 7.39300E-02 2.73300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +751 1.4364 2.83146E-04 0.00000E+00 0.00000E+00 7.31900E-02 2.73800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +752 1.4363 2.67960E-04 0.00000E+00 0.00000E+00 7.24500E-02 2.74100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +753 1.4361 2.52885E-04 0.00000E+00 0.00000E+00 7.17100E-02 2.74500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +754 1.4360 2.37952E-04 0.00000E+00 0.00000E+00 7.09700E-02 2.74800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +755 1.4358 2.23193E-04 0.00000E+00 0.00000E+00 7.02300E-02 2.75100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +756 1.4357 2.08636E-04 0.00000E+00 0.00000E+00 6.94900E-02 2.75400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +757 1.4356 1.94314E-04 0.00000E+00 0.00000E+00 6.87500E-02 2.75800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +758 1.4354 1.80256E-04 0.00000E+00 0.00000E+00 6.80100E-02 2.76300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +759 1.4353 1.66494E-04 0.00000E+00 0.00000E+00 6.72700E-02 2.76700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +760 1.4352 1.53058E-04 0.00000E+00 0.00000E+00 6.65300E-02 2.77100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +761 1.4351 1.39979E-04 0.00000E+00 0.00000E+00 6.58600E-02 2.77300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +762 1.4350 1.27287E-04 0.00000E+00 0.00000E+00 6.51900E-02 2.77300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +763 1.4349 1.15013E-04 0.00000E+00 0.00000E+00 6.45200E-02 2.77400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +764 1.4348 1.03187E-04 0.00000E+00 0.00000E+00 6.38500E-02 2.77400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +765 1.4347 9.18411E-05 0.00000E+00 0.00000E+00 6.31800E-02 2.77300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +766 1.4346 8.10049E-05 0.00000E+00 0.00000E+00 6.25100E-02 2.77000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +767 1.4345 7.07092E-05 0.00000E+00 0.00000E+00 6.18400E-02 2.76600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +768 1.4345 6.09847E-05 0.00000E+00 0.00000E+00 6.11700E-02 2.76100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +769 1.4344 5.18621E-05 0.00000E+00 0.00000E+00 6.05000E-02 2.75700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +770 1.4343 4.33720E-05 0.00000E+00 0.00000E+00 5.98300E-02 2.75400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +771 1.4343 3.55450E-05 0.00000E+00 0.00000E+00 5.91300E-02 2.75200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +772 1.4342 2.84118E-05 0.00000E+00 0.00000E+00 5.84300E-02 2.74800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +773 1.4342 2.20031E-05 0.00000E+00 0.00000E+00 5.77300E-02 2.74100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +774 1.4341 1.63494E-05 0.00000E+00 0.00000E+00 5.70400E-02 2.73100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +775 1.4341 1.14814E-05 0.00000E+00 0.00000E+00 5.63400E-02 2.72000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +776 1.4341 7.42983E-06 0.00000E+00 0.00000E+00 5.56400E-02 2.71000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +777 1.4341 4.22525E-06 0.00000E+00 0.00000E+00 5.49400E-02 2.70100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +778 1.4340 1.89832E-06 0.00000E+00 0.00000E+00 5.42400E-02 2.69000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +779 1.4340 4.79687E-07 0.00000E+00 0.00000E+00 5.35400E-02 2.67500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +780 1.4340 1.05249E-13 0.00000E+00 0.00000E+00 5.28400E-02 2.65900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +781 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 5.22600E-02 2.64500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +782 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 5.16700E-02 2.63300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +783 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 5.10900E-02 2.62400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +784 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 5.05000E-02 2.61300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +785 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 4.99200E-02 2.59300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +786 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 4.93300E-02 2.55800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +787 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 4.87400E-02 2.52300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +788 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 4.81600E-02 2.51300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +789 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 4.75700E-02 2.50100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +790 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 4.69900E-02 2.46600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +791 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 4.64600E-02 2.44700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +792 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 4.59400E-02 2.41200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +793 1.4343 0.00000E+00 0.00000E+00 0.00000E+00 4.54200E-02 2.38900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +794 1.4343 0.00000E+00 0.00000E+00 0.00000E+00 4.49000E-02 2.37400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +795 1.4343 0.00000E+00 0.00000E+00 0.00000E+00 4.43700E-02 2.35500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +796 1.4343 0.00000E+00 0.00000E+00 0.00000E+00 4.38500E-02 2.33700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +797 1.4344 0.00000E+00 0.00000E+00 0.00000E+00 4.33300E-02 2.31800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +798 1.4344 0.00000E+00 0.00000E+00 0.00000E+00 4.28100E-02 2.30400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +799 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 4.22800E-02 2.28100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +800 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 4.17600E-02 2.24600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +801 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 4.12800E-02 2.24300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +802 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 4.08100E-02 2.23800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +803 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 4.03300E-02 2.22200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +804 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.98500E-02 2.20400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +805 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.93700E-02 2.20100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +806 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.88900E-02 2.20400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +807 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.84100E-02 2.19600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +808 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.79300E-02 2.17700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +809 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.74600E-02 2.19000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +810 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.69800E-02 2.18800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +811 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.65700E-02 2.18800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +812 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.61500E-02 2.19800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +813 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.57400E-02 2.21000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +814 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.53300E-02 2.22300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +815 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.49200E-02 2.23300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +816 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.45100E-02 2.24800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +817 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.40900E-02 2.27600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +818 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.36800E-02 2.30400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +819 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.32700E-02 2.31100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +820 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.28600E-02 2.32900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +821 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.24900E-02 2.38800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +822 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.21200E-02 2.44600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +823 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.17500E-02 2.47500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +824 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.13900E-02 2.51600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +825 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.10200E-02 2.62000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +826 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.06500E-02 2.76900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +827 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 3.02800E-02 2.83000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +828 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.99100E-02 2.91400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +829 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.95400E-02 3.10800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +830 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.91800E-02 3.21400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +831 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.88500E-02 3.29700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +832 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.85200E-02 3.45900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +833 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.81900E-02 3.60600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +834 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.78600E-02 3.66200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +835 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.75300E-02 3.70200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +836 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.72000E-02 3.78800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +837 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.68800E-02 3.82900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +838 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.65500E-02 3.85400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +839 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.62200E-02 3.90900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +840 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.58900E-02 3.94900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +841 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.55900E-02 3.97200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +842 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.52900E-02 4.00000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +843 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.49900E-02 4.04000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +844 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.46900E-02 4.05700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +845 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.44000E-02 4.07500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +846 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.41000E-02 4.11500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +847 1.4348 0.00000E+00 0.00000E+00 0.00000E+00 2.38000E-02 4.12700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +848 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.35000E-02 4.14900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +849 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.32000E-02 4.20400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +850 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.29000E-02 4.19900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +851 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.26400E-02 4.22300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +852 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.23800E-02 4.25400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +853 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.21200E-02 4.27200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +854 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.18600E-02 4.28000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +855 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.15900E-02 4.30600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +856 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.13300E-02 4.36000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +857 1.4347 0.00000E+00 0.00000E+00 0.00000E+00 2.10700E-02 4.36900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +858 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 2.08100E-02 4.37900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +859 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 2.05500E-02 4.43300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +860 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 2.02900E-02 4.45400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +861 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 2.00600E-02 4.46600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +862 1.4346 0.00000E+00 0.00000E+00 0.00000E+00 1.98300E-02 4.50500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +863 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.96100E-02 4.52700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +864 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.93800E-02 4.55200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +865 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.91500E-02 4.60500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +866 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.89300E-02 4.65800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +867 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.87000E-02 4.69100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +868 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.84700E-02 4.70500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +869 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.82500E-02 4.71300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +870 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.80200E-02 4.75200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +871 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.78200E-02 4.83300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +872 1.4345 0.00000E+00 0.00000E+00 0.00000E+00 1.76200E-02 4.86700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +873 1.4344 0.00000E+00 0.00000E+00 0.00000E+00 1.74200E-02 4.89400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +874 1.4344 0.00000E+00 0.00000E+00 0.00000E+00 1.72300E-02 4.96000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +875 1.4344 0.00000E+00 0.00000E+00 0.00000E+00 1.70300E-02 5.00600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +876 1.4344 0.00000E+00 0.00000E+00 0.00000E+00 1.68300E-02 5.05000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +877 1.4343 0.00000E+00 0.00000E+00 0.00000E+00 1.66300E-02 5.11500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +878 1.4343 0.00000E+00 0.00000E+00 0.00000E+00 1.64300E-02 5.15300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +879 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 1.62300E-02 5.20400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +880 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 1.60400E-02 5.29800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +881 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 1.58600E-02 5.34600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +882 1.4342 0.00000E+00 0.00000E+00 0.00000E+00 1.56800E-02 5.38600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +883 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 1.55100E-02 5.46500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +884 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 1.53300E-02 5.52800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +885 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 1.51600E-02 5.56600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +886 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 1.49800E-02 5.59600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +887 1.4341 0.00000E+00 0.00000E+00 0.00000E+00 1.48100E-02 5.65300E-02 2.30000E+00 0.00000E+00 2.68222E+00 +888 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 1.46300E-02 5.74500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +889 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 1.44600E-02 5.78900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +890 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 1.42800E-02 5.83100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +891 1.4340 0.00000E+00 0.00000E+00 0.00000E+00 1.41400E-02 5.92400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +892 1.4339 0.00000E+00 0.00000E+00 0.00000E+00 1.40000E-02 5.98200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +893 1.4339 0.00000E+00 0.00000E+00 0.00000E+00 1.38500E-02 6.00900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +894 1.4338 0.00000E+00 0.00000E+00 0.00000E+00 1.37100E-02 6.03500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +895 1.4338 0.00000E+00 0.00000E+00 0.00000E+00 1.35700E-02 6.09400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +896 1.4338 0.00000E+00 0.00000E+00 0.00000E+00 1.34300E-02 6.18500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +897 1.4338 0.00000E+00 0.00000E+00 0.00000E+00 1.32800E-02 6.22600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +898 1.4337 0.00000E+00 0.00000E+00 0.00000E+00 1.31400E-02 6.26900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +899 1.4337 0.00000E+00 0.00000E+00 0.00000E+00 1.30000E-02 6.36000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +900 1.4337 0.00000E+00 0.00000E+00 0.00000E+00 1.28600E-02 6.40700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +901 1.4337 0.00000E+00 0.00000E+00 0.00000E+00 1.27500E-02 6.45800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +902 1.4336 0.00000E+00 0.00000E+00 0.00000E+00 1.26500E-02 6.56200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +903 1.4336 0.00000E+00 0.00000E+00 0.00000E+00 1.25500E-02 6.63600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +904 1.4335 0.00000E+00 0.00000E+00 0.00000E+00 1.24500E-02 6.67200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +905 1.4335 0.00000E+00 0.00000E+00 0.00000E+00 1.23500E-02 6.69900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +906 1.4335 0.00000E+00 0.00000E+00 0.00000E+00 1.22500E-02 6.76900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +907 1.4335 0.00000E+00 0.00000E+00 0.00000E+00 1.21500E-02 6.90000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +908 1.4334 0.00000E+00 0.00000E+00 0.00000E+00 1.20500E-02 6.98900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +909 1.4334 0.00000E+00 0.00000E+00 0.00000E+00 1.19500E-02 7.03700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +910 1.4334 0.00000E+00 0.00000E+00 0.00000E+00 1.18500E-02 7.08500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +911 1.4334 0.00000E+00 0.00000E+00 0.00000E+00 1.17500E-02 7.18700E-02 2.30000E+00 0.00000E+00 2.68222E+00 +912 1.4333 0.00000E+00 0.00000E+00 0.00000E+00 1.16500E-02 7.35800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +913 1.4333 0.00000E+00 0.00000E+00 0.00000E+00 1.15500E-02 7.48600E-02 2.30000E+00 0.00000E+00 2.68222E+00 +914 1.4332 0.00000E+00 0.00000E+00 0.00000E+00 1.14500E-02 7.56200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +915 1.4332 0.00000E+00 0.00000E+00 0.00000E+00 1.13500E-02 7.63000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +916 1.4332 0.00000E+00 0.00000E+00 0.00000E+00 1.12500E-02 7.79200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +917 1.4332 0.00000E+00 0.00000E+00 0.00000E+00 1.11500E-02 8.08500E-02 2.30000E+00 0.00000E+00 2.68222E+00 +918 1.4331 0.00000E+00 0.00000E+00 0.00000E+00 1.10500E-02 8.29200E-02 2.30000E+00 0.00000E+00 2.68222E+00 +919 1.4331 0.00000E+00 0.00000E+00 0.00000E+00 1.09600E-02 8.41000E-02 2.30000E+00 0.00000E+00 2.68222E+00 +920 1.4331 0.00000E+00 0.00000E+00 0.00000E+00 1.08600E-02 8.52800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +921 1.4331 0.00000E+00 0.00000E+00 0.00000E+00 1.07600E-02 8.80100E-02 2.30000E+00 0.00000E+00 2.68222E+00 +922 1.4330 0.00000E+00 0.00000E+00 0.00000E+00 1.06600E-02 9.26800E-02 2.30000E+00 0.00000E+00 2.68222E+00 +923 1.4330 0.00000E+00 0.00000E+00 0.00000E+00 1.05600E-02 9.58400E-02 2.30000E+00 0.00000E+00 2.68222E+00 +924 1.4329 0.00000E+00 0.00000E+00 0.00000E+00 1.04700E-02 9.81900E-02 2.30000E+00 0.00000E+00 2.68222E+00 +925 1.4329 0.00000E+00 0.00000E+00 0.00000E+00 1.03700E-02 1.01200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +926 1.4329 0.00000E+00 0.00000E+00 0.00000E+00 1.02700E-02 1.04200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +927 1.4328 0.00000E+00 0.00000E+00 0.00000E+00 1.01700E-02 1.06600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +928 1.4328 0.00000E+00 0.00000E+00 0.00000E+00 1.00800E-02 1.11300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +929 1.4327 0.00000E+00 0.00000E+00 0.00000E+00 9.98000E-03 1.19400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +930 1.4327 0.00000E+00 0.00000E+00 0.00000E+00 9.88400E-03 1.24600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +931 1.4326 0.00000E+00 0.00000E+00 0.00000E+00 9.78700E-03 1.28100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +932 1.4326 0.00000E+00 0.00000E+00 0.00000E+00 9.69100E-03 1.32700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +933 1.4325 0.00000E+00 0.00000E+00 0.00000E+00 9.59500E-03 1.37400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +934 1.4325 0.00000E+00 0.00000E+00 0.00000E+00 9.50000E-03 1.41000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +935 1.4324 0.00000E+00 0.00000E+00 0.00000E+00 9.40400E-03 1.46500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +936 1.4324 0.00000E+00 0.00000E+00 0.00000E+00 9.30900E-03 1.55700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +937 1.4323 0.00000E+00 0.00000E+00 0.00000E+00 9.21400E-03 1.63500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +938 1.4323 0.00000E+00 0.00000E+00 0.00000E+00 9.12000E-03 1.68800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +939 1.4322 0.00000E+00 0.00000E+00 0.00000E+00 9.02500E-03 1.73200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +940 1.4322 0.00000E+00 0.00000E+00 0.00000E+00 8.93100E-03 1.81800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +941 1.4322 0.00000E+00 0.00000E+00 0.00000E+00 8.83700E-03 1.96300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +942 1.4321 0.00000E+00 0.00000E+00 0.00000E+00 8.74300E-03 2.05000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +943 1.4321 0.00000E+00 0.00000E+00 0.00000E+00 8.65000E-03 2.10600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +944 1.4320 0.00000E+00 0.00000E+00 0.00000E+00 8.55700E-03 2.18700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +945 1.4320 0.00000E+00 0.00000E+00 0.00000E+00 8.46400E-03 2.28700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +946 1.4320 0.00000E+00 0.00000E+00 0.00000E+00 8.37100E-03 2.38600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +947 1.4319 0.00000E+00 0.00000E+00 0.00000E+00 8.27900E-03 2.46800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +948 1.4319 0.00000E+00 0.00000E+00 0.00000E+00 8.18700E-03 2.54200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +949 1.4318 0.00000E+00 0.00000E+00 0.00000E+00 8.09500E-03 2.70100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +950 1.4318 0.00000E+00 0.00000E+00 0.00000E+00 8.00400E-03 2.97600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +951 1.4318 0.00000E+00 0.00000E+00 0.00000E+00 7.91300E-03 3.15300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +952 1.4317 0.00000E+00 0.00000E+00 0.00000E+00 7.82200E-03 3.27400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +953 1.4317 0.00000E+00 0.00000E+00 0.00000E+00 7.73200E-03 3.43800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +954 1.4316 0.00000E+00 0.00000E+00 0.00000E+00 7.64100E-03 3.62200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +955 1.4316 0.00000E+00 0.00000E+00 0.00000E+00 7.55200E-03 3.78500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +956 1.4316 0.00000E+00 0.00000E+00 0.00000E+00 7.46200E-03 3.93000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +957 1.4315 0.00000E+00 0.00000E+00 0.00000E+00 7.37300E-03 4.06800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +958 1.4315 0.00000E+00 0.00000E+00 0.00000E+00 7.28400E-03 4.18400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +959 1.4314 0.00000E+00 0.00000E+00 0.00000E+00 7.19500E-03 4.27300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +960 1.4314 0.00000E+00 0.00000E+00 0.00000E+00 7.10700E-03 4.38500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +961 1.4313 0.00000E+00 0.00000E+00 0.00000E+00 7.01900E-03 4.53800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +962 1.4313 0.00000E+00 0.00000E+00 0.00000E+00 6.93200E-03 4.61100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +963 1.4312 0.00000E+00 0.00000E+00 0.00000E+00 6.84400E-03 4.63300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +964 1.4312 0.00000E+00 0.00000E+00 0.00000E+00 6.75800E-03 4.66300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +965 1.4311 0.00000E+00 0.00000E+00 0.00000E+00 6.67100E-03 4.70100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +966 1.4310 0.00000E+00 0.00000E+00 0.00000E+00 6.58500E-03 4.73300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +967 1.4310 0.00000E+00 0.00000E+00 0.00000E+00 6.49900E-03 4.75600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +968 1.4309 0.00000E+00 0.00000E+00 0.00000E+00 6.41400E-03 4.77200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +969 1.4309 0.00000E+00 0.00000E+00 0.00000E+00 6.32900E-03 4.78500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +970 1.4308 0.00000E+00 0.00000E+00 0.00000E+00 6.24400E-03 4.80000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +971 1.4307 0.00000E+00 0.00000E+00 0.00000E+00 6.16000E-03 4.81400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +972 1.4307 0.00000E+00 0.00000E+00 0.00000E+00 6.07600E-03 4.82700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +973 1.4306 0.00000E+00 0.00000E+00 0.00000E+00 5.99300E-03 4.84300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +974 1.4306 0.00000E+00 0.00000E+00 0.00000E+00 5.91000E-03 4.86400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +975 1.4305 0.00000E+00 0.00000E+00 0.00000E+00 5.82700E-03 4.87000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +976 1.4304 0.00000E+00 0.00000E+00 0.00000E+00 5.74500E-03 4.86700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +977 1.4304 0.00000E+00 0.00000E+00 0.00000E+00 5.66300E-03 4.86400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +978 1.4303 0.00000E+00 0.00000E+00 0.00000E+00 5.58100E-03 4.85700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +979 1.4303 0.00000E+00 0.00000E+00 0.00000E+00 5.50000E-03 4.84100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +980 1.4302 0.00000E+00 0.00000E+00 0.00000E+00 5.41900E-03 4.82100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +981 1.4301 0.00000E+00 0.00000E+00 0.00000E+00 5.33900E-03 4.80400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +982 1.4300 0.00000E+00 0.00000E+00 0.00000E+00 5.25900E-03 4.78600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +983 1.4300 0.00000E+00 0.00000E+00 0.00000E+00 5.18000E-03 4.76400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +984 1.4299 0.00000E+00 0.00000E+00 0.00000E+00 5.10100E-03 4.73800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +985 1.4298 0.00000E+00 0.00000E+00 0.00000E+00 5.02300E-03 4.71000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +986 1.4297 0.00000E+00 0.00000E+00 0.00000E+00 4.94500E-03 4.67700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +987 1.4297 0.00000E+00 0.00000E+00 0.00000E+00 4.86700E-03 4.64100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +988 1.4296 0.00000E+00 0.00000E+00 0.00000E+00 4.79000E-03 4.60400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +989 1.4296 0.00000E+00 0.00000E+00 0.00000E+00 4.71300E-03 4.57000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +990 1.4295 0.00000E+00 0.00000E+00 0.00000E+00 4.63700E-03 4.53200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +991 1.4294 0.00000E+00 0.00000E+00 0.00000E+00 4.56100E-03 4.48200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +992 1.4293 0.00000E+00 0.00000E+00 0.00000E+00 4.48600E-03 4.43400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +993 1.4293 0.00000E+00 0.00000E+00 0.00000E+00 4.41100E-03 4.39700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +994 1.4292 0.00000E+00 0.00000E+00 0.00000E+00 4.33700E-03 4.36200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +995 1.4291 0.00000E+00 0.00000E+00 0.00000E+00 4.26300E-03 4.31600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +996 1.4290 0.00000E+00 0.00000E+00 0.00000E+00 4.19000E-03 4.26500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +997 1.4289 0.00000E+00 0.00000E+00 0.00000E+00 4.11700E-03 4.21500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +998 1.4289 0.00000E+00 0.00000E+00 0.00000E+00 4.04400E-03 4.16800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +999 1.4288 0.00000E+00 0.00000E+00 0.00000E+00 3.97200E-03 4.12100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1000 1.4287 0.00000E+00 0.00000E+00 0.00000E+00 3.90100E-03 4.07200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1001 1.4286 0.00000E+00 0.00000E+00 0.00000E+00 3.83000E-03 4.01700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1002 1.4285 0.00000E+00 0.00000E+00 0.00000E+00 3.76000E-03 3.96300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1003 1.4285 0.00000E+00 0.00000E+00 0.00000E+00 3.69000E-03 3.91500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1004 1.4284 0.00000E+00 0.00000E+00 0.00000E+00 3.62000E-03 3.86800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1005 1.4283 0.00000E+00 0.00000E+00 0.00000E+00 3.55200E-03 3.81600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1006 1.4282 0.00000E+00 0.00000E+00 0.00000E+00 3.48300E-03 3.76000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1007 1.4281 0.00000E+00 0.00000E+00 0.00000E+00 3.41600E-03 3.70100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1008 1.4281 0.00000E+00 0.00000E+00 0.00000E+00 3.34800E-03 3.64000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1009 1.4280 0.00000E+00 0.00000E+00 0.00000E+00 3.28200E-03 3.58100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1010 1.4279 0.00000E+00 0.00000E+00 0.00000E+00 3.21500E-03 3.52100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1011 1.4278 0.00000E+00 0.00000E+00 0.00000E+00 3.15000E-03 3.46100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1012 1.4277 0.00000E+00 0.00000E+00 0.00000E+00 3.08500E-03 3.40200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1013 1.4276 0.00000E+00 0.00000E+00 0.00000E+00 3.02000E-03 3.34900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1014 1.4275 0.00000E+00 0.00000E+00 0.00000E+00 2.95600E-03 3.29700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1015 1.4274 0.00000E+00 0.00000E+00 0.00000E+00 2.89300E-03 3.24300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1016 1.4273 0.00000E+00 0.00000E+00 0.00000E+00 2.83000E-03 3.19100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1017 1.4272 0.00000E+00 0.00000E+00 0.00000E+00 2.76800E-03 3.14100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1018 1.4272 0.00000E+00 0.00000E+00 0.00000E+00 2.70600E-03 3.08600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1019 1.4271 0.00000E+00 0.00000E+00 0.00000E+00 2.64500E-03 3.02200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1020 1.4270 0.00000E+00 0.00000E+00 0.00000E+00 2.58500E-03 2.95700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1021 1.4269 0.00000E+00 0.00000E+00 0.00000E+00 2.52500E-03 2.89700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1022 1.4268 0.00000E+00 0.00000E+00 0.00000E+00 2.46500E-03 2.84000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1023 1.4267 0.00000E+00 0.00000E+00 0.00000E+00 2.40700E-03 2.78200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1024 1.4266 0.00000E+00 0.00000E+00 0.00000E+00 2.34800E-03 2.72400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1025 1.4265 0.00000E+00 0.00000E+00 0.00000E+00 2.29100E-03 2.67200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1026 1.4264 0.00000E+00 0.00000E+00 0.00000E+00 2.23400E-03 2.62100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1027 1.4263 0.00000E+00 0.00000E+00 0.00000E+00 2.17800E-03 2.56600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1028 1.4263 0.00000E+00 0.00000E+00 0.00000E+00 2.12200E-03 2.50600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1029 1.4262 0.00000E+00 0.00000E+00 0.00000E+00 2.06700E-03 2.44400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1030 1.4261 0.00000E+00 0.00000E+00 0.00000E+00 2.01200E-03 2.39100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1031 1.4260 0.00000E+00 0.00000E+00 0.00000E+00 1.95900E-03 2.35700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1032 1.4259 0.00000E+00 0.00000E+00 0.00000E+00 1.90500E-03 2.33100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1033 1.4258 0.00000E+00 0.00000E+00 0.00000E+00 1.85300E-03 2.29900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1034 1.4257 0.00000E+00 0.00000E+00 0.00000E+00 1.80100E-03 2.25100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1035 1.4256 0.00000E+00 0.00000E+00 0.00000E+00 1.75000E-03 2.19800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1036 1.4255 0.00000E+00 0.00000E+00 0.00000E+00 1.69900E-03 2.15100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1037 1.4254 0.00000E+00 0.00000E+00 0.00000E+00 1.64900E-03 2.10900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1038 1.4253 0.00000E+00 0.00000E+00 0.00000E+00 1.60000E-03 2.06400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1039 1.4252 0.00000E+00 0.00000E+00 0.00000E+00 1.55100E-03 2.02000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1040 1.4251 0.00000E+00 0.00000E+00 0.00000E+00 1.50300E-03 1.98100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1041 1.4250 0.00000E+00 0.00000E+00 0.00000E+00 1.45600E-03 1.94400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1042 1.4249 0.00000E+00 0.00000E+00 0.00000E+00 1.40900E-03 1.90400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1043 1.4248 0.00000E+00 0.00000E+00 0.00000E+00 1.36300E-03 1.86800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1044 1.4247 0.00000E+00 0.00000E+00 0.00000E+00 1.31800E-03 1.84100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1045 1.4246 0.00000E+00 0.00000E+00 0.00000E+00 1.27400E-03 1.81800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1046 1.4245 0.00000E+00 0.00000E+00 0.00000E+00 1.23000E-03 1.79000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1047 1.4244 0.00000E+00 0.00000E+00 0.00000E+00 1.18700E-03 1.75200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1048 1.4242 0.00000E+00 0.00000E+00 0.00000E+00 1.14400E-03 1.71500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1049 1.4241 0.00000E+00 0.00000E+00 0.00000E+00 1.10200E-03 1.68700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1050 1.4240 0.00000E+00 0.00000E+00 0.00000E+00 1.06100E-03 1.66400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1051 1.4239 0.00000E+00 0.00000E+00 0.00000E+00 1.02100E-03 1.63900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1052 1.4238 0.00000E+00 0.00000E+00 0.00000E+00 9.81100E-04 1.61300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1053 1.4237 0.00000E+00 0.00000E+00 0.00000E+00 9.42200E-04 1.58600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1054 1.4236 0.00000E+00 0.00000E+00 0.00000E+00 9.04000E-04 1.56200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1055 1.4235 0.00000E+00 0.00000E+00 0.00000E+00 8.66500E-04 1.54500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1056 1.4234 0.00000E+00 0.00000E+00 0.00000E+00 8.29700E-04 1.53200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1057 1.4233 0.00000E+00 0.00000E+00 0.00000E+00 7.93700E-04 1.52200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1058 1.4232 0.00000E+00 0.00000E+00 0.00000E+00 7.58400E-04 1.51000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1059 1.4231 0.00000E+00 0.00000E+00 0.00000E+00 7.23900E-04 1.49500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1060 1.4230 0.00000E+00 0.00000E+00 0.00000E+00 6.90100E-04 1.47500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1061 1.4229 0.00000E+00 0.00000E+00 0.00000E+00 6.57100E-04 1.45700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1062 1.4228 0.00000E+00 0.00000E+00 0.00000E+00 6.24800E-04 1.44700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1063 1.4226 0.00000E+00 0.00000E+00 0.00000E+00 5.93300E-04 1.44200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1064 1.4225 0.00000E+00 0.00000E+00 0.00000E+00 5.62600E-04 1.43800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1065 1.4224 0.00000E+00 0.00000E+00 0.00000E+00 5.32600E-04 1.43300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1066 1.4223 0.00000E+00 0.00000E+00 0.00000E+00 5.03400E-04 1.42600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1067 1.4222 0.00000E+00 0.00000E+00 0.00000E+00 4.75000E-04 1.41800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1068 1.4220 0.00000E+00 0.00000E+00 0.00000E+00 4.47300E-04 1.41200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1069 1.4219 0.00000E+00 0.00000E+00 0.00000E+00 4.20500E-04 1.41000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1070 1.4218 0.00000E+00 0.00000E+00 0.00000E+00 3.94400E-04 1.40900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1071 1.4217 0.00000E+00 0.00000E+00 0.00000E+00 3.69100E-04 1.40800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1072 1.4216 0.00000E+00 0.00000E+00 0.00000E+00 3.44600E-04 1.40600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1073 1.4215 0.00000E+00 0.00000E+00 0.00000E+00 3.21000E-04 1.40500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1074 1.4214 0.00000E+00 0.00000E+00 0.00000E+00 2.98100E-04 1.40800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1075 1.4213 0.00000E+00 0.00000E+00 0.00000E+00 2.76000E-04 1.41400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1076 1.4212 0.00000E+00 0.00000E+00 0.00000E+00 2.54800E-04 1.42600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1077 1.4211 0.00000E+00 0.00000E+00 0.00000E+00 2.34400E-04 1.43500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1078 1.4209 0.00000E+00 0.00000E+00 0.00000E+00 2.14800E-04 1.43800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1079 1.4208 0.00000E+00 0.00000E+00 0.00000E+00 1.96000E-04 1.43900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1080 1.4207 0.00000E+00 0.00000E+00 0.00000E+00 1.78000E-04 1.44300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1081 1.4206 0.00000E+00 0.00000E+00 0.00000E+00 1.60900E-04 1.45600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1082 1.4205 0.00000E+00 0.00000E+00 0.00000E+00 1.44600E-04 1.47500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1083 1.4203 0.00000E+00 0.00000E+00 0.00000E+00 1.29200E-04 1.49800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1084 1.4202 0.00000E+00 0.00000E+00 0.00000E+00 1.14600E-04 1.51900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1085 1.4201 0.00000E+00 0.00000E+00 0.00000E+00 1.00900E-04 1.53400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1086 1.4200 0.00000E+00 0.00000E+00 0.00000E+00 8.80400E-05 1.54700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1087 1.4199 0.00000E+00 0.00000E+00 0.00000E+00 7.60300E-05 1.56100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1088 1.4197 0.00000E+00 0.00000E+00 0.00000E+00 6.48800E-05 1.58000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1089 1.4196 0.00000E+00 0.00000E+00 0.00000E+00 5.46000E-05 1.60400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1090 1.4195 0.00000E+00 0.00000E+00 0.00000E+00 4.51900E-05 1.63200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1091 1.4194 0.00000E+00 0.00000E+00 0.00000E+00 3.66600E-05 1.65900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1092 1.4193 0.00000E+00 0.00000E+00 0.00000E+00 2.90100E-05 1.67700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1093 1.4191 0.00000E+00 0.00000E+00 0.00000E+00 2.22500E-05 1.69300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1094 1.4190 0.00000E+00 0.00000E+00 0.00000E+00 1.63700E-05 1.71200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1095 1.4189 0.00000E+00 0.00000E+00 0.00000E+00 1.13800E-05 1.73900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1096 1.4188 0.00000E+00 0.00000E+00 0.00000E+00 7.29700E-06 1.77700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1097 1.4187 0.00000E+00 0.00000E+00 0.00000E+00 4.11100E-06 1.82400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1098 1.4185 0.00000E+00 0.00000E+00 0.00000E+00 1.83000E-06 1.86600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1099 1.4184 0.00000E+00 0.00000E+00 0.00000E+00 4.58100E-07 1.89000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1100 1.4183 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1101 1.4182 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1102 1.4181 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.96700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1103 1.4179 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.00500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1104 1.4178 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.03100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1105 1.4177 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.05100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1106 1.4176 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.07900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1107 1.4175 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.12300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1108 1.4173 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.16600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1109 1.4172 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.19600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1110 1.4171 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.21900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1111 1.4170 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.25100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1112 1.4169 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.29800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1113 1.4167 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.33700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1114 1.4166 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.34600E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1115 1.4165 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.34200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1116 1.4164 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.35300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1117 1.4163 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.39700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1118 1.4161 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.45000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1119 1.4160 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.49100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1120 1.4159 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.52800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1121 1.4158 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.57800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1122 1.4157 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.65000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1123 1.4156 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.71900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1124 1.4155 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.76500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1125 1.4154 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.81100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1126 1.4153 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.89100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1127 1.4152 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.02300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1128 1.4150 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.16400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1129 1.4149 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.27100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1130 1.4148 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.37800E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1131 1.4147 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.53300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1132 1.4146 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.77000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1133 1.4145 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.03700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1134 1.4144 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.28100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1135 1.4143 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.50200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1136 1.4142 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.71200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1137 1.4141 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.93200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1138 1.4139 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.20200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1139 1.4138 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.57200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1140 1.4137 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.05200E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1141 1.4136 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.52000E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1142 1.4135 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.86300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1143 1.4133 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.15900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1144 1.4132 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.53500E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1145 1.4131 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.06400E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1146 1.4130 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.59700E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1147 1.4129 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.98100E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1148 1.4128 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.25300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1149 1.4127 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.49300E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1150 1.4126 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.76900E-01 2.30000E+00 0.00000E+00 2.68222E+00 +1151 1.4125 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.00800E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1152 1.4124 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.04100E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1153 1.4122 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.07300E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1154 1.4121 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1155 1.4120 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11900E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1156 1.4119 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13100E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1157 1.4118 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1158 1.4117 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1159 1.4116 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.16000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1160 1.4115 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1161 1.4114 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18100E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1162 1.4113 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1163 1.4111 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19400E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1164 1.4110 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19600E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1165 1.4109 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19700E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1166 1.4108 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1167 1.4107 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20300E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1168 1.4106 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20500E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1169 1.4105 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20600E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1170 1.4104 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20700E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1171 1.4103 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21300E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1172 1.4102 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22300E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1173 1.4101 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23200E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1174 1.4100 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23400E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1175 1.4099 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23200E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1176 1.4098 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22900E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1177 1.4097 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1178 1.4096 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23300E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1179 1.4095 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23600E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1180 1.4094 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23900E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1181 1.4093 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24100E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1182 1.4092 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24400E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1183 1.4090 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24800E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1184 1.4089 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25200E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1185 1.4088 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25600E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1186 1.4087 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25800E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1187 1.4086 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1188 1.4085 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26200E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1189 1.4084 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26500E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1190 1.4083 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26700E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1191 1.4082 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27000E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1192 1.4081 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27200E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1193 1.4080 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27500E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1194 1.4079 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27700E+00 2.30000E+00 0.00000E+00 2.68222E+00 +1195 1.4078 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28000E+00 2.30000E+00 0.00000E+00 2.68214E+00 +1196 1.4077 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28200E+00 2.30000E+00 0.00000E+00 2.68212E+00 +1197 1.4076 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28300E+00 2.30000E+00 0.00000E+00 2.68209E+00 +1198 1.4075 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28300E+00 2.30000E+00 0.00000E+00 2.68208E+00 +1199 1.4074 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27900E+00 2.30000E+00 0.00000E+00 2.68208E+00 +1200 1.4073 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27200E+00 2.30000E+00 0.00000E+00 2.68226E+00 +1201 1.4072 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26600E+00 2.30000E+00 0.00000E+00 2.68256E+00 +1202 1.4071 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26700E+00 2.30100E+00 0.00000E+00 2.68306E+00 +1203 1.4070 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27100E+00 2.30100E+00 0.00000E+00 2.68380E+00 +1204 1.4069 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27300E+00 2.30200E+00 0.00000E+00 2.68474E+00 +1205 1.4068 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27100E+00 2.30300E+00 0.00000E+00 2.68603E+00 +1206 1.4067 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26500E+00 2.30500E+00 0.00000E+00 2.68759E+00 +1207 1.4066 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26000E+00 2.30600E+00 0.00000E+00 2.68942E+00 +1208 1.4065 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25800E+00 2.30800E+00 0.00000E+00 2.69144E+00 +1209 1.4064 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25800E+00 2.31000E+00 0.00000E+00 2.69378E+00 +1210 1.4063 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25700E+00 2.31200E+00 0.00000E+00 2.69642E+00 +1211 1.4062 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25200E+00 2.31500E+00 0.00000E+00 2.69925E+00 +1212 1.4061 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24700E+00 2.31700E+00 0.00000E+00 2.70236E+00 +1213 1.4060 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24300E+00 2.32000E+00 0.00000E+00 2.70573E+00 +1214 1.4059 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24300E+00 2.32300E+00 0.00000E+00 2.70945E+00 +1215 1.4058 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24300E+00 2.32700E+00 0.00000E+00 2.71338E+00 +1216 1.4057 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24000E+00 2.33000E+00 0.00000E+00 2.71746E+00 +1217 1.4056 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23300E+00 2.33400E+00 0.00000E+00 2.72173E+00 +1218 1.4054 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22400E+00 2.33800E+00 0.00000E+00 2.72616E+00 +1219 1.4053 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21600E+00 2.34200E+00 0.00000E+00 2.73087E+00 +1220 1.4052 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21400E+00 2.34600E+00 0.00000E+00 2.73571E+00 +1221 1.4051 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21400E+00 2.35000E+00 0.00000E+00 2.74074E+00 +1222 1.4050 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21300E+00 2.35400E+00 0.00000E+00 2.74591E+00 +1223 1.4049 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21000E+00 2.35900E+00 0.00000E+00 2.75124E+00 +1224 1.4048 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20500E+00 2.36400E+00 0.00000E+00 2.75674E+00 +1225 1.4047 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20000E+00 2.36900E+00 0.00000E+00 2.76236E+00 +1226 1.4046 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19900E+00 2.37400E+00 0.00000E+00 2.76815E+00 +1227 1.4045 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19800E+00 2.37900E+00 0.00000E+00 2.77411E+00 +1228 1.4044 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19700E+00 2.38400E+00 0.00000E+00 2.78031E+00 +1229 1.4043 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19400E+00 2.38900E+00 0.00000E+00 2.78650E+00 +1230 1.4042 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18900E+00 2.39500E+00 0.00000E+00 2.79277E+00 +1231 1.4041 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18400E+00 2.40000E+00 0.00000E+00 2.79922E+00 +1232 1.4040 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18000E+00 2.40600E+00 0.00000E+00 2.80584E+00 +1233 1.4038 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17600E+00 2.41200E+00 0.00000E+00 2.81262E+00 +1234 1.4037 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17100E+00 2.41800E+00 0.00000E+00 2.81944E+00 +1235 1.4036 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.16600E+00 2.42300E+00 0.00000E+00 2.82642E+00 +1236 1.4035 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.16100E+00 2.43000E+00 0.00000E+00 2.83350E+00 +1237 1.4034 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15800E+00 2.43600E+00 0.00000E+00 2.84054E+00 +1238 1.4033 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15700E+00 2.44200E+00 0.00000E+00 2.84776E+00 +1239 1.4032 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15700E+00 2.44800E+00 0.00000E+00 2.85491E+00 +1240 1.4031 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15500E+00 2.45400E+00 0.00000E+00 2.86221E+00 +1241 1.4030 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15200E+00 2.46100E+00 0.00000E+00 2.86953E+00 +1242 1.4029 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14800E+00 2.46700E+00 0.00000E+00 2.87700E+00 +1243 1.4028 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14200E+00 2.47300E+00 0.00000E+00 2.88433E+00 +1244 1.4027 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13800E+00 2.48000E+00 0.00000E+00 2.89187E+00 +1245 1.4026 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13300E+00 2.48600E+00 0.00000E+00 2.89939E+00 +1246 1.4025 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13000E+00 2.49300E+00 0.00000E+00 2.90699E+00 +1247 1.4024 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12600E+00 2.49900E+00 0.00000E+00 2.91454E+00 +1248 1.4023 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12300E+00 2.50600E+00 0.00000E+00 2.92211E+00 +1249 1.4022 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12000E+00 2.51200E+00 0.00000E+00 2.92971E+00 +1250 1.4021 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11600E+00 2.51900E+00 0.00000E+00 2.93735E+00 +1251 1.4020 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11100E+00 2.52500E+00 0.00000E+00 2.94495E+00 +1252 1.4019 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10700E+00 2.53200E+00 0.00000E+00 2.95253E+00 +1253 1.4017 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10300E+00 2.53800E+00 0.00000E+00 2.96007E+00 +1254 1.4016 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10100E+00 2.54500E+00 0.00000E+00 2.96768E+00 +1255 1.4015 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10100E+00 2.55100E+00 0.00000E+00 2.97520E+00 +1256 1.4014 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10100E+00 2.55800E+00 0.00000E+00 2.98273E+00 +1257 1.4013 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10100E+00 2.56400E+00 0.00000E+00 2.99015E+00 +1258 1.4012 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10000E+00 2.57000E+00 0.00000E+00 2.99755E+00 +1259 1.4011 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09800E+00 2.57700E+00 0.00000E+00 3.00481E+00 +1260 1.4010 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09400E+00 2.58300E+00 0.00000E+00 3.01206E+00 +1261 1.4009 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08900E+00 2.58900E+00 0.00000E+00 3.01917E+00 +1262 1.4008 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08500E+00 2.59500E+00 0.00000E+00 3.02637E+00 +1263 1.4007 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08400E+00 2.60100E+00 0.00000E+00 3.03339E+00 +1264 1.4006 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08300E+00 2.60700E+00 0.00000E+00 3.04047E+00 +1265 1.4005 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08300E+00 2.61300E+00 0.00000E+00 3.04746E+00 +1266 1.4004 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08200E+00 2.61900E+00 0.00000E+00 3.05429E+00 +1267 1.4003 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08100E+00 2.62500E+00 0.00000E+00 3.06109E+00 +1268 1.4001 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08000E+00 2.63100E+00 0.00000E+00 3.06775E+00 +1269 1.4000 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.07900E+00 2.63600E+00 0.00000E+00 3.07425E+00 +1270 1.3999 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08000E+00 2.64200E+00 0.00000E+00 3.08058E+00 +1271 1.3998 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08300E+00 2.64700E+00 0.00000E+00 3.08683E+00 +1272 1.3997 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08700E+00 2.65200E+00 0.00000E+00 3.09296E+00 +1273 1.3996 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09300E+00 2.65700E+00 0.00000E+00 3.09891E+00 +1274 1.3995 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09900E+00 2.66200E+00 0.00000E+00 3.10470E+00 +1275 1.3994 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10400E+00 2.66700E+00 0.00000E+00 3.11033E+00 +1276 1.3993 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10700E+00 2.67200E+00 0.00000E+00 3.11582E+00 +1277 1.3992 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10900E+00 2.67700E+00 0.00000E+00 3.12115E+00 +1278 1.3991 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11100E+00 2.68100E+00 0.00000E+00 3.12641E+00 +1279 1.3990 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11500E+00 2.68500E+00 0.00000E+00 3.13137E+00 +1280 1.3989 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12100E+00 2.68900E+00 0.00000E+00 3.13623E+00 +1281 1.3988 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12900E+00 2.69300E+00 0.00000E+00 3.14082E+00 +1282 1.3987 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13700E+00 2.69700E+00 0.00000E+00 3.14516E+00 +1283 1.3985 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14700E+00 2.70100E+00 0.00000E+00 3.14935E+00 +1284 1.3984 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15600E+00 2.70400E+00 0.00000E+00 3.15339E+00 +1285 1.3983 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.16400E+00 2.70700E+00 0.00000E+00 3.15728E+00 +1286 1.3982 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17000E+00 2.71100E+00 0.00000E+00 3.16099E+00 +1287 1.3981 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17500E+00 2.71300E+00 0.00000E+00 3.16437E+00 +1288 1.3980 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18100E+00 2.71600E+00 0.00000E+00 3.16752E+00 +1289 1.3979 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18800E+00 2.71900E+00 0.00000E+00 3.17040E+00 +1290 1.3978 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19600E+00 2.72100E+00 0.00000E+00 3.17311E+00 +1291 1.3977 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20600E+00 2.72300E+00 0.00000E+00 3.17554E+00 +1292 1.3976 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21600E+00 2.72500E+00 0.00000E+00 3.17768E+00 +1293 1.3975 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22700E+00 2.72600E+00 0.00000E+00 3.18031E+00 +1294 1.3974 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23900E+00 2.72800E+00 0.00000E+00 3.18084E+00 +1295 1.3973 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25200E+00 2.72900E+00 0.00000E+00 3.18206E+00 +1296 1.3972 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26700E+00 2.73000E+00 0.00000E+00 3.18360E+00 +1297 1.3971 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28300E+00 2.73000E+00 0.00000E+00 3.18478E+00 +1298 1.3970 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29700E+00 2.73100E+00 0.00000E+00 3.18577E+00 +1299 1.3969 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.31000E+00 2.73100E+00 0.00000E+00 3.18438E+00 +1300 1.3968 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.32300E+00 2.72100E+00 0.00000E+00 3.18255E+00 +1301 1.3967 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.33600E+00 2.73600E+00 0.00000E+00 3.17911E+00 +1302 1.3966 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.35100E+00 2.72800E+00 0.00000E+00 3.17436E+00 +1303 1.3965 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.37000E+00 2.71900E+00 0.00000E+00 3.16877E+00 +1304 1.3964 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.39200E+00 2.71200E+00 0.00000E+00 3.16275E+00 +1305 1.3963 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.41600E+00 2.69800E+00 0.00000E+00 3.15591E+00 +1306 1.3962 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.44000E+00 2.70200E+00 0.00000E+00 3.14865E+00 +1307 1.3961 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.46500E+00 2.69100E+00 0.00000E+00 3.14238E+00 +1308 1.3960 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.48900E+00 2.68800E+00 0.00000E+00 3.13490E+00 +1309 1.3959 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.51100E+00 2.68600E+00 0.00000E+00 3.13039E+00 +1310 1.3958 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.53200E+00 2.68200E+00 0.00000E+00 3.12640E+00 +1311 1.3957 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.55500E+00 2.67600E+00 0.00000E+00 3.12274E+00 +1312 1.3956 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.58000E+00 2.67500E+00 0.00000E+00 3.12013E+00 +1313 1.3955 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.61000E+00 2.67700E+00 0.00000E+00 3.11657E+00 +1314 1.3954 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.64200E+00 2.67000E+00 0.00000E+00 3.11619E+00 +1315 1.3953 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.67200E+00 2.67100E+00 0.00000E+00 3.11564E+00 +1316 1.3952 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.70100E+00 2.66800E+00 0.00000E+00 3.11512E+00 +1317 1.3951 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.72800E+00 2.67000E+00 0.00000E+00 3.11565E+00 +1318 1.3949 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.75800E+00 2.67400E+00 0.00000E+00 3.11842E+00 +1319 1.3948 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.79100E+00 2.67400E+00 0.00000E+00 3.12040E+00 +1320 1.3947 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83100E+00 2.68300E+00 0.00000E+00 3.12085E+00 +1321 1.3946 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87200E+00 2.67400E+00 0.00000E+00 3.12123E+00 +1322 1.3945 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.91100E+00 2.67500E+00 0.00000E+00 3.12030E+00 +1323 1.3944 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.94300E+00 2.68200E+00 0.00000E+00 3.12022E+00 +1324 1.3943 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.97400E+00 2.68300E+00 0.00000E+00 3.11915E+00 +1325 1.3942 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.00700E+00 2.66500E+00 0.00000E+00 3.11690E+00 +1326 1.3941 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.04700E+00 2.66100E+00 0.00000E+00 3.11441E+00 +1327 1.3940 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.09800E+00 2.66800E+00 0.00000E+00 3.11083E+00 +1328 1.3939 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.15300E+00 2.67000E+00 0.00000E+00 3.10923E+00 +1329 1.3938 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.20300E+00 2.67400E+00 0.00000E+00 3.10835E+00 +1330 1.3937 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.24300E+00 2.66400E+00 0.00000E+00 3.10759E+00 +1331 1.3936 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.27700E+00 2.66100E+00 0.00000E+00 3.10864E+00 +1332 1.3935 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.31200E+00 2.66500E+00 0.00000E+00 3.11253E+00 +1333 1.3934 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.35700E+00 2.66800E+00 0.00000E+00 3.11742E+00 +1334 1.3933 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.41500E+00 2.68100E+00 0.00000E+00 3.12236E+00 +1335 1.3932 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.47900E+00 2.68600E+00 0.00000E+00 3.12811E+00 +1336 1.3931 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.54000E+00 2.68400E+00 0.00000E+00 3.13660E+00 +1337 1.3930 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.59000E+00 2.69700E+00 0.00000E+00 3.14671E+00 +1338 1.3929 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.63100E+00 2.71200E+00 0.00000E+00 3.15600E+00 +1339 1.3928 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.66600E+00 2.72000E+00 0.00000E+00 3.16446E+00 +1340 1.3927 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.70100E+00 2.71700E+00 0.00000E+00 3.17295E+00 +1341 1.3926 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.73800E+00 2.72600E+00 0.00000E+00 3.18061E+00 +1342 1.3925 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.78000E+00 2.74400E+00 0.00000E+00 3.19037E+00 +1343 1.3924 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.82900E+00 2.74300E+00 0.00000E+00 3.20061E+00 +1344 1.3923 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.88900E+00 2.75100E+00 0.00000E+00 3.21240E+00 +1345 1.3922 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.96000E+00 2.76300E+00 0.00000E+00 3.22656E+00 +1346 1.3921 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.03300E+00 2.77800E+00 0.00000E+00 3.24397E+00 +1347 1.3920 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.09700E+00 2.79300E+00 0.00000E+00 3.26410E+00 +1348 1.3919 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.14600E+00 2.81800E+00 0.00000E+00 3.28504E+00 +1349 1.3918 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.18100E+00 2.83500E+00 0.00000E+00 3.30768E+00 +1350 1.3917 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.22600E+00 2.86500E+00 0.00000E+00 3.33283E+00 +1351 1.3916 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.26700E+00 2.87900E+00 0.00000E+00 3.35784E+00 +1352 1.3915 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.31900E+00 2.89900E+00 0.00000E+00 3.38543E+00 +1353 1.3914 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.36300E+00 2.91800E+00 0.00000E+00 3.41310E+00 +1354 1.3913 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.41200E+00 2.93600E+00 0.00000E+00 3.43399E+00 +1355 1.3912 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.44900E+00 2.95300E+00 0.00000E+00 3.44358E+00 +1356 1.3911 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.50400E+00 2.96600E+00 0.00000E+00 3.44515E+00 +1357 1.3910 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.54400E+00 2.97700E+00 0.00000E+00 3.43996E+00 +1358 1.3909 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.60000E+00 2.98100E+00 0.00000E+00 3.43098E+00 +1359 1.3908 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.64800E+00 2.94200E+00 0.00000E+00 3.41754E+00 +1360 1.3907 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.70100E+00 2.88700E+00 0.00000E+00 3.40379E+00 +1361 1.3906 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.75200E+00 2.86400E+00 0.00000E+00 3.38959E+00 +1362 1.3905 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.80200E+00 2.87700E+00 0.00000E+00 3.37483E+00 +1363 1.3904 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.87100E+00 2.88600E+00 0.00000E+00 3.36136E+00 +1364 1.3903 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.92700E+00 2.88800E+00 0.00000E+00 3.35152E+00 +1365 1.3902 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.98500E+00 2.89100E+00 0.00000E+00 3.34874E+00 +1366 1.3901 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.06400E+00 2.89900E+00 0.00000E+00 3.35642E+00 +1367 1.3900 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.12500E+00 2.88700E+00 0.00000E+00 3.37167E+00 +1368 1.3899 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.21600E+00 2.88400E+00 0.00000E+00 3.38799E+00 +1369 1.3898 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.30200E+00 2.90000E+00 0.00000E+00 3.40826E+00 +1370 1.3897 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.38900E+00 2.92900E+00 0.00000E+00 3.43625E+00 +1371 1.3896 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.50400E+00 2.96900E+00 0.00000E+00 3.47223E+00 +1372 1.3895 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.63000E+00 3.01400E+00 0.00000E+00 3.51342E+00 +1373 1.3893 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.73700E+00 3.05300E+00 0.00000E+00 3.55593E+00 +1374 1.3892 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.90400E+00 3.07500E+00 0.00000E+00 3.59139E+00 +1375 1.3891 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.09200E+00 3.11100E+00 0.00000E+00 3.61235E+00 +1376 1.3890 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.26000E+00 3.12800E+00 0.00000E+00 3.61467E+00 +1377 1.3889 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.47900E+00 3.13000E+00 0.00000E+00 3.60089E+00 +1378 1.3888 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.72000E+00 3.10300E+00 0.00000E+00 3.57463E+00 +1379 1.3887 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.00600E+00 3.05100E+00 0.00000E+00 3.54008E+00 +1380 1.3886 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.24200E+00 2.97900E+00 0.00000E+00 3.50632E+00 +1381 1.3885 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.58000E+00 2.94100E+00 0.00000E+00 3.47782E+00 +1382 1.3884 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.92700E+00 2.92000E+00 0.00000E+00 3.45596E+00 +1383 1.3883 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.31300E+00 2.93100E+00 0.00000E+00 3.44703E+00 +1384 1.3882 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.63300E+00 2.95000E+00 0.00000E+00 3.45359E+00 +1385 1.3881 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.08900E+00 2.97800E+00 0.00000E+00 3.47371E+00 +1386 1.3880 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.54500E+00 3.02500E+00 0.00000E+00 3.50353E+00 +1387 1.3879 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.03000E+00 3.04800E+00 0.00000E+00 3.53567E+00 +1388 1.3877 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.59100E+00 3.06600E+00 0.00000E+00 3.56422E+00 +1389 1.3876 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.00200E+01 3.08700E+00 0.00000E+00 3.58623E+00 +1390 1.3875 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.06300E+01 3.09900E+00 0.00000E+00 3.59882E+00 +1391 1.3874 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12200E+01 3.09000E+00 0.00000E+00 3.60476E+00 +1392 1.3873 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18400E+01 3.08800E+00 0.00000E+00 3.60295E+00 +1393 1.3872 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24500E+01 3.08100E+00 0.00000E+00 3.59709E+00 +1394 1.3871 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.31600E+01 3.08500E+00 0.00000E+00 3.59219E+00 +1395 1.3870 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.36900E+01 3.07100E+00 0.00000E+00 3.58766E+00 +1396 1.3869 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.43400E+01 3.06500E+00 0.00000E+00 3.58432E+00 +1397 1.3868 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.50900E+01 3.06900E+00 0.00000E+00 3.58409E+00 +1398 1.3867 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.57800E+01 3.06700E+00 0.00000E+00 3.58749E+00 +1399 1.3866 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.64600E+01 3.08500E+00 0.00000E+00 3.59250E+00 +1400 1.3865 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.71400E+01 3.09400E+00 0.00000E+00 3.59995E+00 +1401 1.3864 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.78100E+01 3.11000E+00 0.00000E+00 3.60927E+00 +1402 1.3863 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85400E+01 3.13600E+00 0.00000E+00 3.62205E+00 +1403 1.3861 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.91900E+01 3.14900E+00 0.00000E+00 3.63611E+00 +1404 1.3860 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.98000E+01 3.15800E+00 0.00000E+00 3.65190E+00 +1405 1.3859 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.02900E+01 3.19100E+00 0.00000E+00 3.67072E+00 +1406 1.3858 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.08900E+01 3.23000E+00 0.00000E+00 3.69205E+00 +1407 1.3857 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.14600E+01 3.26500E+00 0.00000E+00 3.71898E+00 +1408 1.3855 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.20200E+01 3.29800E+00 0.00000E+00 3.75156E+00 +1409 1.3854 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.26000E+01 3.35600E+00 0.00000E+00 3.79046E+00 +1410 1.3853 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.31300E+01 3.41900E+00 0.00000E+00 3.83718E+00 +1411 1.3852 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.36000E+01 3.47600E+00 0.00000E+00 3.89073E+00 +1412 1.3851 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.40700E+01 3.53400E+00 0.00000E+00 3.95370E+00 +1413 1.3849 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.45000E+01 3.58400E+00 0.00000E+00 4.02191E+00 +1414 1.3848 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.49300E+01 3.63200E+00 0.00000E+00 4.09514E+00 +1415 1.3847 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.53300E+01 3.70800E+00 0.00000E+00 4.17292E+00 +1416 1.3846 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.57100E+01 3.77500E+00 0.00000E+00 4.25534E+00 +1417 1.3845 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.60600E+01 3.84700E+00 0.00000E+00 4.34143E+00 +1418 1.3843 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.64100E+01 3.93100E+00 0.00000E+00 4.42901E+00 +1419 1.3842 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.67300E+01 3.98700E+00 0.00000E+00 4.51783E+00 +1420 1.3841 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.70100E+01 4.07100E+00 0.00000E+00 4.60753E+00 +1421 1.3840 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.72900E+01 4.15600E+00 0.00000E+00 4.69802E+00 +1422 1.3839 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.75600E+01 4.24200E+00 0.00000E+00 4.78835E+00 +1423 1.3837 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.78200E+01 4.32000E+00 0.00000E+00 4.87956E+00 +1424 1.3836 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.80600E+01 4.39500E+00 0.00000E+00 4.97148E+00 +1425 1.3835 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.83500E+01 4.48000E+00 0.00000E+00 5.06143E+00 +1426 1.3834 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.85600E+01 4.56100E+00 0.00000E+00 5.15180E+00 +1427 1.3833 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.87500E+01 4.63800E+00 0.00000E+00 5.23798E+00 +1428 1.3831 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.89200E+01 4.70800E+00 0.00000E+00 5.31983E+00 +1429 1.3830 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.90800E+01 4.78200E+00 0.00000E+00 5.39867E+00 +1430 1.3829 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.92600E+01 4.84600E+00 0.00000E+00 5.47495E+00 +1431 1.3828 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.94000E+01 4.90600E+00 0.00000E+00 5.54635E+00 +1432 1.3826 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.95600E+01 4.97400E+00 0.00000E+00 5.61258E+00 +1433 1.3825 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.96600E+01 5.02600E+00 7.65360E-05 5.67659E+00 +1434 1.3823 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.98200E+01 5.07100E+00 1.68735E-04 5.73732E+00 +1435 1.3822 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.99300E+01 5.13100E+00 2.42311E-04 5.79577E+00 +1436 1.3821 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.00300E+01 5.17900E+00 3.03526E-04 5.85297E+00 +1437 1.3820 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.01400E+01 5.22000E+00 3.58637E-04 5.90851E+00 +1438 1.3818 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.02300E+01 5.27100E+00 4.13905E-04 5.96114E+00 +1439 1.3817 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.02900E+01 5.32200E+00 4.75589E-04 6.00958E+00 +1440 1.3816 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.03600E+01 5.35800E+00 5.49947E-04 6.05498E+00 +1441 1.3815 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.04200E+01 5.40300E+00 6.43240E-04 6.09714E+00 +1442 1.3813 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.04600E+01 5.44100E+00 7.61726E-04 6.13417E+00 +1443 1.3812 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.04900E+01 5.46000E+00 9.11665E-04 6.16850E+00 +1444 1.3810 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05200E+01 5.48100E+00 1.09932E-03 6.19815E+00 +1445 1.3809 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05300E+01 5.50000E+00 1.33094E-03 6.22266E+00 +1446 1.3808 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05500E+01 5.52300E+00 1.58550E-03 6.24269E+00 +1447 1.3807 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05600E+01 5.54800E+00 1.87565E-03 6.26166E+00 +1448 1.3805 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05600E+01 5.56000E+00 2.20629E-03 6.27819E+00 +1449 1.3804 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05500E+01 5.57500E+00 2.58310E-03 6.29608E+00 +1450 1.3803 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05400E+01 5.58200E+00 3.01269E-03 6.31569E+00 +1451 1.3802 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05100E+01 5.59700E+00 3.50269E-03 6.33534E+00 +1452 1.3800 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.04900E+01 5.61100E+00 4.06198E-03 6.35304E+00 +1453 1.3799 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.04500E+01 5.63900E+00 4.70084E-03 6.36763E+00 +1454 1.3797 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.04100E+01 5.65300E+00 5.43120E-03 6.38151E+00 +1455 1.3796 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.03500E+01 5.67500E+00 6.26689E-03 6.39723E+00 +1456 1.3794 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.02900E+01 5.68200E+00 7.26769E-03 6.41164E+00 +1457 1.3793 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.02300E+01 5.68500E+00 8.42831E-03 6.42340E+00 +1458 1.3791 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.01400E+01 5.68000E+00 9.77428E-03 6.43260E+00 +1459 1.3790 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.00600E+01 5.68900E+00 1.13352E-02 6.44065E+00 +1460 1.3788 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.99800E+01 5.71100E+00 1.31454E-02 6.44665E+00 +1461 1.3787 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.98300E+01 5.72300E+00 1.52447E-02 6.45438E+00 +1462 1.3785 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.97100E+01 5.71500E+00 1.76792E-02 6.46169E+00 +1463 1.3784 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.95700E+01 5.71600E+00 2.05025E-02 6.46881E+00 +1464 1.3782 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.93600E+01 5.73200E+00 2.37766E-02 6.47553E+00 +1465 1.3781 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.91700E+01 5.74100E+00 2.75737E-02 6.48120E+00 +1466 1.3779 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.89900E+01 5.74300E+00 3.19771E-02 6.48547E+00 +1467 1.3778 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.87200E+01 5.75200E+00 3.70837E-02 6.48926E+00 +1468 1.3776 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.85100E+01 5.74500E+00 4.30059E-02 6.49495E+00 +1469 1.3775 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.82900E+01 5.74400E+00 4.98737E-02 6.50368E+00 +1470 1.3773 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.80000E+01 5.75700E+00 5.70809E-02 6.51151E+00 +1471 1.3772 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.77700E+01 5.76600E+00 6.61413E-02 6.51850E+00 +1472 1.3770 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.75400E+01 5.78000E+00 7.39295E-02 6.52761E+00 +1473 1.3769 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.72200E+01 5.78700E+00 8.41698E-02 6.53809E+00 +1474 1.3767 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.69900E+01 5.79800E+00 9.38582E-02 6.54676E+00 +1475 1.3766 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.66400E+01 5.81000E+00 1.10766E-01 6.55608E+00 +1476 1.3764 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.63800E+01 5.80800E+00 1.30811E-01 6.56391E+00 +1477 1.3763 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.61100E+01 5.81500E+00 1.59166E-01 6.57223E+00 +1478 1.3761 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.58100E+01 5.82500E+00 1.95848E-01 6.57985E+00 +1479 1.3760 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.55500E+01 5.82400E+00 2.43361E-01 6.58591E+00 +1480 1.3758 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.52200E+01 5.82700E+00 2.98639E-01 6.59205E+00 +1481 1.3756 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.49700E+01 5.85400E+00 3.64290E-01 6.59882E+00 +1482 1.3755 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.46800E+01 5.87800E+00 4.39860E-01 6.60642E+00 +1483 1.3753 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.44300E+01 5.90000E+00 5.27273E-01 6.61153E+00 +1484 1.3752 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.41300E+01 5.90800E+00 6.27666E-01 6.61461E+00 +1485 1.3750 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.38800E+01 5.92200E+00 7.36383E-01 6.61518E+00 +1486 1.3748 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.36400E+01 5.94000E+00 8.58437E-01 6.61221E+00 +1487 1.3747 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.33200E+01 5.96200E+00 9.86033E-01 6.60680E+00 +1488 1.3745 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.30700E+01 5.96300E+00 1.12027E+00 6.59753E+00 +1489 1.3744 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.27400E+01 5.96600E+00 1.25898E+00 6.58914E+00 +1490 1.3742 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.25000E+01 5.98200E+00 1.40247E+00 6.57780E+00 +1491 1.3740 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.21800E+01 5.99000E+00 1.55353E+00 6.56613E+00 +1492 1.3739 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.19300E+01 5.99400E+00 1.70467E+00 6.55060E+00 +1493 1.3737 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.16300E+01 6.01600E+00 1.86119E+00 6.53504E+00 +1494 1.3736 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.13900E+01 6.01400E+00 2.01470E+00 6.51893E+00 +1495 1.3734 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.10700E+01 6.02500E+00 2.16475E+00 6.50652E+00 +1496 1.3732 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.08200E+01 6.00800E+00 2.31366E+00 6.49531E+00 +1497 1.3731 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.05200E+01 6.02200E+00 2.45644E+00 6.48298E+00 +1498 1.3729 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.02500E+01 6.02100E+00 2.59791E+00 6.46966E+00 +1499 1.3728 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.00100E+01 6.02700E+00 2.73075E+00 6.45267E+00 +1500 1.3726 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.97200E+01 6.02700E+00 2.85370E+00 6.43510E+00 +1501 1.3724 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.95100E+01 6.03500E+00 2.97115E+00 6.41625E+00 +1502 1.3723 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92400E+01 6.02500E+00 3.07666E+00 6.39692E+00 +1503 1.3721 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90000E+01 6.00900E+00 3.17623E+00 6.37987E+00 +1504 1.3720 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87400E+01 5.98900E+00 3.27219E+00 6.35797E+00 +1505 1.3718 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84700E+01 5.98700E+00 3.36589E+00 6.33706E+00 +1506 1.3716 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.82700E+01 5.98400E+00 3.44956E+00 6.31399E+00 +1507 1.3715 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.80200E+01 5.97100E+00 3.53622E+00 6.29244E+00 +1508 1.3713 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.78400E+01 5.97100E+00 3.61635E+00 6.27194E+00 +1509 1.3712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.75800E+01 5.97300E+00 3.69087E+00 6.25591E+00 +1510 1.3710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.73400E+01 5.95100E+00 3.76431E+00 6.24161E+00 +1511 1.3708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.71200E+01 5.95200E+00 3.83592E+00 6.22730E+00 +1512 1.3706 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.68800E+01 5.93900E+00 3.90538E+00 6.20890E+00 +1513 1.3705 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.67100E+01 5.93300E+00 3.97691E+00 6.18995E+00 +1514 1.3703 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.64700E+01 5.93100E+00 4.04578E+00 6.17389E+00 +1515 1.3701 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.62300E+01 5.92500E+00 4.10979E+00 6.15464E+00 +1516 1.3699 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.60600E+01 5.90900E+00 4.16951E+00 6.13750E+00 +1517 1.3698 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.58300E+01 5.89700E+00 4.22455E+00 6.12138E+00 +1518 1.3696 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.56200E+01 5.88400E+00 4.27552E+00 6.10124E+00 +1519 1.3695 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.54500E+01 5.88100E+00 4.32278E+00 6.08179E+00 +1520 1.3693 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.52500E+01 5.87600E+00 4.36809E+00 6.06044E+00 +1521 1.3692 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.50400E+01 5.85600E+00 4.41533E+00 6.04033E+00 +1522 1.3690 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.48900E+01 5.84300E+00 4.45536E+00 6.01995E+00 +1523 1.3689 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.46800E+01 5.83000E+00 4.49681E+00 6.00123E+00 +1524 1.3687 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.44700E+01 5.81800E+00 4.52887E+00 5.98525E+00 +1525 1.3686 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.43200E+01 5.80700E+00 4.56307E+00 5.96882E+00 +1526 1.3684 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.41300E+01 5.79900E+00 4.60046E+00 5.95242E+00 +1527 1.3683 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.39500E+01 5.79200E+00 4.63234E+00 5.94074E+00 +1528 1.3681 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.38100E+01 5.77600E+00 4.66390E+00 5.93112E+00 +1529 1.3680 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.36400E+01 5.78300E+00 4.68733E+00 5.92271E+00 +1530 1.3678 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.34800E+01 5.77600E+00 4.71378E+00 5.91541E+00 +1531 1.3676 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.32900E+01 5.76700E+00 4.74251E+00 5.90609E+00 +1532 1.3675 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.31600E+01 5.76200E+00 4.76514E+00 5.89750E+00 +1533 1.3673 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29800E+01 5.76900E+00 4.78913E+00 5.89005E+00 +1534 1.3672 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28200E+01 5.75600E+00 4.81296E+00 5.88198E+00 +1535 1.3670 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26500E+01 5.76200E+00 4.83279E+00 5.87550E+00 +1536 1.3668 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25400E+01 5.73700E+00 4.85234E+00 5.86936E+00 +1537 1.3666 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23800E+01 5.74000E+00 4.87496E+00 5.86635E+00 +1538 1.3665 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22300E+01 5.75700E+00 4.88783E+00 5.86299E+00 +1539 1.3663 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20600E+01 5.75600E+00 4.90037E+00 5.85773E+00 +1540 1.3661 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19300E+01 5.75100E+00 4.91212E+00 5.85597E+00 +1541 1.3659 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18100E+01 5.75400E+00 4.91708E+00 5.85650E+00 +1542 1.3658 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.16600E+01 5.75100E+00 4.92002E+00 5.85557E+00 +1543 1.3656 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15200E+01 5.75000E+00 4.92459E+00 5.85602E+00 +1544 1.3655 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13700E+01 5.74400E+00 4.92315E+00 5.85411E+00 +1545 1.3653 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12600E+01 5.74400E+00 4.91714E+00 5.85057E+00 +1546 1.3651 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11400E+01 5.75400E+00 4.90478E+00 5.85092E+00 +1547 1.3650 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.10000E+01 5.74400E+00 4.89058E+00 5.85038E+00 +1548 1.3648 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08800E+01 5.73500E+00 4.86824E+00 5.85096E+00 +1549 1.3647 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.07500E+01 5.74000E+00 4.84552E+00 5.85429E+00 +1550 1.3645 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.06400E+01 5.73200E+00 4.81833E+00 5.85607E+00 +1551 1.3643 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.05400E+01 5.72800E+00 4.79305E+00 5.85438E+00 +1552 1.3641 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.04400E+01 5.73100E+00 4.76213E+00 5.85092E+00 +1553 1.3640 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.03200E+01 5.72400E+00 4.73360E+00 5.84681E+00 +1554 1.3638 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.02200E+01 5.72400E+00 4.70373E+00 5.84508E+00 +1555 1.3636 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.01100E+01 5.71500E+00 4.67765E+00 5.84433E+00 +1556 1.3634 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.00100E+01 5.69700E+00 4.65150E+00 5.84456E+00 +1557 1.3633 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.91200E+00 5.69300E+00 4.62452E+00 5.84626E+00 +1558 1.3631 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.83900E+00 5.70300E+00 4.60202E+00 5.84939E+00 +1559 1.3630 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.75400E+00 5.70000E+00 4.58405E+00 5.85456E+00 +1560 1.3628 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.66000E+00 5.71300E+00 4.57691E+00 5.86442E+00 +1561 1.3626 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.56300E+00 5.72800E+00 4.56958E+00 5.87356E+00 +1562 1.3625 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.47700E+00 5.73100E+00 4.56592E+00 5.88395E+00 +1563 1.3623 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.38300E+00 5.73500E+00 4.56953E+00 5.89317E+00 +1564 1.3622 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.30500E+00 5.74300E+00 4.57541E+00 5.89816E+00 +1565 1.3620 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.20200E+00 5.75400E+00 4.58762E+00 5.89961E+00 +1566 1.3618 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.13300E+00 5.75300E+00 4.60129E+00 5.90077E+00 +1567 1.3617 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.04700E+00 5.74400E+00 4.61439E+00 5.89895E+00 +1568 1.3615 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.97700E+00 5.74600E+00 4.62615E+00 5.89437E+00 +1569 1.3614 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.89800E+00 5.74600E+00 4.64438E+00 5.89102E+00 +1570 1.3612 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.82000E+00 5.74600E+00 4.66365E+00 5.88470E+00 +1571 1.3610 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.74200E+00 5.75000E+00 4.68594E+00 5.87875E+00 +1572 1.3608 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.66500E+00 5.74900E+00 4.71216E+00 5.87427E+00 +1573 1.3607 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.58800E+00 5.74300E+00 4.74336E+00 5.87144E+00 +1574 1.3605 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.50900E+00 5.74000E+00 4.77011E+00 5.87126E+00 +1575 1.3603 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.44800E+00 5.74700E+00 4.79628E+00 5.86930E+00 +1576 1.3601 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.36400E+00 5.73900E+00 4.81858E+00 5.86845E+00 +1577 1.3600 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.29500E+00 5.75500E+00 4.83927E+00 5.86574E+00 +1578 1.3598 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.23400E+00 5.74900E+00 4.85796E+00 5.86304E+00 +1579 1.3597 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.15700E+00 5.75300E+00 4.87472E+00 5.85991E+00 +1580 1.3595 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.10400E+00 5.74500E+00 4.88995E+00 5.85471E+00 +1581 1.3593 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.03600E+00 5.73200E+00 4.91003E+00 5.84640E+00 +1582 1.3592 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.95900E+00 5.73500E+00 4.92902E+00 5.83715E+00 +1583 1.3590 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.89000E+00 5.72400E+00 4.95040E+00 5.82761E+00 +1584 1.3589 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.83400E+00 5.72500E+00 4.96921E+00 5.81696E+00 +1585 1.3587 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.77300E+00 5.71200E+00 4.98611E+00 5.80844E+00 +1586 1.3585 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.71200E+00 5.70200E+00 5.00378E+00 5.80153E+00 +1587 1.3584 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.65400E+00 5.70000E+00 5.02440E+00 5.79393E+00 +1588 1.3582 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.60900E+00 5.69900E+00 5.04323E+00 5.78532E+00 +1589 1.3581 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.54800E+00 5.68600E+00 5.06260E+00 5.77111E+00 +1590 1.3579 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.49500E+00 5.68500E+00 5.08000E+00 5.75676E+00 +1591 1.3577 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.43200E+00 5.67200E+00 5.09471E+00 5.73859E+00 +1592 1.3576 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.37400E+00 5.65900E+00 5.11082E+00 5.72122E+00 +1593 1.3574 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.31500E+00 5.62700E+00 5.12654E+00 5.70085E+00 +1594 1.3573 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.25200E+00 5.61300E+00 5.13725E+00 5.67782E+00 +1595 1.3571 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.20300E+00 5.59000E+00 5.14888E+00 5.65384E+00 +1596 1.3569 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.16400E+00 5.59100E+00 5.15640E+00 5.63411E+00 +1597 1.3568 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.12400E+00 5.56300E+00 5.16245E+00 5.61306E+00 +1598 1.3566 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.08400E+00 5.55200E+00 5.16683E+00 5.59487E+00 +1599 1.3565 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.04100E+00 5.52500E+00 5.17305E+00 5.57712E+00 +1600 1.3563 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.98700E+00 5.51700E+00 5.17732E+00 5.56157E+00 +1601 1.3561 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.94300E+00 5.50600E+00 5.18190E+00 5.54406E+00 +1602 1.3560 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.91000E+00 5.49400E+00 5.18555E+00 5.52597E+00 +1603 1.3558 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.86500E+00 5.45900E+00 5.18889E+00 5.50564E+00 +1604 1.3557 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.82800E+00 5.45000E+00 5.18570E+00 5.48889E+00 +1605 1.3555 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.77600E+00 5.43800E+00 5.18384E+00 5.47174E+00 +1606 1.3553 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.74200E+00 5.42800E+00 5.17737E+00 5.45687E+00 +1607 1.3552 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.71400E+00 5.40700E+00 5.17230E+00 5.44073E+00 +1608 1.3550 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.69500E+00 5.39100E+00 5.16731E+00 5.42529E+00 +1609 1.3549 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.65400E+00 5.38200E+00 5.16266E+00 5.40991E+00 +1610 1.3547 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.63000E+00 5.37600E+00 5.16292E+00 5.39641E+00 +1611 1.3545 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.59900E+00 5.35800E+00 5.16788E+00 5.38056E+00 +1612 1.3544 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.56700E+00 5.34700E+00 5.17217E+00 5.36675E+00 +1613 1.3542 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.52600E+00 5.33300E+00 5.18121E+00 5.35129E+00 +1614 1.3541 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.50100E+00 5.31900E+00 5.18919E+00 5.33673E+00 +1615 1.3539 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.47400E+00 5.30100E+00 5.20028E+00 5.32220E+00 +1616 1.3537 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.44900E+00 5.29200E+00 5.21432E+00 5.30806E+00 +1617 1.3536 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.42000E+00 5.28400E+00 5.23176E+00 5.29418E+00 +1618 1.3534 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.40100E+00 5.27400E+00 5.24360E+00 5.28097E+00 +1619 1.3533 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.36300E+00 5.25800E+00 5.25794E+00 5.26581E+00 +1620 1.3531 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.34500E+00 5.25300E+00 5.27026E+00 5.25246E+00 +1621 1.3529 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.30900E+00 5.24900E+00 5.28699E+00 5.23820E+00 +1622 1.3528 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.28200E+00 5.23300E+00 5.30103E+00 5.22522E+00 +1623 1.3526 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.25000E+00 5.22200E+00 5.31567E+00 5.21211E+00 +1624 1.3525 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.21400E+00 5.21100E+00 5.32569E+00 5.19995E+00 +1625 1.3523 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.18600E+00 5.20400E+00 5.33668E+00 5.18807E+00 +1626 1.3521 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.16300E+00 5.21000E+00 5.34148E+00 5.17978E+00 +1627 1.3520 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.13000E+00 5.20000E+00 5.34309E+00 5.17295E+00 +1628 1.3518 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.12100E+00 5.19300E+00 5.33813E+00 5.16916E+00 +1629 1.3517 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.09100E+00 5.18600E+00 5.33262E+00 5.16455E+00 +1630 1.3515 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.07600E+00 5.17700E+00 5.32121E+00 5.16115E+00 +1631 1.3513 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.05300E+00 5.17500E+00 5.30806E+00 5.15706E+00 +1632 1.3512 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.04800E+00 5.17800E+00 5.28710E+00 5.15184E+00 +1633 1.3510 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.01600E+00 5.17300E+00 5.26689E+00 5.14389E+00 +1634 1.3509 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.00500E+00 5.15200E+00 5.24033E+00 5.14029E+00 +1635 1.3507 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.98200E+00 5.13500E+00 5.21562E+00 5.13561E+00 +1636 1.3505 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.97300E+00 5.13900E+00 5.18651E+00 5.13261E+00 +1637 1.3504 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.94700E+00 5.12800E+00 5.16090E+00 5.12791E+00 +1638 1.3502 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.94000E+00 5.12100E+00 5.13156E+00 5.12361E+00 +1639 1.3501 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.91900E+00 5.11400E+00 5.10581E+00 5.12022E+00 +1640 1.3499 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.91100E+00 5.12600E+00 5.08302E+00 5.11967E+00 +1641 1.3498 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.88700E+00 5.10700E+00 5.06358E+00 5.11971E+00 +1642 1.3496 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.87500E+00 5.10400E+00 5.04177E+00 5.12193E+00 +1643 1.3495 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.84600E+00 5.10000E+00 5.02614E+00 5.12135E+00 +1644 1.3493 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.82600E+00 5.10900E+00 5.01101E+00 5.12287E+00 +1645 1.3492 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.79800E+00 5.11400E+00 5.00162E+00 5.12448E+00 +1646 1.3490 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.78700E+00 5.11200E+00 4.99239E+00 5.13013E+00 +1647 1.3489 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.75100E+00 5.12800E+00 4.99077E+00 5.13425E+00 +1648 1.3487 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.74600E+00 5.13600E+00 4.98846E+00 5.14571E+00 +1649 1.3486 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.71800E+00 5.13100E+00 4.99546E+00 5.15884E+00 +1650 1.3484 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.70500E+00 5.15200E+00 5.00233E+00 5.17597E+00 +1651 1.3482 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.68500E+00 5.17500E+00 5.01620E+00 5.19099E+00 +1652 1.3481 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.68400E+00 5.19300E+00 5.02959E+00 5.20895E+00 +1653 1.3479 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.65700E+00 5.20000E+00 5.04969E+00 5.22942E+00 +1654 1.3478 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.65800E+00 5.24400E+00 5.07078E+00 5.25117E+00 +1655 1.3476 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.64400E+00 5.25700E+00 5.09724E+00 5.27422E+00 +1656 1.3475 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.64800E+00 5.27300E+00 5.12541E+00 5.29959E+00 +1657 1.3473 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.62600E+00 5.28900E+00 5.16117E+00 5.32299E+00 +1658 1.3472 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.62600E+00 5.33500E+00 5.19810E+00 5.34835E+00 +1659 1.3470 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.61900E+00 5.36600E+00 5.24408E+00 5.37425E+00 +1660 1.3469 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.61800E+00 5.38900E+00 5.29257E+00 5.40251E+00 +1661 1.3467 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.60300E+00 5.42700E+00 5.35035E+00 5.42918E+00 +1662 1.3466 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.61400E+00 5.45300E+00 5.41135E+00 5.46101E+00 +1663 1.3464 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.59700E+00 5.49000E+00 5.48263E+00 5.49733E+00 +1664 1.3463 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.60300E+00 5.52200E+00 5.55426E+00 5.54336E+00 +1665 1.3461 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.58200E+00 5.56200E+00 5.63657E+00 5.57491E+00 +1666 1.3459 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.58400E+00 5.60500E+00 5.72222E+00 5.60071E+00 +1667 1.3458 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.56400E+00 5.65200E+00 5.81691E+00 5.61948E+00 +1668 1.3456 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.56300E+00 5.69800E+00 5.91269E+00 5.63139E+00 +1669 1.3455 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.54700E+00 5.74400E+00 6.01690E+00 5.63707E+00 +1670 1.3453 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.54500E+00 5.74300E+00 6.12230E+00 5.64122E+00 +1671 1.3452 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.53600E+00 5.64200E+00 6.23421E+00 5.64281E+00 +1672 1.3450 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.54200E+00 5.68900E+00 6.34912E+00 5.64415E+00 +1673 1.3449 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52900E+00 5.72200E+00 6.47766E+00 5.64571E+00 +1674 1.3447 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.53200E+00 5.75500E+00 6.60888E+00 5.65342E+00 +1675 1.3446 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52500E+00 5.79800E+00 6.74758E+00 5.66610E+00 +1676 1.3445 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.53300E+00 5.84700E+00 6.88950E+00 5.68829E+00 +1677 1.3443 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52800E+00 5.87500E+00 7.04128E+00 5.72296E+00 +1678 1.3442 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52900E+00 5.91800E+00 7.19293E+00 5.76468E+00 +1679 1.3440 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51600E+00 5.97100E+00 7.35206E+00 5.79520E+00 +1680 1.3439 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52400E+00 6.02200E+00 7.50841E+00 5.82776E+00 +1681 1.3438 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51600E+00 6.06100E+00 7.67632E+00 5.86039E+00 +1682 1.3436 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52600E+00 6.11600E+00 7.84865E+00 5.89368E+00 +1683 1.3435 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52000E+00 6.17300E+00 8.02726E+00 5.92703E+00 +1684 1.3433 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52000E+00 6.21400E+00 8.19964E+00 5.96479E+00 +1685 1.3432 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51600E+00 6.26600E+00 8.37428E+00 6.00173E+00 +1686 1.3431 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52200E+00 6.31900E+00 8.54745E+00 6.03810E+00 +1687 1.3429 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51100E+00 6.38100E+00 8.72049E+00 6.07204E+00 +1688 1.3428 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52700E+00 6.42600E+00 8.88458E+00 6.10872E+00 +1689 1.3426 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51100E+00 6.48600E+00 9.04686E+00 6.14321E+00 +1690 1.3425 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51900E+00 6.54100E+00 9.19828E+00 6.17729E+00 +1691 1.3424 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51500E+00 6.57900E+00 9.34777E+00 6.21207E+00 +1692 1.3422 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52000E+00 6.61600E+00 9.48432E+00 6.24813E+00 +1693 1.3421 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51000E+00 6.66600E+00 9.61348E+00 6.28434E+00 +1694 1.3419 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.51800E+00 6.72800E+00 9.72944E+00 6.32167E+00 +1695 1.3418 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52300E+00 6.77100E+00 9.83987E+00 6.36102E+00 +1696 1.3417 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.53800E+00 6.80700E+00 9.94215E+00 6.40315E+00 +1697 1.3415 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.53500E+00 6.85800E+00 1.00300E+01 6.44813E+00 +1698 1.3414 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.54400E+00 6.90700E+00 1.00929E+01 6.49657E+00 +1699 1.3412 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.55700E+00 6.95900E+00 1.01517E+01 6.54341E+00 +1700 1.3411 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.57100E+00 7.00600E+00 1.01962E+01 6.58958E+00 +1701 1.3410 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.58300E+00 7.05200E+00 1.02299E+01 6.63221E+00 +1702 1.3409 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.60600E+00 7.09300E+00 1.02452E+01 6.67774E+00 +1703 1.3407 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.60700E+00 7.13600E+00 1.02614E+01 6.72062E+00 +1704 1.3406 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.62900E+00 7.16400E+00 1.02646E+01 6.75924E+00 +1705 1.3405 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.63600E+00 7.19900E+00 1.02624E+01 6.79852E+00 +1706 1.3404 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.66400E+00 7.23200E+00 1.02521E+01 6.84146E+00 +1707 1.3402 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.67000E+00 7.26600E+00 1.02384E+01 6.88154E+00 +1708 1.3401 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.69300E+00 7.31500E+00 1.02194E+01 6.92359E+00 +1709 1.3399 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.70200E+00 7.34000E+00 1.02002E+01 6.96582E+00 +1710 1.3398 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.73300E+00 7.36100E+00 1.01788E+01 7.01088E+00 +1711 1.3397 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.75200E+00 7.39900E+00 1.01624E+01 7.05278E+00 +1712 1.3396 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.76600E+00 7.44000E+00 1.01317E+01 7.09290E+00 +1713 1.3394 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.77600E+00 7.47300E+00 1.01023E+01 7.13101E+00 +1714 1.3393 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.79700E+00 7.50500E+00 1.00713E+01 7.16782E+00 +1715 1.3392 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.81100E+00 7.52500E+00 1.00499E+01 7.20174E+00 +1716 1.3391 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.82900E+00 7.55700E+00 1.00314E+01 7.23640E+00 +1717 1.3390 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.84200E+00 7.57900E+00 1.00192E+01 7.26732E+00 +1718 1.3388 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.87700E+00 7.60400E+00 1.00094E+01 7.29374E+00 +1719 1.3387 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.89100E+00 7.63300E+00 1.00107E+01 7.31977E+00 +1720 1.3386 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.93000E+00 7.65300E+00 1.00150E+01 7.34774E+00 +1721 1.3385 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.94500E+00 7.67400E+00 1.00255E+01 7.37002E+00 +1722 1.3383 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.97200E+00 7.69100E+00 1.00411E+01 7.39010E+00 +1723 1.3382 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.99900E+00 7.69900E+00 1.00648E+01 7.40379E+00 +1724 1.3380 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.02500E+00 7.70800E+00 1.00882E+01 7.41423E+00 +1725 1.3379 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.05100E+00 7.72100E+00 1.01202E+01 7.41583E+00 +1726 1.3378 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.08700E+00 7.73000E+00 1.01529E+01 7.41303E+00 +1727 1.3377 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.09600E+00 7.72900E+00 1.01777E+01 7.40469E+00 +1728 1.3376 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.13600E+00 7.71200E+00 1.02009E+01 7.39082E+00 +1729 1.3375 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.16600E+00 7.70200E+00 1.02364E+01 7.37307E+00 +1730 1.3374 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.19800E+00 7.69500E+00 1.02701E+01 7.34997E+00 +1731 1.3373 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.21900E+00 7.67000E+00 1.02976E+01 7.32107E+00 +1732 1.3372 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.25600E+00 7.64400E+00 1.03189E+01 7.28796E+00 +1733 1.3370 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.28400E+00 7.61800E+00 1.03434E+01 7.25329E+00 +1734 1.3369 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.33500E+00 7.58500E+00 1.03551E+01 7.22001E+00 +1735 1.3368 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.36900E+00 7.55500E+00 1.03609E+01 7.18370E+00 +1736 1.3367 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.39200E+00 7.51700E+00 1.03702E+01 7.14735E+00 +1737 1.3366 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.44500E+00 7.47900E+00 1.03756E+01 7.11130E+00 +1738 1.3365 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.49300E+00 7.45100E+00 1.03726E+01 7.07661E+00 +1739 1.3364 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.51700E+00 7.43500E+00 1.03584E+01 7.04601E+00 +1740 1.3363 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.57100E+00 7.40800E+00 1.03367E+01 7.02316E+00 +1741 1.3362 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.61700E+00 7.37900E+00 1.03090E+01 7.00484E+00 +1742 1.3361 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.65800E+00 7.36300E+00 1.02724E+01 6.99051E+00 +1743 1.3359 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.68900E+00 7.34700E+00 1.02392E+01 6.98036E+00 +1744 1.3358 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.74800E+00 7.33200E+00 1.01975E+01 6.96917E+00 +1745 1.3357 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.79600E+00 7.33200E+00 1.01535E+01 6.96025E+00 +1746 1.3356 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.84200E+00 7.33200E+00 1.01034E+01 6.95592E+00 +1747 1.3355 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.89700E+00 7.30400E+00 1.00448E+01 6.95476E+00 +1748 1.3354 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.95500E+00 7.29500E+00 9.97984E+00 6.95724E+00 +1749 1.3353 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.00300E+00 7.29600E+00 9.91216E+00 6.95991E+00 +1750 1.3352 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.05400E+00 7.29100E+00 9.83732E+00 6.96279E+00 +1751 1.3351 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.11100E+00 7.29200E+00 9.75679E+00 6.96527E+00 +1752 1.3350 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.17900E+00 7.29200E+00 9.67446E+00 6.96817E+00 +1753 1.3349 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.23500E+00 7.28100E+00 9.58793E+00 6.97433E+00 +1754 1.3348 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.27400E+00 7.28300E+00 9.49717E+00 6.98206E+00 +1755 1.3347 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.33900E+00 7.26400E+00 9.40617E+00 6.98753E+00 +1756 1.3346 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.41400E+00 7.25000E+00 9.30796E+00 6.99022E+00 +1757 1.3345 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.48100E+00 7.24000E+00 9.20210E+00 6.98826E+00 +1758 1.3344 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.53600E+00 7.22800E+00 9.09696E+00 6.98262E+00 +1759 1.3343 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.59400E+00 7.21000E+00 8.98890E+00 6.97735E+00 +1760 1.3342 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.66900E+00 7.18600E+00 8.87563E+00 6.97201E+00 +1761 1.3341 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.73400E+00 7.16400E+00 8.75042E+00 6.96318E+00 +1762 1.3340 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.77600E+00 7.14300E+00 8.61983E+00 6.95357E+00 +1763 1.3339 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.83300E+00 7.11400E+00 8.48835E+00 6.94055E+00 +1764 1.3338 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.89300E+00 7.10100E+00 8.35916E+00 6.92653E+00 +1765 1.3337 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.95200E+00 7.06900E+00 8.23239E+00 6.91136E+00 +1766 1.3336 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.00000E+00 7.03800E+00 8.11134E+00 6.89125E+00 +1767 1.3335 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.04500E+00 7.00300E+00 7.98569E+00 6.86880E+00 +1768 1.3334 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.10300E+00 6.97400E+00 7.85857E+00 6.84446E+00 +1769 1.3333 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.15500E+00 6.92800E+00 7.73401E+00 6.81875E+00 +1770 1.3332 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.20500E+00 6.88900E+00 7.61854E+00 6.79278E+00 +1771 1.3331 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.24100E+00 6.83900E+00 7.50725E+00 6.76423E+00 +1772 1.3330 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.26400E+00 6.79300E+00 7.39955E+00 6.73443E+00 +1773 1.3329 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.32100E+00 6.76400E+00 7.29452E+00 6.70337E+00 +1774 1.3328 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.35200E+00 6.72900E+00 7.19590E+00 6.67063E+00 +1775 1.3327 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.39400E+00 6.69400E+00 7.10542E+00 6.63796E+00 +1776 1.3326 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.43000E+00 6.66100E+00 7.01506E+00 6.60605E+00 +1777 1.3325 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.44800E+00 6.61300E+00 6.92784E+00 6.57576E+00 +1778 1.3324 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.47700E+00 6.57200E+00 6.85378E+00 6.54698E+00 +1779 1.3323 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.51200E+00 6.54600E+00 6.78955E+00 6.52166E+00 +1780 1.3322 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.53500E+00 6.52200E+00 6.73116E+00 6.49947E+00 +1781 1.3321 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.56200E+00 6.50700E+00 6.67928E+00 6.48693E+00 +1782 1.3320 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.59300E+00 6.48200E+00 6.63580E+00 6.47958E+00 +1783 1.3320 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.61800E+00 6.48400E+00 6.59811E+00 6.47565E+00 +1784 1.3319 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.64000E+00 6.47900E+00 6.56433E+00 6.47637E+00 +1785 1.3318 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.67000E+00 6.49400E+00 6.53378E+00 6.47459E+00 +1786 1.3317 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.68900E+00 6.49600E+00 6.50469E+00 6.47200E+00 +1787 1.3316 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.72000E+00 6.49100E+00 6.47758E+00 6.46860E+00 +1788 1.3316 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.73800E+00 6.46100E+00 6.45478E+00 6.46263E+00 +1789 1.3315 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.75500E+00 6.44000E+00 6.43122E+00 6.45250E+00 +1790 1.3314 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.77700E+00 6.43000E+00 6.40963E+00 6.44037E+00 +1791 1.3313 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.77800E+00 6.41300E+00 6.38975E+00 6.42810E+00 +1792 1.3312 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.77800E+00 6.42100E+00 6.36996E+00 6.41271E+00 +1793 1.3311 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.79400E+00 6.39900E+00 6.35665E+00 6.39739E+00 +1794 1.3310 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.80500E+00 6.37900E+00 6.34605E+00 6.38605E+00 +1795 1.3309 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.80700E+00 6.36500E+00 6.33481E+00 6.37595E+00 +1796 1.3308 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.80900E+00 6.37200E+00 6.32755E+00 6.36405E+00 +1797 1.3307 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.81100E+00 6.34600E+00 6.31951E+00 6.35079E+00 +1798 1.3307 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.79900E+00 6.32100E+00 6.30917E+00 6.33851E+00 +1799 1.3306 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.79500E+00 6.31000E+00 6.29860E+00 6.32359E+00 +1800 1.3305 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.78900E+00 6.31400E+00 6.28577E+00 6.31039E+00 +1801 1.3304 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.77900E+00 6.28200E+00 6.27116E+00 6.29447E+00 +1802 1.3303 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.76700E+00 6.27700E+00 6.25515E+00 6.27955E+00 +1803 1.3303 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.75400E+00 6.27000E+00 6.23534E+00 6.26647E+00 +1804 1.3302 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.75000E+00 6.25800E+00 6.21246E+00 6.25738E+00 +1805 1.3301 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.73800E+00 6.24200E+00 6.18546E+00 6.24888E+00 +1806 1.3300 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.73900E+00 6.23400E+00 6.15187E+00 6.24129E+00 +1807 1.3299 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.73500E+00 6.22100E+00 6.11700E+00 6.23603E+00 +1808 1.3299 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.74400E+00 6.23100E+00 6.08071E+00 6.23487E+00 +1809 1.3298 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.75300E+00 6.22100E+00 6.04076E+00 6.23058E+00 +1810 1.3297 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.75500E+00 6.20500E+00 5.99424E+00 6.22824E+00 +1811 1.3296 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.78000E+00 6.19200E+00 5.94611E+00 6.22644E+00 +1812 1.3295 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.78700E+00 6.19200E+00 5.89702E+00 6.22362E+00 +1813 1.3295 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.79000E+00 6.17900E+00 5.84771E+00 6.21934E+00 +1814 1.3294 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.79800E+00 6.15900E+00 5.79868E+00 6.21260E+00 +1815 1.3293 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.79400E+00 6.14300E+00 5.75044E+00 6.20186E+00 +1816 1.3292 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.81100E+00 6.14300E+00 5.70087E+00 6.19283E+00 +1817 1.3291 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.82000E+00 6.12000E+00 5.65802E+00 6.18204E+00 +1818 1.3291 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.83600E+00 6.09800E+00 5.61610E+00 6.17329E+00 +1819 1.3290 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.84500E+00 6.08700E+00 5.57821E+00 6.16313E+00 +1820 1.3289 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.85400E+00 6.06300E+00 5.54385E+00 6.15209E+00 +1821 1.3288 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.85800E+00 6.05600E+00 5.51274E+00 6.13931E+00 +1822 1.3287 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.86800E+00 6.05300E+00 5.48289E+00 6.12784E+00 +1823 1.3287 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.86900E+00 6.04000E+00 5.45706E+00 6.11593E+00 +1824 1.3286 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.88400E+00 6.04400E+00 5.43082E+00 6.10582E+00 +1825 1.3285 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.88800E+00 6.00700E+00 5.40654E+00 6.09477E+00 +1826 1.3284 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.90000E+00 5.99600E+00 5.38310E+00 6.08383E+00 +1827 1.3283 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.92200E+00 5.99400E+00 5.35650E+00 6.07430E+00 +1828 1.3283 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.95100E+00 5.99700E+00 5.32864E+00 6.06286E+00 +1829 1.3282 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.97300E+00 5.97500E+00 5.29867E+00 6.05340E+00 +1830 1.3281 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.01000E+00 5.95400E+00 5.26501E+00 6.04505E+00 +1831 1.3280 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.03400E+00 5.94600E+00 5.22874E+00 6.03409E+00 +1832 1.3279 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.11000E+00 5.92700E+00 5.18290E+00 6.02462E+00 +1833 1.3279 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.14600E+00 5.91400E+00 5.13459E+00 6.00957E+00 +1834 1.3278 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.19500E+00 5.89000E+00 5.08056E+00 5.98696E+00 +1835 1.3277 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.25900E+00 5.87300E+00 5.02382E+00 5.96246E+00 +1836 1.3276 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.31500E+00 5.83200E+00 4.95980E+00 5.93713E+00 +1837 1.3275 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.38000E+00 5.79400E+00 4.90305E+00 5.91156E+00 +1838 1.3275 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.45700E+00 5.76800E+00 4.84103E+00 5.88570E+00 +1839 1.3274 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.53500E+00 5.72800E+00 4.77691E+00 5.86082E+00 +1840 1.3273 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.63300E+00 5.68100E+00 4.70948E+00 5.83770E+00 +1841 1.3272 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.72300E+00 5.68000E+00 4.64599E+00 5.81487E+00 +1842 1.3271 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.82400E+00 5.65500E+00 4.58845E+00 5.79336E+00 +1843 1.3271 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.93500E+00 5.64800E+00 4.53829E+00 5.77702E+00 +1844 1.3270 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.00500E+01 5.62000E+00 4.48954E+00 5.76387E+00 +1845 1.3269 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.01800E+01 5.59400E+00 4.45037E+00 5.74960E+00 +1846 1.3268 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.03100E+01 5.56700E+00 4.41275E+00 5.73762E+00 +1847 1.3268 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.04200E+01 5.55700E+00 4.39967E+00 5.72670E+00 +1848 1.3267 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.05900E+01 5.55200E+00 4.38469E+00 5.71407E+00 +1849 1.3267 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.07500E+01 5.55300E+00 4.37336E+00 5.70322E+00 +1850 1.3266 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09400E+01 5.53900E+00 4.35812E+00 5.69128E+00 +1851 1.3265 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11000E+01 5.52300E+00 4.34299E+00 5.67966E+00 +1852 1.3264 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.13900E+01 5.50700E+00 4.32436E+00 5.66843E+00 +1853 1.3264 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.16000E+01 5.50500E+00 4.30717E+00 5.65545E+00 +1854 1.3263 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.18400E+01 5.48700E+00 4.28102E+00 5.64175E+00 +1855 1.3262 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20800E+01 5.47400E+00 4.27333E+00 5.62272E+00 +1856 1.3261 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23500E+01 5.46200E+00 4.25741E+00 5.60680E+00 +1857 1.3261 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26600E+01 5.45000E+00 4.23467E+00 5.59803E+00 +1858 1.3260 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30100E+01 5.44800E+00 4.20623E+00 5.59697E+00 +1859 1.3260 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.33400E+01 5.44100E+00 4.16861E+00 5.59846E+00 +1860 1.3259 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.37500E+01 5.44000E+00 4.12869E+00 5.60891E+00 +1861 1.3258 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.41200E+01 5.44200E+00 4.08078E+00 5.62344E+00 +1862 1.3257 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.47800E+01 5.44900E+00 4.04711E+00 5.64492E+00 +1863 1.3257 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.52900E+01 5.46600E+00 4.01037E+00 5.65528E+00 +1864 1.3256 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.58600E+01 5.46100E+00 3.96050E+00 5.65705E+00 +1865 1.3255 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.64100E+01 5.45200E+00 3.90105E+00 5.64921E+00 +1866 1.3254 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.70900E+01 5.44500E+00 3.83389E+00 5.63298E+00 +1867 1.3254 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.77400E+01 5.41200E+00 3.76191E+00 5.60525E+00 +1868 1.3253 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85300E+01 5.37900E+00 3.69271E+00 5.56746E+00 +1869 1.3253 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92500E+01 5.28000E+00 3.61726E+00 5.51898E+00 +1870 1.3252 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.05100E+01 5.22800E+00 3.53857E+00 5.46723E+00 +1871 1.3251 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.14800E+01 5.19900E+00 3.46367E+00 5.42173E+00 +1872 1.3250 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.25000E+01 5.17100E+00 3.40070E+00 5.38897E+00 +1873 1.3250 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.36700E+01 5.13900E+00 3.35623E+00 5.36786E+00 +1874 1.3249 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.48300E+01 5.12400E+00 3.32014E+00 5.36214E+00 +1875 1.3248 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.62200E+01 5.11200E+00 3.29632E+00 5.36681E+00 +1876 1.3247 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.75100E+01 5.12900E+00 3.27977E+00 5.37907E+00 +1877 1.3247 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.97200E+01 5.14400E+00 3.28363E+00 5.38984E+00 +1878 1.3246 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.14400E+01 5.17300E+00 3.29353E+00 5.40554E+00 +1879 1.3246 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.31700E+01 5.17600E+00 3.30985E+00 5.42152E+00 +1880 1.3245 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.50400E+01 5.18500E+00 3.32930E+00 5.43135E+00 +1881 1.3244 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.72500E+01 5.18300E+00 3.36121E+00 5.43626E+00 +1882 1.3243 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.92700E+01 5.20000E+00 3.40153E+00 5.43476E+00 +1883 1.3243 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.26900E+01 5.20200E+00 3.46995E+00 5.42942E+00 +1884 1.3242 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.53000E+01 5.20400E+00 3.55002E+00 5.42507E+00 +1885 1.3241 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.78900E+01 5.22400E+00 3.65712E+00 5.42813E+00 +1886 1.3240 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.06000E+01 5.24400E+00 3.76686E+00 5.43839E+00 +1887 1.3240 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.36000E+01 5.29700E+00 3.90165E+00 5.45818E+00 +1888 1.3239 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.76100E+01 5.31800E+00 4.05638E+00 5.48679E+00 +1889 1.3239 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.08800E+01 5.37500E+00 4.22986E+00 5.52161E+00 +1890 1.3238 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.40100E+01 5.44100E+00 4.42670E+00 5.56080E+00 +1891 1.3237 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.72000E+01 5.49100E+00 4.64443E+00 5.60493E+00 +1892 1.3236 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.05900E+01 5.56100E+00 4.88562E+00 5.65152E+00 +1893 1.3236 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.49700E+01 5.62900E+00 5.12367E+00 5.69820E+00 +1894 1.3235 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.84100E+01 5.68700E+00 5.37238E+00 5.73934E+00 +1895 1.3234 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.15700E+01 5.75700E+00 5.63482E+00 5.78295E+00 +1896 1.3233 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.46900E+01 5.83000E+00 5.91277E+00 5.82950E+00 +1897 1.3233 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.75200E+01 5.91100E+00 6.20553E+00 5.88268E+00 +1898 1.3232 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.18900E+01 5.99800E+00 6.51767E+00 5.94378E+00 +1899 1.3232 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.45600E+01 6.09000E+00 6.82637E+00 6.00897E+00 +1900 1.3231 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.72200E+01 6.19300E+00 7.14743E+00 6.08180E+00 +1901 1.3230 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.99500E+01 6.33000E+00 7.48375E+00 6.16653E+00 +1902 1.3230 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.03300E+02 6.44900E+00 7.83561E+00 6.25739E+00 +1903 1.3229 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.05700E+02 6.58100E+00 8.19747E+00 6.35662E+00 +1904 1.3229 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.07800E+02 6.71000E+00 8.55623E+00 6.45977E+00 +1905 1.3228 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09700E+02 6.83800E+00 8.91913E+00 6.56362E+00 +1906 1.3227 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12300E+02 6.97000E+00 9.28496E+00 6.67301E+00 +1907 1.3227 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14000E+02 7.10700E+00 9.65515E+00 6.78134E+00 +1908 1.3226 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15700E+02 7.23800E+00 1.00272E+01 6.88663E+00 +1909 1.3226 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17100E+02 7.38800E+00 1.03842E+01 6.99178E+00 +1910 1.3225 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19000E+02 7.50600E+00 1.07344E+01 7.09433E+00 +1911 1.3224 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20300E+02 7.63500E+00 1.10836E+01 7.19111E+00 +1912 1.3224 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21500E+02 7.76700E+00 1.14299E+01 7.28121E+00 +1913 1.3223 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22600E+02 7.87400E+00 1.17759E+01 7.35781E+00 +1914 1.3223 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24000E+02 7.97700E+00 1.21059E+01 7.42670E+00 +1915 1.3222 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24800E+02 8.07100E+00 1.24311E+01 7.48877E+00 +1916 1.3221 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25700E+02 8.15000E+00 1.27522E+01 7.54150E+00 +1917 1.3220 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26500E+02 8.22000E+00 1.30668E+01 7.59274E+00 +1918 1.3220 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27500E+02 8.29200E+00 1.33701E+01 7.64115E+00 +1919 1.3219 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28100E+02 8.35000E+00 1.36644E+01 7.68487E+00 +1920 1.3218 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28600E+02 8.44900E+00 1.39491E+01 7.72955E+00 +1921 1.3217 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29200E+02 8.52100E+00 1.42235E+01 7.77267E+00 +1922 1.3217 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29600E+02 8.58300E+00 1.44861E+01 7.81634E+00 +1923 1.3216 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29900E+02 8.66600E+00 1.47403E+01 7.86109E+00 +1924 1.3216 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30300E+02 8.72300E+00 1.49812E+01 7.90318E+00 +1925 1.3215 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30400E+02 8.75900E+00 1.52098E+01 7.93709E+00 +1926 1.3214 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30600E+02 8.82100E+00 1.54279E+01 7.96222E+00 +1927 1.3213 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30600E+02 8.86400E+00 1.56347E+01 7.97896E+00 +1928 1.3213 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30600E+02 8.90900E+00 1.58291E+01 7.99546E+00 +1929 1.3212 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30500E+02 8.94100E+00 1.60110E+01 8.00994E+00 +1930 1.3211 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30400E+02 8.94900E+00 1.61813E+01 8.01725E+00 +1931 1.3210 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.30100E+02 8.95500E+00 1.63426E+01 8.02099E+00 +1932 1.3210 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29900E+02 8.98300E+00 1.64912E+01 8.02305E+00 +1933 1.3209 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29600E+02 9.02200E+00 1.66309E+01 8.02048E+00 +1934 1.3209 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.29100E+02 9.04300E+00 1.67579E+01 8.01710E+00 +1935 1.3208 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28700E+02 9.04400E+00 1.68747E+01 8.01171E+00 +1936 1.3207 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.28200E+02 9.02800E+00 1.69765E+01 8.00624E+00 +1937 1.3206 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27500E+02 9.03400E+00 1.70670E+01 8.00195E+00 +1938 1.3206 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.27000E+02 9.05200E+00 1.71481E+01 7.99395E+00 +1939 1.3205 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.26400E+02 9.04800E+00 1.72166E+01 7.98153E+00 +1940 1.3204 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.25600E+02 9.04100E+00 1.72755E+01 7.97102E+00 +1941 1.3203 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24900E+02 9.03700E+00 1.73243E+01 7.95984E+00 +1942 1.3203 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.24200E+02 9.03600E+00 1.73619E+01 7.95136E+00 +1943 1.3202 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.23200E+02 9.03500E+00 1.73905E+01 7.94081E+00 +1944 1.3202 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.22400E+02 9.02100E+00 1.74097E+01 7.92829E+00 +1945 1.3201 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.21600E+02 9.01600E+00 1.74227E+01 7.91487E+00 +1946 1.3200 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.20600E+02 9.00800E+00 1.74310E+01 7.90283E+00 +1947 1.3200 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19700E+02 8.97000E+00 1.74357E+01 7.89045E+00 +1948 1.3199 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.19000E+02 8.97400E+00 1.74339E+01 7.87612E+00 +1949 1.3199 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17800E+02 8.95300E+00 1.74258E+01 7.86194E+00 +1950 1.3198 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.17000E+02 8.95700E+00 1.74132E+01 7.84850E+00 +1951 1.3197 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.15700E+02 8.93700E+00 1.73977E+01 7.83644E+00 +1952 1.3197 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14900E+02 8.92300E+00 1.73868E+01 7.82318E+00 +1953 1.3196 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.14000E+02 8.91200E+00 1.73796E+01 7.80954E+00 +1954 1.3196 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.12800E+02 8.89500E+00 1.73735E+01 7.79809E+00 +1955 1.3195 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11800E+02 8.89100E+00 1.73705E+01 7.78347E+00 +1956 1.3194 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.11000E+02 8.88000E+00 1.73744E+01 7.77419E+00 +1957 1.3193 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.09700E+02 8.86700E+00 1.73849E+01 7.76544E+00 +1958 1.3193 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.08800E+02 8.85500E+00 1.74019E+01 7.76239E+00 +1959 1.3192 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.07600E+02 8.85200E+00 1.74235E+01 7.76139E+00 +1960 1.3191 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.06600E+02 8.86100E+00 1.74546E+01 7.75655E+00 +1961 1.3190 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.05800E+02 8.86400E+00 1.74906E+01 7.74907E+00 +1962 1.3190 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.04400E+02 8.87600E+00 1.75303E+01 7.74076E+00 +1963 1.3189 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.03600E+02 8.86900E+00 1.75762E+01 7.73547E+00 +1964 1.3189 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.02300E+02 8.87200E+00 1.76234E+01 7.72684E+00 +1965 1.3188 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.01400E+02 8.85500E+00 1.76728E+01 7.71594E+00 +1966 1.3187 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.00500E+02 8.82800E+00 1.77204E+01 7.70398E+00 +1967 1.3186 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.92800E+01 8.83900E+00 1.77680E+01 7.69186E+00 +1968 1.3186 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.83100E+01 8.85500E+00 1.78157E+01 7.67752E+00 +1969 1.3185 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.71100E+01 8.85600E+00 1.78604E+01 7.66471E+00 +1970 1.3184 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.63100E+01 8.83300E+00 1.78985E+01 7.65525E+00 +1971 1.3183 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.48800E+01 8.84200E+00 1.79319E+01 7.64619E+00 +1972 1.3183 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.41200E+01 8.84300E+00 1.79609E+01 7.63958E+00 +1973 1.3182 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.34100E+01 8.83000E+00 1.79834E+01 7.63226E+00 +1974 1.3182 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.20600E+01 8.80800E+00 1.79960E+01 7.62433E+00 +1975 1.3181 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.12100E+01 8.81800E+00 1.79991E+01 7.61831E+00 +1976 1.3180 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.00900E+01 8.80700E+00 1.79924E+01 7.61338E+00 +1977 1.3179 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.92900E+01 8.79700E+00 1.79741E+01 7.60997E+00 +1978 1.3179 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.80400E+01 8.79400E+00 1.79402E+01 7.60626E+00 +1979 1.3178 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.72500E+01 8.79100E+00 1.78961E+01 7.60253E+00 +1980 1.3177 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.61100E+01 8.79500E+00 1.78408E+01 7.60046E+00 +1981 1.3176 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.53200E+01 8.77100E+00 1.77774E+01 7.60016E+00 +1982 1.3175 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.46000E+01 8.75400E+00 1.77052E+01 7.60134E+00 +1983 1.3175 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.33600E+01 8.75900E+00 1.76236E+01 7.60739E+00 +1984 1.3174 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.26200E+01 8.76000E+00 1.75334E+01 7.61447E+00 +1985 1.3173 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.15100E+01 8.74600E+00 1.74376E+01 7.62585E+00 +1986 1.3172 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.07600E+01 8.76200E+00 1.73395E+01 7.64509E+00 +1987 1.3171 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.97300E+01 8.77800E+00 1.72353E+01 7.66954E+00 +1988 1.3171 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.90400E+01 8.79000E+00 1.71249E+01 7.70102E+00 +1989 1.3170 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.80000E+01 8.79500E+00 1.70121E+01 7.73481E+00 +1990 1.3169 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.72300E+01 8.81100E+00 1.68967E+01 7.77365E+00 +1991 1.3168 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.62800E+01 8.84800E+00 1.67791E+01 7.81695E+00 +1992 1.3167 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.55700E+01 8.87400E+00 1.66593E+01 7.86106E+00 +1993 1.3167 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.46300E+01 8.88500E+00 1.65370E+01 7.90143E+00 +1994 1.3166 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.39200E+01 8.91300E+00 1.64086E+01 7.94298E+00 +1995 1.3165 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.29800E+01 8.94400E+00 1.62781E+01 7.98715E+00 +1996 1.3164 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.23400E+01 8.98000E+00 1.61430E+01 8.03346E+00 +1997 1.3163 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.14100E+01 8.98800E+00 1.60075E+01 8.07779E+00 +1998 1.3163 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.08200E+01 9.00100E+00 1.58700E+01 8.12218E+00 +1999 1.3162 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.98600E+01 9.03400E+00 1.57322E+01 8.16927E+00 +2000 1.3161 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.92400E+01 9.07600E+00 1.55935E+01 8.21959E+00 +2001 1.3160 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.86500E+01 9.11100E+00 1.54608E+01 8.27133E+00 +2002 1.3159 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.77900E+01 9.14100E+00 1.53270E+01 8.32855E+00 +2003 1.3159 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.68800E+01 9.17100E+00 1.51945E+01 8.38828E+00 +2004 1.3158 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.63400E+01 9.21400E+00 1.50623E+01 8.45456E+00 +2005 1.3157 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.54800E+01 9.25500E+00 1.49325E+01 8.52288E+00 +2006 1.3156 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.49000E+01 9.30300E+00 1.48031E+01 8.59356E+00 +2007 1.3155 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.41200E+01 9.35600E+00 1.46687E+01 8.66536E+00 +2008 1.3154 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.35800E+01 9.40600E+00 1.45349E+01 8.73991E+00 +2009 1.3153 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.28100E+01 9.44800E+00 1.44038E+01 8.81496E+00 +2010 1.3152 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.23200E+01 9.51600E+00 1.42724E+01 8.89448E+00 +2011 1.3151 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.15600E+01 9.57800E+00 1.41427E+01 8.97600E+00 +2012 1.3150 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.10500E+01 9.63800E+00 1.40161E+01 9.06018E+00 +2013 1.3150 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.02900E+01 9.69200E+00 1.38934E+01 9.14982E+00 +2014 1.3149 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.98000E+01 9.76300E+00 1.37728E+01 9.24734E+00 +2015 1.3148 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.90700E+01 9.84500E+00 1.36582E+01 9.35692E+00 +2016 1.3147 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.85700E+01 9.95300E+00 1.35520E+01 9.47408E+00 +2017 1.3146 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.78800E+01 1.00400E+01 1.34497E+01 9.59759E+00 +2018 1.3146 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.74600E+01 1.01400E+01 1.33518E+01 9.73307E+00 +2019 1.3145 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.68000E+01 1.02700E+01 1.32634E+01 9.87422E+00 +2020 1.3144 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.63200E+01 1.03900E+01 1.31796E+01 1.00208E+01 +2021 1.3143 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.56600E+01 1.05200E+01 1.31030E+01 1.01721E+01 +2022 1.3142 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.50300E+01 1.06300E+01 1.30359E+01 1.03282E+01 +2023 1.3141 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.46300E+01 1.07700E+01 1.29728E+01 1.04860E+01 +2024 1.3140 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.39800E+01 1.09100E+01 1.29215E+01 1.06452E+01 +2025 1.3139 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.35600E+01 1.10300E+01 1.28794E+01 1.08087E+01 +2026 1.3138 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.29400E+01 1.11900E+01 1.28465E+01 1.09758E+01 +2027 1.3137 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.25600E+01 1.13500E+01 1.28281E+01 1.11488E+01 +2028 1.3136 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.19700E+01 1.15000E+01 1.28216E+01 1.13263E+01 +2029 1.3135 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.13800E+01 1.16500E+01 1.28317E+01 1.15091E+01 +2030 1.3134 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.09800E+01 1.18100E+01 1.28562E+01 1.16895E+01 +2031 1.3133 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.04700E+01 1.20100E+01 1.28977E+01 1.18758E+01 +2032 1.3132 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.00600E+01 1.21700E+01 1.29535E+01 1.20623E+01 +2033 1.3131 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.95100E+01 1.23400E+01 1.30256E+01 1.22505E+01 +2034 1.3130 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.91500E+01 1.25100E+01 1.31144E+01 1.24408E+01 +2035 1.3129 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.86000E+01 1.26900E+01 1.32186E+01 1.26348E+01 +2036 1.3128 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.80600E+01 1.28700E+01 1.33353E+01 1.28295E+01 +2037 1.3127 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.77300E+01 1.30700E+01 1.34704E+01 1.30242E+01 +2038 1.3126 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.71800E+01 1.32500E+01 1.36194E+01 1.32168E+01 +2039 1.3125 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.68500E+01 1.34600E+01 1.37770E+01 1.34138E+01 +2040 1.3124 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.63500E+01 1.36400E+01 1.39478E+01 1.36119E+01 +2041 1.3123 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.58400E+01 1.38400E+01 1.41269E+01 1.38100E+01 +2042 1.3122 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.55300E+01 1.40300E+01 1.43152E+01 1.40070E+01 +2043 1.3121 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.50300E+01 1.42300E+01 1.45000E+01 1.41991E+01 +2044 1.3120 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.47300E+01 1.44100E+01 1.46843E+01 1.43894E+01 +2045 1.3119 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.42600E+01 1.46100E+01 1.48708E+01 1.45768E+01 +2046 1.3118 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.37900E+01 1.48100E+01 1.50493E+01 1.47640E+01 +2047 1.3117 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.34800E+01 1.49900E+01 1.52133E+01 1.49562E+01 +2048 1.3116 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.30200E+01 1.51700E+01 1.53629E+01 1.51457E+01 +2049 1.3115 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.27300E+01 1.53400E+01 1.54955E+01 1.53340E+01 +2050 1.3114 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.22800E+01 1.55400E+01 1.56003E+01 1.55219E+01 +2051 1.3113 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.18600E+01 1.57100E+01 1.56896E+01 1.57132E+01 +2052 1.3112 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.15500E+01 1.59100E+01 1.57512E+01 1.59015E+01 +2053 1.3110 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.11500E+01 1.60700E+01 1.57749E+01 1.60897E+01 +2054 1.3109 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.07200E+01 1.62200E+01 1.57713E+01 1.62750E+01 +2055 1.3108 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.04600E+01 1.63700E+01 1.57241E+01 1.64539E+01 +2056 1.3107 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.00200E+01 1.65300E+01 1.56389E+01 1.66272E+01 +2057 1.3106 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.97500E+01 1.66700E+01 1.55145E+01 1.67905E+01 +2058 1.3105 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.93400E+01 1.67800E+01 1.53528E+01 1.69523E+01 +2059 1.3104 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.89400E+01 1.69000E+01 1.51503E+01 1.71007E+01 +2060 1.3103 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.86800E+01 1.69800E+01 1.49077E+01 1.72489E+01 +2061 1.3102 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.82700E+01 1.70800E+01 1.46268E+01 1.73939E+01 +2062 1.3101 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.79000E+01 1.71800E+01 1.43108E+01 1.75327E+01 +2063 1.3099 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.76200E+01 1.72500E+01 1.39665E+01 1.76712E+01 +2064 1.3098 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.72600E+01 1.73400E+01 1.35930E+01 1.78086E+01 +2065 1.3097 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.68700E+01 1.73900E+01 1.31946E+01 1.79464E+01 +2066 1.3096 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.66400E+01 1.74800E+01 1.27801E+01 1.80815E+01 +2067 1.3095 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.62800E+01 1.75500E+01 1.23439E+01 1.82149E+01 +2068 1.3094 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.59200E+01 1.76100E+01 1.18869E+01 1.83492E+01 +2069 1.3093 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.56800E+01 1.76700E+01 1.14272E+01 1.84803E+01 +2070 1.3092 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.53600E+01 1.77100E+01 1.09628E+01 1.86074E+01 +2071 1.3091 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.49900E+01 1.77700E+01 1.04903E+01 1.87290E+01 +2072 1.3090 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.47900E+01 1.78300E+01 1.00197E+01 1.88492E+01 +2073 1.3088 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.44700E+01 1.78700E+01 9.55634E+00 1.89576E+01 +2074 1.3087 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.41300E+01 1.79400E+01 9.10418E+00 1.90637E+01 +2075 1.3086 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.39200E+01 1.79500E+01 8.66612E+00 1.91731E+01 +2076 1.3085 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.36300E+01 1.79900E+01 8.24628E+00 1.92801E+01 +2077 1.3084 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.32900E+01 1.80500E+01 7.84903E+00 1.93844E+01 +2078 1.3082 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.30900E+01 1.80900E+01 7.46808E+00 1.94860E+01 +2079 1.3081 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.28000E+01 1.81300E+01 7.11150E+00 1.95863E+01 +2080 1.3080 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.25100E+01 1.82000E+01 6.78593E+00 1.96873E+01 +2081 1.3079 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.23100E+01 1.82700E+01 6.49418E+00 1.97853E+01 +2082 1.3078 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.20000E+01 1.83000E+01 6.21651E+00 1.98851E+01 +2083 1.3076 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.17200E+01 1.83500E+01 5.96552E+00 1.99785E+01 +2084 1.3075 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.15400E+01 1.84100E+01 5.74043E+00 2.00655E+01 +2085 1.3074 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.12700E+01 1.84600E+01 5.53383E+00 2.01486E+01 +2086 1.3073 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.09700E+01 1.85200E+01 5.34901E+00 2.02299E+01 +2087 1.3072 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.07100E+01 1.85600E+01 5.19027E+00 2.03033E+01 +2088 1.3070 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05200E+01 1.86100E+01 5.04929E+00 2.03717E+01 +2089 1.3069 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.02500E+01 1.86600E+01 4.92143E+00 2.04405E+01 +2090 1.3068 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.99900E+01 1.87100E+01 4.80939E+00 2.05078E+01 +2091 1.3067 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.98000E+01 1.87600E+01 4.72165E+00 2.05729E+01 +2092 1.3066 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.95800E+01 1.88100E+01 4.65259E+00 2.06393E+01 +2093 1.3064 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.92900E+01 1.88500E+01 4.60243E+00 2.07049E+01 +2094 1.3063 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.90600E+01 1.89000E+01 4.56357E+00 2.07697E+01 +2095 1.3062 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.88800E+01 1.89600E+01 4.54476E+00 2.08338E+01 +2096 1.3061 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.86500E+01 1.90300E+01 4.53793E+00 2.08987E+01 +2097 1.3060 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.84000E+01 1.90700E+01 4.53405E+00 2.09608E+01 +2098 1.3059 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.82200E+01 1.91100E+01 4.53960E+00 2.10205E+01 +2099 1.3058 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.79900E+01 1.91600E+01 4.56155E+00 2.10723E+01 +2100 1.3057 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.77600E+01 1.92100E+01 4.58587E+00 2.11193E+01 +2101 1.3056 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.75100E+01 1.92700E+01 4.61422E+00 2.11562E+01 +2102 1.3055 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.73700E+01 1.92900E+01 4.65071E+00 2.11857E+01 +2103 1.3053 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.71300E+01 1.93200E+01 4.69963E+00 2.12130E+01 +2104 1.3052 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.69200E+01 1.93500E+01 4.74852E+00 2.12408E+01 +2105 1.3051 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.67100E+01 1.93600E+01 4.80350E+00 2.12645E+01 +2106 1.3050 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.65700E+01 1.94000E+01 4.86249E+00 2.12898E+01 +2107 1.3049 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.63700E+01 1.94300E+01 4.92669E+00 2.13140E+01 +2108 1.3047 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.61700E+01 1.94700E+01 4.99758E+00 2.13364E+01 +2109 1.3046 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.59700E+01 1.95100E+01 5.07882E+00 2.13643E+01 +2110 1.3045 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.58400E+01 1.95300E+01 5.16605E+00 2.13907E+01 +2111 1.3044 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.56500E+01 1.95600E+01 5.25247E+00 2.14152E+01 +2112 1.3043 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.54700E+01 1.96000E+01 5.34313E+00 2.14373E+01 +2113 1.3041 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.52800E+01 1.96100E+01 5.44087E+00 2.14523E+01 +2114 1.3040 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.51800E+01 1.96200E+01 5.53955E+00 2.14675E+01 +2115 1.3039 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.50100E+01 1.96600E+01 5.64106E+00 2.14762E+01 +2116 1.3038 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.48500E+01 1.96600E+01 5.74656E+00 2.14802E+01 +2117 1.3037 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.46600E+01 1.96900E+01 5.86801E+00 2.14830E+01 +2118 1.3035 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.45500E+01 1.97000E+01 5.99336E+00 2.14818E+01 +2119 1.3034 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.43800E+01 1.97200E+01 6.13367E+00 2.14808E+01 +2120 1.3033 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.42000E+01 1.97400E+01 6.29018E+00 2.14794E+01 +2121 1.3032 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.40100E+01 1.97400E+01 6.46549E+00 2.14720E+01 +2122 1.3031 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.38600E+01 1.97600E+01 6.65823E+00 2.14629E+01 +2123 1.3029 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.37400E+01 1.97800E+01 6.86910E+00 2.14565E+01 +2124 1.3028 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.35800E+01 1.97900E+01 7.09956E+00 2.14476E+01 +2125 1.3027 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.34200E+01 1.98200E+01 7.34956E+00 2.14324E+01 +2126 1.3026 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.32800E+01 1.98200E+01 7.61275E+00 2.14179E+01 +2127 1.3025 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.31800E+01 1.98300E+01 7.89448E+00 2.13990E+01 +2128 1.3023 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.30400E+01 1.98600E+01 8.19877E+00 2.13772E+01 +2129 1.3022 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.28900E+01 1.98800E+01 8.52882E+00 2.13537E+01 +2130 1.3021 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.27500E+01 1.98900E+01 8.86939E+00 2.13260E+01 +2131 1.3020 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.26200E+01 1.98900E+01 9.22462E+00 2.12978E+01 +2132 1.3019 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.25200E+01 1.99300E+01 9.59991E+00 2.12665E+01 +2133 1.3017 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.23900E+01 1.99300E+01 9.99933E+00 2.12381E+01 +2134 1.3016 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.22700E+01 1.99700E+01 1.04151E+01 2.12089E+01 +2135 1.3015 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.21400E+01 2.00100E+01 1.08447E+01 2.11796E+01 +2136 1.3014 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.20200E+01 2.00100E+01 1.12883E+01 2.11509E+01 +2137 1.3013 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.19400E+01 2.00400E+01 1.17524E+01 2.11217E+01 +2138 1.3011 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.18300E+01 2.00700E+01 1.22274E+01 2.10930E+01 +2139 1.3010 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.17200E+01 2.01100E+01 1.27147E+01 2.10606E+01 +2140 1.3009 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.16200E+01 2.01300E+01 1.32128E+01 2.10269E+01 +2141 1.3008 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.15000E+01 2.01500E+01 1.37172E+01 2.09863E+01 +2142 1.3007 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.14000E+01 2.01700E+01 1.42340E+01 2.09429E+01 +2143 1.3005 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.13300E+01 2.01900E+01 1.47526E+01 2.09022E+01 +2144 1.3004 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.12300E+01 2.02200E+01 1.52766E+01 2.08560E+01 +2145 1.3003 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.11200E+01 2.02300E+01 1.58048E+01 2.08044E+01 +2146 1.3002 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.10200E+01 2.02300E+01 1.63443E+01 2.07502E+01 +2147 1.3001 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.09100E+01 2.02600E+01 1.68896E+01 2.06926E+01 +2148 1.2999 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.08500E+01 2.02700E+01 1.74315E+01 2.06355E+01 +2149 1.2998 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.07700E+01 2.02900E+01 1.79752E+01 2.05779E+01 +2150 1.2997 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.06700E+01 2.02800E+01 1.85216E+01 2.05108E+01 +2151 1.2996 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.05800E+01 2.02700E+01 1.90666E+01 2.04435E+01 +2152 1.2995 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.04900E+01 2.02900E+01 1.96117E+01 2.03777E+01 +2153 1.2993 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.04000E+01 2.02900E+01 2.01502E+01 2.03107E+01 +2154 1.2992 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.03300E+01 2.03100E+01 2.06877E+01 2.02386E+01 +2155 1.2991 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.02700E+01 2.02900E+01 2.12157E+01 2.01705E+01 +2156 1.2990 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.01800E+01 2.02600E+01 2.17351E+01 2.01036E+01 +2157 1.2989 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.01000E+01 2.03000E+01 2.22492E+01 2.00434E+01 +2158 1.2987 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.00200E+01 2.03000E+01 2.27526E+01 1.99808E+01 +2159 1.2986 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.99500E+01 2.03000E+01 2.32396E+01 1.99161E+01 +2160 1.2985 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.98700E+01 2.03000E+01 2.37127E+01 1.98538E+01 +2161 1.2984 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.98300E+01 2.03100E+01 2.41737E+01 1.97904E+01 +2162 1.2983 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.97600E+01 2.02900E+01 2.46222E+01 1.97261E+01 +2163 1.2981 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.96900E+01 2.02900E+01 2.50544E+01 1.96598E+01 +2164 1.2980 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.96300E+01 2.02600E+01 2.54622E+01 1.95861E+01 +2165 1.2979 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.95800E+01 2.02500E+01 2.58464E+01 1.95138E+01 +2166 1.2978 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.95200E+01 2.02300E+01 2.62140E+01 1.94416E+01 +2167 1.2977 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.94600E+01 2.02000E+01 2.65623E+01 1.93705E+01 +2168 1.2975 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.94200E+01 2.01600E+01 2.68911E+01 1.92967E+01 +2169 1.2974 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.93800E+01 2.01500E+01 2.72034E+01 1.92268E+01 +2170 1.2973 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.93300E+01 2.01200E+01 2.74903E+01 1.91572E+01 +2171 1.2972 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92800E+01 2.00900E+01 2.77589E+01 1.90913E+01 +2172 1.2970 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92300E+01 2.00700E+01 2.80130E+01 1.90236E+01 +2173 1.2969 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.91800E+01 2.00300E+01 2.82449E+01 1.89572E+01 +2174 1.2967 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.91300E+01 1.99800E+01 2.84613E+01 1.88889E+01 +2175 1.2966 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90900E+01 1.99500E+01 2.86633E+01 1.88177E+01 +2176 1.2965 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90400E+01 1.99100E+01 2.88497E+01 1.87425E+01 +2177 1.2964 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90000E+01 1.98600E+01 2.90164E+01 1.86679E+01 +2178 1.2962 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.89600E+01 1.98000E+01 2.91687E+01 1.85919E+01 +2179 1.2961 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.88900E+01 1.97500E+01 2.93098E+01 1.85130E+01 +2180 1.2960 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.88400E+01 1.96900E+01 2.94396E+01 1.84349E+01 +2181 1.2959 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.88000E+01 1.96400E+01 2.95518E+01 1.83599E+01 +2182 1.2958 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87400E+01 1.95900E+01 2.96476E+01 1.82801E+01 +2183 1.2957 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87000E+01 1.95300E+01 2.97319E+01 1.82020E+01 +2184 1.2956 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.86600E+01 1.94700E+01 2.98071E+01 1.81275E+01 +2185 1.2955 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.86000E+01 1.94100E+01 2.98644E+01 1.80544E+01 +2186 1.2954 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85600E+01 1.93600E+01 2.99103E+01 1.79840E+01 +2187 1.2953 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85200E+01 1.93100E+01 2.99456E+01 1.79107E+01 +2188 1.2951 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84900E+01 1.92200E+01 2.99680E+01 1.78349E+01 +2189 1.2950 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84500E+01 1.91800E+01 2.99814E+01 1.77633E+01 +2190 1.2949 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84300E+01 1.91200E+01 2.99838E+01 1.76952E+01 +2191 1.2948 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83900E+01 1.90500E+01 2.99740E+01 1.76277E+01 +2192 1.2947 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83700E+01 1.89900E+01 2.99523E+01 1.75581E+01 +2193 1.2945 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83700E+01 1.89000E+01 2.99154E+01 1.74911E+01 +2194 1.2944 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83800E+01 1.88500E+01 2.98686E+01 1.74283E+01 +2195 1.2943 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83700E+01 1.88100E+01 2.98134E+01 1.73699E+01 +2196 1.2942 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83600E+01 1.87400E+01 2.97495E+01 1.73099E+01 +2197 1.2941 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83500E+01 1.86700E+01 2.96779E+01 1.72526E+01 +2198 1.2939 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83500E+01 1.86100E+01 2.96025E+01 1.71986E+01 +2199 1.2938 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83500E+01 1.85800E+01 2.95216E+01 1.71460E+01 +2200 1.2937 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83400E+01 1.85200E+01 2.94331E+01 1.70954E+01 +2201 1.2936 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83300E+01 1.84600E+01 2.93429E+01 1.70435E+01 +2202 1.2935 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83300E+01 1.84000E+01 2.92466E+01 1.69922E+01 +2203 1.2933 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83300E+01 1.83400E+01 2.91448E+01 1.69460E+01 +2204 1.2932 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83400E+01 1.82900E+01 2.90374E+01 1.69015E+01 +2205 1.2931 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83300E+01 1.82400E+01 2.89199E+01 1.68547E+01 +2206 1.2930 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83400E+01 1.81800E+01 2.87905E+01 1.68067E+01 +2207 1.2928 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83400E+01 1.81300E+01 2.86520E+01 1.67607E+01 +2208 1.2927 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83200E+01 1.80700E+01 2.85067E+01 1.67180E+01 +2209 1.2925 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83100E+01 1.80300E+01 2.83527E+01 1.66756E+01 +2210 1.2924 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.82900E+01 1.79800E+01 2.81841E+01 1.66381E+01 +2211 1.2923 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.82800E+01 1.79200E+01 2.80047E+01 1.66003E+01 +2212 1.2922 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.82800E+01 1.78700E+01 2.78164E+01 1.65692E+01 +2213 1.2920 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.82900E+01 1.78200E+01 2.76222E+01 1.65466E+01 +2214 1.2919 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.82900E+01 1.78000E+01 2.74230E+01 1.65295E+01 +2215 1.2918 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83000E+01 1.77500E+01 2.72149E+01 1.65181E+01 +2216 1.2917 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83200E+01 1.77300E+01 2.69985E+01 1.65103E+01 +2217 1.2916 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83500E+01 1.76800E+01 2.67770E+01 1.65116E+01 +2218 1.2914 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83600E+01 1.76800E+01 2.65519E+01 1.65190E+01 +2219 1.2913 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83700E+01 1.76600E+01 2.63200E+01 1.65288E+01 +2220 1.2912 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83700E+01 1.76300E+01 2.60844E+01 1.65436E+01 +2221 1.2911 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83800E+01 1.76200E+01 2.58509E+01 1.65630E+01 +2222 1.2910 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.83700E+01 1.76300E+01 2.56193E+01 1.65900E+01 +2223 1.2908 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84000E+01 1.76400E+01 2.53891E+01 1.66213E+01 +2224 1.2907 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84200E+01 1.76400E+01 2.51682E+01 1.66650E+01 +2225 1.2906 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84300E+01 1.76600E+01 2.49560E+01 1.67148E+01 +2226 1.2905 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84600E+01 1.77000E+01 2.47573E+01 1.67784E+01 +2227 1.2904 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.84900E+01 1.77400E+01 2.45727E+01 1.68565E+01 +2228 1.2902 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85100E+01 1.77900E+01 2.44037E+01 1.69416E+01 +2229 1.2901 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85400E+01 1.78600E+01 2.42500E+01 1.70366E+01 +2230 1.2900 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85700E+01 1.79500E+01 2.41120E+01 1.71438E+01 +2231 1.2899 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.85800E+01 1.80300E+01 2.39940E+01 1.72660E+01 +2232 1.2898 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.86000E+01 1.81400E+01 2.38924E+01 1.73954E+01 +2233 1.2896 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.86400E+01 1.82500E+01 2.38084E+01 1.75330E+01 +2234 1.2895 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.86500E+01 1.83600E+01 2.37415E+01 1.76792E+01 +2235 1.2894 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.86700E+01 1.85100E+01 2.36916E+01 1.78333E+01 +2236 1.2893 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87000E+01 1.86600E+01 2.36643E+01 1.79946E+01 +2237 1.2892 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87500E+01 1.88100E+01 2.36598E+01 1.81651E+01 +2238 1.2890 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.87900E+01 1.89500E+01 2.36874E+01 1.83478E+01 +2239 1.2889 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.88300E+01 1.91300E+01 2.37356E+01 1.85373E+01 +2240 1.2888 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.88800E+01 1.93100E+01 2.38102E+01 1.87387E+01 +2241 1.2887 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.89300E+01 1.95100E+01 2.39094E+01 1.89505E+01 +2242 1.2886 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.89700E+01 1.97200E+01 2.40286E+01 1.91680E+01 +2243 1.2884 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90300E+01 1.99400E+01 2.41685E+01 1.93980E+01 +2244 1.2883 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.90800E+01 2.01700E+01 2.43313E+01 1.96376E+01 +2245 1.2882 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.91300E+01 2.04000E+01 2.45136E+01 1.98828E+01 +2246 1.2881 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.91900E+01 2.06500E+01 2.47140E+01 2.01242E+01 +2247 1.2880 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92400E+01 2.08900E+01 2.49320E+01 2.03669E+01 +2248 1.2878 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.92900E+01 2.11400E+01 2.51664E+01 2.06065E+01 +2249 1.2877 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.93400E+01 2.14000E+01 2.54161E+01 2.08504E+01 +2250 1.2876 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.94000E+01 2.16300E+01 2.56838E+01 2.10939E+01 +2251 1.2875 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.94600E+01 2.18600E+01 2.59651E+01 2.13406E+01 +2252 1.2874 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.95100E+01 2.21000E+01 2.62570E+01 2.15852E+01 +2253 1.2873 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.96100E+01 2.23600E+01 2.65571E+01 2.18277E+01 +2254 1.2872 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.96600E+01 2.26200E+01 2.68679E+01 2.20703E+01 +2255 1.2871 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.97300E+01 2.29000E+01 2.71842E+01 2.23145E+01 +2256 1.2870 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.98000E+01 2.31300E+01 2.74994E+01 2.25561E+01 +2257 1.2869 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.98500E+01 2.33900E+01 2.78128E+01 2.27997E+01 +2258 1.2867 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.99100E+01 2.36100E+01 2.81249E+01 2.30374E+01 +2259 1.2866 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.99700E+01 2.38600E+01 2.84410E+01 2.32690E+01 +2260 1.2865 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.00400E+01 2.41000E+01 2.87525E+01 2.34914E+01 +2261 1.2864 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.01300E+01 2.43400E+01 2.90623E+01 2.37087E+01 +2262 1.2863 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.02000E+01 2.45500E+01 2.93629E+01 2.39193E+01 +2263 1.2862 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.02700E+01 2.47900E+01 2.96580E+01 2.41308E+01 +2264 1.2861 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.03800E+01 2.49900E+01 2.99477E+01 2.43425E+01 +2265 1.2860 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.04600E+01 2.52100E+01 3.02286E+01 2.45569E+01 +2266 1.2859 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.05400E+01 2.54100E+01 3.05094E+01 2.47628E+01 +2267 1.2858 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.06200E+01 2.56200E+01 3.07928E+01 2.49636E+01 +2268 1.2856 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.07100E+01 2.58300E+01 3.10753E+01 2.51600E+01 +2269 1.2855 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.07900E+01 2.60500E+01 3.13568E+01 2.53468E+01 +2270 1.2854 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.08700E+01 2.62600E+01 3.16396E+01 2.55240E+01 +2271 1.2853 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.09400E+01 2.64300E+01 3.19174E+01 2.56972E+01 +2272 1.2852 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.10300E+01 2.65700E+01 3.22007E+01 2.58581E+01 +2273 1.2850 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.11100E+01 2.67400E+01 3.24809E+01 2.60109E+01 +2274 1.2849 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.12600E+01 2.68800E+01 3.27635E+01 2.61456E+01 +2275 1.2848 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.13500E+01 2.70100E+01 3.30451E+01 2.62628E+01 +2276 1.2847 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.14500E+01 2.71800E+01 3.33143E+01 2.63754E+01 +2277 1.2846 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.15300E+01 2.73200E+01 3.35798E+01 2.64795E+01 +2278 1.2845 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.16400E+01 2.74200E+01 3.38354E+01 2.65848E+01 +2279 1.2844 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.17400E+01 2.75400E+01 3.40864E+01 2.66917E+01 +2280 1.2843 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.18300E+01 2.76300E+01 3.43259E+01 2.67972E+01 +2281 1.2842 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.19200E+01 2.77700E+01 3.45600E+01 2.69072E+01 +2282 1.2841 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.20200E+01 2.79400E+01 3.47807E+01 2.70201E+01 +2283 1.2840 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.21200E+01 2.80400E+01 3.49999E+01 2.71377E+01 +2284 1.2839 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.22300E+01 2.82100E+01 3.51974E+01 2.72780E+01 +2285 1.2838 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.23400E+01 2.83600E+01 3.53751E+01 2.74264E+01 +2286 1.2837 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.24500E+01 2.85000E+01 3.55278E+01 2.75845E+01 +2287 1.2836 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.26400E+01 2.86300E+01 3.56639E+01 2.77452E+01 +2288 1.2834 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.27600E+01 2.87800E+01 3.57704E+01 2.79029E+01 +2289 1.2833 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.28700E+01 2.89600E+01 3.58545E+01 2.80563E+01 +2290 1.2832 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.30100E+01 2.91300E+01 3.58982E+01 2.82092E+01 +2291 1.2831 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.31300E+01 2.92200E+01 3.59276E+01 2.83540E+01 +2292 1.2830 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.32700E+01 2.93700E+01 3.59140E+01 2.85003E+01 +2293 1.2829 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.33800E+01 2.94700E+01 3.58639E+01 2.86465E+01 +2294 1.2828 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.35100E+01 2.96000E+01 3.57803E+01 2.87893E+01 +2295 1.2827 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.36300E+01 2.97000E+01 3.56635E+01 2.89286E+01 +2296 1.2826 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.37700E+01 2.98200E+01 3.55173E+01 2.90737E+01 +2297 1.2825 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.38500E+01 2.99700E+01 3.53491E+01 2.92275E+01 +2298 1.2824 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.40900E+01 3.00600E+01 3.51511E+01 2.93936E+01 +2299 1.2823 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.41800E+01 3.01800E+01 3.49500E+01 2.95493E+01 +2300 1.2822 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.43300E+01 3.02800E+01 3.47121E+01 2.97123E+01 +2301 1.2821 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.44400E+01 3.04000E+01 3.44591E+01 2.98726E+01 +2302 1.2820 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.45900E+01 3.05300E+01 3.41884E+01 3.00248E+01 +2303 1.2818 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.47000E+01 3.06000E+01 3.38941E+01 3.01605E+01 +2304 1.2817 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.48500E+01 3.06600E+01 3.35865E+01 3.02837E+01 +2305 1.2816 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.49500E+01 3.07000E+01 3.32704E+01 3.03892E+01 +2306 1.2815 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.52300E+01 3.07600E+01 3.29436E+01 3.04736E+01 +2307 1.2814 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.53400E+01 3.07800E+01 3.26348E+01 3.05288E+01 +2308 1.2813 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.54900E+01 3.07500E+01 3.23172E+01 3.05666E+01 +2309 1.2812 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.56400E+01 3.07400E+01 3.20107E+01 3.05776E+01 +2310 1.2811 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.57900E+01 3.07200E+01 3.17127E+01 3.05749E+01 +2311 1.2810 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.59200E+01 3.06500E+01 3.14262E+01 3.05552E+01 +2312 1.2809 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.61100E+01 3.05800E+01 3.11485E+01 3.05249E+01 +2313 1.2808 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.62300E+01 3.05100E+01 3.09106E+01 3.04733E+01 +2314 1.2807 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.65300E+01 3.04500E+01 3.06695E+01 3.04177E+01 +2315 1.2806 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.66400E+01 3.03400E+01 3.04466E+01 3.03587E+01 +2316 1.2805 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.68100E+01 3.02900E+01 3.02351E+01 3.02976E+01 +2317 1.2804 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.69500E+01 3.02300E+01 3.00420E+01 3.02366E+01 +2318 1.2803 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.71200E+01 3.01500E+01 2.98599E+01 3.01814E+01 +2319 1.2802 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.72700E+01 3.00400E+01 2.97000E+01 3.01302E+01 +2320 1.2801 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.74400E+01 3.00000E+01 2.95615E+01 3.00827E+01 +2321 1.2800 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.75600E+01 2.99800E+01 2.94347E+01 3.00275E+01 +2322 1.2799 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.78900E+01 2.99100E+01 2.92975E+01 2.99876E+01 +2323 1.2799 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.80200E+01 2.98600E+01 2.91698E+01 2.99485E+01 +2324 1.2798 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.81900E+01 2.98400E+01 2.90514E+01 2.99223E+01 +2325 1.2797 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.83800E+01 2.98100E+01 2.89549E+01 2.99058E+01 +2326 1.2796 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.85500E+01 2.97600E+01 2.88565E+01 2.98979E+01 +2327 1.2795 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.86900E+01 2.97300E+01 2.87715E+01 2.98874E+01 +2328 1.2795 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.90300E+01 2.97600E+01 2.86825E+01 2.98922E+01 +2329 1.2794 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.91600E+01 2.97700E+01 2.86005E+01 2.99136E+01 +2330 1.2793 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.93400E+01 2.97900E+01 2.85017E+01 2.99515E+01 +2331 1.2792 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.95100E+01 2.98100E+01 2.84295E+01 2.99971E+01 +2332 1.2791 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.96900E+01 2.98500E+01 2.83525E+01 3.00507E+01 +2333 1.2791 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 2.98800E+01 2.98900E+01 2.82772E+01 3.01073E+01 +2334 1.2790 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.00200E+01 2.99900E+01 2.82042E+01 3.01693E+01 +2335 1.2789 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.03800E+01 3.00000E+01 2.81438E+01 3.02235E+01 +2336 1.2788 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.05400E+01 3.00500E+01 2.80993E+01 3.02912E+01 +2337 1.2788 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.07300E+01 3.00700E+01 2.80564E+01 3.03563E+01 +2338 1.2787 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.09200E+01 3.01100E+01 2.80081E+01 3.04194E+01 +2339 1.2787 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.10700E+01 3.01700E+01 2.79801E+01 3.04684E+01 +2340 1.2786 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.14500E+01 3.02200E+01 2.79583E+01 3.05110E+01 +2341 1.2785 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.16000E+01 3.02300E+01 2.79426E+01 3.05453E+01 +2342 1.2785 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.18000E+01 3.02900E+01 2.79543E+01 3.05802E+01 +2343 1.2784 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.19900E+01 3.02800E+01 2.79723E+01 3.05957E+01 +2344 1.2784 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.21900E+01 3.02900E+01 2.79656E+01 3.05979E+01 +2345 1.2783 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.23800E+01 3.02700E+01 2.79697E+01 3.05887E+01 +2346 1.2782 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.27200E+01 3.02700E+01 2.79762E+01 3.05631E+01 +2347 1.2781 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.29000E+01 3.02400E+01 2.80007E+01 3.05121E+01 +2348 1.2780 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.31100E+01 3.01900E+01 2.80175E+01 3.04603E+01 +2349 1.2779 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.33100E+01 3.01000E+01 2.80281E+01 3.03986E+01 +2350 1.2778 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.34800E+01 3.01000E+01 2.80298E+01 3.03327E+01 +2351 1.2777 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.38800E+01 3.00300E+01 2.80227E+01 3.02635E+01 +2352 1.2776 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.40400E+01 2.99300E+01 2.80124E+01 3.02005E+01 +2353 1.2776 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.42600E+01 2.98300E+01 2.79932E+01 3.01197E+01 +2354 1.2775 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.44700E+01 2.98400E+01 2.79615E+01 3.00386E+01 +2355 1.2774 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.46800E+01 2.97500E+01 2.79124E+01 2.99531E+01 +2356 1.2773 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.48600E+01 2.96600E+01 2.78386E+01 2.98724E+01 +2357 1.2772 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.52800E+01 2.95800E+01 2.77462E+01 2.97876E+01 +2358 1.2771 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.54700E+01 2.94800E+01 2.76307E+01 2.97058E+01 +2359 1.2770 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.57000E+01 2.93000E+01 2.74948E+01 2.96246E+01 +2360 1.2769 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.59200E+01 2.92600E+01 2.73552E+01 2.95282E+01 +2361 1.2768 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.61000E+01 2.92000E+01 2.71959E+01 2.94269E+01 +2362 1.2767 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.65600E+01 2.91300E+01 2.70079E+01 2.93444E+01 +2363 1.2766 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.67500E+01 2.90200E+01 2.68044E+01 2.92745E+01 +2364 1.2765 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.69700E+01 2.89000E+01 2.65842E+01 2.92098E+01 +2365 1.2764 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.71600E+01 2.88200E+01 2.63688E+01 2.91635E+01 +2366 1.2763 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.76100E+01 2.87200E+01 2.61475E+01 2.91276E+01 +2367 1.2762 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.77700E+01 2.87300E+01 2.59113E+01 2.90910E+01 +2368 1.2761 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.80100E+01 2.87000E+01 2.56750E+01 2.90592E+01 +2369 1.2760 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.82700E+01 2.86500E+01 2.54437E+01 2.90420E+01 +2370 1.2759 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.84800E+01 2.85800E+01 2.52024E+01 2.90303E+01 +2371 1.2758 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.89200E+01 2.85400E+01 2.49568E+01 2.90151E+01 +2372 1.2757 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.91300E+01 2.85000E+01 2.47125E+01 2.89970E+01 +2373 1.2757 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.93800E+01 2.84600E+01 2.44645E+01 2.89679E+01 +2374 1.2756 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 3.95700E+01 2.83800E+01 2.42228E+01 2.89236E+01 +2375 1.2755 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.00700E+01 2.83400E+01 2.39955E+01 2.88819E+01 +2376 1.2754 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.02400E+01 2.82300E+01 2.37765E+01 2.88485E+01 +2377 1.2753 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.05000E+01 2.82000E+01 2.35790E+01 2.88141E+01 +2378 1.2753 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.07800E+01 2.81700E+01 2.33754E+01 2.87754E+01 +2379 1.2752 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.09600E+01 2.80900E+01 2.31852E+01 2.87471E+01 +2380 1.2751 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.14700E+01 2.80300E+01 2.30024E+01 2.87236E+01 +2381 1.2750 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.16700E+01 2.80300E+01 2.28403E+01 2.86974E+01 +2382 1.2749 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.19600E+01 2.80100E+01 2.26741E+01 2.86687E+01 +2383 1.2749 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.22000E+01 2.79400E+01 2.25130E+01 2.86515E+01 +2384 1.2748 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.26800E+01 2.79100E+01 2.23542E+01 2.86300E+01 +2385 1.2747 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.29300E+01 2.79000E+01 2.22139E+01 2.86110E+01 +2386 1.2746 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.31900E+01 2.78400E+01 2.20861E+01 2.86002E+01 +2387 1.2745 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.34200E+01 2.77900E+01 2.19569E+01 2.85913E+01 +2388 1.2745 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.38800E+01 2.78100E+01 2.18366E+01 2.85920E+01 +2389 1.2744 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.41300E+01 2.78200E+01 2.17304E+01 2.86004E+01 +2390 1.2743 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.43900E+01 2.78100E+01 2.16299E+01 2.86212E+01 +2391 1.2742 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.46400E+01 2.78100E+01 2.15213E+01 2.86390E+01 +2392 1.2742 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.51300E+01 2.78300E+01 2.14172E+01 2.86603E+01 +2393 1.2741 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.53800E+01 2.78500E+01 2.13100E+01 2.86766E+01 +2394 1.2741 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.56500E+01 2.78500E+01 2.11993E+01 2.86888E+01 +2395 1.2740 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.59000E+01 2.78200E+01 2.10921E+01 2.86905E+01 +2396 1.2739 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.63800E+01 2.78200E+01 2.09780E+01 2.86962E+01 +2397 1.2739 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.66300E+01 2.77900E+01 2.08687E+01 2.86991E+01 +2398 1.2738 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.69000E+01 2.77900E+01 2.07562E+01 2.87076E+01 +2399 1.2738 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.71400E+01 2.77800E+01 2.06576E+01 2.87199E+01 +2400 1.2737 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.76400E+01 2.78300E+01 2.05492E+01 2.87546E+01 +2401 1.2736 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.78700E+01 2.78400E+01 2.04403E+01 2.88001E+01 +2402 1.2736 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.81700E+01 2.78800E+01 2.03401E+01 2.88646E+01 +2403 1.2735 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.83600E+01 2.79100E+01 2.02499E+01 2.89385E+01 +2404 1.2735 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.89400E+01 2.79900E+01 2.01540E+01 2.90181E+01 +2405 1.2734 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.91700E+01 2.80400E+01 2.00594E+01 2.90790E+01 +2406 1.2733 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.94000E+01 2.81200E+01 1.99751E+01 2.91378E+01 +2407 1.2733 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 4.99700E+01 2.81100E+01 1.98905E+01 2.91829E+01 +2408 1.2732 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.02100E+01 2.81900E+01 1.97901E+01 2.92372E+01 +2409 1.2732 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.05000E+01 2.81900E+01 1.96820E+01 2.92908E+01 +2410 1.2731 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.07800E+01 2.81700E+01 1.95784E+01 2.93419E+01 +2411 1.2730 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.13100E+01 2.81700E+01 1.94746E+01 2.93978E+01 +2412 1.2730 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.15900E+01 2.83100E+01 1.93635E+01 2.94610E+01 +2413 1.2729 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.19100E+01 2.83700E+01 1.92598E+01 2.95330E+01 +2414 1.2729 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.24600E+01 2.84800E+01 1.91546E+01 2.96210E+01 +2415 1.2728 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.27500E+01 2.85300E+01 1.90608E+01 2.97171E+01 +2416 1.2727 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.31000E+01 2.85900E+01 1.89560E+01 2.98355E+01 +2417 1.2727 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.33900E+01 2.87000E+01 1.88548E+01 2.99650E+01 +2418 1.2726 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.40100E+01 2.87400E+01 1.87547E+01 3.00883E+01 +2419 1.2726 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.42900E+01 2.88700E+01 1.86484E+01 3.02085E+01 +2420 1.2725 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.46200E+01 2.89800E+01 1.85346E+01 3.03426E+01 +2421 1.2725 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.52300E+01 2.91000E+01 1.84068E+01 3.04800E+01 +2422 1.2724 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.55500E+01 2.92300E+01 1.82702E+01 3.06337E+01 +2423 1.2724 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.58800E+01 2.93400E+01 1.81336E+01 3.07870E+01 +2424 1.2723 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.61800E+01 2.94400E+01 1.80037E+01 3.09519E+01 +2425 1.2723 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.68600E+01 2.95900E+01 1.78820E+01 3.11169E+01 +2426 1.2722 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.71300E+01 2.97300E+01 1.77734E+01 3.12769E+01 +2427 1.2722 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.74600E+01 2.98700E+01 1.76692E+01 3.14496E+01 +2428 1.2721 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.80800E+01 3.00200E+01 1.75762E+01 3.16193E+01 +2429 1.2721 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.84100E+01 3.01600E+01 1.75083E+01 3.18103E+01 +2430 1.2720 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.87800E+01 3.03500E+01 1.74510E+01 3.20060E+01 +2431 1.2720 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.94600E+01 3.04300E+01 1.74007E+01 3.22065E+01 +2432 1.2719 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 5.97600E+01 3.06400E+01 1.73588E+01 3.23972E+01 +2433 1.2719 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.00900E+01 3.08400E+01 1.73204E+01 3.25895E+01 +2434 1.2718 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.03900E+01 3.09800E+01 1.72858E+01 3.27837E+01 +2435 1.2718 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.10700E+01 3.12200E+01 1.72512E+01 3.29840E+01 +2436 1.2717 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.14600E+01 3.13200E+01 1.72226E+01 3.31766E+01 +2437 1.2717 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.18000E+01 3.15100E+01 1.71846E+01 3.33560E+01 +2438 1.2716 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.25000E+01 3.16400E+01 1.71573E+01 3.35338E+01 +2439 1.2716 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.28600E+01 3.18400E+01 1.71363E+01 3.37146E+01 +2440 1.2715 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.31600E+01 3.20400E+01 1.71238E+01 3.39162E+01 +2441 1.2715 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.39200E+01 3.22100E+01 1.71069E+01 3.41382E+01 +2442 1.2714 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.42700E+01 3.23300E+01 1.70856E+01 3.43699E+01 +2443 1.2714 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.46200E+01 3.25500E+01 1.70750E+01 3.46385E+01 +2444 1.2713 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.53900E+01 3.28200E+01 1.70604E+01 3.49059E+01 +2445 1.2713 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.57400E+01 3.31500E+01 1.70487E+01 3.51876E+01 +2446 1.2713 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.60900E+01 3.33900E+01 1.70389E+01 3.54632E+01 +2447 1.2713 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.68500E+01 3.36000E+01 1.70286E+01 3.57452E+01 +2448 1.2712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.72500E+01 3.38400E+01 1.69942E+01 3.60321E+01 +2449 1.2712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.75900E+01 3.41000E+01 1.69532E+01 3.63129E+01 +2450 1.2712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.84200E+01 3.42600E+01 1.69168E+01 3.65779E+01 +2451 1.2712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.88100E+01 3.45200E+01 1.68889E+01 3.68198E+01 +2452 1.2711 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 6.91800E+01 3.47200E+01 1.68851E+01 3.70634E+01 +2453 1.2711 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.00900E+01 3.49700E+01 1.69047E+01 3.73143E+01 +2454 1.2710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.04600E+01 3.51900E+01 1.69014E+01 3.75555E+01 +2455 1.2710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.08400E+01 3.53900E+01 1.68926E+01 3.77977E+01 +2456 1.2710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.17400E+01 3.56100E+01 1.68694E+01 3.80490E+01 +2457 1.2710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.21200E+01 3.57800E+01 1.68394E+01 3.82932E+01 +2458 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.24900E+01 3.60400E+01 1.68202E+01 3.85202E+01 +2459 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.34000E+01 3.61800E+01 1.67860E+01 3.87254E+01 +2460 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.38100E+01 3.63600E+01 1.67079E+01 3.89106E+01 +2461 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.42300E+01 3.66000E+01 1.65947E+01 3.90832E+01 +2462 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.51400E+01 3.67400E+01 1.64480E+01 3.92886E+01 +2463 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.55400E+01 3.68200E+01 1.62733E+01 3.94988E+01 +2464 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.59100E+01 3.69900E+01 1.60877E+01 3.97258E+01 +2465 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.67500E+01 3.71100E+01 1.58999E+01 3.99503E+01 +2466 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.71800E+01 3.73500E+01 1.57024E+01 4.01761E+01 +2467 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.80100E+01 3.75800E+01 1.55062E+01 4.04021E+01 +2468 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.83900E+01 3.79200E+01 1.52978E+01 4.06479E+01 +2469 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.88000E+01 3.79600E+01 1.50908E+01 4.09079E+01 +2470 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 7.97000E+01 3.81200E+01 1.48897E+01 4.11733E+01 +2471 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.00500E+01 3.82100E+01 1.47385E+01 4.14133E+01 +2472 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.04600E+01 3.83300E+01 1.45149E+01 4.16124E+01 +2473 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.13600E+01 3.85600E+01 1.43161E+01 4.17526E+01 +2474 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.17300E+01 3.87400E+01 1.40861E+01 4.18743E+01 +2475 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.21500E+01 3.87700E+01 1.38385E+01 4.19712E+01 +2476 1.2708 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.29500E+01 3.88400E+01 1.35784E+01 4.20867E+01 +2477 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.33800E+01 3.88300E+01 1.33370E+01 4.21607E+01 +2478 1.2709 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.42300E+01 3.87900E+01 1.30819E+01 4.22186E+01 +2479 1.2710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.47400E+01 3.88600E+01 1.28320E+01 4.22425E+01 +2480 1.2710 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.51000E+01 3.90000E+01 1.25924E+01 4.23023E+01 +2481 1.2711 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.58400E+01 3.90000E+01 1.23239E+01 4.23800E+01 +2482 1.2712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.61700E+01 3.90600E+01 1.21150E+01 4.24888E+01 +2483 1.2712 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.63700E+01 3.90500E+01 1.18353E+01 4.26303E+01 +2484 1.2713 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.70800E+01 3.91600E+01 1.16269E+01 4.27821E+01 +2485 1.2714 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.76200E+01 3.92800E+01 1.13332E+01 4.29257E+01 +2486 1.2715 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.88400E+01 3.94800E+01 1.10345E+01 4.30572E+01 +2487 1.2716 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.90400E+01 3.94300E+01 1.07433E+01 4.31894E+01 +2488 1.2717 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 8.94500E+01 3.95100E+01 1.04637E+01 4.33112E+01 +2489 1.2718 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.05500E+01 3.96400E+01 1.01993E+01 4.34208E+01 +2490 1.2719 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.08900E+01 3.95300E+01 9.95417E+00 4.34629E+01 +2491 1.2720 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.13400E+01 3.96000E+01 9.73206E+00 4.34957E+01 +2492 1.2722 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.20400E+01 3.95800E+01 9.53686E+00 4.34282E+01 +2493 1.2723 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.24400E+01 3.95400E+01 9.37244E+00 4.34087E+01 +2494 1.2725 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.30800E+01 3.94000E+01 9.24266E+00 4.33596E+01 +2495 1.2726 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.33300E+01 3.93600E+01 9.15138E+00 4.32905E+01 +2496 1.2728 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.35800E+01 3.91700E+01 9.10247E+00 4.32012E+01 +2497 1.2730 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.41600E+01 3.92600E+01 9.09979E+00 4.30914E+01 +2498 1.2732 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.44800E+01 3.89300E+01 9.14721E+00 4.29609E+01 +2499 1.2734 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.49900E+01 3.92100E+01 9.24859E+00 4.28094E+01 +2500 1.2736 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 9.53000E+01 3.87100E+01 9.40778E+00 4.26366E+01 diff --git a/data/OptDomain_RT.rda b/data/OptDomain_RT.rda new file mode 100644 index 0000000..61db9e5 Binary files /dev/null and b/data/OptDomain_RT.rda differ diff --git a/data/SpecPROSPECT.RData b/data/SpecPROSPECT.RData deleted file mode 100644 index 6e75bb6..0000000 Binary files a/data/SpecPROSPECT.RData and /dev/null differ diff --git a/data/SpecPROSPECT_FullRange.rda b/data/SpecPROSPECT_FullRange.rda new file mode 100644 index 0000000..06e4c2a Binary files /dev/null and b/data/SpecPROSPECT_FullRange.rda differ diff --git a/man/FitSpectralData.Rd b/man/FitSpectralData.Rd index 9a8bcdb..787bc72 100644 --- a/man/FitSpectralData.Rd +++ b/man/FitSpectralData.Rd @@ -1,13 +1,13 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Lib_PROSPECT_Inversion.R +% Please edit documentation in R/Lib_PROSPECT.R \name{FitSpectralData} \alias{FitSpectralData} \title{This function adapts SpecPROSPECT accordingly to experimental data or to a spectral domain defined by UserDomain} \usage{ FitSpectralData( - SpecPROSPECT, lambda, + SpecPROSPECT = NULL, Refl = NULL, Tran = NULL, UserDomain = NULL, @@ -15,11 +15,11 @@ FitSpectralData( ) } \arguments{ +\item{lambda}{numeric. Spectral bands corresponding to experimental data} + \item{SpecPROSPECT}{list. Includes optical constants refractive index, specific absorption coefficients and corresponding spectral bands} -\item{lambda}{numeric. Spectral bands corresponding to experimental data} - \item{Refl}{numeric. Measured reflectance data} \item{Tran}{numeric. Measured Transmittance data} @@ -31,7 +31,7 @@ or list of spectral bands of interest} set to FALSE if UserDomain is a list of spectral bands (in nm)} } \value{ -res list including spectral properties at the new resolution +list including spectral properties at the new resolution } \description{ This function adapts SpecPROSPECT accordingly to experimental data diff --git a/man/Get_Nprior.Rd b/man/Get_Nprior.Rd index 6b16772..4873d47 100644 --- a/man/Get_Nprior.Rd +++ b/man/Get_Nprior.Rd @@ -5,8 +5,8 @@ \title{This function defines a regression model to estimate N from R only or T only} \usage{ Get_Nprior( - SpecPROSPECT, lambda, + SpecPROSPECT = NULL, Refl = NULL, Tran = NULL, OptWL_R = list(NIR = 800, SWIR = 1131), @@ -14,11 +14,11 @@ Get_Nprior( ) } \arguments{ +\item{lambda}{numeric. spectral bands corresponding to experimental data} + \item{SpecPROSPECT}{list. Includes optical constants refractive index, specific absorption coefficients and corresponding spectral bands} -\item{lambda}{numeric. spectral bands corresponding to experimental data} - \item{Refl}{numeric. Measured reflectance data} \item{Tran}{numeric. Measured Transmittance data} diff --git a/man/Invert_PROSPECT.Rd b/man/Invert_PROSPECT.Rd index 16d6765..85b3c6c 100644 --- a/man/Invert_PROSPECT.Rd +++ b/man/Invert_PROSPECT.Rd @@ -6,10 +6,10 @@ in order to define estimate a set of user defined parameters} \usage{ Invert_PROSPECT( - SpecPROSPECT, + SpecPROSPECT = NULL, Refl = NULL, Tran = NULL, - InitValues = data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0.01, EWT = 0.01, LMA = + InitValues = data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, EWT = 0.01, LMA = 0.01, PROT = 0.001, CBC = 0.009, N = 1.5, alpha = 40), Parms2Estimate = "ALL", PROSPECT_version = "D", @@ -17,7 +17,8 @@ Invert_PROSPECT( xlub = data.frame(CHL = c(1e-04, 150), CAR = c(1e-04, 25), ANT = c(0, 50), BROWN = c(0, 1), EWT = c(1e-08, 0.1), LMA = c(1e-08, 0.06), PROT = c(1e-07, 0.006), CBC = c(1e-06, 0.054), N = c(0.5, 4), alpha = c(10, 90)), - alphaEst = FALSE, + Est_Brown_Pigments = FALSE, + Est_alpha = FALSE, verbose = FALSE, progressBar = TRUE ) @@ -47,7 +48,9 @@ with given criterion to minimize (default = RMSE)} The data.frame must have columns corresponding to \code{Parms2Estimate} first line being the lower boundaries and second line the upper boundaries.} -\item{alphaEst}{boolean. should alpha be estimated or not?} +\item{Est_Brown_Pigments}{boolean. should brown pigments be accounted for during inversion?} + +\item{Est_alpha}{boolean. should alpha be accounted for during inversion?} \item{verbose}{boolean. set true to get info about adjustment of tolerance or initialization} diff --git a/man/Invert_PROSPECT_OPT.Rd b/man/Invert_PROSPECT_OPT.Rd index c7cd30f..2989955 100644 --- a/man/Invert_PROSPECT_OPT.Rd +++ b/man/Invert_PROSPECT_OPT.Rd @@ -6,8 +6,8 @@ prior information on N is provided if only Reflectance or only Transmittance is available} \usage{ Invert_PROSPECT_OPT( - SpecPROSPECT, lambda, + SpecPROSPECT = NULL, Refl = NULL, Tran = NULL, PROSPECT_version = "D", @@ -22,11 +22,11 @@ Invert_PROSPECT_OPT( ) } \arguments{ +\item{lambda}{numeric. spectral bands corresponding to experimental data} + \item{SpecPROSPECT}{list. Includes optical constants refractive index, specific absorption coefficients and corresponding spectral bands} -\item{lambda}{numeric. spectral bands corresponding to experimental data} - \item{Refl}{numeric. Measured reflectance data} \item{Tran}{numeric. Measured Transmittance data} diff --git a/man/Invert_PROSPECT_subdomain.Rd b/man/Invert_PROSPECT_subdomain.Rd index 3f7a3ff..cc693e9 100644 --- a/man/Invert_PROSPECT_subdomain.Rd +++ b/man/Invert_PROSPECT_subdomain.Rd @@ -19,7 +19,8 @@ Invert_PROSPECT_subdomain( 0.01, PROT = 0.001, CBC = 0.009, N = 1.5, alpha = 40), PROSPECT_version = "D", MeritFunction = "Merit_RMSE_PROSPECT", - alphaEst = FALSE, + Est_Brown_Pigments = FALSE, + Est_alpha = FALSE, xlub = data.frame(CHL = c(1e-04, 150), CAR = c(1e-04, 25), ANT = c(0, 50), BROWN = c(0, 1), EWT = c(1e-08, 0.1), LMA = c(1e-06, 0.06), PROT = c(1e-07, 0.006), CBC = c(1e-06, 0.054), N = c(0.5, 4), alpha = c(10, 90)), @@ -51,12 +52,14 @@ they are used either as initialization values for parameters to estimate, or as fix values for other parameters. Parameters not compatible with PROSPECT_version are not taken into account.} -\item{PROSPECT_version}{character. Version of prospect model used for the inversion: '5', '5B', 'D', 'DB', 'PRO', 'PROB'} +\item{PROSPECT_version}{character. Version of prospect model used for the inversion: 'D' or 'PRO'} \item{MeritFunction}{character. name of the function to be used as merit function with given criterion to minimize (default = RMSE)} -\item{alphaEst}{boolean. should alpha be estimated or not?} +\item{Est_Brown_Pigments}{boolean. should brown pigments be accounted for during inversion?} + +\item{Est_alpha}{boolean. should alpha be accounted for during inversion?} \item{xlub}{data.frame. Boundaries of the parameters to estimate. The data.frame must have columns corresponding to \code{Parms2Estimate} first line being diff --git a/man/OptDomain_RT.Rd b/man/OptDomain_RT.Rd new file mode 100644 index 0000000..23a07b5 --- /dev/null +++ b/man/OptDomain_RT.Rd @@ -0,0 +1,36 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/OptDomain_RT-data.R +\docType{data} +\name{OptDomain_RT} +\alias{OptDomain_RT} +\title{OptDomain_RT: optimal spectral domains defined to assess the different leaf +chemical constituents. +These optimal spectral domains were defined in +Féret et al. (2019) https://doi.org/10.1016/j.rse.2018.11.002 +Féret et al. (2021) https://doi.org/10.1016/j.rse.2020.112173 +Spafford et al. (2021) https://doi.org/10.1016/j.rse.2020.112176} +\format{ +A list including sequence of spectral bands corresponding to each +leaf constituent +\itemize{ +\item \emph{CHL}: optimal spectral domain for CHL +\item \emph{CAR}: optimal spectral domain for CAR +\item \emph{ANT}: optimal spectral domain for ANT +\item \emph{EWT}: optimal spectral domain for EWT +\item \emph{LMA}: optimal spectral domain for LMA +\item \emph{PROT}: optimal spectral domain for PROT +\item \emph{CBC}: optimal spectral domain for CBC +} +} +\usage{ +OptDomain_RT +} +\description{ +OptDomain_RT: optimal spectral domains defined to assess the different leaf +chemical constituents. +These optimal spectral domains were defined in +Féret et al. (2019) https://doi.org/10.1016/j.rse.2018.11.002 +Féret et al. (2021) https://doi.org/10.1016/j.rse.2020.112173 +Spafford et al. (2021) https://doi.org/10.1016/j.rse.2020.112176 +} +\keyword{datasets} diff --git a/man/PROSPECT.Rd b/man/PROSPECT.Rd index 7831b29..f406f55 100644 --- a/man/PROSPECT.Rd +++ b/man/PROSPECT.Rd @@ -3,11 +3,11 @@ \name{PROSPECT} \alias{PROSPECT} \title{core function running PROSPECT -This function allows simulations using PROSPECT-D or PROSPECT-PRO depending on -the parameterization.} +This function allows simulations using PROSPECT-D or PROSPECT-PRO depending +on the parameterization.} \usage{ PROSPECT( - SpecPROSPECT, + SpecPROSPECT = NULL, N = 1.5, CHL = 40, CAR = 8, @@ -21,8 +21,9 @@ PROSPECT( ) } \arguments{ -\item{SpecPROSPECT}{list. Includes optical constants -refractive index, specific absorption coefficients and corresponding spectral bands} +\item{SpecPROSPECT}{list. Includes spectral constants derived from +SpecPROSPECT_FullRange: refractive index, specific absorption coefficients +and corresponding spectral bands} \item{N}{numeric. Leaf structure parameter} @@ -49,6 +50,6 @@ leaf directional-hemispherical reflectance and transmittance } \description{ core function running PROSPECT -This function allows simulations using PROSPECT-D or PROSPECT-PRO depending on -the parameterization. +This function allows simulations using PROSPECT-D or PROSPECT-PRO depending +on the parameterization. } diff --git a/man/PROSPECT_LUT.Rd b/man/PROSPECT_LUT.Rd index dbb503c..12742aa 100644 --- a/man/PROSPECT_LUT.Rd +++ b/man/PROSPECT_LUT.Rd @@ -5,46 +5,13 @@ \title{computation of a LUT of leaf optical properties using a set of leaf chemical & structural parameters} \usage{ -PROSPECT_LUT( - SpecPROSPECT, - Input_PROSPECT = NULL, - N = NULL, - CHL = NULL, - CAR = NULL, - ANT = NULL, - BROWN = NULL, - EWT = NULL, - LMA = NULL, - PROT = NULL, - CBC = NULL, - alpha = NULL -) +PROSPECT_LUT(Input_PROSPECT, SpecPROSPECT = NULL) } \arguments{ -\item{SpecPROSPECT}{dataframe. Includes optical constants -refractive index, specific absorption coefficients and corresponding spectral bands} - \item{Input_PROSPECT}{dataframe. full list of PROSPECT input parameters. Default = Set to NULL} -\item{N}{numeric. Leaf structure parameter} - -\item{CHL}{numeric. Chlorophyll content (microg.cm-2)} - -\item{CAR}{numeric. Carotenoid content (microg.cm-2)} - -\item{ANT}{numeric. Anthocyain content (microg.cm-2)} - -\item{BROWN}{numeric. Brown pigment content (Arbitrary units)} - -\item{EWT}{numeric. Equivalent Water Thickness (g.cm-2)} - -\item{LMA}{numeric. Leaf Mass per Area (g.cm-2)} - -\item{PROT}{numeric. protein content (g.cm-2)} - -\item{CBC}{numeric. NonProtCarbon-based constituent content (g.cm-2)} - -\item{alpha}{numeric. Solid angle for incident light at surface of leaf} +\item{SpecPROSPECT}{list. spectral constants +refractive index, specific absorption coefficients & spectral bands} } \value{ list. LUT including leaf reflectance and transmittance diff --git a/man/SpecPROSPECT.Rd b/man/SpecPROSPECT.Rd deleted file mode 100644 index bce03a0..0000000 --- a/man/SpecPROSPECT.Rd +++ /dev/null @@ -1,28 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/SpecPROSPECT-data.R -\docType{data} -\name{SpecPROSPECT} -\alias{SpecPROSPECT} -\title{optical constants defined for PROSPECT} -\format{ -A dataframe including 2101 rows and 10 columns -\itemize{ -\item \emph{lambda}: wavelength, between 400 nm and 2500 nm -\item \emph{nrefrac}: refractive index -\item \emph{SAC_CHL}: specific absorption coefficient for chlorophylls -\item \emph{SAC_CAR}: specific absorption coefficient for carotenoids -\item \emph{SAC_ANT}: specific absorption coefficient for anthocyanins -\item \emph{SAC_BROWN}: specific absorption coefficient for brown pigmnts -\item \emph{SAC_EWT}: specific absorption coefficient for EWT/water -\item \emph{SAC_LMA}: specific absorption coefficient for LMA/dry matter -\item \emph{SAC_PROT}: specific absorption coefficient for proteins -\item \emph{SAC_CBC}: specific absorption coefficient for carbon-base constituents -} -} -\usage{ -SpecPROSPECT -} -\description{ -corresponds to spectral bands, refractive index and specific aborption coefficient -} -\keyword{datasets} diff --git a/man/SpecPROSPECT_FullRange.Rd b/man/SpecPROSPECT_FullRange.Rd new file mode 100644 index 0000000..1e77b90 --- /dev/null +++ b/man/SpecPROSPECT_FullRange.Rd @@ -0,0 +1,38 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/SpecPROSPECT_FullRange-data.R +\docType{data} +\name{SpecPROSPECT_FullRange} +\alias{SpecPROSPECT_FullRange} +\title{SpecPROSPECT_FullRange: optical constants defined for PROSPECT} +\format{ +A dataframe including 2101 rows and 10 columns +\itemize{ +\item \emph{lambda}: wavelength, between 400 nm and 2500 nm +\item \emph{nrefrac}: refractive index +\item \emph{SAC_CHL}: specific absorption coefficient for chlorophylls +\item \emph{SAC_CAR}: specific absorption coefficient for carotenoids +\item \emph{SAC_ANT}: specific absorption coefficient for anthocyanins +\item \emph{SAC_BROWN}: specific absorption coefficient for brown pigments +\item \emph{SAC_EWT}: specific absorption coefficient for water content (Equivalent Water Thickness) +\item \emph{SAC_LMA}: specific absorption coefficient for dry matter (Leaf Mass per Area) +\item \emph{SAC_PROT}: specific absorption coefficient for proteins +\item \emph{SAC_CBC}: specific absorption coefficient for carbon-base constituents +\item \emph{calctav_90}: transmissivity of a dielectric plane surface, averaged over all directions of incidence and over all polarizations for solid angle of 90 degrees +\item \emph{calctav_40}: transmissivity of a dielectric plane surface, averaged over all directions of incidence and over all polarizations for solid angle of 40 degrees +} +} +\usage{ +SpecPROSPECT_FullRange +} +\description{ +Corresponds to spectral bands, refractive index and specific absorption +coefficient for each chemica constituent, defined over the spectral domain +ranging from 400 nm to 2500 nm +} +\details{ +The specific absorption coefficients were calibrated using experimental data. +The details of the calibration should be found in the following publications: +http://dx.doi.org/10.1016/j.rse.2017.03.004 +https://doi.org/10.1016/j.rse.2020.112173 +} +\keyword{datasets} diff --git a/man/Warn_MissingInput.Rd b/man/Warn_MissingInput.Rd deleted file mode 100644 index 5f74093..0000000 --- a/man/Warn_MissingInput.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Lib_PROSPECT.R -\name{Warn_MissingInput} -\alias{Warn_MissingInput} -\title{Display warning message to inform about the parametrs default values -used during PROSPECT simulations} -\usage{ -Warn_MissingInput(Input_PROSPECT, ExpectedParms) -} -\arguments{ -\item{Input_PROSPECT}{list. Input parameters sent to PROSPECT by user} - -\item{ExpectedParms}{list. Full set of parameters expected to run PROSPECT} -} -\value{ -WhichMissing missing parameters -} -\description{ -Display warning message to inform about the parametrs default values -used during PROSPECT simulations -} diff --git a/man/calctav.Rd b/man/calctav.Rd index 09e7740..44f1b88 100644 --- a/man/calctav.Rd +++ b/man/calctav.Rd @@ -8,7 +8,7 @@ averaged over all directions of incidence and over all polarizations.} calctav(alpha, nr) } \arguments{ -\item{alpha}{numeric. Maximum incidence angle defining the solid angle of incident light} +\item{alpha}{numeric. max incidence angle of solid angle of incident light} \item{nr}{numeric. refractive index} } diff --git a/man/check_prospect_parms.Rd b/man/check_prospect_parms.Rd index 96e0b46..a232664 100644 --- a/man/check_prospect_parms.Rd +++ b/man/check_prospect_parms.Rd @@ -6,8 +6,9 @@ \usage{ check_prospect_parms( PROSPECT_version, - alphaEst, Parms2Estimate, + Est_Brown_Pigments, + Est_alpha, xlub, InitValues ) @@ -16,10 +17,12 @@ check_prospect_parms( \item{PROSPECT_version}{character. Version of prospect model used for the inversion: '5', '5B', 'D', 'DB', 'PRO', 'PROB', See details.} -\item{alphaEst}{boolean. should alpha be estimated or not?} - \item{Parms2Estimate}{character vector. Parameters to estimate (can be 'ALL')} +\item{Est_Brown_Pigments}{boolean. should brown pigments be accounted for during inversion?} + +\item{Est_alpha}{boolean. should alpha be accounted for during inversion?} + \item{xlub}{data.frame. Boundaries of the parameters to estimate. The data.frame must have columns corresponding to \code{Parms2Estimate} first line being the lower boundaries and second line the upper boundaries.} diff --git a/man/check_version_prospect.Rd b/man/check_version_prospect.Rd new file mode 100644 index 0000000..14ed0d1 --- /dev/null +++ b/man/check_version_prospect.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Lib_PROSPECT.R +\name{check_version_prospect} +\alias{check_version_prospect} +\title{This function checks if the input parameters are defined as expected +to run either PROSPECT-D or PROSPECT-PRO} +\usage{ +check_version_prospect(LMA, PROT, CBC) +} +\arguments{ +\item{LMA}{numeric. content corresponding to LMA} + +\item{PROT}{numeric. content corresponding to protein content} + +\item{CBC}{numeric. content corresponding to carbon based constituents} +} +\value{ +list. updated LMA, PROT and CBC +} +\description{ +This function checks if the input parameters are defined as expected +to run either PROSPECT-D or PROSPECT-PRO +} diff --git a/man/colour_to_ansi.Rd b/man/colour_to_ansi.Rd new file mode 100644 index 0000000..7fa2c17 --- /dev/null +++ b/man/colour_to_ansi.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Lib_PROSPECT.R +\name{colour_to_ansi} +\alias{colour_to_ansi} +\title{Convert plain text colour to ANSI code} +\usage{ +colour_to_ansi(colour) +} +\arguments{ +\item{colour}{colour in plain text ("red", "green", etc.) to convert to ANSI} +} +\value{ +string representing provided colour as ANSI encoding +} +\description{ +Convert plain text colour to ANSI code +} +\examples{ +colour_to_ansi("red") # gives: "\033[31m" +} diff --git a/man/optimal_features_SFS.Rd b/man/optimal_features_SFS.Rd index 1dcb1c4..70c6d42 100644 --- a/man/optimal_features_SFS.Rd +++ b/man/optimal_features_SFS.Rd @@ -22,7 +22,7 @@ optimal_features_SFS( number_features, PROSPECT_version = "D", MeritFunction = "Merit_RMSE_PROSPECT", - alphaEst = FALSE, + Est_alpha = FALSE, verbose = FALSE, nbCPU = 1, Continue = FALSE, @@ -66,7 +66,7 @@ Assumes 1nm spectral sampling} \item{MeritFunction}{character. name of the function to be used as merit function with given criterion to minimize (default = RMSE)} -\item{alphaEst}{boolean. should alpha be estimated or not?} +\item{Est_alpha}{boolean. should alpha be estimated or not?} \item{verbose}{boolean. set to TRUE to display sample number to be inverted} diff --git a/man/plotinv.Rd b/man/plotinv.Rd deleted file mode 100644 index 558847b..0000000 --- a/man/plotinv.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Lib_PROSPECT_Inversion.R -\name{plotinv} -\alias{plotinv} -\title{Function plotting results of PROSPECT inversion for a given biophysical property} -\usage{ -plotinv( - BP_df, - Labs = NULL, - MinMax = NULL, - Colors = NULL, - stats = TRUE, - filename = NULL -) -} -\arguments{ -\item{BP_df}{dataframe. should include fields 'estimated', 'measured', and 'config'} - -\item{Labs}{character. labels for X and Y axes} - -\item{MinMax}{numeric. min and max axis values} - -\item{Colors}{character. colors corresponding to the different configurations in BP_df} - -\item{stats}{boolean. should statistics be displayed on figure} - -\item{filename}{character. path for the file to be saved} -} -\value{ -plotxy ggplot object -} -\description{ -Function plotting results of PROSPECT inversion for a given biophysical property -} diff --git a/man/print_msg.Rd b/man/print_msg.Rd new file mode 100644 index 0000000..f5546a4 --- /dev/null +++ b/man/print_msg.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Lib_PROSPECT_Inversion.R +\name{print_msg} +\alias{print_msg} +\title{Function printing message +\itemize{ +\item if leaf optics do not match with spectral domain +\item if leaf optics do not match with expected data class +\item if confusion is identified for prospect version to use +\item if missing input variables during PROSPECT_LUT simulations +}} +\usage{ +print_msg(cause, args = NULL) +} +\arguments{ +\item{cause}{character. cause raising message print} + +\item{args}{list. optional arguments used to print message} +} +\value{ +none +} +\description{ +Function printing message +\itemize{ +\item if leaf optics do not match with spectral domain +\item if leaf optics do not match with expected data class +\item if confusion is identified for prospect version to use +\item if missing input variables during PROSPECT_LUT simulations +} +} diff --git a/man/print_msg_classLOP.Rd b/man/print_msg_classLOP.Rd deleted file mode 100644 index f6c7a56..0000000 --- a/man/print_msg_classLOP.Rd +++ /dev/null @@ -1,14 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Lib_PROSPECT_Inversion.R -\name{print_msg_classLOP} -\alias{print_msg_classLOP} -\title{Function priniting message if leaf optics do not match with expected data class} -\usage{ -print_msg_classLOP() -} -\value{ -none -} -\description{ -Function priniting message if leaf optics do not match with expected data class -} diff --git a/man/print_msg_lengthLOP.Rd b/man/print_msg_lengthLOP.Rd deleted file mode 100644 index a609286..0000000 --- a/man/print_msg_lengthLOP.Rd +++ /dev/null @@ -1,14 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Lib_PROSPECT_Inversion.R -\name{print_msg_lengthLOP} -\alias{print_msg_lengthLOP} -\title{Function priniting message if leaf optics do not match with spectral domain} -\usage{ -print_msg_lengthLOP() -} -\value{ -none -} -\description{ -Function priniting message if leaf optics do not match with spectral domain -} diff --git a/paper/paper.bib b/paper/paper.bib index 605af86..e472634 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -109,3 +109,67 @@ @article{spafford2021 year = {2021}, pages = {112176}, } + + +@article{jay_physically-based_2016, + title = {A physically-based model for retrieving foliar biochemistry and leaf orientation using close-range imaging spectroscopy}, + volume = {177}, + issn = {00344257}, + url = {http://linkinghub.elsevier.com/retrieve/pii/S0034425716300566}, + doi = {10.1016/j.rse.2016.02.029}, + language = {en}, + urldate = {2016-06-14}, + journal = {Remote Sensing of Environment}, + author = {Jay, Sylvain and Bendoula, Ryad and Hadoux, Xavier and Féret, Jean-Baptiste and Gorretta, Nathalie}, + month = may, + year = {2016}, + pages = {220--236}, +} + + +@article{jacquemoud_prospect+_2009, + title = {{PROSPECT}+ {SAIL} models: {A} review of use for vegetation characterization}, + volume = {113}, + shorttitle = {{PROSPECT}+ {SAIL} models}, + url = {http://www.sciencedirect.com/science/article/pii/S0034425709000765}, + doi = {doi:10.1016/j.rse.2008.01.026}, + urldate = {2016-01-03}, + journal = {Remote Sensing of Environment}, + author = {Jacquemoud, Stéphane and Verhoef, Wout and Baret, Frédéric and Bacour, Cédric and Zarco-Tejada, Pablo J. and Asner, Gregory P. and François, Christophe and Ustin, Susan L.}, + year = {2009}, + pages = {S56--S66}, + file = {[PDF] from csic.es:C\:\\Users\\Feret\\Zotero\\storage\\76ATRJNN\\Jacquemoud et al. - 2009 - PROSPECT+ SAIL models A review of use for vegetat.pdf:application/pdf;Snapshot:C\:\\Users\\Feret\\Zotero\\storage\\UX33MX6F\\S0034425709000765.html:text/html}, +} + + +@article{verhoef_coupled_2007, + title = {Coupled soil–leaf-canopy and atmosphere radiative transfer modeling to simulate hyperspectral multi-angular surface reflectance and {TOA} radiance data}, + volume = {109}, + issn = {00344257}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S0034425707000077}, + doi = {10.1016/j.rse.2006.12.013}, + language = {en}, + number = {2}, + urldate = {2023-04-25}, + journal = {Remote Sensing of Environment}, + author = {Verhoef, Wout and Bach, Heike}, + month = jul, + year = {2007}, + pages = {166--182}, +} + + +@article{verhoef_unified_2007, + title = {Unified optical-thermal four-stream radiative transfer theory for homogeneous vegetation canopies}, + volume = {45}, + issn = {0196-2892}, + url = {http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4215093}, + doi = {10.1109/TGRS.2007.895844}, + number = {6}, + urldate = {2016-01-30}, + journal = {IEEE Transactions on Geoscience and Remote Sensing}, + author = {Verhoef, Wout and Jia, Li and Xiao, Qing and Su, Z.}, + month = jun, + year = {2007}, + pages = {1808--1822}, +} diff --git a/paper/paper.md b/paper/paper.md index 7dadbba..0ffd4aa 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -24,157 +24,222 @@ bibliography: paper.bib # Summary -PROSPECT simulates leaf optical properties (LOP) -based on a limited set of light absorbing chemical constituents, and a unique leaf -structure parameter to account for light scattering. -We present `prospect`, an R package which includes the most recent versions of the model, -complemented with multiple inversion routines to assess leaf chemistry from LOP. +PROSPECT simulates leaf optical properties based on a limited set of light +absorbing chemical constituents, and a unique leaf structure parameter to +account for light scattering. +We present `prospect`, an R package which includes the most recent versions +of the model, complemented with multiple inversion routines to assess leaf +chemistry from leaf optical properties. # Statement of need -LOP are linked to their biophysical properties through absorption -and scattering mechanisms. PROSPECT takes advantage of specific absorption coefficients from chemical constituents -such as leaf pigments, water and proteins, and uses a simplified representation of leaf structure -through the generalised plate model [@allen1970] to simulate leaf directional-hemispherical -reflectance and transmittance. -The capacity to measure, map and monitor vegetation chemical traits from leaf to canopy scale -is key to better understand ecosystems and agrosystems functions, as well as carbon, water and energy budgets. -Models and methods taking advantage of optical measurements to assess these core constituents are -important components in this perspective. - -Techniques based on spectroscopy have developed in the past decades to provide a -rapid, accurate and non-destructive estimation of leaf chemical composition. -Physical models aim at simulating LOP corresponding to this chemical composition, but they can -also be used to assess chemical composition from LOP based on inversion techniques. - -Multiple versions aiming at expanding the pool of chemical constituents accounted for by PROSPECT -have been released since its first version [@jacquemoud1990]. -Successive versions introduced carotenoids [@feret2008] and anthocyanins [@feret2017], to simulate -LOP from juvenile to mature and senescent development stages. -The latest version, PROSPECT-PRO, separates dry matter constituents into proteins and carbon based constituents [@feret2021] . -In parallel with the updated versions of the model, model inversion strategies are also developed -to improve the estimation of leaf chemical constituents [@feret2019; @spafford2021]. - -To ensure access to latest advances in terms of model version and inversion strategies, -the R package `prospect` includes the most recent versions of PROSPECT, -and parameterizable inversion routines, allowing users to design and test their own inversion strategy. +The capacity to measure, map and monitor vegetation traits corresponding to +biophysical and chemical properties is crucial to better understand ecosystem +and agrosystem functions, as well as carbon, water and energy budgets. +At leaf scale, these vegetation traits are linked to their +optical properties through absorption and scattering mechanisms. +Techniques based on spectroscopy have developed in the past decades to provide +rapid, accurate and non-destructive assessment of leaf chemical composition. +Physical models aim at simulating optical properties of leaves from their +chemical composition, and they are also used to assess chemical composition +from leaf optical properties based on inversion techniques. +The model PROSPECT (leaf optical PROperties SPECtra) is currently the most popular +physical model used for the simulation of leaf optical properties. +PROSPECT simulates leaf directional-hemispherical reflectance and transmittance +from a combination of chemical constituents and their corresponding specific +absorption coefficients. +It uses a simplified representation of leaf structure through the generalised +plate model [@allen1970] to account for scattering. +PROSPECT is also coupled with canopy reflectance models to analyze Earth +observation data, such as satellite imagery. Hence, it is a key component for +remote sensing applications dedicated to vegetation monitoring. + +Multiple versions aiming at expanding the pool of chemical constituents accounted +for by PROSPECT have been released since its first version [@jacquemoud1990]. +Successive versions introduced carotenoids [@feret2008] and anthocyanins [@feret2017], +to simulate leaf optical properties from juvenile to mature and senescent +development stages. +The latest version, PROSPECT-PRO, separates dry matter constituents into +proteins and carbon based constituents [@feret2021]. +In parallel with the updated versions of the model, model inversion strategies +are also developed to improve the assessment of leaf chemical constituents +[@feret2019; @spafford2021]. + +An overview of different implementations of PROSPECT since [@feret2008] is +currently maintained at [this webpage](http://teledetection.ipgp.jussieu.fr/prosail/). +This includes distributions in matlab, R and fortran programming languages. +It also provides links to distribution corresponding to the coupling of PROSPECT +with vegetation models such as COSINE dedicated to close-range imaging +spectroscopy [@jay_physically-based_2016] and PROSAIL for canopy reflectance modeling +[verhoef_coupled_2007, @verhoef_unified_2007, @jacquemoud_prospect+_2009]. +Note that PROSPECT is also available in packages written in [python](https://github.com/jgomezdans/prosail), +[Julia](https://github.com/RemoteSensingTools/CanopyOptics.jl) and [R](https://github.com/ashiklom/rrtm). + +The R package `prospect` includes recent versions of PROSPECT, and aims +at providing up-to-date developments in terms of model version and inversion strategies. +This includes parameterizable inversion routines, to ease physical model inversion +for beginners, and to help advanced users in designing and testing their own +inversion strategy. # Overview -Two versions of the model PROSPECT are implemented in `prospect`: PROSPECT-D and -PROSPECT-PRO. For each version, it is also possible to account for brown pigments, -which appear during senescence, by ending the name of the version with `B`. -Table \ref{table:1} provides an overview of the leaf chemical constituents included in the different -versions which can be specified when calling the function `PROSPECT`. - -| Version | `D` | `DB` | `PRO` | `PROB`| -|--------- |------ |:----: |:----: |:----: | -| CHL | **X** | **X** | **X** | **X** | -| CAR | **X** | **X** | **X** | **X** | -| ANT | **X** | **X** | **X** | **X** | -| EWT | **X** | **X** | **X** | **X** | -| LMA | **X** | **X** | | | -| PROT | | | **X** | **X** | -| CBC | | | **X** | **X** | -| BROWN | | **X** | | **X** | +## PROSPECT simulation in forward mode + +The application of PROSPECT in forward mode results in the simulation of leaf +directional-hemispherical reflectance and transmittance from a set of +chemical constituents and a unique leaf structure parameter usually identified as `N` +and corresponding to the number of homogeneous layers introduced in the +generalized plate model. + +Two versions of the model PROSPECT are implemented in `prospect`: PROSPECT-D +[@feret2017] and PROSPECT-PRO [@feret2021]. +Table \ref{table:1} lists the leaf chemical constituents included in the +different versions which can be specified when calling the function `PROSPECT`. + +| Version | `D` | `PRO` | +|--------- |:----: |:----: | +| CHL | **X** | **X** | +| CAR | **X** | **X** | +| ANT | **X** | **X** | +| BROWN | **X** | **X** | +| EWT | **X** | **X** | +| LMA | **X** | | +| PROT | | **X** | +| CBC | | **X** | : Versions of the model PROSPECT available in the `prospect` package and corresponding chemical constituents (CHL: chlorophylls; CAR: carotenoids; -ANT: anthocyanins; EWT: equivalent water thickness; LMA: leaf mass per area; -PROT: proteins; CBC: carbon based constituents; -BROWN: brown pigments).\label{table:1} - -The inversion procedure is based on an optimization algorithm aiming at finding the minimum of multivariable -functions with nonlinear constraints. Table \ref{table:2} provides information on the optimal spectral range used to assess leaf -chemical constituents from their optical properties, as identified by [@feret2019; @spafford2021]. - -| Constituent | Optimal spectral domain | Versions | -|------------ |--------------------------------- |:---------------------: | -| CHL | 700 -- 720 | `D`, `DB`, `PRO`, `PROB` | -| CAR | 520 -- 560 | `D`, `DB`, `PRO`, `PROB` | -| ANT | 400 -- 800 | `D`, `DB`, `PRO`, `PROB` | -| BROWN | NA | NA | -| EWT | 1700 -- 2400 | `D`, `DB`, `PRO`, `PROB` | -| LMA | 1700 -- 2400 | `D`, `DB` | -| PROT | 2100 -- 2139 ; 2160 -- 2179 | `PRO`, `PROB` | +ANT: anthocyanins; BROWN: brown pigments; EWT: equivalent water thickness; +LMA: leaf mass per area; PROT: proteins; CBC: carbon based constituents).\label{table:1} + +As PROSPECT is a relatively simple and computationally efficient model, +iterative optimization is the most widespread method to invert PROSPECT +and assess leaf chemistry and structure from their optical properties. +Iterative optimization aims at minimizing a cost function comparing +measured and simulated leaf optical properties. +This procedure is based on the function `fmincon` included in the package `pracma`. + +Various inversion strategies using iterative optimization are described in the literature. +These inversion strategies differ either by the cost function, or by the +selection of specific spectral domains used to retrieve one or several leaf +biophysical properties, or by the introduction of prior information. +The default cost function, `CostVal_RMSE`, corresponds to the root mean square +of the mean quadratic difference between measured and simulated leaf optical +properties (reflectance and/or transmittance). +Users can define their own cost function. +Table \ref{table:2} provides information on the optimal spectral range used to +assess leaf chemical constituents from their optical properties, as identified +by [@feret2019; @spafford2021]. + +| Constituent | Optimal spectral domain | Versions | +|------------ |--------------------------------- |:-----------: | +| CHL | 700 -- 720 | `D`, `PRO` | +| CAR | 520 -- 560 | `D`, `PRO` | +| ANT | 400 -- 800 | `D`, `PRO` | +| BROWN | NA | NA | +| EWT | 1700 -- 2400 | `D`, `PRO` | +| LMA | 1700 -- 2400 | `D` | +| PROT | 2100 -- 2139 ; 2160 -- 2179 | `PRO` | | CBC | 1480 -- 1499; 1560 -- 1579; 1760 -- 1799; 2040 -- 2059; 2120 -- 2139; 2160 -- 2239; 2260 -- 2279; 2340 -- 2359; 2380 -- 2399 | `PRO`, `PROB` | -: Optimal spectral domains selected to assess vegetation chemical constituents from leaf -optical properties (CHL: chlorophylls; CAR: carotenoids; -ANT: anthocyanins; EWT: equivalent water thickness; LMA: leaf mass per area; -PROT: proteins; CBC: carbon based constituents; -BROWN: brown pigments).\label{table:2} +: Optimal spectral domains selected to assess vegetation chemical constituents + from leaf optical properties (CHL: chlorophylls; CAR: carotenoids; +ANT: anthocyanins; BROWN: brown pigments; EWT: equivalent water thickness; +LMA: leaf mass per area; PROT: proteins; CBC: carbon based constituents).\label{table:2} # Example 1: running PROSPECT in forward mode ## Individual simulations -PROSPECT simulates leaf directional-hemispherical reflectance -and transmittance from the leaf structure parameter and a combination of chemical -constituents when running in forward mode. -The variable `SpecPROSPECT` is accessible as a data frame in the R environment when loading `prospect`. -`SpecPROSPECT` includes the leaf refractive index and all specific absorption coefficients -defined in the spectral range from 400 nm to 2500 nm. +PROSPECT simulates leaf directional-hemispherical reflectance and transmittance +from the leaf structure parameter and a combination of chemical constituents +when running in forward mode. +PROSPECT relies on specific absorption coefficients corresponding to each +chemical constituent accounted for by the model, and on +the leaf refractive index. +These optical constants are identical for all leaves, and are defined over the +spectral domain ranging from 400 nm to 2500 nm. +They are accessible through the variable `SpecPROSPECT_FullRange`, a data frame +which is automatically loaded with the package. +Multiple functions in the package `prospect` expect a variable `SpecPROSPECT` as input. +`SpecPROSPECT_FullRange` is used as default value when this input variable is not defined. +Users can adjust `SpecPROSPECT_FullRange` in order to adjust the spectral characteristics +for simulation, including spectral domain, sampling or sensor-specicif spectral response. These two examples illustrate how to run PROSPECT. -The function `PROSPECT` identifies the version to be used: PROSPECT-D is used if LMA is defined, -while PROSPECT-PRO is used if proteins (PROT) and carbon based constituents (CBC) are defined. -If LMA, PROT and CBC are defined simultaneously, PROSPECT-PRO is used and LMA is set to 0. -Figure \ref{fig:LOP} compares simulated LOP. Here, the differences between PROSPECT-D and PROSPECT-PRO -are mainly driven by the difference set for the `N` structure parameter. +The function `PROSPECT` identifies the version to be used: PROSPECT-D is used +if LMA is defined, while PROSPECT-PRO is used if proteins (PROT) and carbon +based constituents (CBC) are defined. +If LMA, PROT and CBC are defined simultaneously, PROSPECT-PRO is used and LMA +is set to 0. +Figure \ref{fig:LOP} compares simulated leaf optical properties. +Here, the differences between PROSPECT-D and PROSPECT-PRO are mainly driven by the +difference set for the `N` structure parameter. ```r # Load prospect package library(prospect) # Run PROSPECT-D -LRT_D <- PROSPECT(SpecPROSPECT, CHL = 45, CAR = 10, ANT = 0.2, +LRT_D <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, LMA = 0.010, N = 1.3) # Run PROSPECT-PRO -LRT_PRO <- PROSPECT(SpecPROSPECT, CHL = 45, CAR = 10, ANT = 0.2, - EWT = 0.012, PROT = 0.001, CBC = 0.009, N = 1.7) +LRT_PRO <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, + EWT = 0.012, PROT = 0.001, CBC = 0.009, N = 1.7) ``` ![Leaf optical properties simulated with PROSPECT-D and PROSPECT-PRO. Different values of N were defined to highlight differences in simulated leaf optics \label{fig:LOP}](compare_RT_PROSPECT_PRO_D.png){ width=85% } +The spectral domain covered with PROSPECT simulations can be adjusted with the function +`FitSpectralData`, which adjust information from `SpecPROSPECT_FullRange` to a user-defined +spectral domain. + +```r +# define spectral bands for Visible / Near InfraRed (VNIR) simulation +wvlRange_VNIR <- seq(400,1000) +# adjust spectral properties used in PROSPECT to VNIR domain +VNIR <- FitSpectralData(lambda = wvlRange_VNIR) +# Run PROSPECT-D in VNIR domain +LRT_VNIR <- PROSPECT(SpecPROSPECT = VNIR$SpecPROSPECT, + N = 1.4, CHL = 30, CAR = 6, EWT = 0.02, LMA = 0.01) +``` + ## Simulation of a Look-Up-Table Look-Up-Tables (LUTs) are widely used in order to infer leaf characteristics from PROSPECT. The function `PROSPECT_LUT` computes a LUT based on a list of input parameters. -Undefined parameters are set to their default value. Vectors of values are expected to be the same length. -The output of `PROSPECT_LUT` is a list containing a data frame including the input parameters, -a reflectance matrix and a transmittance matrix. +Undefined parameters are set to their default value. Vectors of values are expected +to be the same length. +The output of `PROSPECT_LUT` is a list containing a data frame including the +input parameters, a reflectance data frame and a transmittance data frame. ```r -CHL <- 100*runif(1000); CAR <- 25*runif(1000) -ANT <- 2*runif(1000); EWT <- 0.04*runif(1000) -LMA <- 0.02*runif(1000); N <- 1+2*runif(1000) -Input_PROSPECT <- data.frame('CHL' = CHL, 'CAR' = CAR, 'ANT' = ANT, - 'EWT' = EWT, 'LMA' = LMA, 'N' = N) -LUT <- PROSPECT_LUT(SpecPROSPECT,Input_PROSPECT) +# define input parametrs for PROSPECT +Input_PROSPECT <- data.frame('CHL' = 100*runif(1000), + 'CAR' = 25*runif(1000), + 'ANT' = 2*runif(1000), + 'EWT' = 0.04*runif(1000), + 'LMA' = 0.02*runif(1000), + 'N' = 1+2*runif(1000)) +# produce a LUT defined over the VSWIR domain covered by PROSPECT +LUT <- PROSPECT_LUT(Input_PROSPECT = Input_PROSPECT) +# produce a LUT defined over the VNIR domain +LUT_VNIR <- PROSPECT_LUT(SpecPROSPECT = VNIR$SpecPROSPECT, + Input_PROSPECT = Input_PROSPECT) ``` -# Example 2: PROSPECT inversion using iterative optimization - -Several approaches can be used to perform PROSPECT inversion. As PROSPECT is a relatively simple and -computationally efficient model, inversion based on iterative optimization is one of the most popular -method to invert PROSPECT and assess leaf chemistry and structure from their optical properties. -Here, the iterative optimization is based on the minimization of a multivariable function with nonlinear constraints. -This procedure is based on the function `fmincon` included in the package `pracma`. -Various inversion strategies can be found in the literature. -These inversion strategies differ either by the cost function, or by the -selection of specific spectral domains aiming at optimizing the retrieval of one or several -leaf biophysical properties, or by the introduction of prior information. +# Example 2: PROSPECT inversion using iterative optimization The package `prospect` offers possibilities to adjust these parameters for inversion. -Here, we will illustrate different types of inversion with an experimental database named __ANGERS__. -This database was used to calibrate the model PROSPECT, and is among the most popular public -data sets in the domain of leaf spectroscopy. +Here, we will illustrate different types of inversion with an experimental database +named __ANGERS__. +This database was used to calibrate the model PROSPECT, and is among the most +popular public data sets in the domain of leaf spectroscopy. ## Downloading the ANGERS experimental dataset -A version of the ANGERS data set can be directly downloaded from a gitlab repository with R. +A version of the ANGERS data set can be downloaded from a gitlab repository. ```r # use data.table library @@ -182,39 +247,46 @@ library(data.table) # download ANGERS leaf optics database from gitlab repository gitlab_Rep <- 'https://gitlab.com/jbferet/myshareddata/raw/master/LOP' # download leaf biochemical constituents and leaf optical properties -fileName <- list('DataBioch.txt','ReflectanceData.txt','TransmittanceData.txt') -DataBioch <- data.table::fread(file.path(gitlab_Rep,'ANGERS',fileName[[1]])) -Refl<- data.table::fread(file.path(gitlab_Rep,'ANGERS',fileName[[2]])) -Tran <- data.table::fread(file.path(gitlab_Rep,'ANGERS',fileName[[3]])) +DataBioch <- data.table::fread(file.path(gitlab_Rep,'ANGERS/DataBioch.txt')) +Refl<- data.table::fread(file.path(gitlab_Rep,'ANGERS/ReflectanceData.txt')) +Tran <- data.table::fread(file.path(gitlab_Rep,'ANGERS/TransmittanceData.txt')) # Get the wavelengths corresponding to reflectance and transmittance measurements -lambda <- unlist(Refl$wavelength, use.names=FALSE) +lambda <- Refl$wavelength Refl$wavelength <- Tran$wavelength <- NULL ``` ## PROSPECT inversion using the full spectral information -The spectral domains covered by `SpecPROSPECT` and the leaf optical properties are expected to match -when performing inversion on the full spectral domain covered by the data. -The function `FitSpectralData` automatically adjusts `SpecPROSPECT` and the leaf optical properties -based on a `UserDomain` vector corresponding to the wavelengths of interest. +The spectral domains covered by `SpecPROSPECT` and the leaf optical properties +are expected to match when performing inversion on the full spectral domain +covered by the data. +The function `FitSpectralData` automatically harmonizes the spectral domain +for `SpecPROSPECT` and for the leaf optical properties. +`UserDomain` corresponding to the wavelengths of interest can also be provided in addition. Here the following R code aims at adjusting `SpecPROSPECT` based on the spectral domain covered by the leaf optical properties. ```r # Adjust spectral domain for SpecPROSPECT to fit leaf optical properties -SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, +SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT_FullRange, Refl = Refl, Tran = Tran, lambda = lambda, UserDomain = lambda) ``` -The main inversion procedure is called with the function `Invert_PROSPECT`, which minimizes a cost function. -The default cost function, `CostVal_RMSE`, corresponds to the root mean square of the mean quadratic difference between -measured and simulated leaf optical properties (either reflectance and transmittance, or one of them only). -Users can define their own cost function. They can also select the biophysical properties to assess: -The full set (`Parms2Estimate` set to `ALL`) or a reduced set of variables to assess can -be defined in `Parms2Estimate`. The value set for parameters which are not estimated is then defined -with the `InitValues` input variable. +The main inversion procedure is called with the function `Invert_PROSPECT`, +which minimizes a cost function. +They can also select the biophysical +properties to assess: + +The full set or a selection of chemical constituents can be assessed from +PROSPECT inversion. +This list of parameters is defined with the variable `Parms2Estimate`. +The default parameterization of PROSPECT inversion assesses all parmeters +listed in Table \ref{table:1} except BROWN, which can be assessed by setting +`Est_Brown_Pigments = TRUE` as input for `Invert_PROSPECT`. +The value set for parameters which are not assessed is then defined with +the `InitValues` input variable. ```r # Assess all parameters using PROSPECT inversion applied to full spectral data @@ -225,23 +297,24 @@ res_all_WL <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, ## PROSPECT inversion using optimal spectral domains for each constituent -The function `Invert_PROSPECT_OPT` performs PROSPECT inversion using optimal spectral domains -defined in [@feret2019; @spafford2021]. The optimal spectral domains are specific to each constituent, -and the function automatically adjusts the spectral domain of the leaf optical properties provided +The function `Invert_PROSPECT_OPT` performs PROSPECT inversion using optimal +spectral domains defined in [@feret2019; @spafford2021]. +The optimal spectral domains are specific to each constituent, and the function +automatically adjusts the spectral domain of the leaf optical properties provided by user. ```r # Assess a set of parameters using PROSPECT inversion with optimal spectral domains Parms2Estimate <- c('CHL', 'CAR', 'EWT', 'LMA') -res_opt_WL <- Invert_PROSPECT_OPT(SpecPROSPECT = SpecPROSPECT, lambda = lambda, - Refl = Refl, Tran = Tran, +res_opt_WL <- Invert_PROSPECT_OPT(lambda = lambda, + Refl = Refl, Tran = Tran Parms2Estimate = Parms2Estimate) ``` ## Performances of the two types of inversion: Comparison with ANGERS data Figure \ref{fig:scatter} displays the outputs of the inversion obtained either from -`Invert_PROSPECT` or from `Invert_PROSPECT_OPT`, in a single scatterplot for each +`Invert_PROSPECT` or from `Invert_PROSPECT_OPT` for each leaf chemical constituent. ![Estimation of chlorophyll content, carotenoid content, EWT and LMA from PROSPECT inversion applied on the ANGERS data set. `full WL` corresponds to the inversion performed with the full spectral information (function `Invert_PROSPECT`); `opt WL` corresponds to the inversion performed with the optimal spectral information (function `Invert_PROSPECT_OPT`). \label{fig:scatter}](PROSPECT_Inversions.png){ width=90% } @@ -252,20 +325,31 @@ We have described `prospect`, an R package dedicated to the PROSPECT leaf model. `prospect` can run different versions of the model in direct mode to simulate directional-hemispherical reflectance and transmittance. `prospect` also includes inversion routines to assess leaf structure and chemical -constituent content either from directional-hemispherical reflectance and transmittance, -or from reflectance or transmittance only. -`prospect` provides latest advances in terms of model version and inversion procedures -to the leaf spectroscopy community. +constituent content either from directional-hemispherical reflectance and +transmittance, or from reflectance or transmittance only. +`prospect` provides latest advances in terms of model version and inversion +procedures to the leaf spectroscopy community. +`prospect` is coupled with the canopy model SAIL through the R package [`prosail`](https://jbferet.gitlab.io/prosail/index.html). +`prosail` is dedicated to applications focusing on Earth observation imagery analysis +and allows simulation of canopy reflectance for multispectral and hyperspectral sensors. +Hybrid inversions based on physical modeling and machine learning are also implemented +in `prosail` to assess vegetation traits from imagery data. # Availability -prospect is an open-source software package made available under the GPL-3.0 license. It can be installed through GitHub repository: remotes::install_github("jbferet/prospect"). Tutorials are available at [https://jbferet.gitlab.io/prospect/](https://jbferet.gitlab.io/prospect/). +prospect is an open-source software package made available under the MIT license. +It can be installed through GitHub repository: remotes::install_github("jbferet/prospect"). +Tutorials are available at [https://jbferet.gitlab.io/prospect/](https://jbferet.gitlab.io/prospect/). # Acknowledgements -The authors acknowledge financial support from Agence Nationale de la Recherche (BioCop project — ANR-17-CE32-0001) -We are grateful to Stéphane Jacquemoud and Frédéric Baret for the development of the initial version of -the PROSPECT model. We also warmly thank Luc Bidel, Christophe François and Gabriel Pavan who collected the ANGERS data set. +The authors acknowledge financial support from Agence Nationale de la Recherche +(BioCop project — ANR-17-CE32-0001) +We are grateful to Stéphane Jacquemoud and Frédéric Baret for the development of +the initial version of the PROSPECT model. +We also warmly thank Luc Bidel, Christophe François and Gabriel Pavan who +collected the ANGERS data set. # References +0 \ No newline at end of file diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 0000000..1535ac9 --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,12 @@ +# This file is part of the standard setup for testthat. +# It is recommended that you do not modify it. +# +# Where should you do additional test configuration? +# Learn more about the roles of various files in: +# * https://r-pkgs.org/testing-design.html#sec-tests-files-overview +# * https://testthat.r-lib.org/articles/special-files.html + +library(testthat) +library(prospect) + +test_check("prospect") diff --git a/tests/testthat/test-Invert_PROSPECT.R b/tests/testthat/test-Invert_PROSPECT.R new file mode 100644 index 0000000..f0fa631 --- /dev/null +++ b/tests/testthat/test-Invert_PROSPECT.R @@ -0,0 +1,26 @@ +test_that("PROSPECT-D inversion produces accurate biophysical assessment", { + BPinit <- list(N = 1.3, CHL = 20, CAR = 5, ANT = 0.2, + EWT = 0.015, LMA = 0.008) + lrt <- PROSPECT(N = BPinit$N, CHL = BPinit$CHL, CAR = BPinit$CAR, + ANT = BPinit$ANT, EWT = BPinit$EWT, LMA = BPinit$LMA) + leafBP <- Invert_PROSPECT(Refl = lrt$Reflectance, + Tran = lrt$Transmittance) + expect_true(abs(leafBP$N-BPinit$N)<1e-5) + expect_true(abs(leafBP$CHL-BPinit$CHL)<1e-4) + expect_true(abs(leafBP$CAR-BPinit$CAR)<1e-4) + expect_true(abs(leafBP$ANT-BPinit$ANT)<1e-4) + expect_true(abs(leafBP$EWT-BPinit$EWT)<1e-6) + expect_true(abs(leafBP$LMA-BPinit$LMA)<1e-6) + + lrt$Reflectance <- lrt$Reflectance*(1+rnorm(length(lrt$Reflectance),0,0.01)) + lrt$Transmittance <- lrt$Transmittance*(1+rnorm(length(lrt$Transmittance),0,0.01)) + + leafBP <- Invert_PROSPECT(Refl = lrt$Reflectance, + Tran = lrt$Transmittance) + expect_true(abs(leafBP$N-BPinit$N)<1e-3) + expect_true(abs(leafBP$CHL-BPinit$CHL)<1e-1) + expect_true(abs(leafBP$CAR-BPinit$CAR)<1e-1) + expect_true(abs(leafBP$ANT-BPinit$ANT)<1e-1) + expect_true(abs(leafBP$EWT-BPinit$EWT)<1e-4) + expect_true(abs(leafBP$LMA-BPinit$LMA)<1e-4) +}) diff --git a/tests/testthat/test-Invert_PROSPECT_OPT.R b/tests/testthat/test-Invert_PROSPECT_OPT.R new file mode 100644 index 0000000..b161b33 --- /dev/null +++ b/tests/testthat/test-Invert_PROSPECT_OPT.R @@ -0,0 +1,25 @@ +test_that("PROSPECT-D inversion over optimal domains produces accurate biophysical assessment", { + BPinit <- list(N = 1.3, CHL = 20, CAR = 5, ANT = 0.2, + EWT = 0.015, LMA = 0.008) + lrt <- PROSPECT(N = BPinit$N, CHL = BPinit$CHL, CAR = BPinit$CAR, + ANT = BPinit$ANT, EWT = BPinit$EWT, LMA = BPinit$LMA) + leafBP <- Invert_PROSPECT_OPT(lambda = lrt$wvl, + Refl = lrt$Reflectance, + Tran = lrt$Transmittance, + Parms2Estimate = c('CHL', 'CAR', 'EWT', 'LMA')) + expect_true(abs(leafBP$CHL-BPinit$CHL)<1e-0) + expect_true(abs(leafBP$CAR-BPinit$CAR)<1e-1) + expect_true(abs(leafBP$EWT-BPinit$EWT)<1e-7) + expect_true(abs(leafBP$LMA-BPinit$LMA)<1e-7) + + lrt$Reflectance <- lrt$Reflectance*(1+rnorm(length(lrt$Reflectance),0,0.01)) + lrt$Transmittance <- lrt$Transmittance*(1+rnorm(length(lrt$Transmittance),0,0.01)) + leafBPopt <- Invert_PROSPECT_OPT(lambda = lrt$wvl, + Refl = lrt$Reflectance, + Tran = lrt$Transmittance, + Parms2Estimate = c('CHL', 'CAR', 'EWT', 'LMA')) + expect_true(abs(leafBPopt$CHL-BPinit$CHL)<1e-0) + expect_true(abs(leafBPopt$CAR-BPinit$CAR)<1e-0) + expect_true(abs(leafBPopt$EWT-BPinit$EWT)<1e-4) + expect_true(abs(leafBPopt$LMA-BPinit$LMA)<1e-4) +}) diff --git a/tests/testthat/test-PROSPECT.R b/tests/testthat/test-PROSPECT.R new file mode 100644 index 0000000..01ab4ff --- /dev/null +++ b/tests/testthat/test-PROSPECT.R @@ -0,0 +1,10 @@ +test_that("PROSPECT-D produces physically possible values", { + lrt <- PROSPECT() + expect_true(all(lrt$Reflectance >= 0)) + expect_true(all(lrt$Reflectance <= 1)) + expect_true(all(lrt$Transmittance >= 0)) + expect_true(all(lrt$Transmittance <= 1)) + expect_true(all(lrt$Transmittance <= 1)) + expect_true(length(lrt$Reflectance)==length(lrt$Transmittance)) + expect_true(length(lrt$Reflectance)==2101) +}) diff --git a/vignettes/prospect1.Rmd b/vignettes/prospect1.Rmd index 885df33..230ac44 100644 --- a/vignettes/prospect1.Rmd +++ b/vignettes/prospect1.Rmd @@ -38,9 +38,16 @@ knitr::opts_chunk$set( # Running `prospect` in forward mode ### Input variables -The function `PROSPECT` runs PROSPECT for individual samples and expects the following input variables. +The function `PROSPECT` runs the model PROSPECT to simulate leaf directional-hemispherical reflectance and transmittance from a set of chemical constituents and a structure parameter. The leaf optical properties are simulated over a spectral domain defined between 400 nm and 2500 nm, with a maximum spectral sampling of 1 nm. + +`PROSPECT` uses the following input variables: + +* `SpecPROSPECT`: a data frame including the refractive index and specific absorption coefficients (which are optical constants for a given version of PROSPECT). +** `SpecPROSPECT` alo defines the spectral domain used for simulation. +** The default value of `SpecPROSPECT` is defined by `prospect::SpecPROSPECT_FullRange`, which includes optical constants over the spectral domain ranging from 400 nm to 2500 nm. +** Simulation and inversion on different spectral domains (reduced spectral range and/or adjusted spectral sampling) can be performed by adapting the information in `SpecPROSPECT`. + -* `SpecPROSPECT`: dataframe including the refractive index and specific absorption ceofficients, defined for a given spectral range (max range: 400 nm - 2500 nm). simulation and inversion on different spectral domains can be peformed by adapting the information in `SpecPROSPECT` * The biochemical and biophysical input variables of PROSPECT are :
@@ -60,46 +67,58 @@ The function `PROSPECT` runs PROSPECT for individual samples and expects the fol ### Output variables -`PROSPECT` returns a list containing directional-hemispherical reflectance and transmittance (`reflectance` and `transmittance`) corresponding to the input variables, and the corresponding wavelengths in the list element `wvl`. +The `PROSPECT` function returns a data frame containing leaf directional-hemispherical reflectance and transmittance (`reflectance` and `transmittance`) and the corresponding wavelengths (`wvl`) as defined in `SpecPROSPECT`. ### run PROSPECT using default parameters over the full range from 400 nm to 2500 nm + +When run without input parameters, `PROSPECT` is run with default values: +* `SpecPROSPECT` is defined by `prospect::SpecPROSPECT_FullRange` +* the default values of the structural and chemical parameters are set. + ```{r prospect direct mode default} library(prospect) -LRT_default <- PROSPECT(SpecPROSPECT) +LRT_default <- PROSPECT() +# the following command is equivalent for simulation over the full spectral domain +LRT_default <- PROSPECT(SpecPROSPECT = prospect::SpecPROSPECT_FullRange) + ``` -### run PROSPECT using user defined set of parameters over the full range from 400 nm to 2500 nm -Default values are set for undeclared parameters +### run PROSPECT with user defined parameters over the 400-2500 nm range +Part or all of the input parameters can be provided as input parameters. +Default values are set for undeclared parameters. +This example simulates leaf optics over the full visible to shortwave infrared domain defined in PROSPECT. ```{r prospect direct mode VSWIR} -LRT_VSWIR <- PROSPECT(SpecPROSPECT,N = 1.4,CHL = 30,CAR = 6,EWT = 0.02,LMA = 0.01) +LRT_VSWIR <- PROSPECT(N = 1.4, CHL = 30, CAR = 6, EWT = 0.02, LMA = 0.01) ``` -### run PROSPECT using user defined spectral domain -Following the same definition of the input parameters, user only has to adjust the spectral range from `SpecPROSPECT`. -`SpecPROSPECT$lambda` contains the spectral bands for the different optical constants. +### run PROSPECT with user defined spectral domain +The spectral range in `SpecPROSPECT$lambda` defines the simulated spectral domain. +It can be adjusted with the function `FitSpectralData`. + +`FitSpectralData` can also be used to match the spectral range and sampling of input data with those of the optical constants. ```{r prospect direct mode VNIR} # define the spectral range for simulations in the VNIR from 400 to 1000 nm -# identify closest spectral bands to the boundaries -# (please adjust if you need strict inclusion / excusion of bands) -wvlRange = list() -wvlRange$lb <- which(abs(SpecPROSPECT$lambda-400)==min(abs(SpecPROSPECT$lambda-400))) -wvlRange$ub <- which(abs(SpecPROSPECT$lambda-1000)==min(abs(SpecPROSPECT$lambda-1000))) -SpecPROSPECT_VNIR <- SpecPROSPECT[wvlRange$lb:wvlRange$ub,] -LRT_VNIR <- PROSPECT(SpecPROSPECT_VNIR,N = 1.4,CHL = 30,CAR = 6,EWT = 0.02,LMA = 0.01) +wvlRange <- seq(400,1000) +# adjust spectral properties used in PROSPECT to VNIR domain +Adjust_VNIR <- FitSpectralData(lambda = wvlRange) +LRT_VNIR <- PROSPECT(SpecPROSPECT = Adjust_VNIR$SpecPROSPECT, + N = 1.4, CHL = 30, CAR = 6, EWT = 0.02, LMA = 0.01) ``` # Comparison between PROSPECT-PRO and PROSPECT-D -PROSPECT-PRO is the latest official version released. However, you may not be interested in all these input biochemical constituents. +PROSPECT-D is the most commonly used version of PROSPECT, combining all dry matter constituents in a unique chemical constituent. +The absorption of this chemical constituent is accounted for through the variable `LMA`. -Still, __we recommend using PROSPECT-PRO and selecting the constituents of interest, performances should correspond to your expectations__. - -#### PROSPECT-D +PROSPECT-PRO is the latest official version released. The only difference between PROSPECT-PRO and PROSPECT-D is that LMA is divided into proteins and CBC. Therefore, the default values in `prospect` correspond to calling PROSPECT-D, as `PROT` and `CBC` are set to 0. -Keep in mind that either `LMA` or `PROT` and `CBC` should be set to 0. A message will be displayed if it is not the case: +When calling `PROSPECT`, either `LMA` or `PROT` and `CBC` should be set to 0, or undefined. +A message will be displayed if it is not the case: ```{r message mix PROSPECT-D and PROSPECT-PRO} +LRT_confusion_version <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, + LMA = 0.01, PROT = 0.001, N =1.3) 'PROT and/or CBC are not set to 0 LMA is not set to 0 neither, which is physically incorrect (LMA = PROT + CBC) @@ -107,19 +126,18 @@ We assume that PROSPECT-PRO was called and set LMA to 0 Please correct input parameters LMA, PROT and/or CBC if needed' ``` +#### PROSPECT-D + Here is an example to run PROSPECT-D: ```{r run PROSPECT-D} -CHL <- 45; CAR <- 10; ANT <- 0.2 -EWT <- 0.012; LMA <- 0.010; N <- 1.3 -LRT_D <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,LMA=LMA,N=N) +LRT_D <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, + EWT = 0.012, LMA = 0.01, N =1.3) ``` and another one with PROSPECT-PRO, which should lead to very similar leaf optics: ```{r run PROSPECT-PRO} -CHL <- 45; CAR <- 10; ANT <- 0.2 -EWT <- 0.012; LMA <- 0.000; N <- 1.3 -PROT <- 0.001; CBC <- 0.009; -LRT_PRO <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,PROT=PROT,CBC=CBC,N=N) +LRT_PRO <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, + PROT = 0.001, CBC = 0.009, N =1.3) ``` The resulting leaf optical properties are, indeed, very similar: @@ -135,13 +153,10 @@ The resulting leaf optical properties are, indeed, very similar: while using proteins only instead of proteins + CBC to simulate LMA leads to different results: ```{r run PROSPECT-PRO2} -CHL <- 45; CAR <- 10; ANT <- 0.2 -EWT <- 0.012; LMA <- 0.000; N <- 1.3 -PROT <- 0.010; CBC <- 0.000; -LRT_PRO2 <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,PROT=PROT,CBC=CBC,N=N) +LRT_PRO2 <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, + PROT = 0.010, CBC = 0.0, N = 1.3) ``` -

 

@@ -154,13 +169,11 @@ LRT_PRO2 <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,PROT=PROT,CBC= On the other hand, using CBC only instead of proteins + CBC to simulate LMA leads to very similar results compared to simulation with PROSPECT-D. -This is explained by the low proportion of poteins compared to CBC in he total comntribution to LMA, and the very similar specific absorption coefficient between LMA and CBC. This also highlights the challenges for the proper estimation of proteines from LOP. +This is explained by the low proportion of proteins compared to CBC in the total contribution to LMA, and the very similar specific absorption coefficient between LMA and CBC. This also highlights the challenges for the proper estimation of proteins from LOP. ```{r run PROSPECT-PRO3} -CHL <- 45; CAR <- 10; ANT <- 0.2 -EWT <- 0.012; LMA <- 0.000; N <- 1.3 -PROT <- 0.000; CBC <- 0.010; -LRT_PRO3 <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,PROT=PROT,CBC=CBC,N=N) +LRT_PRO3 <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, + PROT = 0.000, CBC = 0.010, N = 1.3) ``` @@ -178,25 +191,31 @@ LRT_PRO3 <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,PROT=PROT,CBC= If you want to run previous versions of PROSPECT: -* __We do not recommend using PROSPECT-4 or PROSPECT-5__, as the calibration of the refractive index along with specific absorption coefficients for chlorophyls and carotenoids resulted in artifacts in the VIS domain. +* __We do not recommend using PROSPECT-4 or PROSPECT-5__, as the calibration of the refractive index along with specific absorption coefficients for chlorophylls and carotenoids resulted in artifacts in the VIS domain. -* However if you are not interested in anthocyanins, the default value for `ANT` is 0.0, so simulating leaf optics without `ANT` should do the job. +* If you want to account for the absorption of chlorophylls and carotenoids, but do not want to include anthocyanins (as it is the case for PROSPECT-5): calling `PROSPECT` with no input `ANT` will set its default value to 0. -* If you do not want to differentiate chlorophylls and carotenoids, we recommend that you use PROSPECT-PRO and set `CAR` as a constant fraction of `CHL`. +* If you do not want to differentiate chlorophylls and carotenoids (as it is the case for PROSPECT-4 and earlier versions): we recommend that you use PROSPECT and set `CAR` as a constant fraction of `CHL`. # Computing a Look-Up-Table with `prospect` -Look-Up-Tables (LUT) are widely used in order to infer leaf charactristics from PROSPECT, based on minimization techniques. The function `PROSPECT_LUT` allows computation of a LUT directly based on a list of input parameters. +Look-Up-Tables (LUT) are widely used in order to infer leaf characteristics from PROSPECT, based on minimization techniques. The function `PROSPECT_LUT` allows computation of a LUT directly based on a data frame of input parameters. -The following example produces a LUT with the function `PROSPECT_LUT` of `prospect`. Undefined parameters are set to their default value; Vectors of values are expected to be the same length. +The following example produces LUTs in the VSWIR and VNIR domains with the function `PROSPECT_LUT` of `prospect`. +Undefined parameters will be automatically set to their default value. ```{r prospect LUT} -CHL <- 100*runif(1000) -CAR <- 25*runif(1000) -ANT <- 2*runif(1000) -EWT <- 0.04*runif(1000) -LMA <- 0.02*runif(1000) -N <- 1+2*runif(1000) -Input_PROSPECT <- data.frame('CHL'=CHL,'CAR'=CAR,'ANT'=ANT,'EWT'=EWT,'LMA'=LMA,'N'=N) -LUT <- PROSPECT_LUT(SpecPROSPECT,Input_PROSPECT) +Input_PROSPECT <- data.frame('CHL' = 100*runif(1000), + 'CAR' = 25*runif(1000), + 'ANT' = 2*runif(1000), + 'EWT' = 0.04*runif(1000), + 'LMA' = 0.02*runif(1000), + 'N' = 1+2*runif(1000)) +# produce a LUT defined over the VSWIR domain covered by PROSPECT +LUT <- PROSPECT_LUT(Input_PROSPECT = Input_PROSPECT) + +# produce a LUT defined over the VNIR domain defined previously +LUT_VNIR <- PROSPECT_LUT(SpecPROSPECT = Adjust_VNIR$SpecPROSPECT, + Input_PROSPECT = Input_PROSPECT) + ``` diff --git a/vignettes/prospect2.Rmd b/vignettes/prospect2.Rmd index 7822775..6116485 100644 --- a/vignettes/prospect2.Rmd +++ b/vignettes/prospect2.Rmd @@ -28,12 +28,15 @@ knitr::opts_chunk$set( # Running `prospect` in inverse mode: generalities -`PROSPECT` can be inverted using iterative optimization, by calling the function `Invert_PROSPECT`. This iterative optimization is based on the function [`fmincon` included in the package `pracma`](https://rdrr.io/cran/pracma/man/fmincon.html). +`PROSPECT` can be inverted using iterative optimization, by calling the function `Invert_PROSPECT`. +This iterative optimization is based on the function [`fmincon` included in the package `pracma`](https://rdrr.io/cran/pracma/man/fmincon.html). By default, the merit function used for the inversion minimizes the RMSE between the simulated and the measured leaf optical properties. However, users can define their own merit function with associated criterion to minimize by defining their own merit function and adding it as input variable, such as `MeritFunction = MyOwnMeritFunction`. -The results of inversion will also depend on the prospect version, i.e. on the parameters included in the prospect model. The following table shows the correspondance between prospect versions and prospect parameters. Each parameter can be considered as parameter to estimate or a fix value in the model, depending on the apriori knowledge. +The results of inversion will also depend on the prospect version, i.e. on the parameters included in the prospect model. +The following table shows the correspondence between prospect versions and prospect parameters. +Each parameter can be considered as parameter to estimate or a fix value in the model, depending on the prior knowledge. | Version | 5 | 5B | D | DB | PRO | PROB | :------: |:--------------------------------------:|:--------------------------------------:|:--------------------------------------:|:--------------------------------------:|:--------------------------------------:|:---------------------------------------:| @@ -52,18 +55,27 @@ The function `Invert_PROSPECT` requires either reflectance, or transmittance, or User can define which input variables of `PROSPECT` should be estimated during inversion, and which ones should be set to a given value (0 or user's choice). The list of input variables for inversion is : -* `SpecPROSPECT`: data frame including the refractive index and specific absorption ceofficients, defined for a given spectral range (max range: 400 nm - 2500 nm). simulation and inversion on different spectral domains can be peformed by adapting the information in `SpecPROSPECT` +* `SpecPROSPECT`: data frame including the spectral bands, refractive index and specific absorption coefficients. +`SpecPROSPECT = NULL` uses the spectral domain from 400 nm to 2500 nm. +Simulation and inversion on different spectral domains can be performed by adjusting `SpecPROSPECT` * `Refl`: numeric: individual leaf reflectance corresponding to the spectral domain defined in `SpecPROSPECT`. Set to `NULL` if inversion on transmittance only * `Tran`: numeric: individual leaf transmittance corresponding to the spectral domain defined in `SpecPROSPECT`. Set to `NULL` if inversion on reflectance only * `Parms2Estimate` list. Parameters to estimate. Set to 'ALL' by default. -* `InitValues` data frame including initial values of PROSPECT input parameters. During optimization, they are used either as initialization values for parameters to estimate, or as fix values for other parameters. Parameters not compatible with PROSPECT_version are not taken into account. -* `PROSPECT_version` character. corresponds to the PROSPECT version. should be one of the following versions: '5', '5B', 'D', 'DB', 'PRO', 'PROB'. Use the vesion ending with 'B' if you want to estimate brown pigments. Versions '5' and '5B' are actually based on the specific absorption coefficients of chlorophylls and carotenoids, and the refractive index from PROSPECT-D. `ANT` is then set to 0 during inversion... +* `InitValues` data frame including initial values of PROSPECT input parameters. +During optimization, they are used either as initialization values for parameters to estimate, or as fix values for other parameters. +Parameters are not taken into account when not compatible with PROSPECT_version. +* `PROSPECT_version` character. Corresponds to the PROSPECT version. +Should be one of the following versions: '5', '5B', 'D', 'DB', 'PRO', 'PROB'. +Use the version ending with 'B' if you want to estimate brown pigments. +Versions '5' and '5B' are actually based on the specific absorption coefficients of chlorophylls and carotenoids, and the refractive index from PROSPECT-D. +`ANT` is then set to 0 during inversion. * `MeritFunction` character. name of the function to be used as merit function with given criterion to minimize (default = RMSE) -* `xlub` data.frame. Boundaries of the parameters to estimate. The data.frame must have columns corresponding to \code{Parms2Estimate} first line being the lower boundaries and second line the upper boundaries. -* `alphaEst` boolean. should `alpha` be estimated or not? Keep in mind that most published results use `alpha` with its default value. +* `xlub` data frame. Boundaries of the parameters to estimate. +The data frame must have columns corresponding to \code{Parms2Estimate} first line being the lower boundaries and second line the upper boundaries. +* `alphaEst` boolean. Should `alpha` be estimated or not? Keep in mind that most published results use `alpha` with its default value. ## Output variables -`Invert_PROSPECT` returns a list containing estimated values of PROSPECT input parameters +`Invert_PROSPECT` returns a list of estimated PROSPECT parameters defined in `Parms2Estimate`. ## Run PROSPECT-D inversion over the full spectral domain @@ -71,144 +83,147 @@ All parameters are estimated, except `alpha` and `BROWN` which are set to their ```{r prospect inverse mode 1} # simulate leaf optical properties -CHL <- 45; CAR <- 10; ANT <- 0.2 -EWT <- 0.012; LMA <- 0.010; N <- 1.3 -LRT_D <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,LMA=LMA,N=N) - +LRT_D <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, + EWT = 0.012, LMA = 0.01, N = 1.3) # define set of parameters to be estimated Parms2Estimate <- 'ALL' # define initial values for the inversion (should not impact final results) -InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) +InitValues <- data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) # invert PROSPECT with simulated leaf optical properties -OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT=SpecPROSPECT, - Refl = LRT_D$Reflectance, Tran = LRT_D$Transmittance, - Parms2Estimate = 'ALL', PROSPECT_version = 'D') +OutPROSPECT <- Invert_PROSPECT(Refl = LRT_D$Reflectance, + Tran = LRT_D$Transmittance, + InitValues = InitValues, + Parms2Estimate = Parms2Estimate, + PROSPECT_version = 'D') ``` ## Run PROSPECT-D inversion over the VNIR domain All parameters are estimated, except `alpha` and `BROWN` which are set to their default value. -The same optical properties as previous example are used. +`FitSpectralData` directly adjusts reflectance, transmittance and optical constants to user defined spectral bands. +These spectral bands should be integer values between 400 and 2500, and can be continuous or not. ```{r prospect inverse mode 2} -# define set of parameters to be estimated -Parms2Estimate <- 'ALL' -# define initial values for the inversion (should not impact final results) -InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) # define spectral subdomain from 400 nm to 800 nm -SpectralSubDomain <- c(400,800) -# adjust spectral domain -SubData <- FitSpectralData(SpecPROSPECT=SpecPROSPECT, lambda = LRT_D$wvl, - Refl = LRT_D$Reflectance, Tran = LRT_D$Transmittance, - UserDomain = SpectralSubDomain,UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran +SpectralSubDomain <- seq(400,800) +# adjust spectral domain for reflectance, transmittance and SpecPROSPECT +SubData <- FitSpectralData(lambda = LRT_D$wvl, + Refl = LRT_D$Reflectance, + Tran = LRT_D$Transmittance, + UserDomain = SpectralSubDomain) + +# Note that FitSpectralData can also run with UserDomain defining upper and lower bounds +# Then you will need to set UL_Bounds = TRUE +ULBounds <- c(400,800) +SubData <- FitSpectralData(lambda = LRT_D$wvl, + Refl = LRT_D$Reflectance, + Tran = LRT_D$Transmittance, + UserDomain = ULBounds, + UL_Bounds = TRUE) + # invert PROSPECT with simulated leaf optical properties -OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT = SubSpecPROSPECT, - Refl = SubRefl, Tran = SubTran, +OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl, + Tran = SubData$Tran, Parms2Estimate = Parms2Estimate, PROSPECT_version = 'D') ``` - ## Run PROSPECT-D inversion over the VNIR domain with LMA and EWT value set -Only pigments and `N` are estimated. The same optical properties as previous example are used. +Only pigments and `N` are estimated. +The same optical properties as previous example are used. ```{r prospect inverse mode 3} # define set of parameters to be estimated Parms2Estimate <- c("CHL", "CAR", "ANT", "N") -# define initial values for the inversion (should not impact final results) -InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) -# define spectral subdomain from 400 nm to 800 nm -SpectralSubDomain <- c(400,800) -# adjust spectral domain -SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, lambda = LRT_D$wvl, - Refl = LRT_D$Reflectance, Tran = LRT_D$Transmittance, - UserDomain = SpectralSubDomain, UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran +# define initial values for the inversion +InitValues <- data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) # invert PROSPECT with simulated leaf optical properties -OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT=SubSpecPROSPECT,Refl = SubRefl,Tran = SubTran, - Parms2Estimate = Parms2Estimate,PROSPECT_version = 'D') +OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl, + Tran = SubData$Tran, + Parms2Estimate = Parms2Estimate, + PROSPECT_version = 'D') ``` ## Run PROSPECT-D inversion over the SWIR domain between 1700 nm and 2400 nm -`EWT`, `LMA` and `N` are estimated. The same optical properties as previous example are used. +`EWT`, `LMA` and `N` are estimated. +The same optical properties as previous example are used. ```{r prospect inverse mode 4} # define set of parameters to be estimated Parms2Estimate <- c("EWT", "LMA", "N") -# define initial values for the inversion (should not impact final results) -InitValues <- data.frame(CHL=0, CAR=0, ANT=0, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) +# define initial values for the inversion +InitValues <- data.frame(CHL = 0, CAR = 0, ANT = 0, BROWN = 0, + EWT = 0.01, LMA = 0.008, N = 1.5) # define spectral subdomain -SpectralSubDomain <- c(1700,2400) +SpectralSubDomain <- seq(1700,2400) # adjust spectral domain -SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, lambda = LRT_D$wvl, - Refl = LRT_D$Reflectance, Tran = LRT_D$Transmittance, - UserDomain = SpectralSubDomain, UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran +SubData <- FitSpectralData(lambda = LRT_D$wvl, + Refl = LRT_D$Reflectance, + Tran = LRT_D$Transmittance, + UserDomain = SpectralSubDomain) + # invert PROSPECT with simulated leaf optical properties -OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT=SubSpecPROSPECT, - Refl = SubRefl, Tran = SubTran, - Parms2Estimate = Parms2Estimate, +OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + InitValues = InitValues, + Refl = SubData$Refl, + Tran = SubData$Tran, + Parms2Estimate = Parms2Estimate, PROSPECT_version = 'D') ``` # Invert PROSPECT-D using the optimal configuration for the estimation of leaf constituents The function `Invert_PROSPECT_OPT` automatically sets the optimal spectral domains during inversion for all constituents to be estimated. -Optimal spectral domains and configuration are defined in [Féret et al. (2019)](https://www.sciencedirect.com/science/article/abs/pii/S0034425718305030), [Féret et al. (2020)](https://arxiv.org/abs/2003.11961), and Spafford et al. (2020, submitted). +Optimal spectral domains and configuration are defined in [Féret et al. (2019)](https://doi.org/10.1016/j.rse.2018.11.002), [Féret et al. (2021)](https://doi.org/10.1016/j.rse.2020.112173), and [Spafford et al. (2021)](https://doi.org/10.1016/j.rse.2020.112176). `N` does not need to be part of `Parms2Estimate`, as it is automatically estimated when needed. ```{r prospect inverse mode 5} # define set of parameters to be estimated -Parms2Estimate = c('CHL','CAR','ANT','EWT','LMA') -# define initial values for the inversion (should not impact final results) -InitValues <- data.frame(CHL=40, CAR=8, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) +Parms2Estimate <- c('CHL','CAR','ANT','EWT','LMA') +# define initial values for the inversion +InitValues <- data.frame(CHL = 40, CAR = 8, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) # call Invert_PROSPECT_OPT in order to automaticall get optimal estimation of leaf parameters following latest published results -ParmEst <- Invert_PROSPECT_OPT(SpecPROSPECT=SpecPROSPECT, lambda=LRT_D$wvl, - Refl = LRT_D$Reflectance,Tran = LRT_D$Transmittance, +ParmEst <- Invert_PROSPECT_OPT(lambda = LRT_D$wvl, + Refl = LRT_D$Reflectance, + Tran = LRT_D$Transmittance, PROSPECT_version = 'D', Parms2Estimate = Parms2Estimate, InitValues = InitValues) ``` ### run PROSPECT-PRO inversion -Such definition of optimal spectral domains can also be set manually. For example, here is how to estimate proteins from leaf optical properties using the optimal spectral domain defined in [Féret et al. (2019)](https://www.sciencedirect.com/science/article/abs/pii/S0034425718305030). +Such definition of optimal spectral domains can also be set manually. +For example, here is how to estimate protein content from leaf optical properties using the optimal spectral domain defined in [Féret et al. (2021)](https://doi.org/10.1016/j.rse.2020.112173). Please note that `N` needs to be added to `Parms2Estimate`, if user want it to be estimated during the inversion, otherwise it will be set to its default value. ```{r prospect inverse mode 6} # simulate leaf optical properties -CHL <- 45; CAR <- 10; ANT <- 0.2 -EWT <- 0.012; LMA <- 0.000; N <- 1.3; -PROT <- 0.002; CBC <- 0.015; -LRT_PRO <- PROSPECT(SpecPROSPECT,CHL=CHL,CAR=CAR,ANT=ANT,EWT=EWT,LMA=LMA,N=N,PROT=PROT,CBC = CBC) +LRT_PRO <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, + PROT = 0.002, CBC = 0.015, N = 1.3) # define spectral subdomain SpectralSubDomain <- c(2125,2175) # adjust spectral domain -SubData <- FitSpectralData(SpecPROSPECT=SpecPROSPECT, lambda=LRT_PRO$wvl, - Refl = LRT_PRO$Reflectance, Tran = LRT_PRO$Transmittance, - UserDomain = SpectralSubDomain, UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran +SubData <- FitSpectralData(lambda = LRT_PRO$wvl, + Refl = LRT_PRO$Reflectance, + Tran = LRT_PRO$Transmittance, + UserDomain = SpectralSubDomain, + UL_Bounds = TRUE) Parms2Estimate <- c("EWT", "PROT", "CBC", "N") - # invert PROSPECT with simulated leaf optical properties -OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT=SubSpecPROSPECT,Refl = SubRefl, Tran = SubTran, - Parms2Estimate = Parms2Estimate, PROSPECT_version = 'PRO') +OutPROSPECT <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl, + Tran = SubData$Tran, + Parms2Estimate = Parms2Estimate, + PROSPECT_version = 'PRO') ``` diff --git a/vignettes/prospect3.Rmd b/vignettes/prospect3.Rmd index e296c44..18d307f 100644 --- a/vignettes/prospect3.Rmd +++ b/vignettes/prospect3.Rmd @@ -27,11 +27,14 @@ knitr::opts_chunk$set( ``` +This tutorial aims at describing a real study case using experimental leaf optics. +The ANGERS leaf dataset is used here. + # Download ANGERS datasets The ANGERS dataset is available online and can be downloaded directly wih an R script. -This dataset includes both reflectance and transmittance data, as well as a set of mesured chemical constituents, including `CHL`,`CAR`,`EWT`, and `LMA`. - +This dataset includes directional-hemispherical reflectance and transmittance. +It also includes a set of measured chemical constituents: `CHL`,`CAR`,`EWT`, and `LMA`. ```{r get ANGERS} # Libraries required @@ -43,56 +46,45 @@ gitlab_Rep <- 'https://gitlab.com/jbferet/myshareddata/raw/master/LOP/' dbName <- 'ANGERS' # files available fileName <- list('DataBioch.txt','ReflectanceData.txt','TransmittanceData.txt') -DataBioch <- Refl <- Tran <- list() -DataBioch <- fread(paste(gitlab_Rep,dbName,'/',fileName[[1]],sep='')) -Refl<- fread(paste(gitlab_Rep,dbName,'/',fileName[[2]],sep='')) -Tran <- fread(paste(gitlab_Rep,dbName,'/',fileName[[3]],sep='')) +DataBioch <- fread(file.path(gitlab_Rep,dbName,fileName[[1]])) +Refl <- fread(file.path(gitlab_Rep,dbName,fileName[[2]])) +Tran <- fread(file.path(gitlab_Rep,dbName,fileName[[3]])) # Get the wavelengths corresponding to the reflectance and transmittance measurements -lambda <- unlist(Refl[,1], use.names=FALSE) -Refl <- Refl[,-1] -Tran <- Tran[,-1] +lambda <- Refl$wavelength +Refl$wavelength <- NULL +Tran$wavelength <- NULL # Get the number of samples nbSamples <- ncol(Refl) ``` # Inversion of PROSPECT-D using full spectral information -Once the datasets are imported, PROSPECT-D can be inverted using the full spectral domain available, corresponding to the domain from 400 nm to 2450 nm. -CAB, CAR, ANT, EWT, and LMA will be estimated. +PROSPECT-D can be inverted using the full spectral domain available from the data. +This corresponds to the domain from 400 nm to 2450 nm. +Experimental leaf optics and optical constants of PROSPECT need to be adjusted before running `Invert_PROSPECT`. +`CAB`, `CAR`, `ANT`, `EWT`, and `LMA` are estimated when setting `Parms2Estimate <- 'ALL'` ```{r Invert PROSPECT-D Full} # Estimate all parameters for PROSPECT-D -Parms2Estimate = 'ALL' -CHL_ALL <- CAR_ALL <- ANT_ALL <- EWT_ALL <- LMA_ALL <- N_ALL <- c() -InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) -# Adjust spectral domain for SpecPROSPECT to fit leaf optical properties -SubData <- FitSpectralData(SpecPROSPECT=SpecPROSPECT,lambda=lambda, - Refl = Refl, Tran = Tran, - UserDomain = c(lambda[1],tail(lambda,n = 1)), - UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran - +Parms2Estimate <- 'ALL' +InitValues <- data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) +# adjust PROSPECT optical constants and experimental leaf optics before inversion +SubData <- FitSpectralData(lambda = lambda, + Refl = Refl, + Tran = Tran) print('PROSPECT inversion using full spectral range') -res <- Invert_PROSPECT(SpecPROSPECT = SubSpecPROSPECT, - Refl = SubRefl, Tran = SubTran, +res <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl, + Tran = SubData$Tran, PROSPECT_version = 'D', Parms2Estimate = Parms2Estimate, InitValues = InitValues) -CHL_ALL <- res$CHL -CAR_ALL <- res$CAR -ANT_ALL <- res$ANT -EWT_ALL <- res$EWT -LMA_ALL <- res$LMA -N_ALL <- res$N - ``` ## Results: estimation of `CHL`, `CAR`, `EWT` and `LMA` -The results obtained with `prospect` are consistent with results obtained with the Matlab function fmincon, although slightly longer to process. +Results obtained with the R package `prospect` and matlab implementation are consistent.

@@ -103,7 +95,7 @@ The results obtained with `prospect` are consistent with results obtained with t

- Fig. 1. Estimation of `CHL`, `CAR`, `EWT` and `LMA` from ANGERS using PROSPECT-D inversion and full spectral information available. + Fig. 1. `CHL`, `CAR`, `EWT` and `LMA` assessed from ANGERS dataset using PROSPECT-D inversion and full spectral information available.

 

@@ -115,19 +107,16 @@ CAB, CAR, ANT, EWT, and LMA can be estimated. However, no optimal spectral domai ```{r Invert PROSPECT-D Opt} # Estimate all parameters for PROSPECT-D -Parms2Estimate = c('CHL','CAR','ANT','EWT','LMA') -# Parms2Estimate = c('LMA') -InitValues <- data.frame(CHL=40, CAR=8, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) +Parms2Estimate <- c('CHL','CAR','ANT','EWT','LMA') +InitValues <- data.frame(CHL = 40, CAR = 8, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) print('PROSPECT inversion using optimal setting') -ParmEst <- Invert_PROSPECT_OPT(SpecPROSPECT = SpecPROSPECT, lambda = lambda, - Refl = Refl, Tran = Tran, PROSPECT_version = 'D', +ParmEst <- Invert_PROSPECT_OPT(lambda = lambda, + Refl = Refl, + Tran = Tran, + PROSPECT_version = 'D', Parms2Estimate = Parms2Estimate, InitValues = InitValues) -CHL_OPT <- ParmEst$CHL -CAR_OPT <- ParmEst$CAR -ANT_OPT <- ParmEst$ANT -EWT_OPT <- ParmEst$EWT -LMA_OPT <- ParmEst$LMA ``` ## Results: estimation of `CHL`, `CAR`, `EWT` and `LMA` diff --git a/vignettes/prospect4.Rmd b/vignettes/prospect4.Rmd index b4bdf4a..cc9331d 100644 --- a/vignettes/prospect4.Rmd +++ b/vignettes/prospect4.Rmd @@ -29,14 +29,17 @@ knitr::opts_chunk$set( # Download LOPEX datasets -The leaf optical properties used in Feret et al. 2020 are available online and can be downloaded directly wih an R script. -They corespond to the LOPEX dataset, split into 4 specific datasets: +The leaf optical properties used in [Féret et al. (2021)](https://doi.org/10.1016/j.rse.2020.112173) are available online. +These datasets are produced from the LOPEX dataset, split into four specific subsets: * __LOPEX_DRY_CAL__ and __LOPEX_FRESH_CAL__ correspond to the dry and fresh samples extracted from the LOPEX dataset and used for the __calibration__ of __PROSPECT-PRO__ * __LOPEX_DRY_VAL__ and __LOPEX_FRESH_VAL__ correspond to the dry and fresh samples extracted from the LOPEX dataset and used for the __validation__ of __PROSPECT-PRO__ -These datasets include both reflctance and transmittance data, as well as a set of mesured checmical constituents, including `EWT`, `LMA`, `PROT` and `CBC`. +These datasets include directional-hemispherical reflectance and transmittance data. +They also include a set of measured chemical constituents: `EWT`, `LMA`, `PROT` and `CBC`. + +The datasets can be downloaded directly with an R script as described below. ```{r get LOPEX} @@ -50,61 +53,46 @@ dbName <- list('LOPEX_DRY_CAL','LOPEX_FRESH_CAL','LOPEX_DRY_VAL','LOPEX_FRESH_VA # files available fileName <- list('DataBioch.txt','ReflectanceData.txt','TransmittanceData.txt') # download LOPEX data -DataBioch <- Refl <- Tran <- list() -i = 0 +DataBioch <- Refl <- Tran <- lambda <- list() for (db in dbName){ - DataBioch[[db]] <- fread(paste(gitlab_Rep,db,'/',fileName[[1]],sep='')) - Refl[[db]] <- fread(paste(gitlab_Rep,db,'/',fileName[[2]],sep='')) - Tran[[db]] <- fread(paste(gitlab_Rep,db,'/',fileName[[3]],sep='')) + DataBioch[[db]] <- fread(file.path(gitlab_Rep,db,fileName[[1]])) + Refl[[db]] <- fread(file.path(gitlab_Rep,db,fileName[[2]])) + Tran[[db]] <- fread(file.path(gitlab_Rep,db,fileName[[3]])) + lambda[[db]] <- Refl[[db]]$wavelength + Refl[[db]]$wavelength <- Tran[[db]]$wavelength <- NULL } + ``` # Inversion of PROSPECT-PRO using optimal subdomains -Once the datasets are imported, PROSPECT-PRO can be inverted using the optimal spectral domains corresponding to each of the constituents of interest. -EWT, PROT and CBC will be estimated, and their optimal spectral domain defined based on te results obtained by Feret et al. (RSE 2020). +The inversion of PROSPECT-PRO is performed using the optimal spectral domains corresponding to each constituent of interest. +`EWT`, `PROT` and `CBC` are estimated here. +The optimal spectral domains are defined based on the results described in [Féret et al. (2021)](https://doi.org/10.1016/j.rse.2020.112173). ```{r Invert PROSPECT-PRO} -OptDomain = list('EWT' = c(1700,2400),'PROT' = c(2125,2175), 'CBC' = c(2025,2350)) -# ref: Feret et al., (RSE 2020) -# -Parms2Estimate = c('EWT','PROT','CBC','N') +Parms2Estimate <- c('EWT','PROT','CBC') EWT_mod <- PROT_mod <- CBC_mod <- list() # perform PROSPECT inversion using the optimal spectral domains for EWT, PROT and CBC - -for (parm in Parms2Estimate){ - if (parm == 'EWT' | parm == 'PROT' | parm == 'CBC'){ - for (db in dbName){ - lambda <- unlist(Refl[[db]][,1], use.names=FALSE) - Refl_tmp <- matrix(unlist(Refl[[db]][,-1], use.names=FALSE),nrow = length(lambda)) - Tran_tmp <- matrix(unlist(Tran[[db]][,-1], use.names=FALSE),nrow = length(lambda)) - # Fit spectral data to match PROSPECT with user optical properties - SubData <- FitSpectralData(SpecPROSPECT=SpecPROSPECT,lambda=lambda,Refl=Refl_tmp, - Tran=Tran_tmp,UserDomain = OptDomain[[parm]]) - SubSpecPROSPECT = SubData$SpecPROSPECT - Sublambda = SubData$lambda - SubRefl = SubData$Refl - SubTran = SubData$Tran - # Invert PROSPECT with optimal spectral information - for (i in 1:ncol(SubRefl)){ - print(i) - res <- Invert_PROSPECT(SubSpecPROSPECT,Refl = SubRefl[,i], - Tran = SubTran[,i],PROSPECT_version = 'PRO', - Parms2Estimate = Parms2Estimate) - # only save results for variable of interest - if (parm=='EWT'){EWT_mod[[db]][i] <- res$EWT} - if (parm=='PROT'){PROT_mod[[db]][i] <- res$PROT} - if (parm=='CBC'){CBC_mod[[db]][i] <- res$CBC} - } - } - - } +InitValues <- data.frame(CHL = 40, CAR = 8, ANT = 0.1, BROWN = 0, + EWT = 0.01, CBC = 0.009, PROT = 0.001, N = 1.5) +for (db in dbName){ + print('PROSPECT inversion using optimal spectral domains') + ParmEst <- Invert_PROSPECT_OPT(lambda = lambda[[db]], + Refl = Refl[[db]], + Tran = Tran[[db]], + PROSPECT_version = 'PRO', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) + EWT_mod[[db]] <- ParmEst$EWT + PROT_mod[[db]] <- ParmEst$PROT + CBC_mod[[db]] <- ParmEst$CBC } ``` # Results: estimation of `PROT`, `CBC`, `EWT` and `LMA` -The reults obtained here are very close to those obtained with Matlab, using the same algorithm. +The results obtained with the R package `prospect` are very close to those obtained with matlab, using the same algorithm for iterative optimization (with the function `fmincon`).

@@ -121,8 +109,11 @@ The reults obtained here are very close to those obtained with Matlab, using the For the sake of comparison, the comparison of the results obtained with __Matlab__ and __R__ are presented in Fig. 2. - -__the performances are identical__. The parameterization of the inversion may not be appropriate and fail to converge. In this case, the inversion returns `NA`s and the `Tolerance` parameter of the iterative optimization is adjusted to a higher value in order to converge. `Tolerance` is increased automatically as long as the convergence is not reached, to a certain extent. If convergence is not obtained for `Tolerance = 1e-2`, then the inversion returns `NA`s. +__The performances are identical__. +The parametrization of the inversion may not be appropriate and fail to converge. +In this case, the inversion returns `NA`s and the `Tolerance` parameter of the iterative optimization is adjusted to a higher value in order to converge. +`Tolerance` is increased automatically as long as the convergence is not reached, to a certain extent. +If convergence is not obtained for `Tolerance = 1e-2`, then the inversion returns `NA`s.

diff --git a/vignettes/prospect5.Rmd b/vignettes/prospect5.Rmd index 60eb634..0e66e53 100644 --- a/vignettes/prospect5.Rmd +++ b/vignettes/prospect5.Rmd @@ -28,16 +28,19 @@ knitr::opts_chunk$set( # Prior estimation of N -The `N` structure parameter is usually estimated based on the inversion of PROSPECT using reflectance and transmittance information for spectral bands corresponding to minimum absorption, maximum reflectance, and maximum transmittance. +The `N` structure parameter is usually estimated from the inversion of PROSPECT using reflectance and transmittance for spectral bands corresponding to minimum absorption, maximum reflectance, and maximum transmittance. -[Qiu et al. (2018)](https://doi.org/10.1109/TGRS.2018.2791930 "Qiu et al., TGRS 2018") reported a strong correlation between the N parameter and the ratio between reflectance and transmittance measured in the NIR at 800 nm. Taking advantage of this correlation to estimate N requires measuring both leaf reflectance and transmittance, in line with the original method used to compute N from leaf optical properties. However, absorptance in the NIR domain is usually very low: [Merzlyak et al. (2004)](https://doi.org/10.1016/j.jphotobiol.2004.03.003 "Merzlyak et al. (2004)") even suggest that absorptance in the domain ranging from 750 nm to 800 nm can be neglected. Thus assuming light in the NIR is primarily either reflected or transmitted as a function of leaf structure, information about reflectance only or transmittance only might be sufficient to accurately estimate the N parameter with moderate uncertainty, following the hypothesis that absorptance is negligible. +[Qiu et al. (2018)](https://doi.org/10.1109/TGRS.2018.2791930 "Qiu et al., TGRS 2018") reported a strong correlation between the N parameter and the ratio between reflectance and transmittance measured in the NIR at 800 nm. +Taking advantage of this correlation to estimate N requires measuring both leaf reflectance and transmittance, in line with the original method used to compute N from leaf optical properties. +However, absorptance in the NIR domain is usually very low: [Merzlyak et al. (2004)](https://doi.org/10.1016/j.jphotobiol.2004.03.003 "Merzlyak et al. (2004)") even suggest that absorptance in the domain ranging from 750 nm to 800 nm can be neglected. +Thus assuming light in the NIR is primarily either reflected or transmitted as a function of leaf structure, information about reflectance only or transmittance only might be sufficient to accurately estimate the N parameter with moderate uncertainty, following the hypothesis that absorptance is negligible. The estimation of N prior to PROSPECT inversion may therefore lead to improved estimation of leaf constituents when using optimal spectral subdomains with only reflectance or transmittance. -Here, we assume that absorptance is negligeible in specific spectral domains of the NIR. Therefore, the R/T ratio is equivalent to R/(1-R) and to (1-T)/T. +Here, we assume that absorptance is negligible in specific spectral domains of the NIR. Therefore, the R/T ratio is equivalent to R/(1-R) and to (1-T)/T. Then, we can adjust the N ~ R/(1-R) and N ~ (1-T)/T relationship based on simulations, and apply this linear relationship on experimental to get estimates of N based on R only or T only. -The function `Get_Nprior` aims at adjusting this linear relationship, based on the work described in Spafford et al.(submitted). +The function `Get_Nprior` aims at adjusting this linear relationship, based on the work described in [Spafford et al. (2021)](https://doi.org/10.1016/j.rse.2020.112176). This estimated N value can then be used as prior information when inverting PROSPECT leaf chemical constituents. @@ -47,26 +50,23 @@ library(prospect) library(data.table) # repository where data are stored gitlab_Rep <- 'https://gitlab.com/jbferet/myshareddata/raw/master/LOP/' -# Download ANGERS dataset +# download ANGERS data dbName <- 'ANGERS' # files available fileName <- list('DataBioch.txt','ReflectanceData.txt','TransmittanceData.txt') -DataBioch <- Refl <- Tran <- list() -DataBioch <- fread(paste(gitlab_Rep,dbName,'/',fileName[[1]],sep='')) -Refl<- fread(paste(gitlab_Rep,dbName,'/',fileName[[2]],sep='')) -Tran <- fread(paste(gitlab_Rep,dbName,'/',fileName[[3]],sep='')) +DataBioch <- fread(file.path(gitlab_Rep,dbName,fileName[[1]])) +Refl <- fread(file.path(gitlab_Rep,dbName,fileName[[2]])) +Tran <- fread(file.path(gitlab_Rep,dbName,fileName[[3]])) # Get the wavelengths corresponding to the reflectance and transmittance measurements -lambda <- unlist(Refl[,1], use.names=FALSE) -Refl <- Refl[,-1] -Tran <- Tran[,-1] +lambda <- Refl$wavelength +Refl$wavelength <- NULL +Tran$wavelength <- NULL # Get the number of samples nbSamples <- ncol(Refl) - # Prior estimation of N using R only -Nprior_R = Get_Nprior(SpecPROSPECT,lambda,Refl=Refl) +Nprior_R <- Get_Nprior(lambda = lambda, Refl = Refl) # Prior estimation of N using T only -Nprior_T = Get_Nprior(SpecPROSPECT,lambda,Tran= Tran ) - +Nprior_T <- Get_Nprior(lambda = lambda, Tran = Tran) ``` ### Prior estimate of `N` based on R or T only vs. `N` estimate from iterative optimization over the full spectral domain @@ -91,109 +91,74 @@ The estimation of leaf constituents based on reflectance or transmittance only, ```{r Invert PROSPECT-D Full R or T only} # Estimate all parameters for PROSPECT-D -Parms2Estimate = 'ALL' -InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) +Parms2Estimate <- 'ALL' +InitValues <- data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) # Adjust spectral domain for SpecPROSPECT to fit leaf optical properties -SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, lambda = lambda, - Refl = Refl, Tran =Tran, - UserDomain = c(lambda[1],tail(lambda,n = 1)), - UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran - +SubData <- FitSpectralData(lambda = lambda, + Refl = Refl, Tran =Tran) print('PROSPECT inversion using full spectral range') -res <- Invert_PROSPECT(SpecPROSPECT = SubSpecPROSPECT, - Refl = SubRefl, Tran = NULL, - PROSPECT_version = 'D', Parms2Estimate = Parms2Estimate, - InitValues = InitValues) -CHL_R <- res$CHL -CAR_R <- res$CAR -EWT_R <- res$EWT -LMA_R <- res$LMA -N_R <- res$N - -res <- Invert_PROSPECT(SpecPROSPECT = SubSpecPROSPECT, - Refl = NULL, Tran = SubTran, - PROSPECT_version = 'D', - Parms2Estimate = Parms2Estimate, - InitValues = InitValues) -CHL_T <- res$CHL -CAR_T <- res$CAR -EWT_T <- res$EWT -LMA_T <- res$LMA -N_T <- res$N +res_Ronly <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl, Tran = NULL, + PROSPECT_version = 'D', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) + +res_Tonly <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = NULL, Tran = SubData$Refl, + PROSPECT_version = 'D', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) ``` - The performance of PROSPECT inversion when no prior estimation of `N` is provided and only R and T measured can be compared with the performances obtained when prior estimate of `N` is provided ```{r Invert PROSPECT-D Full R or T only & prior N} # Estimate all parameters for PROSPECT-D Parms2Estimate <- c("CHL", "CAR", "ANT", "EWT", "LMA") -CHL_R_Nprior <- CAR_R_Nprior <- EWT_R_Nprior <- LMA_R_Nprior <- c() -CHL_T_Nprior <- CAR_T_Nprior <- EWT_T_Nprior <- LMA_T_Nprior <- c() -# Adjust spectral domain for SpecPROSPECT to fit leaf optical properties -SubData <- FitSpectralData(SpecPROSPECT = SpecPROSPECT, lambda = lambda, - Refl = Refl, Tran =Tran, - UserDomain = c(lambda[1],tail(lambda,n = 1)), - UL_Bounds = TRUE) -SubSpecPROSPECT <- SubData$SpecPROSPECT -Sublambda <- SubData$lambda -SubRefl <- SubData$Refl -SubTran <- SubData$Tran - print('PROSPECT inversion using full spectral range') +res_R_Nprior <- res_T_Nprior <- list() for (i in 1:nbSamples){ print(i) - InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, - LMA=0.01, N=Nprior_R[i]) - res <- Invert_PROSPECT(SpecPROSPECT = SubSpecPROSPECT, Refl = SubRefl[,i], Tran = NULL, - PROSPECT_version = 'D',Parms2Estimate = Parms2Estimate, - InitValues = InitValues) - CHL_R_Nprior[i] <- res$CHL - CAR_R_Nprior[i] <- res$CAR - EWT_R_Nprior[i] <- res$EWT - LMA_R_Nprior[i] <- res$LMA - - InitValues <- data.frame(CHL=40, CAR=10, ANT=0.1, BROWN=0, EWT=0.01, - LMA=0.01, N=Nprior_T[i]) - res <- Invert_PROSPECT(SubSpecPROSPECT, Refl = NULL, Tran = SubTran[,i], - PROSPECT_version = 'D',Parms2Estimate = Parms2Estimate, - InitValues = InitValues) - CHL_T_Nprior[i] <- res$CHL - CAR_T_Nprior[i] <- res$CAR - EWT_T_Nprior[i] <- res$EWT - LMA_T_Nprior[i] <- res$LMA + InitValues <- data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = Nprior_R$N[i]) + res_R_Nprior[[i]] <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = SubData$Refl[[i]], Tran = NULL, + PROSPECT_version = 'D', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) + + InitValues <- data.frame(CHL = 40, CAR = 10, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = Nprior_T$N[i]) + res_T_Nprior[[i]] <- Invert_PROSPECT(SpecPROSPECT = SubData$SpecPROSPECT, + Refl = NULL, Tran = SubData$Tran[[i]], + PROSPECT_version = 'D', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) } - ``` Finally, the combination of prior estimation of `N` and optimal spectral domain for each constituent is also tested: ```{r Invert PROSPECT-D Full R or T only & prior N & optimal subdomain} # Estimate all parameters for PROSPECT-D using R only -Parms2Estimate = c('CHL','CAR','ANT','EWT','LMA') -InitValues <- data.frame(CHL=40, CAR=8, ANT=0.1, BROWN=0, EWT=0.01, LMA=0.01, N=1.5) +Parms2Estimate <- c('CHL','CAR','ANT','EWT','LMA') +InitValues <- data.frame(CHL = 40, CAR = 8, ANT = 0.1, BROWN = 0, + EWT = 0.01, LMA = 0.01, N = 1.5) print('PROSPECT inversion using optimal spectral setting and prior N') -ParmEst <- Invert_PROSPECT_OPT(SpecPROSPECT = SubSpecPROSPECT, lambda=Sublambda, - Refl = SubRefl, Tran = NULL, PROSPECT_version = 'D', - Parms2Estimate = Parms2Estimate, InitValues = InitValues) -CHL_R_OPT <- ParmEst$CHL -CAR_R_OPT <- ParmEst$CAR -ANT_R_OPT <- ParmEst$ANT -EWT_R_OPT <- ParmEst$EWT -LMA_R_OPT <- ParmEst$LMA - -ParmEst <- Invert_PROSPECT_OPT(SpecPROSPECT = SubSpecPROSPECT, lambda = Sublambda, - Refl = NULL, Tran = SubTran, PROSPECT_version = 'D', - Parms2Estimate = Parms2Estimate, InitValues = InitValues) -CHL_T_OPT <- ParmEst$CHL -CAR_T_OPT <- ParmEst$CAR -ANT_T_OPT <- ParmEst$ANT -EWT_T_OPT <- ParmEst$EWT -LMA_T_OPT <- ParmEst$LMA +ParmEst_R_OPT <- Invert_PROSPECT_OPT(SpecPROSPECT = SubData$SpecPROSPECT, + lambda = SubData$lambda, + Refl = SubData$Refl, Tran = NULL, + PROSPECT_version = 'D', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) + +ParmEst_T_OPT <- Invert_PROSPECT_OPT(SpecPROSPECT = SubData$SpecPROSPECT, + lambda = SubData$lambda, + Refl = NULL, Tran = SubData$Tran, + PROSPECT_version = 'D', + Parms2Estimate = Parms2Estimate, + InitValues = InitValues) ``` The comparison between PROSPECT inversion without prior `N`, with prior `N`, and with prior `N` and optimal spectral domain selection, when only R or T are used, is showed below: